diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,6 +8,10 @@
 a Haskell syntax highlighting library with support for KDE XML syntax
 highlighting descriptions.
 
+Formatters are no longer included in this package: see
+`skylighting-format-ansi`, `skylighting-format-blaze-html`,
+`skylighting-format-context`, and `skylighting-format-latex`.
+
 For details on how to use this package, see the Haddock documentation and
 the [Skylighting README](https://github.com/jgm/skylighting/blob/master/skylighting/README.md).
 
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,485 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.15
+
+  * New syntaxes: sparql (#212), sas (#213), mermaid, desktop,
+    elixir-eex, elixir-heex, abnf, asciidoc, cabal, cobol, context,
+    csv, haml, idl, jinja, jira, k, logfile, meson, nginx, ninja,
+    ocamllex, ocamlyacc, q, quarto, rdoc, rmarkdown, rtf, textile,
+    todo, vue.
+
+  * Update syntax definitions from upstream: bash, cmake, cpp,
+    crystal, dot, elixir, haskell, markdown, nix, ocaml, orgmode,
+    perl, php, powershell, python, qml, raku, rust,
+    spdx-comments, tcsh, typst, yaml, zig, zsh.
+
+  * Allow multiple contexts separated by `!` (#208).
+    This is an upstream KDE change.
+
+  * Bump min base version to 4.18.
+
+  * Regex: don't hang on bounded repetition with min > max.
+    `atmost` recursed without a guard for negative counts, so a pattern
+    like `a{3,1}` made the compiler loop forever building an infinite
+    regex. Reject the quantifier and fall back to interpreting it as a
+    literal, consistent with how other invalid quantifiers (`a{}`, `a{3`)
+    are handled.
+
+  * Regex: don't hang on lazy quantifiers in lookbehinds.
+    Previously lazy quantifier inside a lookbehind (e.g. `(?<=a+?b)`) hung.
+
+  * Regex: don't hang on subroutine recursion that consumes no input.
+    Previously a pattern like `x|(?R)` recursed forever.
+
+  * Regex: fix `lastCharOffset` for multibyte UTF-8 characters.
+    This bug resulted in failure of lookbehinds and word boundary
+    checks after non-ASCII characters.
+
+  * Regex: don't let `(?i:...)` leak out of its group.
+    Previously, in `/(?i:a)b/` the trailing `b` was also matched
+    case-insensitively.
+
+  * Regex: fix `[[:graph:]]`, `[[:word:]]`, and add `[[:digit:]]`.
+
+  * Regex: find nested capturing groups for subroutine calls.
+    Previously, calls like `(?2)` in `/((a)b)(?2)/` were
+    silently ignored (matching the empty string).
+
+  * Regex: apply case-insensitivity to classes, escapes, backreferences.
+    Case-insensitive matching was previously only applied to plain literal
+    characters, not character classes and escaped literals. Now:
+
+    + `pRegexCharClass` takes the case-sensitivity flag and, when
+      insensitive, matches a character if any of its case variants is in
+      the class (negated classes exclude all case variants, as in PCRE).
+    + Escaped literals like \x61 match case-insensitively when
+      insensitivity is in effect.
+    + The matcher compares captured text character by character with
+      case folding (correct even when the case variants have different
+      UTF-8 encodings).
+    + [API change] `MatchCaptured` has a new argument place;
+      `MatchCaptured !Int !Bool`, where the Bool records the case
+      sensitivity in effect at its position.
+
+  * Regex: linearize `{m,n}` expansion and cap repeat counts.
+    Previously `r{m,n}` was expanded to produce an AST quadratic in
+    n-m, which also made matching quadratic: matching `[ab]{0,800}`
+    against 800 characters took ~31 ms.  We now use
+    a nested-optional encoding, `r(r(r)?)?`, which is linear; the same
+    match takes ~0.3 ms. In addition, repeat counts larger than
+    65535 (the limit PCRE2 uses) are no longer treated as
+    quantifiers; like other invalid quantifier syntax, they fall
+    back to a literal interpretation. Previously `x{100000000}`
+    would eagerly build a hundred-million-node regex.
+
+  * Regex: treat unmatched `]` outside a character class as a literal.
+    This the behavior of PCRE2 (used by KSyntaxHighlighting via
+    QRegularExpression). Previously we treated this as a parse error,
+    which caused failures in several current KDE syntax definitions.
+
+  * Regex: parse `\0` octal escapes with up to two digits, as in PCRE.
+    `\0` previously required exactly three following octal digits.
+
+  * Regex: support `\G` (assert position of match start).
+    Because our matcher is always anchored at the start of
+    the input it is given, this is exactly AssertBeginning.
+
+  * Regex: support `\gN` and `\g{N}` backreferences.
+
+  * Regex: support inline modifiers like `(?i)` without a colon.
+
+  * Regex: support `\h` and `\H` (horizontal whitespace).
+
+  * Regex: support `\A` (start of subject).
+    Since matching is always anchored at the start of the input we are
+    given, `\A` is equivalent to AssertBeginning.
+
+  * Regex: allow an empty first alternative, as in `(?:|a)`.
+    As in PCRE, an empty alternative matches the empty string.  Empty
+    alternatives other than the first were already supported.
+
+  * Regex: support `\b` (backspace) inside character classes.
+
+  * Regex: support atomic groups `(?>...)`.
+
+  * Regex: leftmost-first (PCRE) match semantics instead of longest-match.
+
+    + Alternation is now leftmost-first, and alternatives are tried in
+      source order (a fold in the compiler used to reverse them, which
+      was harmless under longest-match).
+    + Possessive quantifiers and atomic groups commit to the first match
+      in backtracking order, fixing the divergence from PCRE.
+      `(?>a|ab)c` now fails on "abc".
+    + Lookahead/lookbehind assertions are atomic and keep only the first
+      match's captures, so `d(?=(a|ab))` captures "a", as in PCRE.
+    - Lazy quantifiers are compiled to forms that prefer fewer
+      repetitions instead of being special-cased in the matcher; the old
+      special case could commit to a short prefix and miss valid longer
+      continuations.
+    - Repetition loops terminate via a seen-state set.
+
+  * Regex: fix subroutine calls to groups with multi-digit numbers.
+
+  * Regex: after `(?|...)`, resume group numbering after the max group.
+
+  * Regex: allow a leading literal `]` in a character class to start a range.
+    As in PCRE, `[]-a]` is the range from `]` to `a`; previously it was parsed
+    as the three literals.
+
+  * Regex: support `\pL`, `\P{...}`, `\PL`, and `\p{^...}`.
+
+  * Regex: make Eq Match consistent with Ord.
+
+  * Regex: Raise compile errors for stray quantifiers and unsupported flags.
+
+    + a quantifier with nothing to repeat.
+    + a quantifier after an anchor or word-boundary assertion.
+    + `{m,n}` with m > n.
+    + repeat counts over 65535.
+    + inline flags we do not implement.
+
+  * Regex: Support minimal= (inverted greediness) on RegExpr rules.
+
+    + `compileRegex` takes a new Bool parameter for minimal matching
+      [API change], and `pSuffix` swaps the greedy and lazy variant
+      s of a quantifier when it is set.
+    + The inline flag `(?U)` (and `(?-U)`, `(?U:...))`, which toggles the
+      same option in PCRE, is now supported.
+    + RE has a new `reMinimal` field [API change], which
+      Skylighting.Parser sets from the `minimal` attribute on
+      RegExpr elements.
+
+  * Support the char attribute on LineContinue. [API change]
+    The LineContinue constructor of Matcher now carries the character.
+
+  * Fix case-sensitivity defaults to match KDE.
+
+    + Rules (RegExpr, StringDetect, WordDetect, DetectChar, etc.) now
+      default to case-sensitive matching regardless of the language
+      element's `casesensitive` attribute.
+    + The default case sensitivity of keyword lists is given by the
+      `casesensitive` attribute on the language element, and may be
+      overridden by the `casesensitive` attribute on general > keywords.
+    + An `insensitive` attribute on a keyword rule itself now overrides
+      the keyword list's case sensitivity, but only when the attribute
+      is actually present.
+
+    Behavior verified against KSyntaxHighlighting's definition.cpp and
+    highlightingdata.cpp.
+
+  * Honor `additionalDeliminator`/`weakDeliminator` on rules.
+
+    + Keyword rules fold rule-level `additionalDeliminator` and
+      `weakDeliminator` into their delimiter set, so e.g. Lua's
+      special variables rule (additionalDeliminator=".") matches
+      nil in nil.x even though the general keywords element makes
+      `.` a weak delimiter.
+    + Rule gains an `rAdditionalDeliminators` field [API change],
+      and both it and `rWeakDeliminators` now also incorporate
+      the general > keywords delimiter modifications, applied
+      before the rule-level ones as in KDE.  Both sets are consulted
+      by WordDetect, Int, Float, HlCHex, and HlCOct: a weak delimiter
+      counts as a word character and an additional delimiter does
+      not, with weak delimiters taking precedence.
+    + WordDetect now uses KDE's boundary conditions: a delimiter (or
+      line edge) must precede the word or be its first character, and
+      must follow the word or be its last character.  The leading
+      check also prevents WordDetect from matching in the middle of
+      a word.
+
+  * Match KDE semantics for Int, Float, HlCOct, HlCHex rules [API change]
+
+    + These rules match only if the *preceding* character is a word
+      delimiter (or the match is at the start of the line); nothing is
+      required of the following character.  Previously we used a
+      two-sided `\w`-based word boundary check.
+    + None of these rules consume a leading sign.  Previously Int,
+      HlCOct, HlCHex consumed an optional '-', and Float an optional
+      '+' or '-'.
+    + Int matches decimal digits only (no hex or octal forms).
+    + HlCOct matches C-style octals: '0' followed by octal digits.
+      Previously we required a "0o" prefix (and, due to a bug, actually
+      matched the hex form, so HlCOct never matched real octals).
+    + Float requires a '.', so "5e2" is not a Float; the exponent is
+      all-or-nothing (an incomplete exponent like "1.5e+" matches just
+      "1.5"); and there is no check on what follows the match, so
+      "1.2.3" matches "1.2".
+
+    Since all four rules (and keyword and WordDetect) now need
+    only a single effective delimiter set, we replace the
+    `rWeakDeliminators` and `rAdditionalDeliminators` fields on
+    Rule with a single `rWordDelimiters` field [API change].
+
+  * Match KDE line-loop semantics.
+
+    + Remove `cLineBeginContext` from Context [API change] and the
+      `lineBeginContext` attribute from the parser.  KDE no longer
+      has this feature, no bundled syntax definition uses it.
+    + Column and `firstNonspaceColumn` now restart on every physical line.
+      A line continuation only suppresses the previous line's
+      `lineEndContext`; it no longer carries the previous line's column
+      state into the next line.
+    + `lineEmptyContext` defaults to `lineEndContext` when unspecified or
+      `#stay` (KDE context.cpp, see kde bug 405903).
+    + An empty line now applies the `lineEmptyContext` switches of
+      successive top contexts until `#stay`, and does not apply
+      `lineEndContext` separately.
+    + `checkLineEnd` likewise applies lineEndContext switches of successive
+      top contexts until `#stay`.
+    + Guard against endless loops from broken syntax definitions, as KDE
+      does: the empty-line and line-end context-switch loops and rule
+      matching without consuming input are limited to 1024 iterations
+      without progress, after which highlighting of the line is aborted.
+
+  * Cache capturing groups in RE alongside the compiled regex.
+    Previously, matchRegex called extractCapturingGroups on every
+    invocation. Now the RE smart constructor extracts the
+    capturing groups once at compile time and caches them
+    alongside the compiled Regex. The tokenizer uses the cached groups
+    for static rules. For dynamic rules the groups are recomputed
+    after `subDynamic`, since the substitution rewrites the AST.
+
+    + compileRE now returns Either String (Regex, IntMap Regex) [API change].
+    + New function matchRegexWithGroups [API change] takes precomputed groups;
+      matchRegex keeps its old behavior for external callers.
+
+  * Resolve keywords at load time, not on every tokenize call.
+
+    + `tokenize` no longer resolves keywords; it assumes keyword lists in
+      the syntax map have already been resolved into word sets.  This is
+      the case for the bundled syntax definitions (which are generated
+      via loadSyntaxesFromDir) and for definitions loaded with the
+      functions in Skylighting.Loader.
+    - `loadValidSyntaxesFromDir` now resolves keywords, fixing an
+      inconsistency with `loadSyntaxesFromDir` (which already did).
+    - The skylighting CLI resolves keywords in syntaxes added with
+      `--definition`.
+    - Users who build a SyntaxMap by hand from `parseSyntaxDefinition`
+      output must now apply resolveKeywords themselves; tokenizing with
+      an unresolved keyword list yields a clear "Keyword with unresolved
+      list" error.
+
+  * Minor performance improvements in matchers and syntax lookup.
+
+    + `detect2Chars`: compare decoded characters directly (like
+      detectChar) instead of allocating a two-character Text and
+      encoding it to a ByteString on every attempt.
+    + `wordDetect`, `stringDetect`: in the case-sensitive case, compare
+      bytes with a prefix check instead of walking and decoding a
+      prefix of the input into Text on every attempt.
+    + `syntaxByName`: don't rebuild the entire syntax map with lowercased
+      keys on every lookup; try an exact lookup first and fall back to
+      a linear scan.
+    + `syntaxByShortName`: lowercase the query once instead of once per
+      map entry.
+
+## 0.14.7
+
+  * Update xml syntax definitions: agda, apache, bash, c, clojure,
+    cmake, coffee, commonlisp, cpp, djangotemplate, dot, dtd, fasm,
+    gd-script, glsl, gnuassembler, html, ini, java, json, julia, kotlin,
+    latex, lua, mathematica, mediawiki, metafont, mips, mustache, nasm,
+    objectivecpp, octave, perl, php, povray, powershell, protobuf,
+    python, racket, raku, rhtml, ruby, scheme, sed, sgml,
+    sql-postgresql, stan, systemverilog, tcl, xml, xul.
+
+  * Add gleam.
+
+  * Relax xml-conduit upper bound.
+
+## 0.14.6
+
+  * Export Skylighting.Format.Typst from Skylighting [API change] (#201).
+    Allow typst as an output format in the cli executable.
+
+## 0.14.5
+
+  * Update xml syntax definitions for bash, cmake, commonlisp, isocpp,
+    javascript-react, julia, latex, lua, markdown, modelines, nix, orgmode,
+    php, python, rhtml, ruby, swift, xml, yaml, zig, zsh. Add odin (required
+    by orgmode).
+
+  * Update JSON syntax definition from upstream. (#203)
+
+## 0.14.4
+
+  * Add `gdscript`, `typst`, `tlaplus` syntax (#184, #199).
+
+## 0.14.3
+
+  * Add crystal, racket, zip syntax (#194).
+
+## 0.14.2
+
+  * Add `loadValidSyntaxesFromDir` (Kevin Quick) [API change].
+    The `loadSyntaxesFromDir` function is an all-or-nothing function:
+    a single invalid file results in a error and *no* loaded syntaxes.
+    This adds the `loadValidSyntaxesFromDir`, which is resilient
+    against individual syntax file load failures.  It returns a map
+    of the failure messages, and the SyntaxMap that is created from
+    all the successful parsing.
+
+## 0.14.1.2
+
+  * Add terraform syntax (#190).
+
+## 0.14.1.1
+
+  * Add GPRBuild syntax.
+
+  * Update syntax descriptions for clojure, cmake, coffee, cpp,
+    cs, erlang, graphql, haskell, javascript, julia, kotlin,
+    lilypond, markdown, objectivec, objectivecpp, ocaml, perl,
+    python, ruby, rust, stan, typescript, yaml.
+
+## 0.14.1
+
+  * Update syntax definitions for julia, actionscript, bash, cpp, css,
+    djangotemplate, dosbat, groovy, html, ini, isocpp, java, javadoc, json,
+    jsp, latex, makefile, mustache, php, powershell, rest, rhtml,
+    sass, scala, scss, toml, xml, raku (with patch).
+
+  * Many improvements to regular expression compilation:
+
+    - Properly recognize unicode characters.
+    - Handle `\Q..\E` literal sequences.
+    - Handle group modifiers like `(?i:etc.)`. (The only one
+      we actually pay attention to is `i`.)
+    - Allow unicode category escapes outside of character classes.
+    - Support one-letter unicode category escapes like `\p{L}`.
+      These are found in some of the newer syntax definitions.
+
+  * Improve regex matching:
+
+    - Fix `wordDetect` to work around an issue in the new html.xml.
+    - Refactor and fix `atWordBoundary`: remove redundant checks, and
+      fix behavior (`/x\b/` was behaving like `/\bx\b/`) (Côme ALLART).
+    - Fix bug in `lastCharOffset` (Côme ALLART).
+
+  * Style: Allow colors to be specified in ARGB format (#178).
+    We currently just ignore the A part, but at least we don't fail.
+
+## 0.14
+
+  * Add rWeakDeliminators field to Rule. [API change]
+
+  * Make WordDetect sensitive to weakDeliminator. This fixes
+    parsing of floats beginning with '0.' in C (#174).
+
+  * Add debiancontrol syntax (#173).
+
+## 0.13.4.1
+
+  * Update syntax definitions: ada, bash, cmake, css, html, isocpp, java,
+    javascript, kotlin, latex, makefile, markdown, php, python, qml, r,
+    sass, scss, typescript, zsh.
+
+  * Don't require word boundary at end of Int, Float, HlCHex, HlCOct (#170).
+    KDE does not.  This fixes things like `7L` in R.
+
+## 0.13.4
+
+  * Add `dosbat` syntax (MS DOS batch file) (#169).
+
+  * Derive `Bounded` Instance for `TokenType` (#168, Pavan Pikhi).
+    Add `Bounded` to the derived instances for the `TokenType` type. This
+    allows consumers to use `[minBound .. maxBound]` to generate a list of
+    all token types when writing a `Style`.
+
+  * Require xml-conduit >= 1.9.1.3. This fixes a bug that prevents
+    parsing certain DOCTYPE declarations, e.g. in `agda.xml`.
+
+  * Updated `cmake` syntax definition.
+
+## 0.13.3
+
+  * Add gap language (#167).
+
+  * Update syntax definitions.
+
+  * Add patches for agda.xml and dtd.xml, to wor around a bug in xml-conduit:
+    https://github.com/snoyberg/xml/pull/187
+
+  * Store compiled regexes in RE (#166, Jonathan Coates).
+    This changes the RE type to (lazily) compile the regex when constructed,
+    rather than in the tokenizer. This allows us to avoid re-compiling
+    regexes for each separate tokenize call, instead sharing them globally.
+    We try to hide the internals of this, exposing the previous interface
+    `(RE { reString, reCaseSensitive })` with pattern synonyms.
+
+  * ConTeXt: fix handling of spaces in non-normal tokens (Albert Krewinkel).
+    This ensures that multiple spaces won't be collapsed into a single space.
+
+## 0.13.2.1
+
+  * Update tango style for new token types (#164). The original
+    tango style didn't have colors defined for many token types
+    that have been added since it was added.  This commit
+    updates the style to support them. Thanks to @danbraswell
+    for providing the values needed.
+
+## 0.13.2
+
+  * Support ConTeXt output via skylighting-format-context (Albert Krewinkel).
+
+  * Update syntax definitions for markdown, nim, javascript.
+
+## 0.13.1.2
+
+  * Update syntax definitions for c, cmake, commonmlisp, css, go, ini, isocpp,
+    javascript, json, powershell, python, rust, sass, scss, toml, xml.
+
+  * Associate regex captures with a context. This is necessary for proper
+    implementation of the KDE syntax highlighting algorithm.  Captures are
+    only available within the context to which the match creating the
+    capture switches. (Closes #160.)
+
+## 0.13.1.1
+
+  * Add dart, purescript syntax definitions.
+
+  * Update syntax definitions for isocpp, latex, alert, bash,
+    cmake, nix, sql-postgresql, vhdl, zsh.
+
+  * Remove obsoleote patch for lua.xml.
+
+  * Add patches for latex.xml and isocpp.xml.
+
+## 0.13.1
+
+  * `getCapture`: fail instead of throwing error if dynamic match not found.
+    I believe this is the intended behavior for StringDetect, judging
+    from examples in the KDE documentation.
+
+  * Update xml syntax definitions:
+    asn1, bash, c, cmake, cpp, cs, d, elixir, fortran-fixed, gcc, glsl,
+    go, html, java, javascript, lex, lua, markdown, mediawiki, noweb,
+    ocaml, orgmode, php, powershell, prolog, python, r, ruby, rust,
+    scheme, sql-postgresql, typescript, vhdl, xml, yacc, yaml, zsh
+
+  * Replace a lambda with pointfree notation (shaving off some RAM usage)
+    (0xd34df00d).
+
+  * Use `newtype` for `TokenizerM`, giving about 5-10% boost on benchmark
+    (0xd34df00d).
+
+
+## 0.13
+
+  * Update syntax definitions from upstream: bash, cmake, diff,
+    ini, perl, php, sgml, xml.
+
+  * Split out formatters into separate packages (#152). API changes:
+    - Skylighting.Core no longer exports Skylighting.Format.ANSI,
+      Skylighting.Format.HTML, Skylighting.Format.LaTeX.  These are
+      now provided by separate packages, skylighting-format-ansi,
+      skylighting-format-blaze-html, skylighting-format-latex.
+    - Skylighting.Types no longer exports XTerm256ColorCode.
+      This has been moved to skylighting-format-ansi.
+
+  * Change Makefile to use cabal instead of stack.
+
+
 ## 0.12.3.1
 
   * Allow mtl 2.3.
@@ -864,4 +1344,3 @@
 ## 0.1.0.0  -- 2016-12-23
 
   * Initial release
-
diff --git a/skylighting-core.cabal b/skylighting-core.cabal
--- a/skylighting-core.cabal
+++ b/skylighting-core.cabal
@@ -1,5 +1,5 @@
 name:                skylighting-core
-version:             0.12.3.1
+version:             0.15
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
@@ -21,7 +21,7 @@
 license-file:        LICENSE
 author:              John MacFarlane
 maintainer:          jgm@berkeley.edu
-copyright:           (C) 2016-2018 John MacFarlane
+copyright:           (C) 2016-2024 John MacFarlane
 category:            Text
 build-type:          Simple
 extra-source-files:  README.md
@@ -108,15 +108,12 @@
                        Skylighting.Styles
                        Skylighting.Loader
                        Skylighting.Tokenizer
-                       Skylighting.Format.ANSI
-                       Skylighting.Format.HTML
-                       Skylighting.Format.LaTeX
   other-modules:       Regex.KDE
                        Regex.KDE.Regex
                        Regex.KDE.Compile
                        Regex.KDE.Match
   other-extensions:    CPP
-  build-depends:       base >= 4.8 && < 5.0,
+  build-depends:       base >= 4.18 && < 5,
                        mtl,
                        transformers,
                        text,
@@ -128,13 +125,11 @@
                        case-insensitive,
                        attoparsec,
                        utf8-string,
-                       xml-conduit >= 1.9.1.0 && < 1.10,
+                       xml-conduit >= 1.9.1.3 && < 1.11,
                        safe,
                        base64-bytestring,
-                       blaze-html >= 0.5,
-                       containers >= 0.6.0.1,
-                       ansi-terminal >= 0.7,
-                       colour >= 2.0
+                       colour >= 2.0,
+                       containers >= 0.6.0.1
   hs-source-dirs:      src
   ghc-prof-options:    -fprof-auto-exported
   default-language:    Haskell2010
@@ -152,7 +147,7 @@
   type:           exitcode-stdio-1.0
   main-is:        test-skylighting.hs
   hs-source-dirs: test
-  build-depends:  base >= 4.8 && < 5.0,
+  build-depends:  base >= 4.8 && < 5,
                   tasty,
                   tasty-golden,
                   tasty-hunit,
@@ -181,7 +176,7 @@
                    filepath,
                    text,
                    containers,
-                   criterion >= 1.0 && < 1.6
+                   criterion >= 1.0
   Ghc-Options:   -rtsopts -Wall -fno-warn-unused-do-bind
   if impl(ghc >= 8.4)
     ghc-options:       -fhide-source-paths
@@ -190,7 +185,7 @@
   Default-Language: Haskell2010
 
 executable skylighting-extract
-  build-depends:       base >= 4.8 && < 5.0,
+  build-depends:       base >= 4.8 && < 5,
                        skylighting-core,
                        filepath,
                        text,
diff --git a/src/Regex/KDE.hs b/src/Regex/KDE.hs
--- a/src/Regex/KDE.hs
+++ b/src/Regex/KDE.hs
@@ -1,6 +1,7 @@
 {-# LANGUAGE OverloadedStrings #-}
 module Regex.KDE
- (Regex(..), compileRegex, matchRegex, testRegex, isWordChar)
+ (Regex(..), compileRegex, matchRegex, matchRegexWithGroups,
+  extractCapturingGroups, testRegex, isWordChar)
   where
 
 import Regex.KDE.Regex
@@ -15,7 +16,7 @@
 testRegex caseSensitive re s =
   let bs = U.fromString s
       toSlice (off,len) = U.toString $ B.take len $ B.drop off bs
-   in case compileRegex caseSensitive (U.fromString re) of
+   in case compileRegex caseSensitive False (U.fromString re) of
         Right r ->
           case matchRegex r bs of
             Nothing -> Nothing
diff --git a/src/Regex/KDE/Compile.hs b/src/Regex/KDE/Compile.hs
--- a/src/Regex/KDE/Compile.hs
+++ b/src/Regex/KDE/Compile.hs
@@ -1,17 +1,17 @@
 {-# LANGUAGE CPP #-}
-{-# LANGUAGE LambdaCase #-}
 {-# LANGUAGE BangPatterns #-}
 {-# LANGUAGE OverloadedStrings #-}
 module Regex.KDE.Compile
   (compileRegex)
   where
 
-import Data.Word (Word8)
 import qualified Data.ByteString as B
+import qualified Data.Text as T
 import Data.ByteString (ByteString)
-import qualified Data.ByteString.UTF8 as U
+import Data.Text.Encoding (decodeUtf8With, encodeUtf8)
+import Data.Text.Encoding.Error (lenientDecode)
 import Safe
-import Data.Attoparsec.ByteString as A hiding (match)
+import Data.Attoparsec.Text as A hiding (match)
 import Data.Char
 import Control.Applicative
 import Regex.KDE.Regex
@@ -21,225 +21,392 @@
 import Data.Semigroup ((<>))
 #endif
 
+-- I believe the Regex engine used in KatePart is Qt's.
+-- It is described here: https://doc.qt.io/qt-6/qregexp.html
+
 -- | Compile a UTF-8 encoded ByteString as a Regex.  If the first
--- parameter is True, then the Regex will be case sensitive.
-compileRegex :: Bool -> ByteString -> Either String Regex
-compileRegex caseSensitive bs =
-  let !res = parseOnly (evalStateT parser 0) bs
+-- parameter is True, then the Regex will be case sensitive.  If the
+-- second parameter is True, quantifiers are minimal (lazy) rather
+-- than greedy by default, and the @?@ modifier makes them greedy
+-- instead of lazy -- this corresponds to PCRE's UNGREEDY option
+-- (QRegularExpression's InvertedGreedinessOption, set by
+-- @minimal="1"@ in KDE syntax definitions).
+compileRegex :: Bool -> Bool -> ByteString -> Either String Regex
+compileRegex caseSensitive minimal bs =
+  let !res = parseOnly (evalStateT parser RState{
+                                            rsCurrentCaptureNumber = 0,
+                                            rsCaseSensitive = caseSensitive,
+                                            rsMinimal = minimal })
+                       (decodeUtf8With lenientDecode bs)
    in res
  where
    parser = do
-     !re <- pRegex caseSensitive
+     !re <- pRegex
      (re <$ lift A.endOfInput) <|>
-       do rest <- lift A.takeByteString
+       do rest <- lift A.takeText
           fail $ "parse error at byte position " ++
-                 show (B.length bs - B.length rest)
+                 show (B.length bs - B.length (encodeUtf8 rest))
 
-type RParser = StateT Int Parser
+data RState =
+  RState
+  { rsCurrentCaptureNumber :: Int
+  , rsCaseSensitive :: Bool
+  , rsMinimal :: Bool }
+  deriving (Show)
 
-pRegex :: Bool -> RParser Regex
-pRegex caseSensitive =
+type RParser = StateT RState Parser
+
+pRegex :: RParser Regex
+pRegex =
   option MatchNull $
-  foldr MatchAlt
-    <$> (pAltPart caseSensitive)
-    <*> (many $ lift (char '|') *> (pAltPart caseSensitive <|> pure mempty))
+  -- earlier alternatives must be the left operands of MatchAlt, since
+  -- the matcher prefers them, as in PCRE.  The first alternative may
+  -- be empty, as in (?:|a); as in PCRE, an empty alternative matches
+  -- the empty string:
+  (\x xs -> foldr1 MatchAlt (x:xs))
+    <$> (pAltPart <|> pure mempty)
+    <*> many (lift (char '|') *> (pAltPart <|> pure mempty))
 
-pAltPart :: Bool -> RParser Regex
-pAltPart caseSensitive = mconcat <$> many1 (pRegexPart caseSensitive)
+pAltPart :: RParser Regex
+pAltPart = mconcat <$> many1 pRegexPart
 
-char :: Char -> Parser Char
-char c =
-  c <$ satisfy (== fromIntegral (ord c))
+pRegexPart :: RParser Regex
+pRegexPart =
+  pRegexChar <|> pParenthesized >>= pSuffix
 
-pRegexPart :: Bool -> RParser Regex
-pRegexPart caseSensitive =
-  (lift (pRegexChar caseSensitive) <|> pParenthesized caseSensitive) >>=
-     lift . pSuffix
+pParenthesized :: RParser Regex
+pParenthesized = do
+  _ <- lift (char '(')
+  pInlineModifiers <|> do
+    -- pcrepattern says: A group that starts with (?| resets the capturing
+    -- parentheses numbers in each alternative.
+    resetCaptureNumbers <- option False (True <$ lift (string "?|"))
+    (modifier, stModifier) <-
+                if resetCaptureNumbers
+                   then return (id, id)
+                   else lift (char '?' *> pGroupModifiers)
+                      <|> do modify (\st -> st{
+                                        rsCurrentCaptureNumber =
+                                               rsCurrentCaptureNumber st + 1})
+                             num <- gets rsCurrentCaptureNumber
+                             pure (MatchCapture num, id)
+    currentCaptureNumber <- gets rsCurrentCaptureNumber
+    -- modifiers like (?i: or (?U: are scoped to the group, so save the
+    -- current flags and restore them after the closing parenthesis:
+    oldCaseSensitive <- gets rsCaseSensitive
+    oldMinimal <- gets rsMinimal
+    modify stModifier
+    contents <- do
+      x <- pAltPart <|> pure mempty
+      n0 <- gets rsCurrentCaptureNumber
+      let pNextAlt = do
+            _ <- lift (char '|')
+            when resetCaptureNumbers $
+              modify (\st ->
+                       st{ rsCurrentCaptureNumber = currentCaptureNumber })
+            y <- pAltPart <|> pure mempty
+            n <- gets rsCurrentCaptureNumber
+            pure (y, n)
+      rest <- many pNextAlt
+      -- with (?|, numbering after the group resumes after the highest
+      -- group number used in any alternative, as in PCRE:
+      when resetCaptureNumbers $
+        modify (\st ->
+                 st{ rsCurrentCaptureNumber = maximum (n0 : map snd rest) })
+      pure (foldr1 MatchAlt (x : map fst rest))
+    _ <- lift (char ')')
+    modify $ \st -> st{ rsCaseSensitive = oldCaseSensitive
+                      , rsMinimal = oldMinimal }
+    return $ modifier contents
 
-pParenthesized :: Bool -> RParser Regex
-pParenthesized caseSensitive = do
-  _ <- lift (satisfy (== 40))
-  -- pcrepattern says: A group that starts with (?| resets the capturing
-  -- parentheses numbers in each alternative.
-  resetCaptureNumbers <- option False (True <$ lift (string "?|"))
-  modifier <- if resetCaptureNumbers
-                 then return id
-                 else lift (satisfy (== 63) *> pGroupModifiers)
-                    <|> (MatchCapture <$> (modify (+ 1) *> get))
-  currentCaptureNumber <- get
-  contents <- option MatchNull $
-    foldr MatchAlt
-      <$> (pAltPart caseSensitive)
-      <*> (many $ lift (char '|') *>
-            (((if resetCaptureNumbers
-                  then put currentCaptureNumber
-                  else return ()) >> pAltPart caseSensitive) <|> pure mempty))
-  _ <- lift (satisfy (== 41))
-  return $ modifier contents
+-- Inline modifiers like (?i) or (?-i), without a colon, apply from
+-- this point to the end of the enclosing group (or pattern).  The
+-- state change persists after the closing parenthesis; the enclosing
+-- group's save/restore of rsCaseSensitive provides the scoping.
+pInlineModifiers :: RParser Regex
+pInlineModifiers = do
+  stModifier <- lift $ char '?' *> pRegexModifier <* char ')'
+  modify stModifier
+  return MatchNull
 
-pGroupModifiers :: Parser (Regex -> Regex)
+pGroupModifiers :: Parser (Regex -> Regex, RState -> RState)
 pGroupModifiers =
-  (id <$ char ':')
+  (do stmod <- pRegexModifier -- (?i:
+      void (char ':')
+      pure (id, stmod))
    <|>
      do dir <- option Forward $ Backward <$ char '<'
-        (AssertPositive dir <$ char '=') <|> (AssertNegative dir <$ char '!')
+        ((AssertPositive dir, id) <$ char '=') <|>
+          ((AssertNegative dir, id) <$ char '!')
    <|>
-     do n <- satisfy (\d -> d >= 48 && d <= 57)
-        return (\_ -> Subroutine (fromIntegral n - 48))
+     do ds <- many1 digit
+        case readMay ds of
+          Just !n -> return (\_ -> Subroutine n, id)
+          Nothing -> fail "not a number"
    <|>
-     do _ <- satisfy (== 82) -- R
-        return  (\_ -> Subroutine 0)
+     do void $ char 'R'
+        return  (\_ -> Subroutine 0, id)
+   <|> -- atomic group (?>...): no backtracking into the group
+     ((Possessive, id) <$ char '>')
 
-pSuffix :: Regex -> Parser Regex
+pRegexModifier :: Parser (RState -> RState)
+pRegexModifier = do
+  -- Of PCRE's inline flags we implement i and U (ungreedy).  We also
+  -- accept m and s, which are no-ops for us: subjects are single
+  -- lines, so there are no newlines for (?s) to let . match or for
+  -- (?m) to change the meaning of ^ and $.  Flags that would change
+  -- semantics we don't implement (x, n, ...) are rejected, causing a
+  -- compile error, as unknown flags do in PCRE.  Turning flags *off*
+  -- is always safe, since only i and U are ever on.
+  ons <- many $ satisfy (inClass "imsU")
+  offs <- option [] $ char '-' *>
+                      many (satisfy (inClass "imnsxU"))
+  pure $ \st -> st{
+    rsCaseSensitive =
+      if 'i' `elem` ons && 'i' `notElem` offs
+         then False
+         else ('i' `elem` offs) || rsCaseSensitive st
+  , rsMinimal =
+      if 'U' `elem` ons && 'U' `notElem` offs
+         then True
+         else ('U' `notElem` offs) && rsMinimal st
+  }
+
+pSuffix :: Regex -> RParser Regex
+-- a quantifier after an anchor or word-boundary assertion is a
+-- compile error in PCRE ("quantifier does not follow a repeatable
+-- item").  We get the same effect by leaving the quantifier
+-- unconsumed: *, +, and ? are rejected by pRegexChar as special, and
+-- { is rejected there when it begins a valid quantifier.
+pSuffix re@AssertBeginning = pure re
+pSuffix re@AssertEnd = pure re
+pSuffix re@AssertWordBoundary = pure re
 pSuffix re = option re $ do
-  w <- satisfy (\x -> x == 42 || x == 43 || x == 63 || x == 123)
-  (case w of
-    42  -> return $ MatchAlt (MatchSome re) MatchNull
-    43  -> return $ MatchSome re
-    63  -> return $ MatchAlt re MatchNull
-    123 -> do
-      let isDig x = x >= 48 && x < 58
-      minn <- option Nothing $ readMay . U.toString <$> A.takeWhile isDig
-      maxn <- option minn $ char ',' *>
-                       (readMay . U.toString <$> A.takeWhile isDig)
-      _ <- char '}'
+  w <- lift $ satisfy (inClass "*+?{")
+  case w of
+    '*'  -> withModifier (MatchAlt (MatchSome re) MatchNull)
+                         (MatchAlt MatchNull (Lazy (MatchSome re)))
+    '+'  -> withModifier (MatchSome re) (Lazy (MatchSome re))
+    '?'  -> withModifier (MatchAlt re MatchNull) (MatchAlt MatchNull re)
+    '{'  -> do
+      minn <- lift $
+        option Nothing $ readMay . T.unpack <$> A.takeWhile isDigit
+      maxn <- lift $ option minn $ char ',' *>
+                       (readMay . T.unpack <$> A.takeWhile isDigit)
+      _ <- lift $ char '}'
       case (minn, maxn) of
-          (Nothing, Nothing) -> mzero
-          (Just n, Nothing)  -> return $! atleast n re
-          (Nothing, Just n)  -> return $! atmost n re
-          (Just m, Just n)   -> return $! between m n re
-    _   -> fail "pSuffix encountered impossible byte") >>= pQuantifierModifier
+          _ | maybe False (> maxRepeat) minn ||
+              maybe False (> maxRepeat) maxn
+                             -> mzero -- the unconsumed {..} then causes a
+                                      -- parse error via pRegexChar, as in
+                                      -- PCRE ("number too big in {}
+                                      -- quantifier")
+          (Nothing, Nothing) -> mzero -- {} and {,} are literal
+          (Just n, Nothing)  -> withModifier (atleast n re) (atleastLazy n re)
+          (Nothing, Just n)  -> withModifier (atmost n re) (atmostLazy n re)
+          (Just m, Just n)
+            | m > n          -> mzero -- e.g. a{3,1}: the unconsumed {..}
+                                      -- then causes a parse error via
+                                      -- pRegexChar, as in PCRE ("numbers
+                                      -- out of order in {} quantifier")
+            | otherwise      -> withModifier (between m n re)
+                                             (betweenLazy m n re)
+    _   -> fail "pSuffix encountered impossible byte"
  where
-   atmost 0 _ = MatchNull
-   atmost n r = MatchAlt (mconcat (replicate n r)) (atmost (n-1) r)
+   -- A lazy quantifier prefers fewer repetitions, which is expressed
+   -- by putting the empty alternative first; Lazy itself is only ever
+   -- applied to MatchSome (the matcher relies on this).  A possessive
+   -- quantifier commits to the preferred match of the greedy version.
+   -- In minimal (ungreedy) mode the roles of the bare quantifier and
+   -- the ? modifier are swapped, as with PCRE's UNGREEDY option;
+   -- possessive quantifiers are unaffected.
+   withModifier :: Regex -> Regex -> RParser Regex
+   withModifier greedy lazy = do
+     minimal <- gets rsMinimal
+     let (bare, questioned) = if minimal
+                                 then (lazy, greedy)
+                                 else (greedy, lazy)
+     lift $ (Possessive greedy <$ char '+') <|> (questioned <$ char '?')
+            <|> pure bare
 
+   -- repeat counts larger than this (the limit PCRE2 uses) are not
+   -- treated as quantifiers:
+   maxRepeat = 65535 :: Int
+
+   -- nest the optional matches -- r(r(r)?)? -- so that the size of
+   -- the compiled regex is linear, not quadratic, in n:
+   atmost n r
+     | n <= 0 = MatchNull
+     | otherwise = MatchAlt (r <> atmost (n - 1) r) MatchNull
+
+   atmostLazy n r
+     | n <= 0 = MatchNull
+     | otherwise = MatchAlt MatchNull (r <> atmostLazy (n - 1) r)
+
    between 0 n r = atmost n r
    between m n r = mconcat (replicate m r) <> atmost (n - m) r
 
+   betweenLazy 0 n r = atmostLazy n r
+   betweenLazy m n r = mconcat (replicate m r) <> atmostLazy (n - m) r
+
    atleast n r = mconcat (replicate n r) <> MatchAlt (MatchSome r) MatchNull
 
-pQuantifierModifier :: Regex -> Parser Regex
-pQuantifierModifier re = option re $
-  (Possessive re <$ satisfy (== 43)) <|>
-  (Lazy re <$ satisfy (==63))
+   atleastLazy n r = mconcat (replicate n r) <>
+                     MatchAlt MatchNull (Lazy (MatchSome r))
 
-pRegexChar :: Bool -> Parser Regex
-pRegexChar caseSensitive = do
-  w <- satisfy $ const True
+pRegexChar :: RParser Regex
+pRegexChar = do
+  w <- lift anyChar
+  caseSensitive <- gets rsCaseSensitive
   case w of
-    46  -> return MatchAnyChar
-    37 -> (do -- dynamic %1 %2
-              ds <- A.takeWhile1 (\x -> x >= 48 && x <= 57)
-              case readMay (U.toString ds) of
+    '.'  -> return MatchAnyChar
+    '%' -> (do -- dynamic %1 %2
+              ds <- lift $ many1 digit
+              case readMay ds of
                 Just !n -> return $ MatchDynamic n
                 Nothing -> fail "not a number")
             <|> return (MatchChar (== '%'))
-    92  -> pRegexEscapedChar
-    36  -> return AssertEnd
-    94  -> return AssertBeginning
-    91  -> pRegexCharClass
-    _ | w < 128
-      , not (isSpecial w)
-         -> do let c = chr $ fromIntegral w
-               return $! MatchChar $
-                        if caseSensitive
-                           then (== c)
-                           else (\d -> toLower d == toLower c)
-      | w >= 0xc0 -> do
-          rest <- case w of
-                    _ | w >= 0xf0 -> A.take 3
-                      | w >= 0xe0 -> A.take 2
-                      | otherwise -> A.take 1
-          case U.uncons (B.cons w rest) of
-            Just (d, _) -> return $! MatchChar $
-                             if caseSensitive
-                                then (== d)
-                                else (\e -> toLower e == toLower d)
-            Nothing     -> fail "could not decode as UTF8"
-      | otherwise -> mzero
+    '\\' -> lift $ pRegexEscapedChar caseSensitive
+    '$'  -> return AssertEnd
+    '^'  -> return AssertBeginning
+    '['  -> lift $ pRegexCharClass caseSensitive
+    '{'  -> do
+      -- if this { begins a valid quantifier, there is nothing for it
+      -- to repeat, which is a compile error in PCRE ("quantifier does
+      -- not follow a repeatable item"); the same happens with a
+      -- quantifier that pSuffix declined to consume (out-of-order or
+      -- too-big repeat counts, which are also compile errors in PCRE):
+      isQuantifier <- lift $ option False (True <$ pQuantifierShape)
+      if isQuantifier
+         then fail "quantifier does not follow a repeatable item"
+         else return $ MatchChar (== '{')
+    _ | isSpecial w -> mzero
+      | otherwise -> return $!
+            MatchChar $ if caseSensitive
+                           then (== w)
+                           else (\d -> toLower d == toLower w)
 
-pRegexEscapedChar :: Parser Regex
-pRegexEscapedChar = do
-  c <- anyChar
+-- The forms {m}, {m,}, {m,n}, and {,n} are quantifiers (PCRE also
+-- recognizes {,n} as of 10.43); anything else beginning with { --
+-- e.g. {}, {,}, {b}, or an unclosed {2 -- is a sequence of literal
+-- characters.  Assumes the initial { has already been consumed.
+pQuantifierShape :: Parser ()
+pQuantifierShape = do
+  _ <- (A.takeWhile1 isDigit <* option ',' (char ',' <* A.takeWhile isDigit))
+        <|> (char ',' *> A.takeWhile1 isDigit)
+  void $ char '}'
+
+pRegexEscapedChar :: Bool -> Parser Regex
+pRegexEscapedChar caseSensitive = do
+  c <- A.anyChar
   (case c of
     'b' -> return AssertWordBoundary
     'B' -> return $ AssertNegative Forward AssertWordBoundary
+    -- PCRE's \G asserts the position at which the match attempt
+    -- started.  Since matching is always anchored at the start of
+    -- the input we are given, that is the same as AssertBeginning:
+    'G' -> return AssertBeginning
+    -- PCRE's \A asserts the start of the subject.  Since matching is
+    -- always anchored at the start of the input we are given, that is
+    -- also the same as AssertBeginning:
+    'A' -> return AssertBeginning
     '{' -> do -- captured pattern: \1 \2 \{12}
-              ds <- A.takeWhile1 (\x -> x >= 48 && x <= 57)
+              ds <- many1 digit
               _ <- char '}'
-              case readMay (U.toString ds) of
-                Just !n -> return $ MatchCaptured $ n
+              case readMay ds of
+                Just !n -> return $ MatchCaptured n caseSensitive
                 Nothing -> fail "not a number"
+    'g' -> do -- PCRE backreference syntax: \g1 \g{12}
+              ds <- (char '{' *> many1 digit <* char '}') <|> many1 digit
+              case readMay ds of
+                Just !n -> return $ MatchCaptured n caseSensitive
+                Nothing -> fail "not a number"
     'd' -> return $ MatchChar isDigit
     'D' -> return $ MatchChar (not . isDigit)
     's' -> return $ MatchChar isSpace
     'S' -> return $ MatchChar (not . isSpace)
+    'h' -> return $ MatchChar isHorizSpace
+    'H' -> return $ MatchChar (not . isHorizSpace)
     'w' -> return $ MatchChar isWordChar
     'W' -> return $ MatchChar (not . isWordChar)
-    _ | c >= '0' && c <= '9' ->
-       return $! MatchCaptured (ord c - ord '0')
-      | otherwise -> mzero) <|> (MatchChar . (==) <$> pEscaped c)
+    'p' -> MatchChar <$> pUnicodeCharClass
+    'P' -> MatchChar . (not .) <$> pUnicodeCharClass
+    _ | isDigit c, c /= '0' -> -- \0 is an octal escape, not a backreference
+       return $! MatchCaptured (ord c - ord '0') caseSensitive
+      | otherwise -> mzero) <|> (matchLiteralChar <$> pEscaped c)
+ where
+   matchLiteralChar d = MatchChar $
+     if caseSensitive
+        then (== d)
+        else \x -> toLower x == toLower d
 
 pEscaped :: Char -> Parser Char
 pEscaped c =
   case c of
     '\\' -> return c
     'a' -> return '\a'
+    -- \b means backspace inside a character class (outside one, it is
+    -- a word boundary assertion handled by pRegexEscapedChar):
+    'b' -> return '\b'
     'f' -> return '\f'
     'n' -> return '\n'
     'r' -> return '\r'
     't' -> return '\t'
     'v' -> return '\v'
-    '0' -> do -- \0ooo matches octal ooo
-      ds <- A.take 3
-      case readMay ("'\\o" ++ U.toString ds ++ "'") of
+    '0' -> do -- \0 followed by up to two octal digits (as in PCRE)
+      ds <- A.scan (0 :: Int) (\s w -> if s < 2 && isOctDigit w
+                                          then Just (s + 1)
+                                          else Nothing)
+      case readMay ("'\\o0" ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid octal character escape"
     _ | c >= '1' && c <= '7' -> do
       -- \123 matches octal 123, \1 matches octal 1
       let octalDigitScanner s w
-            | s < 3, w >= 48 && w <= 55
-                        = Just (s + 1) -- digits 0-7
+            | s < 3, isOctDigit w = Just (s + 1) -- digits 0-7
             | otherwise = Nothing
       ds <- A.scan (1 :: Int) octalDigitScanner
-      case readMay ("'\\o" ++ [c] ++ U.toString ds ++ "'") of
+      case readMay ("'\\o" ++ [c] ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid octal character escape"
     'z' -> do -- \zhhhh matches unicode hex char hhhh
       ds <- A.take 4
-      case readMay ("'\\x" ++ U.toString ds ++ "'") of
+      case readMay ("'\\x" ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid hex character escape"
     'x' -> do -- \xhh matches hex hh, \x{h+} matches hex h+
-      ds <- (satisfy (== 123) *> A.takeWhile (/= 125) <* satisfy (== 125))
+      ds <- (char '{' *> A.takeWhile (/= '}') <* char '}')
              <|> A.take 2
-      case readMay ("'\\x" ++ U.toString ds ++ "'") of
+      case readMay ("'\\x" ++ T.unpack ds ++ "'") of
         Just x  -> return x
         Nothing -> fail "invalid hex character escape"
     _ | isPunctuation c || isSymbol c || isSpace c -> return c
       | otherwise -> fail $ "invalid escape \\" ++ [c]
 
-pRegexCharClass :: Parser Regex
-pRegexCharClass = do
-  negated <- option False $ True <$ satisfy (== 94) -- '^'
+pRegexCharClass :: Bool -> Parser Regex
+pRegexCharClass caseSensitive = do
+  negated <- option False $ True <$ char '^'
   let getEscapedClass = do
-        _ <- satisfy (== 92) -- backslash
+        _ <- char '\\'
         (isDigit <$ char 'd')
          <|> (not . isDigit <$ char 'D')
          <|> (isSpace <$ char 's')
          <|> (not . isSpace <$ char 'S')
+         <|> (isHorizSpace <$ char 'h')
+         <|> (not . isHorizSpace <$ char 'H')
          <|> (isWordChar <$ char 'w')
          <|> (not . isWordChar <$ char 'W')
   let getPosixClass = do
         _ <- string "[:"
-        localNegated <- option False $ True <$ satisfy (== 94) -- '^'
+        localNegated <- option False $ True <$ char '^'
         res <- (isAlphaNum <$ string "alnum")
              <|> (isAlpha <$ string "alpha")
              <|> (isAscii <$ string "ascii")
              <|> ((\c -> isSpace c && c `notElem` ['\n','\r','\f','\v']) <$
                    string "blank")
              <|> (isControl <$ string "cntrl")
-             <|> ((\c -> isPrint c || isSpace c) <$ string "graph:")
+             <|> (isDigit <$ string "digit")
+             <|> ((\c -> isPrint c && not (isSpace c)) <$ string "graph")
              <|> (isLower <$ string "lower")
              <|> (isUpper <$ string "upper")
              <|> (isPrint <$ string "print")
@@ -247,77 +414,125 @@
              <|> (isSpace <$ string "space")
              <|> ((\c -> isAlphaNum c ||
                          generalCategory c == ConnectorPunctuation)
-                   <$ string "word:")
+                   <$ string "word")
              <|> (isHexDigit <$ string "xdigit")
         _ <- string ":]"
         return $! if localNegated then not . res else res
-  let getC = (satisfy (== 92) *> anyChar >>= pEscaped) <|>
-       (chr . fromIntegral <$> satisfy (\x -> x /= 92 && x /= 93)) -- \ ]
+  let getC = (char '\\' *> anyChar >>= pEscaped) <|>
+             satisfy (\c -> c /= '\\' && c /= ']')
   let getCRange = do
         c <- getC
-        (\d -> (\x -> x >= c && x <= d)) <$> (char '-' *> getC) <|>
+        (\d x -> x >= c && x <= d) <$> (char '-' *> getC) <|>
           return (== c)
-  let getCClass = do -- character class \p{Lo}
-        _ <- A.string "\\p"
-        ds <- satisfy (== 123) *> A.takeWhile (/= 125) <* satisfy (== 125)
-        return $
-          (case ds of
-            "Lu" -> (== UppercaseLetter)
-            "Ll" -> (== LowercaseLetter)
-            "Lt" -> (== TitlecaseLetter)
-            "Lm" -> (== ModifierLetter)
-            "Lo" -> (== OtherLetter)
-            "Mn" -> (== NonSpacingMark)
-            "Mc" -> (== SpacingCombiningMark)
-            "Me" -> (== EnclosingMark)
-            "Nd" -> (== DecimalNumber)
-            "Nl" -> (== LetterNumber)
-            "No" -> (== OtherNumber)
-            "Pc" -> (== ConnectorPunctuation)
-            "Pd" -> (== DashPunctuation)
-            "Ps" -> (== OpenPunctuation)
-            "Pe" -> (== ClosePunctuation)
-            "Pi" -> (== InitialQuote)
-            "Pf" -> (== FinalQuote)
-            "Po" -> (== OtherPunctuation)
-            "Sm" -> (== MathSymbol)
-            "Sc" -> (== CurrencySymbol)
-            "Sk" -> (== ModifierSymbol)
-            "So" -> (== OtherSymbol)
-            "Zs" -> (== Space)
-            "Zl" -> (== LineSeparator)
-            "Zp" -> (== ParagraphSeparator)
-            "Cc" -> (== Control)
-            "Cf" -> (== Format)
-            "Cs" -> (== Surrogate)
-            "Co" -> (== PrivateUse)
-            "Cn" -> (== NotAssigned)
-            _    -> (const False)) . generalCategory
-  brack <- option [] $ [(==']')] <$ char ']'
-  fs <- many (getEscapedClass <|> getPosixClass <|> getCRange <|> getCClass)
-  _ <- satisfy (== 93) -- ]
+  let getQELiteral = do
+        void $ A.string "\\Q"
+        cs <- manyTill anyChar (A.string "\\E")
+        return $! \c -> any (== c) cs
+  -- a ] in first position is a literal; it may also be the start of
+  -- a range, as in []-a]:
+  brack <- option [] $ do
+    _ <- char ']'
+    (do d <- char '-' *> getC
+        return [\x -> x >= ']' && x <= d])
+      <|> return [(== ']')]
+  fs <- many (getQELiteral <|> getEscapedClass <|> getPosixClass <|> getCRange
+              <|> (A.string "\\p" *> pUnicodeCharClass)
+              <|> (A.string "\\P" *> ((not .) <$> pUnicodeCharClass)))
+  void $ char ']'
   let f c = any ($ c) $ brack ++ fs
-  return $! MatchChar (if negated then (not . f) else f)
+  -- for case-insensitive matching, a character matches (or, if
+  -- negated, is excluded) if any of its case variants matches:
+  let f' c | caseSensitive = f c
+           | otherwise = f c || f (toLower c) || f (toUpper c)
+  return $! MatchChar $ if negated
+                           then not . f'
+                           else f'
 
-anyChar :: Parser Char
-anyChar = do
-  w <- satisfy (const True)
-  return $! chr $ fromIntegral w
+-- character class \p{Lo}, \p{^Lo}, or \pL; we assume \p is already
+-- parsed
+pUnicodeCharClass :: Parser (Char -> Bool)
+pUnicodeCharClass = do
+  (negated, ds) <-
+    (char '{' *> ((,) <$> option False (True <$ char '^')
+                      <*> (A.takeWhile (/= '}') <* char '}')))
+     <|> ((,) False . T.singleton <$> satisfy isAlpha)
+  let neg = if negated then (not .) else id
+  return $ neg $
+    (case ds of
+      "Lu" -> (== UppercaseLetter)
+      "Ll" -> (== LowercaseLetter)
+      "Lt" -> (== TitlecaseLetter)
+      "Lm" -> (== ModifierLetter)
+      "Lo" -> (== OtherLetter)
+      "L" -> (\c -> c == UppercaseLetter || c == LowercaseLetter ||
+                    c == TitlecaseLetter || c == ModifierLetter ||
+                    c == OtherLetter)
+      "Mn" -> (== NonSpacingMark)
+      "Mc" -> (== SpacingCombiningMark)
+      "Me" -> (== EnclosingMark)
+      "M" -> (\c -> c == NonSpacingMark || c == SpacingCombiningMark ||
+                    c == EnclosingMark)
+      "Nd" -> (== DecimalNumber)
+      "Nl" -> (== LetterNumber)
+      "No" -> (== OtherNumber)
+      "N" -> (\c -> c == DecimalNumber || c == LetterNumber ||
+                    c == OtherNumber)
+      "Pc" -> (== ConnectorPunctuation)
+      "Pd" -> (== DashPunctuation)
+      "Ps" -> (== OpenPunctuation)
+      "Pe" -> (== ClosePunctuation)
+      "Pi" -> (== InitialQuote)
+      "Pf" -> (== FinalQuote)
+      "Po" -> (== OtherPunctuation)
+      "P" -> (\c -> c == ConnectorPunctuation || c == DashPunctuation ||
+                    c == OpenPunctuation || c == ClosePunctuation ||
+                    c == InitialQuote || c == FinalQuote ||
+                    c == OtherPunctuation)
+      "Sm" -> (== MathSymbol)
+      "Sc" -> (== CurrencySymbol)
+      "Sk" -> (== ModifierSymbol)
+      "So" -> (== OtherSymbol)
+      "S" -> (\c -> c == MathSymbol || c == CurrencySymbol ||
+                    c == ModifierSymbol || c == OtherSymbol)
+      "Zs" -> (== Space)
+      "Zl" -> (== LineSeparator)
+      "Zp" -> (== ParagraphSeparator)
+      "Z" -> (\c -> c == Space || c == LineSeparator ||
+                    c == ParagraphSeparator)
+      "Cc" -> (== Control)
+      "Cf" -> (== Format)
+      "Cs" -> (== Surrogate)
+      "Co" -> (== PrivateUse)
+      "Cn" -> (== NotAssigned)
+      "C" -> (\c -> c == Control || c == Format || c == Surrogate ||
+                    c == PrivateUse || c == NotAssigned)
+      _    -> const False) . generalCategory
 
-isSpecial :: Word8 -> Bool
-isSpecial 92 = True -- '\\'
-isSpecial 63 = True -- '?'
-isSpecial 42 = True -- '*'
-isSpecial 43 = True -- '+'
--- isSpecial 123 = True -- '{'  -- this is okay except in suffixes
-isSpecial 91 = True -- '['
-isSpecial 93 = True -- ']'
-isSpecial 37 = True -- '%'
-isSpecial 40 = True -- '('
-isSpecial 41 = True -- ')'
-isSpecial 124 = True -- '|'
-isSpecial 46 = True -- '.'
-isSpecial 36 = True -- '$'
-isSpecial 94 = True -- '^'
+
+-- PCRE's \h matches this fixed list of horizontal whitespace
+-- characters (which is not the same as Unicode category Zs):
+isHorizSpace :: Char -> Bool
+isHorizSpace c =
+  c == '\t' || c == ' ' || c == '\xA0' || c == '\x1680' || c == '\x180E' ||
+  (c >= '\x2000' && c <= '\x200A') || c == '\x202F' || c == '\x205F' ||
+  c == '\x3000'
+
+isSpecial :: Char -> Bool
+isSpecial '\\' = True
+isSpecial '?'  = True
+isSpecial '*'  = True
+isSpecial '+'  = True
+-- isSpecial '{' = True -- this is okay except in suffixes
+isSpecial '[' = True
+-- an unmatched ] is treated as a literal (as in PCRE), so it is
+-- not included here; the ] terminating a character class is consumed
+-- by pRegexCharClass:
+isSpecial '%' = True
+isSpecial '(' = True
+isSpecial ')' = True
+isSpecial '|' = True
+isSpecial '.' = True
+isSpecial '$' = True
+isSpecial '^' = True
 isSpecial _  = False
 
diff --git a/src/Regex/KDE/Match.hs b/src/Regex/KDE/Match.hs
--- a/src/Regex/KDE/Match.hs
+++ b/src/Regex/KDE/Match.hs
@@ -5,13 +5,18 @@
 {-# LANGUAGE BinaryLiterals #-}
 module Regex.KDE.Match
  ( matchRegex
+ , matchRegexWithGroups
+ , extractCapturingGroups
  ) where
 
 import qualified Data.ByteString as B
 import Data.ByteString (ByteString)
 import qualified Data.ByteString.UTF8 as U
+import Data.Char (toLower)
 import qualified Data.Set as Set
 import Data.Set (Set)
+import Data.Bits (shiftL, (.|.))
+import Data.Word (Word8)
 import Regex.KDE.Regex
 import qualified Data.IntMap.Strict as M
 #if !MIN_VERSION_base(4,11,0)
@@ -21,20 +26,72 @@
 -- Note that all matches are from the beginning of the string.
 -- The ^ anchor is implicit at the beginning of the regex.
 
+-- To reproduce PCRE's leftmost-first (backtracking) semantics in a
+-- set-based matcher, every match carries a path recording the choices
+-- made to reach it: 0 for taking the left branch of an alternation or
+-- continuing a greedy repetition, 1 for the right branch or ending
+-- the repetition (for lazy repetitions the loop codes are reversed).
+-- Comparing paths lexicographically gives the order in which a
+-- backtracking matcher like PCRE would find the matches, so the
+-- preferred match is always the one with the smallest path.
+
+-- A sequence of binary choices, packed into an Integer (most recent
+-- choice in the least significant bit) together with its length.
+-- Compared lexicographically as a bit sequence, with a proper prefix
+-- ordered before its extensions.
+data Path = Path !Integer !Int
+  deriving (Show, Eq)
+
+instance Ord Path where
+  compare (Path i1 l1) (Path i2 l2) =
+    compare (i1 `shiftL` max 0 (l2 - l1)) (i2 `shiftL` max 0 (l1 - l2))
+      <> compare l1 l2
+
+emptyPath :: Path
+emptyPath = Path 0 0
+
+pathSnoc :: Path -> Word8 -> Path
+pathSnoc (Path i l) b = Path ((i `shiftL` 1) .|. fromIntegral b) (l + 1)
+
 data Match =
    Match { matchBytes    :: !ByteString
          , matchOffset   :: !Int
          , matchCaptures :: !(M.IntMap (Int, Int))
                                   -- starting offset, length in bytes
-         } deriving (Show, Eq)
+         , matchPath     :: !Path
+         } deriving (Show)
 
--- preferred matches are <=
+-- consistent with Ord (which ignores matchBytes, since all matches
+-- in a given run share it):
+instance Eq Match where
+  m1 == m2 = compare m1 m2 == EQ
+
+-- preferred matches are <=; the path (priority) is decisive, and the
+-- other comparisons only make the order total:
 instance Ord Match where
-  m1 <= m2
-    | matchOffset m1 > matchOffset m2 = True
-    | matchOffset m1 < matchOffset m2 = False
-    | otherwise = matchCaptures m1 >= matchCaptures m2
+  compare m1 m2 =
+    compare (matchPath m1) (matchPath m2) <>
+    compare (matchOffset m1) (matchOffset m2) <>
+    compare (matchCaptures m1) (matchCaptures m2)
 
+-- the state of a match, disregarding its priority
+stateKey :: Match -> (Int, M.IntMap (Int, Int))
+stateKey m = (matchOffset m, matchCaptures m)
+
+-- append a choice to the path of every match
+addChoice :: Word8 -> Set Match -> Set Match
+addChoice !b = Set.map (\m -> m{ matchPath = pathSnoc (matchPath m) b })
+
+-- Discard any match whose state coincides with that of a preferred
+-- (smaller-path) match: their futures are identical, and a
+-- backtracking matcher would explore the preferred one first.
+dedup :: Set Match -> Set Match
+dedup = snd . Set.foldl' step (Set.empty, Set.empty)
+ where
+  step (!seen, !out) m
+    | stateKey m `Set.member` seen = (seen, out)
+    | otherwise = (Set.insert (stateKey m) seen, Set.insert m out)
+
 mapMatching :: (Match -> Match) -> Set Match -> Set Match
 mapMatching f = Set.filter ((>= 0) . matchOffset) . Set.map f
 
@@ -42,22 +99,28 @@
 sizeLimit :: Int
 sizeLimit = 2000
 
--- prune matches if it gets out of hand
+-- prune matches if it gets out of hand, keeping preferred matches
 prune :: Set Match -> Set Match
 prune ms = if Set.size ms > sizeLimit
               then Set.take sizeLimit ms
               else ms
 
--- first argument is a map of capturing groups, needed for Subroutine.
-exec :: M.IntMap Regex -> Direction -> Regex -> Set Match -> Set Match
+-- first argument: the set of subroutine calls (group number, offset)
+-- currently being evaluated -- used to prevent infinite recursion --
+-- and a map of capturing groups, needed for Subroutine.
+exec :: (Set (Int, Int), M.IntMap Regex)
+     -> Direction -> Regex -> Set Match -> Set Match
 exec _ _ MatchNull = id
-exec cgs dir (Lazy re) = -- note: the action is below under Concat
-  exec cgs dir (MatchConcat (Lazy re) MatchNull)
+exec cgs dir (Lazy (MatchSome re)) = someLoop cgs dir re 1 0
+exec cgs dir (Lazy re) = -- Lazy is only applied to MatchSome (see Compile)
+  exec cgs dir re
 exec cgs dir (Possessive re) =
-  foldr
-    (\elt s -> case Set.lookupMin (exec cgs dir re (Set.singleton elt)) of
-                 Nothing -> s
-                 Just m  -> Set.insert m s)
+  -- commit to the first match (in backtracking order) of re; its
+  -- internal choices are forgotten, so the path is reset:
+  Set.foldl'
+    (\s m -> case Set.lookupMin (exec cgs dir re (Set.singleton m)) of
+               Nothing -> s
+               Just m' -> Set.insert m'{ matchPath = matchPath m } s)
     mempty
 exec cgs dir (MatchDynamic n) = -- if this hasn't been replaced, match literal
   exec cgs dir (MatchChar (== '%') <>
@@ -65,11 +128,16 @@
 exec _ _ AssertEnd = Set.filter (\m -> matchOffset m == B.length (matchBytes m))
 exec _ _ AssertBeginning = Set.filter (\m -> matchOffset m == 0)
 exec cgs _ (AssertPositive dir regex) =
-  Set.unions . Set.map
-    (\m -> Set.map (\m' -> -- we keep captures but not matches
-                            m'{ matchBytes = matchBytes m,
-                               matchOffset = matchOffset m })
-           $ exec cgs dir regex (Set.singleton m))
+  -- assertions are atomic: only the captures of the first match (in
+  -- backtracking order) of the assertion are kept, as in PCRE:
+  Set.foldl'
+    (\s m -> case Set.lookupMin (exec cgs dir regex (Set.singleton m)) of
+               Nothing -> s
+               Just m' -> Set.insert
+                            m'{ matchBytes = matchBytes m
+                              , matchOffset = matchOffset m
+                              , matchPath = matchPath m } s)
+    mempty
 exec cgs _ (AssertNegative dir regex) =
   Set.filter (\m -> null (exec cgs dir regex (Set.singleton m)))
 exec _ _ AssertWordBoundary = Set.filter atWordBoundary
@@ -94,22 +162,7 @@
         _                -> m{ matchOffset = -1 }
 exec cgs dir (MatchConcat (MatchConcat r1 r2) r3) =
   exec cgs dir (MatchConcat r1 (MatchConcat r2 r3))
-exec cgs Forward (MatchConcat (Lazy r1) r2) =
-  Set.foldl Set.union mempty . Set.map
-    (\m ->
-      let ms1 = exec cgs Forward r1 (Set.singleton m)
-       in if Set.null ms1
-             then ms1
-             else go ms1)
- where
-  go ms = case Set.lookupMax ms of   -- find shortest match
-            Nothing -> Set.empty
-            Just m' ->
-              let s' = exec cgs Forward r2 (Set.singleton m')
-               in if Set.null s'
-                     then go (Set.delete m' ms)
-                     else s'
-exec cgs Forward (MatchConcat r1 r2) = -- TODO longest match first
+exec cgs Forward (MatchConcat r1 r2) =
   \ms ->
     let ms1 = exec cgs Forward r1 ms
      in if Set.null ms1
@@ -117,14 +170,9 @@
            else exec cgs Forward r2 (prune ms1)
 exec cgs Backward (MatchConcat r1 r2) =
   exec cgs Backward r1 . exec cgs Backward r2
-exec cgs dir (MatchAlt r1 r2) = \ms -> exec cgs dir r1 ms <> exec cgs dir r2 ms
-exec cgs dir (MatchSome re) = go
- where
-  go ms = case exec cgs dir re ms of
-            ms' | Set.null ms' -> Set.empty
-                | ms' == ms    -> ms
-                | otherwise    -> let ms'' = prune ms'
-                                   in ms'' <> go ms''
+exec cgs dir (MatchAlt r1 r2) = \ms ->
+  dedup $ exec cgs dir r1 (addChoice 0 ms) <> exec cgs dir r2 (addChoice 1 ms)
+exec cgs dir (MatchSome re) = someLoop cgs dir re 0 1
 exec cgs dir (MatchCapture i re) =
   Set.foldr Set.union Set.empty .
    Set.map (\m ->
@@ -134,81 +182,158 @@
       let len = matchOffset m' - matchOffset m
       in  m'{ matchCaptures = M.insert i (matchOffset m, len)
                                   (matchCaptures m') }
-exec _ dir (MatchCaptured n) = mapMatching matchCaptured
+exec _ dir (MatchCaptured n caseSensitive) = mapMatching matchCaptured
  where
    matchCaptured m =
      case M.lookup n (matchCaptures m) of
        Just (offset, len) ->
               let capture = B.take len $ B.drop offset $ matchBytes m
               in  case dir of
-                     Forward | B.isPrefixOf capture
-                                 (B.drop (matchOffset m) (matchBytes m))
+                     Forward
+                       | caseSensitive
+                       , B.isPrefixOf capture
+                           (B.drop (matchOffset m) (matchBytes m))
                         -> m{ matchOffset = matchOffset m + B.length capture }
-                     Backward | B.isSuffixOf capture
-                                 (B.take (matchOffset m) (matchBytes m))
+                       | not caseSensitive
+                       , Just len' <- ciPrefixLength (U.toString capture)
+                             (B.drop (matchOffset m) (matchBytes m))
+                        -> m{ matchOffset = matchOffset m + len' }
+                     Backward
+                       | caseSensitive
+                       , B.isSuffixOf capture
+                           (B.take (matchOffset m) (matchBytes m))
                         -> m{ matchOffset = matchOffset m - B.length capture }
+                       | not caseSensitive
+                       , Just off' <- ciSuffixOffset
+                             (reverse (U.toString capture))
+                             (matchBytes m) (matchOffset m)
+                        -> m{ matchOffset = off' }
                      _  -> m{ matchOffset = -1 }
        Nothing -> m{ matchOffset = -1 }
-exec cgs dir (Subroutine i) =
+exec (active, cgs) dir (Subroutine i) =
   case M.lookup i cgs of
     Nothing -> id  -- ignore references to nonexistent groups
-    Just re' -> exec cgs dir re'
+    Just re' -> \ms ->
+      -- A subroutine that calls itself again without having consumed
+      -- any input can never make progress: block re-entry at the same
+      -- offset so that zero-progress recursion (e.g. `x|(?R)`) fails
+      -- instead of looping forever.
+      dedup $ Set.unions
+        [ exec (Set.insert (i, matchOffset m) active, cgs) dir re'
+            (Set.singleton m)
+        | m <- Set.toList ms
+        , (i, matchOffset m) `Set.notMember` active ]
 
+-- Match one or more repetitions of a regex.  contB is the path code
+-- appended when continuing with another repetition, stopB the one
+-- appended when stopping: 0/1 for greedy, 1/0 for lazy repetitions,
+-- so that the paths order the results the way a backtracking matcher
+-- would find them.
+someLoop :: (Set (Int, Int), M.IntMap Regex) -> Direction -> Regex
+         -> Word8 -> Word8 -> Set Match -> Set Match
+someLoop cgs dir re !contB !stopB = \ms0 ->
+  let ms1 = dedup $ exec cgs dir re ms0  -- first, obligatory repetition
+   in go (Set.map stateKey ms1) ms1
+ where
+  go !seen ms
+    | Set.null ms = Set.empty
+    | otherwise =
+        let ms' = dedup $ prune $ exec cgs dir re (addChoice contB ms)
+            -- Drop matches that revisit an already-seen state: they
+            -- have no new futures, and this guarantees termination
+            -- when an iteration can match the empty string.
+            new = Set.filter (\m -> stateKey m `Set.notMember` seen) ms'
+         in addChoice stopB ms <> go (seen <> Set.map stateKey new) new
+
 atWordBoundary :: Match -> Bool
 atWordBoundary m =
-  case matchOffset m of
-    0 -> True
-    n | n == B.length (matchBytes m) -> True
-      | otherwise ->
-           case lastCharOffset (matchBytes m) (matchOffset m) of
-             Nothing  -> True
-             Just off ->
-               case U.toString (B.drop (off - 1) (matchBytes m)) of
-                 (prev:cur:next:_) ->
-                   (isWordChar cur /= isWordChar next) ||
-                   (isWordChar cur /= isWordChar prev)
-                 _ -> True
+  case lastCharOffset (matchBytes m) (matchOffset m) of
+    Nothing  -> True
+    Just off ->
+      case U.toString (B.drop off (matchBytes m)) of
+        (cur:next:_) -> isWordChar cur /= isWordChar next
+        _ -> True
 
+-- If the characters of the first argument match the beginning of the
+-- bytestring case-insensitively, return the length in bytes of the
+-- matching prefix.
+ciPrefixLength :: String -> ByteString -> Maybe Int
+ciPrefixLength [] _ = Just 0
+ciPrefixLength (c:cs) bs =
+  case U.decode bs of
+    Just (d, n) | toLower d == toLower c ->
+      (n +) <$> ciPrefixLength cs (B.drop n bs)
+    _ -> Nothing
+
+-- If the characters of the first argument (reversed) match the
+-- characters just before the given offset case-insensitively, return
+-- the offset at which the match begins.
+ciSuffixOffset :: String -> ByteString -> Int -> Maybe Int
+ciSuffixOffset [] _ off = Just off
+ciSuffixOffset (c:cs) bs off =
+  case lastCharOffset bs off of
+    Just off' | Just (d, _) <- U.decode (B.drop off' bs)
+              , toLower d == toLower c -> ciSuffixOffset cs bs off'
+    _ -> Nothing
+
+-- Return the offset of the start of the (UTF-8 encoded) character
+-- that ends at (i.e., whose last byte is just before) offset n.
 lastCharOffset :: ByteString -> Int -> Maybe Int
 lastCharOffset _ 0 = Nothing
-lastCharOffset _ 1 = Nothing
-lastCharOffset bs n =
-  case B.index bs (n - 2) of
-    w | w <  0b10000000 -> Just (n - 1)
-      | w >= 0b11000000 -> Just (n - 1)
-      | otherwise -> lastCharOffset bs (n - 1)
+lastCharOffset bs n = go (n - 1)
+ where
+  go !k
+    | k <= 0 = Just 0
+    | isContinuationByte (B.index bs k) = go (k - 1)
+    | otherwise = Just k
+  isContinuationByte w = w >= 0b10000000 && w < 0b11000000
 
 -- | Match a Regex against a (presumed UTF-8 encoded) ByteString,
 -- returning the matched text and a map of (offset, size)
 -- pairs for captures.  Note that all matches are from the
--- beginning of the string (a @^@ anchor is implicit).  Note
--- also that to avoid pathological performance in certain cases,
--- the matcher is limited to considering 2000 possible matches
--- at a time; when that threshold is reached, it discards
--- smaller matches.  Hence certain regexes may incorrectly fail to
--- match: e.g. @a*a{3000}$@ on a string of 3000 @a@s.
+-- beginning of the string (a @^@ anchor is implicit).  As in
+-- PCRE, the match returned is the first one that a backtracking
+-- matcher would find (leftmost alternatives are preferred), which
+-- is not necessarily the longest.  Note also that to avoid
+-- pathological performance in certain cases, the matcher is limited
+-- to considering 2000 possible matches at a time; when that
+-- threshold is reached, it discards lower-priority matches.  Hence
+-- certain regexes may incorrectly fail to match: e.g. @a*a{3000}$@
+-- on a string of 3000 @a@s.
 matchRegex :: Regex
            -> ByteString
            -> Maybe (ByteString, M.IntMap (Int, Int))
-matchRegex re bs =
-  let capturingGroups = extractCapturingGroups re
-  in  toResult <$> Set.lookupMin
-               (exec capturingGroups Forward re
-                  (Set.singleton (Match bs 0 M.empty)))
+matchRegex re = matchRegexWithGroups (extractCapturingGroups re) re
+
+-- | Like 'matchRegex', but takes the map of capturing groups (as
+-- computed by 'extractCapturingGroups') as an argument, so that it
+-- can be computed once per regex instead of once per match.  (The
+-- map is only consulted for regexes containing subroutine calls
+-- like @(?1)@ or @(?R)@.)
+matchRegexWithGroups :: M.IntMap Regex
+                     -> Regex
+                     -> ByteString
+                     -> Maybe (ByteString, M.IntMap (Int, Int))
+matchRegexWithGroups capturingGroups re bs =
+  toResult <$> Set.lookupMin
+             (exec (Set.empty, capturingGroups) Forward re
+                (Set.singleton (Match bs 0 M.empty emptyPath)))
  where
    toResult m = (B.take (matchOffset m) (matchBytes m), (matchCaptures m))
 
+-- | Extract the capturing groups of a regex, numbered as in the
+-- regex, with the whole regex at key 0.
 extractCapturingGroups :: Regex -> M.IntMap Regex
-extractCapturingGroups regex = M.singleton 0 regex <>
-  case regex of
-    MatchSome re -> extractCapturingGroups re
-    MatchAlt re1 re2 ->
-      extractCapturingGroups re1 <> extractCapturingGroups re2
-    MatchConcat re1 re2 ->
-      extractCapturingGroups re1 <> extractCapturingGroups re2
-    MatchCapture i re -> M.singleton i re
-    AssertPositive _ re -> extractCapturingGroups re
-    AssertNegative _ re -> extractCapturingGroups re
-    Possessive re -> extractCapturingGroups re
-    Lazy re -> extractCapturingGroups re
-    _ -> mempty
+extractCapturingGroups regex = M.insert 0 regex (go regex)
+ where
+  -- Note: left-biased union means that with (?|...), which reuses
+  -- group numbers, the first alternative's group wins.
+  go (MatchSome re) = go re
+  go (MatchAlt re1 re2) = go re1 <> go re2
+  go (MatchConcat re1 re2) = go re1 <> go re2
+  go (MatchCapture i re) = M.insert i re (go re)
+  go (AssertPositive _ re) = go re
+  go (AssertNegative _ re) = go re
+  go (Possessive re) = go re
+  go (Lazy re) = go re
+  go _ = mempty
diff --git a/src/Regex/KDE/Regex.hs b/src/Regex/KDE/Regex.hs
--- a/src/Regex/KDE/Regex.hs
+++ b/src/Regex/KDE/Regex.hs
@@ -22,7 +22,7 @@
   MatchAlt !Regex !Regex |
   MatchConcat !Regex !Regex |
   MatchCapture !Int !Regex |
-  MatchCaptured !Int |
+  MatchCaptured !Int !Bool | -- group number, case sensitivity
   AssertWordBoundary |
   AssertBeginning |
   AssertEnd |
@@ -43,7 +43,8 @@
             ")"
   show (MatchCapture i re) = "(MatchCapture " <> show i <> " " <>
                 show re <> ")"
-  show (MatchCaptured n) = "(MatchCaptured " <> show n <> ")"
+  show (MatchCaptured n cs) = "(MatchCaptured " <> show n <> " " <>
+                show cs <> ")"
   show AssertWordBoundary = "AssertWordBoundary"
   show AssertBeginning = "AssertBeginning"
   show AssertEnd = "AssertEnd"
diff --git a/src/Skylighting/Core.hs b/src/Skylighting/Core.hs
--- a/src/Skylighting/Core.hs
+++ b/src/Skylighting/Core.hs
@@ -10,9 +10,6 @@
   , module Skylighting.Regex
   , module Skylighting.Styles
   , module Skylighting.Loader
-  , module Skylighting.Format.ANSI
-  , module Skylighting.Format.HTML
-  , module Skylighting.Format.LaTeX
   ) where
 import Control.Monad
 import Data.List (tails)
@@ -20,9 +17,6 @@
 import Data.Maybe (listToMaybe)
 import Data.Text (Text)
 import qualified Data.Text as Text
-import Skylighting.Format.ANSI
-import Skylighting.Format.HTML
-import Skylighting.Format.LaTeX
 import Skylighting.Loader
 import Skylighting.Parser
 import Skylighting.Regex
@@ -45,13 +39,17 @@
 -- | Lookup a syntax by full name (case insensitive).
 syntaxByName :: SyntaxMap -> Text -> Maybe Syntax
 syntaxByName syntaxmap name =
-  Map.lookup (Text.toLower name) (Map.mapKeys Text.toLower syntaxmap)
+  Map.lookup name syntaxmap `mplus`  -- fast path for exact match
+    listToMaybe [s | (k, s) <- Map.toList syntaxmap
+                   , Text.toLower k == lcname ]
+ where lcname = Text.toLower name
 
 -- | Lookup a syntax by short name (case insensitive).
 syntaxByShortName :: SyntaxMap -> Text -> Maybe Syntax
 syntaxByShortName syntaxmap name = listToMaybe
   [s | s <- Map.elems syntaxmap
-     , Text.toLower (sShortname s) == Text.toLower name ]
+     , Text.toLower (sShortname s) == lcname ]
+ where lcname = Text.toLower name
 
 -- | Lookup syntax by (in order) full name (case insensitive),
 -- short name (case insensitive), extension.
diff --git a/src/Skylighting/Format/ANSI.hs b/src/Skylighting/Format/ANSI.hs
deleted file mode 100644
--- a/src/Skylighting/Format/ANSI.hs
+++ /dev/null
@@ -1,80 +0,0 @@
-{-# LANGUAGE CPP               #-}
-{-# LANGUAGE OverloadedStrings #-}
-module Skylighting.Format.ANSI (
-         formatANSI
-       ) where
-import Control.Monad (mplus)
-import qualified Data.Map as Map
-import Data.Maybe (fromMaybe, isNothing, maybeToList)
-import Data.Text (Text)
-import qualified Data.Text as Text
-import Skylighting.Types
-import qualified System.Console.ANSI.Codes as ANSI
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup
-#endif
-
-formatANSI :: FormatOptions -> Style -> [SourceLine] -> Text
-formatANSI opts sty = (beforeText <>)
-                        . (<> afterText)
-                        . Text.intercalate (Text.singleton '\n')
-                        . zipWith (sourceLineToANSI opts sty) [startNum..]
-    where beforeText = ansiResetText <> ansiStyleText clv (defaultColor sty) (backgroundColor sty) False False False
-          afterText = ansiResetText
-          startNum = LineNo $ startNumber opts
-          clv = ansiColorLevel opts
-
-sourceLineToANSI :: FormatOptions -> Style -> LineNo -> SourceLine -> Text
-sourceLineToANSI opts sty lno = prependLineNoText
-                                 . mconcat
-                                 . map (tokenToANSI clv sty)
-    where prependLineNoText = if numberLines opts
-                                 then (lineNoText <>)
-                                 else id
-          lineNoText = ansiStyleText clv lineNoFgc lineNoBgc False False False
-                         <> Text.pack (show $ lineNo lno)
-                         <> ansiStyleText clv (defaultColor sty) (backgroundColor sty) False False False
-                         <> "\t"
-          lineNoFgc = lineNumberColor sty `mplus` defaultColor sty
-          lineNoBgc = lineNumberBackgroundColor sty `mplus` backgroundColor sty
-          clv = ansiColorLevel opts
-
-tokenToANSI :: ANSIColorLevel -> Style -> Token -> Text
-tokenToANSI clv sty (tokTy, tokText) = ansiStyleText clv tokFgc tokBgc tokB tokI tokU
-                                         <> tokText
-                                         <> ansiStyleText clv (defaultColor sty) (backgroundColor sty) False False False
-    where TokenStyle tokFgcRaw tokBgcRaw tokB tokI tokU = fromMaybe defStyle . Map.lookup tokTy $ tokenStyles sty
-          tokFgc = tokFgcRaw `mplus` defaultColor sty
-          tokBgc = tokBgcRaw `mplus` backgroundColor sty
-
-ansiStyleText :: ANSIColorLevel -- ^ color support level
-            -> Maybe Color -- ^ foreground
-            -> Maybe Color -- ^ background
-            -> Bool -- ^ bold
-            -> Bool -- ^ italic
-            -> Bool -- ^ underlined
-            -> Text
-ansiStyleText clv fgc bgc b i u = optReset <> sgrTextFg <> sgrTextBg
-                                    <> (Text.pack . ANSI.setSGRCode $ concat [sgrCodeFg,
-                                                                              sgrCodeBg,
-                                                                              sgrCodeBold,
-                                                                              sgrCodeItal,
-                                                                              sgrCodeUndl])
-    -- FIXME: the @ansi-terminal@ library should do the 256-color parts more cleanly someday
-    where (sgrCodeFg, sgrTextFg) = case clv of
-            ANSITrueColor -> (maybeToList $ fmap (ANSI.SetRGBColor ANSI.Foreground . fromColor) fgc, "")
-            ANSI256Color -> ([], fromMaybe "" $ fmap (\c -> Text.pack $ ANSI.csi [38, 5,
-              fromIntegral . getXterm256ColorCode $ fromColor c] "m") fgc)
-            ANSI16Color -> (maybeToList $ fmap (uncurry (ANSI.SetColor ANSI.Foreground) . fromColor) fgc, "")
-          (sgrCodeBg, sgrTextBg) = case clv of
-            ANSITrueColor -> (maybeToList $ fmap (ANSI.SetRGBColor ANSI.Background . fromColor) bgc, "")
-            ANSI256Color -> ([], fromMaybe "" $ fmap (\c -> Text.pack $ ANSI.csi [48, 5,
-              fromIntegral . getXterm256ColorCode $ fromColor c] "m") bgc)
-            ANSI16Color -> (maybeToList $ fmap (uncurry (ANSI.SetColor ANSI.Background) . fromColor) bgc, "")
-          optReset = if isNothing fgc && isNothing bgc then ansiResetText else ""
-          sgrCodeBold = [ANSI.SetConsoleIntensity $ if b then ANSI.BoldIntensity else ANSI.NormalIntensity]
-          sgrCodeItal = [ANSI.SetItalicized i] -- FIXME: Not very widely supported in terminals
-          sgrCodeUndl = [ANSI.SetUnderlining $ if u then ANSI.SingleUnderline else ANSI.NoUnderline]
-
-ansiResetText :: Text
-ansiResetText = Text.pack $ ANSI.setSGRCode [ANSI.Reset]
diff --git a/src/Skylighting/Format/HTML.hs b/src/Skylighting/Format/HTML.hs
deleted file mode 100644
--- a/src/Skylighting/Format/HTML.hs
+++ /dev/null
@@ -1,216 +0,0 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE NoOverloadedStrings #-}
-module Skylighting.Format.HTML (
-      formatHtmlInline
-    , formatHtmlBlock
-    , styleToCss
-    ) where
-
-import Data.List (intersperse, sort)
-import qualified Data.Map as Map
-import qualified Data.Text as Text
-import Skylighting.Types
-import Text.Blaze.Html
-import qualified Text.Blaze.Html5 as H
-import qualified Text.Blaze.Html5.Attributes as A
-import Data.String (fromString)
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup
-#endif
-
--- | Format tokens using HTML spans inside @code@ tags. For example,
--- A @KeywordTok@ is rendered as a span with class @kw@.
--- Short class names correspond to 'TokenType's as follows:
--- 'KeywordTok'        = @kw@,
--- 'DataTypeTok'       = @dt@,
--- 'DecValTok'         = @dv@,
--- 'BaseNTok'          = @bn@,
--- 'FloatTok'          = @fl@,
--- 'CharTok'           = @ch@,
--- 'StringTok'         = @st@,
--- 'CommentTok'        = @co@,
--- 'OtherTok'          = @ot@,
--- 'AlertTok'          = @al@,
--- 'FunctionTok'       = @fu@,
--- 'RegionMarkerTok'   = @re@,
--- 'ErrorTok'          = @er@,
--- 'ConstantTok'       = @cn@,
--- 'SpecialCharTok'    = @sc@,
--- 'VerbatimStringTok' = @vs@,
--- 'SpecialStringTok'  = @ss@,
--- 'ImportTok'         = @im@,
--- 'DocumentationTok'  = @do@,
--- 'AnnotationTok'     = @an@,
--- 'CommentVarTok'     = @cv@,
--- 'VariableTok'       = @va@,
--- 'ControlFlowTok'    = @cf@,
--- 'OperatorTok'       = @op@,
--- 'BuiltInTok'        = @bu@,
--- 'ExtensionTok'      = @ex@,
--- 'PreprocessorTok'   = @pp@,
--- 'AttributeTok'      = @at@,
--- 'InformationTok'    = @in@,
--- 'WarningTok'        = @wa@.
--- A 'NormalTok' is not marked up at all.
-formatHtmlInline :: FormatOptions -> [SourceLine] -> Html
-formatHtmlInline opts = wrapCode opts
-                      . mconcat . intersperse (toHtml "\n")
-                      . map (mapM_ (tokenToHtml opts))
-
--- | Format tokens as an HTML @pre@ block. Each line is wrapped in an a
--- element with the class ‘source-line’. If line numbering
--- is selected, the surrounding pre is given the class ‘numberSource’,
--- and the resulting html will display line numbers thanks to the included
--- CSS.  See the documentation for 'formatHtmlInline' for information about how
--- tokens are encoded.
-formatHtmlBlock :: FormatOptions -> [SourceLine] -> Html
-formatHtmlBlock opts ls =
-  H.div ! A.class_ (toValue "sourceCode") $
-  H.pre ! A.class_ (toValue $ Text.unwords classes)
-        $ wrapCode opts
-        $ mconcat . intersperse (toHtml "\n")
-        $ zipWith (sourceLineToHtml opts) [startNum..] ls
-  where  classes = Text.pack "sourceCode" :
-                   [Text.pack "numberSource" | numberLines opts] ++
-                   [x | x <- containerClasses opts
-                      , x /= Text.pack "sourceCode"]
-         startNum = LineNo $ startNumber opts
-
-wrapCode :: FormatOptions -> Html -> Html
-wrapCode opts h = H.code ! A.class_ (toValue $ Text.unwords
-                                             $ Text.pack "sourceCode"
-                                               : codeClasses opts)
-                         !? (startZero /= 0, A.style (toValue counterOverride))
-                         $ h
-  where  counterOverride = "counter-reset: source-line " <> show startZero <> ";"
-         startZero = startNumber opts - 1
-
--- | Each line of source is wrapped in an (inline-block) anchor that makes
--- subsequent per-line processing (e.g. adding line numnbers) possible.
-sourceLineToHtml :: FormatOptions -> LineNo -> SourceLine -> Html
-sourceLineToHtml opts lno cont =
-  H.span ! A.id lineNum
-         $ do
-           H.a ! A.href lineRef
-               ! (if numberLines opts
-                     then mempty
-                     else customAttribute (fromString "aria-hidden")
-                           (fromString "true")) -- see jgm/pandoc#6352
-               ! (if numberLines opts
-                     then mempty
-                     else customAttribute (fromString "tabindex")
-                           (fromString "-1"))
-               $ mempty
-           mapM_ (tokenToHtml opts) cont
-  where  lineNum = toValue prefixedLineNo
-         lineRef = toValue ('#':prefixedLineNo)
-         prefixedLineNo = Text.unpack (lineIdPrefix opts) <> show (lineNo lno)
-
-tokenToHtml :: FormatOptions -> Token -> Html
-tokenToHtml _ (NormalTok, txt)  = toHtml txt
-tokenToHtml opts (toktype, txt) =
-  if titleAttributes opts
-     then sp ! A.title (toValue $ show toktype)
-     else sp
-   where sp = H.span ! A.class_ (toValue $ short toktype) $ toHtml txt
-
-short :: TokenType -> String
-short KeywordTok        = "kw"
-short DataTypeTok       = "dt"
-short DecValTok         = "dv"
-short BaseNTok          = "bn"
-short FloatTok          = "fl"
-short CharTok           = "ch"
-short StringTok         = "st"
-short CommentTok        = "co"
-short OtherTok          = "ot"
-short AlertTok          = "al"
-short FunctionTok       = "fu"
-short RegionMarkerTok   = "re"
-short ErrorTok          = "er"
-short ConstantTok       = "cn"
-short SpecialCharTok    = "sc"
-short VerbatimStringTok = "vs"
-short SpecialStringTok  = "ss"
-short ImportTok         = "im"
-short DocumentationTok  = "do"
-short AnnotationTok     = "an"
-short CommentVarTok     = "cv"
-short VariableTok       = "va"
-short ControlFlowTok    = "cf"
-short OperatorTok       = "op"
-short BuiltInTok        = "bu"
-short ExtensionTok      = "ex"
-short PreprocessorTok   = "pp"
-short AttributeTok      = "at"
-short InformationTok    = "in"
-short WarningTok        = "wa"
-short NormalTok         = ""
-
--- | Returns CSS for styling highlighted code according to the given style.
-styleToCss :: Style -> String
-styleToCss f = unlines $
-  divspec ++ numberspec ++ colorspec ++ linkspec ++
-    sort (map toCss (Map.toList (tokenStyles f)))
-   where colorspec = pure . unwords $ [
-            "div.sourceCode\n  {"
-          , maybe "" (\c -> "color: "            ++ fromColor c ++ ";") (defaultColor f)
-          , maybe "" (\c -> "background-color: " ++ fromColor c ++ ";") (backgroundColor f)
-          , "}"
-          ]
-         numberspec = [
-            "pre.numberSource code"
-          , "  { counter-reset: source-line 0; }"
-          , "pre.numberSource code > span"
-          , "  { position: relative; left: -4em; counter-increment: source-line; }"
-          , "pre.numberSource code > span > a:first-child::before"
-          , "  { content: counter(source-line);"
-          , "    position: relative; left: -1em; text-align: right; vertical-align: baseline;"
-          , "    border: none; display: inline-block;"
-          , "    -webkit-touch-callout: none; -webkit-user-select: none;"
-          , "    -khtml-user-select: none; -moz-user-select: none;"
-          , "    -ms-user-select: none; user-select: none;"
-          , "    padding: 0 4px; width: 4em;"
-          , maybe "" (\c -> "    background-color: " ++ fromColor c ++ ";\n")
-              (lineNumberBackgroundColor f) ++
-            maybe "" (\c -> "    color: " ++ fromColor c ++ ";\n")
-              (lineNumberColor f) ++
-            "  }"
-          , "pre.numberSource { margin-left: 3em; " ++
-              maybe "" (\c -> "border-left: 1px solid " ++ fromColor c ++ "; ") (lineNumberColor f) ++
-              " padding-left: 4px; }"
-          ]
-         divspec = [
-            "pre > code.sourceCode { white-space: pre; position: relative; }" -- position relative needed for relative contents
-          , "pre > code.sourceCode > span { display: inline-block; line-height: 1.25; }"
-          , "pre > code.sourceCode > span:empty { height: 1.2em; }" -- correct empty line height
-          , ".sourceCode { overflow: visible; }" -- needed for line numbers
-          , "code.sourceCode > span { color: inherit; text-decoration: inherit; }"
-          , "div.sourceCode { margin: 1em 0; }" -- Collapse neighbours correctly
-          , "pre.sourceCode { margin: 0; }" -- Collapse neighbours correctly
-          , "@media screen {"
-          , "div.sourceCode { overflow: auto; }" -- do not overflow on screen
-          , "}"
-          , "@media print {"
-          , "pre > code.sourceCode { white-space: pre-wrap; }"
-          , "pre > code.sourceCode > span { text-indent: -5em; padding-left: 5em; }"
-          , "}"
-          ]
-         linkspec = [ "@media screen {"
-          , "pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }"
-          , "}"
-          ]
-
-toCss :: (TokenType, TokenStyle) -> String
-toCss (t,tf) = "code span" ++ (if null (short t) then "" else ('.' : short t)) ++ " { "
-                ++ colorspec ++ backgroundspec ++ weightspec ++ stylespec
-                ++ decorationspec ++ "} /* " ++ showTokenType t ++ " */"
-  where colorspec = maybe "" (\col -> "color: " ++ fromColor col ++ "; ") $ tokenColor tf
-        backgroundspec = maybe "" (\col -> "background-color: " ++ fromColor col ++ "; ") $ tokenBackground tf
-        weightspec = if tokenBold tf then "font-weight: bold; " else ""
-        stylespec  = if tokenItalic tf then "font-style: italic; " else ""
-        decorationspec = if tokenUnderline tf then "text-decoration: underline; " else ""
-        showTokenType t' = case reverse (show t') of
-                             'k':'o':'T':xs -> reverse xs
-                             _              -> ""
-
diff --git a/src/Skylighting/Format/LaTeX.hs b/src/Skylighting/Format/LaTeX.hs
deleted file mode 100644
--- a/src/Skylighting/Format/LaTeX.hs
+++ /dev/null
@@ -1,152 +0,0 @@
-{-# LANGUAGE CPP                 #-}
-{-# LANGUAGE OverloadedStrings   #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-module Skylighting.Format.LaTeX (
-         formatLaTeXInline
-       , formatLaTeXBlock
-       , styleToLaTeX
-       ) where
-
-import Control.Monad (mplus)
-import Data.Char (isSpace)
-import Data.List (sort)
-import qualified Data.Map as Map
-import Data.Text (Text)
-import qualified Data.Text as Text
-import Skylighting.Types
-import Text.Printf
-#if !MIN_VERSION_base(4,11,0)
-import Data.Semigroup
-#endif
-
-formatLaTeX :: Bool -> [SourceLine] -> Text
-formatLaTeX inline = Text.intercalate (Text.singleton '\n')
-                       . map (sourceLineToLaTeX inline)
-
--- | Formats tokens as LaTeX using custom commands inside
--- @|@ characters. Assumes that @|@ is defined as a short verbatim
--- command by the macros produced by 'styleToLaTeX'.
--- A @KeywordTok@ is rendered using @\\KeywordTok{..}@, and so on.
-formatLaTeXInline :: FormatOptions -> [SourceLine] -> Text
-formatLaTeXInline _opts ls = "\\VERB|" <> formatLaTeX True ls <> "|"
-
-sourceLineToLaTeX :: Bool -> SourceLine -> Text
-sourceLineToLaTeX inline = mconcat . map (tokenToLaTeX inline)
-
-tokenToLaTeX :: Bool -> Token -> Text
-tokenToLaTeX inline (NormalTok, txt)
-  | Text.all isSpace txt = escapeLaTeX inline txt
-tokenToLaTeX inline (toktype, txt)   = Text.cons '\\'
-  (Text.pack (show toktype) <> "{" <> escapeLaTeX inline txt <> "}")
-
-escapeLaTeX :: Bool -> Text -> Text
-escapeLaTeX inline = Text.concatMap escapeLaTeXChar
-  where escapeLaTeXChar c =
-         case c of
-           '\\' -> "\\textbackslash{}"
-           '{'  -> "\\{"
-           '}'  -> "\\}"
-           '|' | inline -> "\\VerbBar{}" -- used in inline verbatim
-           '_'  -> "\\_"
-           '&'  -> "\\&"
-           '%'  -> "\\%"
-           '#'  -> "\\#"
-           '`'  -> "\\textasciigrave{}"
-           '\'' -> "\\textquotesingle{}"
-           '-'  -> "{-}" -- prevent ligatures
-           '~'  -> "\\textasciitilde{}"
-           '^'  -> "\\^{}"
-           '>'  -> "\\textgreater{}"
-           '<'  -> "\\textless{}"
-           _    -> Text.singleton c
-
--- LaTeX
-
--- | Format tokens as a LaTeX @Highlighting@ environment inside a
--- @Shaded@ environment.  @Highlighting@ and @Shaded@ are
--- defined by the macros produced by 'styleToLaTeX'.  @Highlighting@
--- is a verbatim environment using @fancyvrb@; @\\@, @{@, and @}@
--- have their normal meanings inside this environment, so that
--- formatting commands work.  @Shaded@ is either nothing
--- (if the style's background color is default) or a @snugshade@
--- environment from @framed@, providing a background color
--- for the whole code block, even if it spans multiple pages.
-formatLaTeXBlock :: FormatOptions -> [SourceLine] -> Text
-formatLaTeXBlock opts ls = Text.unlines
-  ["\\begin{Shaded}"
-  ,"\\begin{Highlighting}[" <>
-   (if numberLines opts
-       then "numbers=left," <>
-            (if startNumber opts == 1
-                then ""
-                else ",firstnumber=" <>
-                     Text.pack (show (startNumber opts))) <> ","
-       else Text.empty) <> "]"
-  ,formatLaTeX False ls
-  ,"\\end{Highlighting}"
-  ,"\\end{Shaded}"]
-
--- | Converts a 'Style' to a set of LaTeX macro definitions,
--- which should be placed in the document's preamble.
--- Note: default LaTeX setup doesn't allow boldface typewriter font.
--- To make boldface work in styles, you need to use a different typewriter
--- font. This will work for computer modern:
---
--- > \DeclareFontShape{OT1}{cmtt}{bx}{n}{<5><6><7><8><9><10><10.95><12><14.4><17.28><20.74><24.88>cmttb10}{}
---
--- Or, with xelatex:
---
--- > \usepackage{fontspec}
--- > \setmainfont[SmallCapsFont={* Caps}]{Latin Modern Roman}
--- > \setsansfont{Latin Modern Sans}
--- > \setmonofont[SmallCapsFont={Latin Modern Mono Caps}]{Latin Modern Mono Light}
---
-styleToLaTeX :: Style -> Text
-styleToLaTeX f = Text.unlines $
-  [ "\\usepackage{color}"
-  , "\\usepackage{fancyvrb}"
-  , "\\newcommand{\\VerbBar}{|}"
-  , "\\newcommand{\\VERB}{\\Verb[commandchars=\\\\\\{\\}]}"
-  , "\\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\\\\{\\}}"
-  , "% Add ',fontsize=\\small' for more characters per line"
-  ] ++
-  (case backgroundColor f of
-        Nothing          -> ["\\newenvironment{Shaded}{}{}"]
-        Just (RGB r g b) -> ["\\usepackage{framed}"
-                            ,Text.pack
-                              (printf "\\definecolor{shadecolor}{RGB}{%d,%d,%d}" r g b)
-                            ,"\\newenvironment{Shaded}{\\begin{snugshade}}{\\end{snugshade}}"])
-  ++ sort (map (macrodef (defaultColor f) (Map.toList (tokenStyles f)))
-            (enumFromTo KeywordTok NormalTok))
-
-macrodef :: Maybe Color -> [(TokenType, TokenStyle)] -> TokenType -> Text
-macrodef defaultcol tokstyles tokt = "\\newcommand{\\"
-  <> Text.pack (show tokt)
-  <> "}[1]{"
-  <> Text.pack (co . ul . bf . it . bg $ "#1")
-  <> "}"
-  where tokf = case lookup tokt tokstyles of
-                     Nothing -> defStyle
-                     Just x  -> x
-        ul x = if tokenUnderline tokf
-                  then "\\underline{" <> x <> "}"
-                  else x
-        it x = if tokenItalic tokf
-                  then "\\textit{" <> x <> "}"
-                  else x
-        bf x = if tokenBold tokf
-                  then "\\textbf{" <> x <> "}"
-                  else x
-        bcol = fromColor `fmap` tokenBackground tokf
-                  :: Maybe (Double, Double, Double)
-        bg x = case bcol of
-                    Nothing        -> x
-                    Just (r, g, b) ->
-                       printf "\\colorbox[rgb]{%0.2f,%0.2f,%0.2f}{%s}" r g b x
-        col  = fromColor `fmap` (tokenColor tokf `mplus` defaultcol)
-                  :: Maybe (Double, Double, Double)
-        co x = case col of
-                    Nothing        -> x
-                    Just (r, g, b) ->
-                        printf "\\textcolor[rgb]{%0.2f,%0.2f,%0.2f}{%s}" r g b x
-
diff --git a/src/Skylighting/Loader.hs b/src/Skylighting/Loader.hs
--- a/src/Skylighting/Loader.hs
+++ b/src/Skylighting/Loader.hs
@@ -1,8 +1,10 @@
 {-# LANGUAGE CPP #-}
+{-# LANGUAGE LambdaCase #-}
 -- | This module provides routines to load syntax definitions from disk
 -- files.
 module Skylighting.Loader ( loadSyntaxFromFile
                           , loadSyntaxesFromDir
+                          , loadValidSyntaxesFromDir
                           )
                           where
 
@@ -37,7 +39,8 @@
 -- | Loads all syntax definitions from the specified directory by
 -- looking for files with an ".xml" extension. This function assumes
 -- such files are Kate XML syntax definitions, so XML files with
--- unexpected contents will cause a parsing error returned as a 'Left'.
+-- unexpected contents will cause a parsing error returned as a 'Left'
+-- and syntax parsing will be aborted.
 loadSyntaxesFromDir :: FilePath -> IO (Either String SyntaxMap)
 loadSyntaxesFromDir path = runExceptT $ do
     files <- liftIO $ syntaxFiles path
@@ -54,3 +57,22 @@
     entries <- listDirectory dir
     let absEntries = (dir </>) <$> filter isSyntaxFile entries
     filterM doesFileExist absEntries
+
+-- | Loads all valid syntax definitions from the specified directory by looking
+-- for files with an ".xml" extension.  Any files that are not valid Kate XML
+-- syntax definitions will have an entry in the resulting error map; the returned
+-- SyntaxMap will be made up of only the files that could successfully be loaded
+-- and parsed.
+loadValidSyntaxesFromDir :: FilePath -> IO (LoadErrMap, SyntaxMap)
+loadValidSyntaxesFromDir path = do
+    (errMap, sm) <- foldM go (mempty, mempty) =<< syntaxFiles path
+    return (errMap, M.map (resolveKeywords sm) sm)
+  where
+    go (errMap, syntaxMap) file =
+      loadSyntaxFromFile file >>= \case
+        Right s -> return (errMap, addSyntaxDefinition s syntaxMap)
+        Left e -> return (M.insert file e errMap, syntaxMap)
+
+-- | A map from a potential syntax file to the error encountered when trying to
+-- load that syntax file.
+type LoadErrMap = M.Map FilePath String
diff --git a/src/Skylighting/Parser.hs b/src/Skylighting/Parser.hs
--- a/src/Skylighting/Parser.hs
+++ b/src/Skylighting/Parser.hs
@@ -80,7 +80,10 @@
                            _       -> defaultVal
 
 -- | Parses a file containing a Kate XML syntax definition
--- into a 'Syntax' description.
+-- into a 'Syntax' description.  Note that the resulting 'Syntax'
+-- must be processed with 'resolveKeywords' (once the full syntax
+-- map is assembled) before it can be used for tokenizing; the
+-- functions in Skylighting.Loader do this automatically.
 parseSyntaxDefinition :: FilePath -> IO (Either String Syntax)
 parseSyntaxDefinition fp = do
   bs <- BL.readFile fp
@@ -146,7 +149,7 @@
 
   let itemDatas = getItemData hlEl
 
-  let defKeywordAttr = getKeywordAttrs rootEl
+  let defKeywordAttr = getKeywordAttrs casesensitive rootEl
 
   let contextEls = getElementsNamed "contexts" hlEl >>=
                    getElementsNamed "context"
@@ -154,7 +157,7 @@
   let syntaxname = getAttrValue "name" rootEl
 
   contexts <- mapM
-    (getContext casesensitive syntaxname itemDatas lists defKeywordAttr)
+    (getContext syntaxname itemDatas lists defKeywordAttr)
     contextEls
 
   startingContext <- case contexts of
@@ -216,23 +219,35 @@
            | otherwise -> (T.drop 2 y, x)
 
 getParser :: Monad m
-          => Bool -> Text -> ItemData -> M.Map Text [ListItem] -> KeywordAttr
+          => Text -> ItemData -> M.Map Text [ListItem] -> KeywordAttr
           -> Text -> Element -> ExceptT String m Rule
-getParser casesensitive syntaxname itemdatas lists kwattr cattr el = do
+getParser syntaxname itemdatas lists kwattr cattr el = do
   let name = nameLocalName . elementName $ el
   let attribute = getAttrValue "attribute" el
   let context = getAttrValue "context" el
   let char0 = readChar $ getAttrValue "char" el
   let char1 = readChar $ getAttrValue "char1" el
   let str' = getAttrValue "String" el
-  let insensitive = vBool (not casesensitive) $ getAttrValue "insensitive" el
+  -- rules default to case-sensitive matching; the language's
+  -- casesensitive attribute applies only to keyword lists (as in KDE):
+  let insensitive = vBool False $ getAttrValue "insensitive" el
   let includeAttrib = vBool False $ getAttrValue "includeAttrib" el
+  let weakDelim = Set.fromList $ T.unpack $ getAttrValue "weakDeliminator" el
+  let additionalDelim = Set.fromList $ T.unpack $
+                          getAttrValue "additionalDeliminator" el
+  -- In KDE the word delimiters of a rule are the language's word
+  -- delimiters (standard delimiters as modified by additionalDeliminator
+  -- and weakDeliminator on general > keywords, which we get from
+  -- kwattr), further modified by the additionalDeliminator and
+  -- weakDeliminator attributes on the rule itself:
+  let ruleDelims = Set.union (keywordDelims kwattr) additionalDelim
+                     Set.\\ weakDelim
   let lookahead = vBool False $ getAttrValue "lookAhead" el
   let firstNonSpace = vBool False $ getAttrValue "firstNonSpace" el
   let column' = getAttrValue "column" el
   let dynamic = vBool False $ getAttrValue "dynamic" el
-  children <- mapM (getParser casesensitive
-                    syntaxname itemdatas lists kwattr attribute)
+  let minimal = vBool False $ getAttrValue "minimal" el
+  children <- mapM (getParser syntaxname itemdatas lists kwattr attribute)
                   [e | NodeElement e <- elementNodes el ]
   let tildeRegex = name == "RegExpr" && T.take 1 str' == "^"
   let str = if tildeRegex then T.drop 1 str' else str'
@@ -241,11 +256,13 @@
                   else either (\_ -> Nothing) (Just . fst) $
                          TR.decimal column'
   let re = RegExpr RE{ reString = TE.encodeUtf8 str
-                     , reCaseSensitive = not insensitive }
+                     , reCaseSensitive = not insensitive
+                     , reMinimal = minimal }
+  let contextSwitches = parseContextSwitches syntaxname context
   let (incsyntax, inccontext) =
-          case T.breakOn "##" context of
-                (_,x) | T.null x -> (syntaxname, context)
-                (cont, lang)     -> (T.drop 2 lang, cont)
+        case contextSwitches of
+          (Push (s,c) : _)  -> (s,c)
+          _ -> error "IncludeRules doesn't specify a syntax and context"
   matcher <- case name of
                  "DetectChar" -> return $ DetectChar char0
                  "Detect2Chars" -> return $ Detect2Chars char0 char1
@@ -254,33 +271,50 @@
                  "StringDetect" -> return $ StringDetect str
                  "WordDetect" -> return $ WordDetect str
                  "RegExpr" -> return $ re
-                 "keyword" -> return $ Keyword kwattr (Left str)
+                 -- an insensitive attribute on the keyword rule itself
+                 -- (if present) overrides the case sensitivity of the
+                 -- keyword list, and additionalDeliminator and
+                 -- weakDeliminator attributes adjust its delimiters
+                 -- (as in KDE):
+                 "keyword" -> return $
+                   let kwattr' = if M.member (String.fromString "insensitive")
+                                      (elementAttributes el)
+                                    then kwattr{ keywordCaseSensitive =
+                                                   not insensitive }
+                                    else kwattr
+                    in Keyword kwattr'{ keywordDelims = ruleDelims }
+                               (Left str)
                  "Int" -> return $ Int
                  "Float" -> return $ Float
                  "HlCOct" -> return $ HlCOct
                  "HlCHex" -> return $ HlCHex
                  "HlCStringChar" -> return $ HlCStringChar
                  "HlCChar" -> return $ HlCChar
-                 "LineContinue" -> return $ LineContinue
+                 -- KDE uses the first character of the char attribute,
+                 -- or backslash if it is absent or empty:
+                 "LineContinue" -> return $ LineContinue $
+                    case T.uncons (getAttrValue "char" el) of
+                      Just (c, _) -> c
+                      Nothing     -> '\\'
                  "IncludeRules" -> return $
                    IncludeRules (incsyntax, inccontext)
                  "DetectSpaces" -> return $ DetectSpaces
                  "DetectIdentifier" -> return $ DetectIdentifier
                  _ -> throwError $ "Unknown element " ++ T.unpack name
 
-  let contextSwitch = if name == "IncludeRules"
-                         then []  -- is this right?
-                         else parseContextSwitch incsyntax inccontext
   return $ Rule{ rMatcher = matcher
                , rAttribute = fromMaybe NormalTok $
                     if T.null attribute
                        then M.lookup cattr itemdatas
                        else M.lookup attribute itemdatas
                , rIncludeAttribute = includeAttrib
+               , rWordDelimiters = ruleDelims
                , rDynamic = dynamic
                , rCaseSensitive = not insensitive
                , rChildren = children
-               , rContextSwitch = contextSwitch
+               , rContextSwitch = if name == "IncludeRules"
+                                     then []
+                                     else contextSwitches
                , rLookahead = lookahead
                , rFirstNonspace = firstNonSpace
                , rColumn = column
@@ -288,25 +322,22 @@
 
 
 getContext :: Monad m
-           => Bool
-           -> Text
+           => Text
            -> ItemData
            -> M.Map Text [ListItem]
            -> KeywordAttr
            -> Element
            -> ExceptT String m Context
-getContext casesensitive syntaxname itemDatas lists kwattr el = do
+getContext syntaxname itemDatas lists kwattr el = do
   let name = getAttrValue "name" el
   let attribute = getAttrValue "attribute" el
   let lineEmptyContext = getAttrValue "lineEmptyContext" el
   let lineEndContext = getAttrValue "lineEndContext" el
-  let lineBeginContext = getAttrValue "lineBeginContext" el
   let fallthrough = vBool False $ getAttrValue "fallthrough" el
   let fallthroughContext = getAttrValue "fallthroughContext" el
   let dynamic = vBool False $ getAttrValue "dynamic" el
 
-  parsers <- mapM (getParser casesensitive
-                    syntaxname itemDatas lists kwattr attribute)
+  parsers <- mapM (getParser syntaxname itemDatas lists kwattr attribute)
                   [e | NodeElement e <- elementNodes el ]
 
   return $ Context {
@@ -314,15 +345,19 @@
           , cSyntax = syntaxname
           , cRules = parsers
           , cAttribute = fromMaybe NormalTok $ M.lookup attribute itemDatas
+            -- lineEmptyContext defaults to lineEndContext when it is
+            -- unspecified or #stay; this avoids skipping empty lines
+            -- after a line continuation character (KDE context.cpp,
+            -- Context::resolveContexts, see kde bug 405903):
           , cLineEmptyContext =
-               parseContextSwitch syntaxname lineEmptyContext
+               case parseContextSwitches syntaxname lineEmptyContext of
+                 [] -> parseContextSwitches syntaxname lineEndContext
+                 cs -> cs
           , cLineEndContext =
-               parseContextSwitch syntaxname lineEndContext
-          , cLineBeginContext =
-               parseContextSwitch syntaxname lineBeginContext
+               parseContextSwitches syntaxname lineEndContext
           , cFallthrough = fallthrough
           , cFallthroughContext =
-               parseContextSwitch syntaxname fallthroughContext
+               parseContextSwitches syntaxname fallthroughContext
           , cDynamic = dynamic
           }
 
@@ -332,33 +367,41 @@
     | e <- (getElementsNamed "itemDatas" el >>= getElementsNamed "itemData")
   ]
 
-getKeywordAttrs :: Element -> KeywordAttr
-getKeywordAttrs el =
+-- The default case sensitivity of keyword lists is given by the
+-- casesensitive attribute on the language element, and may be
+-- overridden by the casesensitive attribute on general > keywords:
+getKeywordAttrs :: Bool -> Element -> KeywordAttr
+getKeywordAttrs casesensitive el =
   case (getElementsNamed "general" el >>= getElementsNamed "keywords") of
-     []    -> defaultKeywordAttr
+     []    -> defaultKeywordAttr{ keywordCaseSensitive = casesensitive }
      (x:_) ->
        let weakDelim = T.unpack $ getAttrValue "weakDeliminator" x
            additionalDelim = T.unpack $ getAttrValue "additionalDeliminator" x
         in KeywordAttr { keywordCaseSensitive =
-                             vBool True $ getAttrValue "casesensitive" x
+                             vBool casesensitive $ getAttrValue "casesensitive" x
                        , keywordDelims = Set.union standardDelims
                            (Set.fromList additionalDelim)
                              Set.\\ Set.fromList weakDelim }
 
-parseContextSwitch :: Text -> Text -> [ContextSwitch]
-parseContextSwitch syntaxname t =
+parseContextSwitches :: Text -> Text -> [ContextSwitch]
+parseContextSwitches syntaxname t =
   if T.null t || t == "#stay"
      then []
      else
        case T.stripPrefix "#pop" t of
-         Just rest -> Pop : parseContextSwitch syntaxname rest
-         Nothing   ->
-           let (othersyntax, contextname) =
-                  splitContext (T.dropWhile (=='!') t)
-               syntaxname' = if T.null othersyntax
-                                then syntaxname
-                                else othersyntax
-            in [Push (syntaxname', contextname)]
+          Just rest ->
+            Pop : parseContextSwitches syntaxname rest
+          Nothing ->
+            -- a sequence of contexts separated by !; in
+            -- A!B!C, C is the top of the stack.
+            let cs = filter (not . T.null) $ T.split (== '!') t
+                toContext x =
+                  let (othersyntax, contextname) = splitContext x
+                      syntaxname' = if T.null othersyntax
+                                       then syntaxname
+                                       else othersyntax
+                   in (syntaxname', contextname)
+            in map (Push . toContext) cs
 
 type ItemData = M.Map Text TokenType
 
diff --git a/src/Skylighting/Regex.hs b/src/Skylighting/Regex.hs
--- a/src/Skylighting/Regex.hs
+++ b/src/Skylighting/Regex.hs
@@ -2,45 +2,120 @@
 {-# LANGUAGE DeriveDataTypeable  #-}
 {-# LANGUAGE DeriveGeneric       #-}
 {-# LANGUAGE OverloadedStrings   #-}
+{-# LANGUAGE PatternSynonyms #-}
 {-# LANGUAGE ScopedTypeVariables #-}
 
 module Skylighting.Regex (
                 Regex(..)
-              , RE(..)
+              , RE
+              , pattern RE, reCaseSensitive, reMinimal, reString
+              , compileRE
               , compileRegex
               , matchRegex
+              , matchRegexWithGroups
               , testRegex
               , isWordChar
               ) where
 
 import Data.Aeson
-import Data.Binary (Binary)
+import Data.Binary (Binary(..))
 import qualified Data.ByteString.Base64 as Base64
 import qualified Data.ByteString.Char8 as BS
 import Data.Data
+import qualified Data.IntMap.Strict as M
 import qualified Data.Text as Text
 import qualified Data.Text.Encoding as TE
-import GHC.Generics (Generic)
 #if !MIN_VERSION_base(4,13,0)
 import Control.Monad.Fail (MonadFail)
 #endif
 import Regex.KDE
 
+import Text.Read hiding (get)
+
 -- | A representation of a regular expression.
-data RE = RE{
-    reString        :: BS.ByteString
-  , reCaseSensitive :: Bool
-} deriving (Show, Read, Ord, Eq, Data, Typeable, Generic)
+data RE = RE'{
+    _reString        :: BS.ByteString
+  , _reCaseSensitive :: Bool
+  , _reMinimal       :: Bool
+  , _reCompiled      :: Either String (Regex, M.IntMap Regex)
+} deriving Typeable
 
-instance Binary RE
+-- We define a smart constructor which also holds the compiled regex
+-- and its capturing groups, to avoid recomputing them each time we
+-- tokenize.
 
+{-# COMPLETE RE #-}
+pattern RE :: BS.ByteString -> Bool -> Bool -> RE
+pattern RE {reString, reCaseSensitive, reMinimal} <-
+  RE' reString reCaseSensitive reMinimal _ where
+  RE str caseSensitive minimal =
+    RE' str caseSensitive minimal
+        (fmap (\r -> (r, extractCapturingGroups r))
+              (compileRegex caseSensitive minimal str))
+
+-- Unfortunately this means we need to derive all the instances ourselves.
+
+instance Show RE where
+  showsPrec d (RE str caseSensitive minimal) = showParen (d > 10)
+    $ showString "RE {reString = "
+    . showsPrec 11 str
+    . showString ", reCaseSensitive = "
+    . showsPrec 11 caseSensitive
+    . showString ", reMinimal = "
+    . showsPrec 11 minimal
+    . showString "}"
+
+instance Read RE where
+  readPrec = parens . prec 10 $ do
+    Ident "RE" <- lexP
+    Punc "{" <- lexP
+    Ident "reString" <- lexP
+    Punc "=" <- lexP
+    str <- readPrec
+    Punc "," <- lexP
+    Ident "reCaseSensitive" <- lexP
+    Punc "=" <- lexP
+    caseSensitive <- readPrec
+    Punc "," <- lexP
+    Ident "reMinimal" <- lexP
+    Punc "=" <- lexP
+    minimal <- readPrec
+    Punc "}" <- lexP
+    pure (RE str caseSensitive minimal)
+
+toComparisonKey :: RE -> (BS.ByteString, Bool, Bool)
+toComparisonKey (RE x y z) = (x, y, z)
+
+instance Eq RE where
+  x == y = toComparisonKey x == toComparisonKey y
+
+instance Ord RE where
+  x `compare` y = toComparisonKey x `compare` toComparisonKey y
+
+conRE :: Constr
+conRE = mkConstr tyRE "RE" [] Prefix
+tyRE :: DataType
+tyRE   = mkDataType "Skylighting.Regex.RE" [conRE]
+
+instance Data RE where
+  gfoldl k z (RE s c m) = z RE `k` s `k` c `k` m
+  gunfold k z _ = k (k (k (z RE)))
+  toConstr _ = conRE
+  dataTypeOf _ = tyRE
+
+instance Binary RE where
+  put (RE x y z) = put x >> put y >> put z
+  get = RE <$> get <*> get <*> get
+
 instance ToJSON RE where
   toJSON re = object [ "reString"        .= encodeToText (reString re)
-                     , "reCaseSensitive" .= reCaseSensitive re ]
+                     , "reCaseSensitive" .= reCaseSensitive re
+                     , "reMinimal"       .= reMinimal re ]
 instance FromJSON RE where
   parseJSON = withObject "RE" $ \v ->
     RE <$> ((v .: "reString") >>= decodeFromText)
        <*> v .: "reCaseSensitive"
+       <*> v .:? "reMinimal" .!= False
 
 -- functions to marshall bytestrings to text
 
@@ -49,3 +124,8 @@
 
 decodeFromText :: (Monad m, MonadFail m) => Text.Text -> m BS.ByteString
 decodeFromText = either fail return . Base64.decode . TE.encodeUtf8
+
+-- | The compiled regex and its capturing groups (cached in the
+-- 'RE' by the smart constructor).
+compileRE :: RE -> Either String (Regex, M.IntMap Regex)
+compileRE = _reCompiled
diff --git a/src/Skylighting/Styles.hs b/src/Skylighting/Styles.hs
--- a/src/Skylighting/Styles.hs
+++ b/src/Skylighting/Styles.hs
@@ -148,41 +148,266 @@
 
 -- | Style based on pygments's tango colors.
 tango :: Style
-tango = Style{
-    backgroundColor = color 0xf8f8f8
+tango = Style
+  { tokenStyles =
+      Map.fromList
+        [ ( KeywordTok
+          , TokenStyle
+              { tokenColor = Just (RGB 32 74 135)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( DataTypeTok
+          , TokenStyle
+              { tokenColor = Just (RGB 32 74 135)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( DecValTok
+          , TokenStyle
+              { tokenColor = Just (RGB 0 0 207)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( BaseNTok
+          , TokenStyle
+              { tokenColor = Just (RGB 0 0 207)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( FloatTok
+          , TokenStyle
+              { tokenColor = Just (RGB 0 0 207)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( ConstantTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( CharTok
+          , TokenStyle
+              { tokenColor = Just (RGB 78 154 6)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( SpecialCharTok
+          , TokenStyle
+              { tokenColor = Just (RGB 206 92 0)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( StringTok
+          , TokenStyle
+              { tokenColor = Just (RGB 78 154 6)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( VerbatimStringTok
+          , TokenStyle
+              { tokenColor = Just (RGB 78 154 6)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( SpecialStringTok
+          , TokenStyle
+              { tokenColor = Just (RGB 78 154 6)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( ImportTok
+          , TokenStyle
+              { tokenColor = Nothing
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( CommentTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = True
+              , tokenUnderline = False
+              }
+          )
+        , ( DocumentationTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = True
+              , tokenUnderline = False
+              }
+          )
+        , ( AnnotationTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = True
+              , tokenUnderline = False
+              }
+          )
+        , ( CommentVarTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = True
+              , tokenUnderline = False
+              }
+          )
+        , ( OtherTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( FunctionTok
+          , TokenStyle
+              { tokenColor = Just (RGB 32 74 135)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( VariableTok
+          , TokenStyle
+              { tokenColor = Just (RGB 0 0 0)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( ControlFlowTok
+          , TokenStyle
+              { tokenColor = Just (RGB 32 74 135)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( OperatorTok
+          , TokenStyle
+              { tokenColor = Just (RGB 206 92 0)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( ExtensionTok
+          , TokenStyle
+              { tokenColor = Nothing
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( PreprocessorTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = True
+              , tokenUnderline = False
+              }
+          )
+        , ( AttributeTok
+          , TokenStyle
+              { tokenColor = Just (RGB 32 74 135)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( InformationTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = True
+              , tokenUnderline = False
+              }
+          )
+        , ( WarningTok
+          , TokenStyle
+              { tokenColor = Just (RGB 143 89 2)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = True
+              , tokenUnderline = False
+              }
+          )
+        , ( AlertTok
+          , TokenStyle
+              { tokenColor = Just (RGB 239 41 41)
+              , tokenBackground = Nothing
+              , tokenBold = False
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        , ( ErrorTok
+          , TokenStyle
+              { tokenColor = Just (RGB 164 0 0)
+              , tokenBackground = Nothing
+              , tokenBold = True
+              , tokenItalic = False
+              , tokenUnderline = False
+              }
+          )
+        ]
   , defaultColor = Nothing
-  , lineNumberColor = color 0xaaaaaa
+  , backgroundColor = Just (RGB 248 248 248)
+  , lineNumberColor = Just (RGB 170 170 170)
   , lineNumberBackgroundColor = Nothing
-  , tokenStyles = Map.fromList
-    [ (KeywordTok, defStyle{ tokenColor = color 0x204a87, tokenBold = True })
-    , (DataTypeTok, defStyle{ tokenColor = color 0x204a87 })
-    , (DecValTok, defStyle{ tokenColor = color 0x0000cf })
-    , (BaseNTok, defStyle{ tokenColor = color 0x0000cf })
-    , (FloatTok, defStyle{ tokenColor = color 0x0000cf })
-    , (CharTok, defStyle{ tokenColor = color 0x4e9a06 })
-    , (StringTok, defStyle{ tokenColor = color 0x4e9a06 })
-    , (CommentTok, defStyle{ tokenColor = color 0x8f5902, tokenItalic = True })
-    , (OtherTok, defStyle{ tokenColor = color 0x8f5902 })
-    , (AlertTok, defStyle{ tokenColor = color 0xef2929 })
-    , (FunctionTok, defStyle{ tokenColor = color 0x000000 })
-    , (ErrorTok, defStyle{ tokenColor = color 0xa40000, tokenBold = True })
-    , (WarningTok, defStyle{ tokenColor = color 0x8f5902, tokenItalic = True,tokenBold = True })
-    , (ConstantTok, defStyle{ tokenColor = color 0x000000 })
-    , (SpecialCharTok, defStyle{ tokenColor = color 0x000000 })
-    , (VerbatimStringTok, defStyle{ tokenColor = color 0x4e9a06 })
-    , (SpecialStringTok, defStyle{ tokenColor = color 0x4e9a06 })
-    , (ImportTok, defStyle)
-    , (VariableTok, defStyle{ tokenColor = color 0x000000 })
-    , (ControlFlowTok, defStyle{ tokenColor = color 0x204a87, tokenBold = True })
-    , (OperatorTok, defStyle{ tokenColor = color 0xce5c00, tokenBold = True })
-    , (PreprocessorTok, defStyle{ tokenColor = color 0x8f5902, tokenItalic = True} )
-    , (ExtensionTok, defStyle)
-    , (AttributeTok, defStyle{ tokenColor = color 0xc4a000 })
-    , (DocumentationTok, defStyle{ tokenColor = color 0x8f5902, tokenItalic = True, tokenBold = True })
-    , (AnnotationTok, defStyle{ tokenColor = color 0x8f5902, tokenItalic = True,tokenBold = True })
-    , (CommentVarTok, defStyle{ tokenColor = color 0x8f5902, tokenItalic = True,tokenBold = True })
-    , (InformationTok, defStyle{ tokenColor = color 0x8f5902, tokenItalic = True,tokenBold = True })
-    ]
   }
 
 -- | Style based on ultraviolet's espresso_libre.css (dark background).
diff --git a/src/Skylighting/Tokenizer.hs b/src/Skylighting/Tokenizer.hs
--- a/src/Skylighting/Tokenizer.hs
+++ b/src/Skylighting/Tokenizer.hs
@@ -34,25 +34,30 @@
 import Debug.Trace
 import Skylighting.Regex
 import Skylighting.Types
-import Skylighting.Parser (resolveKeywords)
 import Data.List.NonEmpty (NonEmpty((:|)), (<|), toList)
 #if !MIN_VERSION_base(4,11,0)
 import Data.Semigroup
 #endif
 
-newtype ContextStack = ContextStack{ unContextStack :: NonEmpty Context }
+newtype Captures = Captures{ unCaptures :: IntMap.IntMap ByteString }
   deriving (Show)
 
+newtype ContextStack =
+  ContextStack{ unContextStack :: NonEmpty (Context, Captures) }
+  deriving (Show)
+
 data TokenizerState = TokenizerState{
     input               :: ByteString
   , endline             :: Bool
   , prevChar            :: Char
   , contextStack        :: ContextStack
-  , captures            :: IntMap.IntMap ByteString
+  , captures            :: Captures
   , column              :: Int
   , lineContinuation    :: Bool
   , firstNonspaceColumn :: Maybe Int
-  , compiledRegexes     :: Map.Map RE Regex
+  , loopCounter         :: Int
+    -- ^ number of consecutive rule-matching iterations without
+    -- consuming any input; used to guard against endless loops
 }
 
 -- | Configuration options for 'tokenize'.
@@ -68,9 +73,9 @@
 
 deriving instance (Show a, Show e) => Show (Result e a)
 
-data TokenizerM a = TM { runTokenizerM :: TokenizerConfig
-                                       -> TokenizerState
-                                       -> (TokenizerState, Result String a) }
+newtype TokenizerM a = TM { runTokenizerM :: TokenizerConfig
+                                          -> TokenizerState
+                                          -> (TokenizerState, Result String a) }
 
 mapsnd :: (a -> b) -> (c, a) -> (c, b)
 mapsnd f (x, y) = (x, f y)
@@ -121,7 +126,7 @@
 
 instance MonadReader TokenizerConfig TokenizerM where
   ask = TM (\c s -> (s, Success c))
-  local f (TM x) = TM (\c s -> x (f c) s)
+  local f (TM x) = TM (x . f)
 
 instance MonadState TokenizerState TokenizerM where
   get = TM (\_ s -> (s, Success s))
@@ -134,32 +139,35 @@
                                       z            -> z)
 
 -- | Tokenize some text using 'Syntax'.
+-- Note that the syntax definitions are assumed to have their
+-- keyword lists already resolved into word sets (as is the case
+-- for the bundled syntax definitions and for definitions loaded
+-- with the functions in Skylighting.Loader).  If you construct a
+-- syntax map yourself from syntaxes parsed with
+-- 'Skylighting.Parser.parseSyntaxDefinition', apply
+-- 'Skylighting.Parser.resolveKeywords' to each syntax first.
 tokenize :: TokenizerConfig -> Syntax -> Text -> Either String [SourceLine]
 tokenize config syntax inp =
   eitherStack >>= \(!stack) ->
-    case runTokenizerM action
-            config{ syntaxMap = Map.map (resolveKeywords (syntaxMap config))
-                                          (syntaxMap config) }
-            (startingState stack) of
+    case runTokenizerM action config (startingState stack) of
        (_, Success ls) -> Right ls
        (_, Error e)    -> Left e
        (_, Failure)    -> Left "Could not tokenize code"
   where
     action = mapM tokenizeLine (zip (BS.lines (encodeUtf8 inp)) [1..])
-    eitherStack = case lookupContext (sStartingContext syntax)
-                         (resolveKeywords (syntaxMap config) syntax) of
-                    Just c  -> Right $ ContextStack (c :| [])
+    eitherStack = case lookupContext (sStartingContext syntax) syntax of
+                    Just c  -> Right $ ContextStack ((c, Captures mempty) :| [])
                     Nothing -> Left "No starting context specified"
     startingState stack =
       TokenizerState{ input = BS.empty
                     , endline = Text.null inp
                     , prevChar = '\n'
                     , contextStack = stack
-                    , captures = mempty
+                    , captures = Captures mempty
                     , column = 0
                     , lineContinuation = False
                     , firstNonspaceColumn = Nothing
-                    , compiledRegexes = Map.empty
+                    , loopCounter = 0
                     }
 
 info :: String -> TokenizerM ()
@@ -172,7 +180,7 @@
   tr <- asks traceOutput
   when tr $ do
     ContextStack stack <- gets contextStack
-    info $ "CONTEXT STACK " ++ show (map cName $ toList stack)
+    info $ "CONTEXT STACK " ++ show (map (cName . fst) $ toList stack)
 
 popContextStack :: TokenizerM ()
 popContextStack = do
@@ -187,12 +195,13 @@
 pushContextStack cont = do
   modify (\st -> st{ contextStack =
                       ContextStack
-                       ((cont <|) . unContextStack $ contextStack st) } )
+                       (((cont, Captures mempty) <|) . unContextStack
+                         $ contextStack st) } )
   infoContextStack
 
 currentContext :: TokenizerM Context
 currentContext = do
-  ContextStack (c :| _) <- gets contextStack
+  ContextStack ((c,_) :| _) <- gets contextStack
   return c
 
 doContextSwitch :: ContextSwitch -> TokenizerM ()
@@ -206,6 +215,28 @@
 doContextSwitches :: [ContextSwitch] -> TokenizerM ()
 doContextSwitches = mapM_ doContextSwitch
 
+addCaptures :: TokenizerM ()
+addCaptures = do
+  capts <- gets captures
+  if IntMap.null (unCaptures capts)
+     then return ()
+     else do
+       ContextStack ((c,_) :| cs) <- gets contextStack
+       info $ "Adding captures to " <> show (cName c) <> ": " <> show capts
+       modify $ \st -> st{ contextStack = ContextStack ((c,capts) :| cs) }
+
+getCapture :: Int -> TokenizerM Text
+getCapture capnum = do
+  ContextStack ((_,Captures capts) :| _) <- gets contextStack
+  info $ "Retrieving capture " <> show capnum
+  res <- case IntMap.lookup capnum capts of
+          Nothing -> do
+            info "Not found"
+            mzero
+          Just x  -> decodeBS x
+  info $ "Got " <> show res
+  return res
+
 lookupContext :: Text -> Syntax -> Maybe Context
 lookupContext name syntax | Text.null name =
   if Text.null (sStartingContext syntax)
@@ -215,35 +246,86 @@
 
 tokenizeLine :: (ByteString, Int) -> TokenizerM [Token]
 tokenizeLine (!ln, !linenum) = do
-  modify $ \st -> st{ input = ln, endline = BS.null ln, prevChar = '\n' }
-  cur <- currentContext
-  lineCont <- gets lineContinuation
-  if lineCont
-     then modify $ \st -> st{ lineContinuation = False }
-     else do
-       let !mbFirstNonspace = BS.findIndex (not . isSpace) $! ln
-       modify $ \st -> st{ column = 0
-                         , firstNonspaceColumn = mbFirstNonspace }
-       doContextSwitches (cLineBeginContext cur)
+  -- column and firstNonspaceColumn restart on every physical line;
+  -- a line continuation only suppresses the previous line's
+  -- lineEndContext (KDE abstracthighlighter.cpp, highlightLine).
+  let !mbFirstNonspace = BS.findIndex (not . isSpace) $! ln
+  modify $ \st -> st{ input = ln
+                    , endline = BS.null ln
+                    , prevChar = '\n'
+                    , lineContinuation = False
+                    , column = 0
+                    , firstNonspaceColumn = mbFirstNonspace
+                    , loopCounter = 0 }
   if BS.null ln
-     then doContextSwitches (cLineEmptyContext cur)
-     else doContextSwitches (cLineBeginContext cur)
-  ts <- normalizeHighlighting . catMaybes <$> many getToken
-  eol <- gets endline
-  if eol
      then do
-       currentContext >>= checkLineEnd
-       return ts
-     else do  -- fail if we haven't consumed whole line
-       col <- gets column
-       throwError $ "Could not match anything at line " ++
-         show linenum ++ " column " ++ show col
+       -- Empty lines get only the lineEmptyContext switches (which
+       -- default to the lineEndContext switches), applied for
+       -- successive top contexts until #stay; the lineEndContext is
+       -- not applied separately (KDE abstracthighlighter.cpp).
+       handleEmptyLine loopLimit
+       return []
+     else do
+       ts <- normalizeHighlighting . catMaybes <$> many getToken
+       eol <- gets endline
+       if eol
+          then do
+            checkLineEnd
+            return ts
+          else do  -- fail if we haven't consumed whole line
+            col <- gets column
+            throwError $ "Could not match anything at line " ++
+              show linenum ++ " column " ++ show col
 
+-- | Limit on iterations that make no progress, to avoid endless
+-- loops with broken syntax definitions, as in KDE's
+-- abstracthighlighter.cpp.
+loopLimit :: Int
+loopLimit = 1024
+
+-- | Apply line-empty context switches for successive top contexts
+-- until a context with no switches (#stay) is on top, guarding
+-- against endless loops (KDE abstracthighlighter.cpp, highlightLine).
+handleEmptyLine :: Int -> TokenizerM ()
+handleEmptyLine counter = do
+  cur <- currentContext
+  case cLineEmptyContext cur of
+    [] -> return ()  -- #stay
+    switches
+      | counter <= 0 -> info $ "Endless switch context transitions " ++
+          "for line empty context, aborting highlighting of line."
+      | otherwise -> do
+          before <- gets (fmap fst . unContextStack . contextStack)
+          doContextSwitches switches
+          after <- gets (fmap fst . unContextStack . contextStack)
+          -- if the stack is unchanged (e.g. #pop of the initial
+          -- context), stop:
+          when (before /= after) $ handleEmptyLine (counter - 1)
+
 getToken :: TokenizerM (Maybe Token)
 getToken = do
   inp <- gets input
   gets endline >>= guard . not
   !context <- currentContext
+  counter <- gets loopCounter
+  if counter > loopLimit
+     -- too many iterations without consuming input (e.g. a cycle of
+     -- context switches): abort highlighting of this line, giving
+     -- the rest of it the context's attribute, as in KDE's
+     -- abstracthighlighter.cpp.
+     then do
+       info "Endless state transitions, aborting highlighting of line."
+       t <- decodeBS inp
+       modify $ \st -> st{ input = BS.empty
+                         , endline = True
+                         , prevChar = Text.last t
+                         , column = column st + Text.length t }
+       return $ Just (cAttribute context, t)
+     else getToken' context inp counter
+
+getToken' :: Context -> ByteString -> Int -> TokenizerM (Maybe Token)
+getToken' context inp counter = do
+  modify $ \st -> st{ loopCounter = counter + 1 }
   msum (map (\r -> tryRule r inp) (cRules context)) <|>
      case cFallthroughContext context of
            [] | cFallthrough context -> Nothing <$ doContextSwitches [Pop]
@@ -264,7 +346,8 @@
   modify $ \st -> st{ input = rest,
                       endline = BS.null rest,
                       prevChar = Text.last t,
-                      column = column st + numchars }
+                      column = column st + numchars,
+                      loopCounter = 0 }  -- input was consumed: progress
   return t
 
 tryRule :: Rule -> ByteString -> TokenizerM (Maybe Token)
@@ -284,7 +367,11 @@
                  then Just <$> get -- needed for lookahead rules
                  else return Nothing
 
+  -- reset regex captures
+  modify $ \st -> st{ captures = Captures mempty }
+
   let attr = rAttribute rule
+  let delims = rWordDelimiters rule
   mbtok <- case rMatcher rule of
                 DetectChar c -> withAttr attr $ detectChar (rDynamic rule) c inp
                 Detect2Chars c d -> withAttr attr $
@@ -292,12 +379,12 @@
                 AnyChar cs -> withAttr attr $ anyChar cs inp
                 RangeDetect c d -> withAttr attr $ rangeDetect c d inp
                 RegExpr re -> withAttr attr $ regExpr (rDynamic rule) re inp
-                Int -> withAttr attr $ parseInt inp
-                HlCOct -> withAttr attr $ parseOct inp
-                HlCHex -> withAttr attr $ parseHex inp
+                Int -> withAttr attr $ parseInt delims inp
+                HlCOct -> withAttr attr $ parseOct delims inp
+                HlCHex -> withAttr attr $ parseHex delims inp
                 HlCStringChar -> withAttr attr $ parseCStringChar inp
                 HlCChar -> withAttr attr $ parseCChar inp
-                Float -> withAttr attr $ parseFloat inp
+                Float -> withAttr attr $ parseFloat delims inp
                 Keyword _kwattr (Left listname) ->
                   throwError $ "Keyword with unresolved list " <> show listname
                 Keyword kwattr (Right kws) ->
@@ -306,8 +393,9 @@
                                     stringDetect (rDynamic rule) (rCaseSensitive rule)
                                                  s inp
                 WordDetect s -> withAttr attr $
-                                    wordDetect (rCaseSensitive rule) s inp
-                LineContinue -> withAttr attr $ lineContinue inp
+                                    wordDetect (rCaseSensitive rule)
+                                      delims s inp
+                LineContinue c -> withAttr attr $ lineContinue c inp
                 DetectSpaces -> withAttr attr $ detectSpaces inp
                 DetectIdentifier -> withAttr attr $ detectIdentifier inp
                 IncludeRules cname -> includeRules
@@ -321,17 +409,23 @@
                  Nothing -> return Nothing
                  Just (tt, s)
                    | rLookahead rule -> do
-                     (oldinput, oldendline, oldprevChar, oldColumn) <-
+                     (oldinput, oldendline, oldprevChar, oldColumn,
+                      oldLoopCounter) <-
                          case oldstate of
                               Nothing -> throwError
                                     "oldstate not saved with lookahead rule"
                               Just st -> return
                                     (input st, endline st,
-                                     prevChar st, column st)
+                                     prevChar st, column st,
+                                     loopCounter st)
+                     -- restore loopCounter too: a lookahead match makes
+                     -- no progress, so it must not reset the
+                     -- endless-loop guard (takeChars reset it):
                      modify $ \st -> st{ input = oldinput
                                        , endline = oldendline
                                        , prevChar = oldprevChar
-                                       , column = oldColumn }
+                                       , column = oldColumn
+                                       , loopCounter = oldLoopCounter }
                      return Nothing
                    | otherwise -> do
                      case mbchildren of
@@ -340,8 +434,11 @@
 
   info $ takeWhile (/=' ') (show (rMatcher rule)) ++ " MATCHED " ++ show mbtok'
   doContextSwitches (rContextSwitch rule)
+  -- Add any captures to the context on top of the stack
+  addCaptures
   return mbtok'
 
+
 withAttr :: TokenType -> TokenizerM Text -> TokenizerM (Maybe Token)
 withAttr tt p = do
   res <- p
@@ -349,22 +446,34 @@
      then return Nothing
      else return $ Just (tt, res)
 
-wordDetect :: Bool -> Text -> ByteString -> TokenizerM Text
-wordDetect caseSensitive s inp = do
-  wordBoundary inp
-  t <- decodeBS $ UTF8.take (Text.length s) inp
-  -- we assume here that the case fold will not change length,
-  -- which is safe for ASCII keywords and the like...
-  guard $ if caseSensitive
-             then s == t
-             else mk s == mk t
+wordDetect :: Bool -> Set.Set Char -> Text -> ByteString
+           -> TokenizerM Text
+wordDetect caseSensitive delims s inp = do
+  t <- if caseSensitive
+          then do -- fast path: compare bytes without decoding
+            guard $ encodeUtf8 s `BS.isPrefixOf` inp
+            return s
+          else do
+            t <- decodeBS $ UTF8.take (Text.length s) inp
+            -- we assume here that the case fold will not change length,
+            -- which is safe for ASCII keywords and the like...
+            guard $ mk s == mk t
+            return t
   guard $ not (Text.null t)
+  let isDelim = (`Set.member` delims)
+  -- KDE requires a word delimiter (or start of line) before the
+  -- word, or as its first character (this is why \n<DOCTYPE!
+  -- matches \b<DOCTYPE!/b):
+  prev <- gets prevChar
+  guard $ isDelim prev || isDelim (Text.head t)
   let c = Text.last t
   let rest = UTF8.drop (Text.length s) inp
   let d = case UTF8.uncons rest of
                Nothing    -> '\n'
                Just (x,_) -> x
-  guard $ isWordBoundary c d
+  -- ... and a word delimiter (or end of line) after the word, or
+  -- as its last character:
+  guard $ isDelim d || isDelim c
   takeChars (Text.length t)
 
 stringDetect :: Bool -> Bool -> Text -> ByteString -> TokenizerM Text
@@ -375,12 +484,14 @@
           info $ "Dynamic string: " ++ show dynStr
           return dynStr
         else return s
-  t <- decodeBS $ UTF8.take (Text.length s') inp
-  -- we assume here that the case fold will not change length,
-  -- which is safe for ASCII keywords and the like...
-  guard $ if caseSensitive
-             then s' == t
-             else mk s' == mk t
+  if caseSensitive
+     then -- fast path: compare bytes without decoding
+          guard $ encodeUtf8 s' `BS.isPrefixOf` inp
+     else do
+       t <- decodeBS $ UTF8.take (Text.length s') inp
+       -- we assume here that the case fold will not change length,
+       -- which is safe for ASCII keywords and the like...
+       guard $ mk s' == mk t
   takeChars (Text.length s')
 
 subDynamicText :: Text -> TokenizerM Text
@@ -424,21 +535,34 @@
            Text.unpack con ++ "##" ++ Text.unpack syn
        Just c   -> do
          mbtok <- msum (map (\r -> tryRule r inp) (cRules c))
+         modify $ \st -> st{ captures = Captures mempty }
          return $ case (mbtok, mbattr) of
                     (Just (NormalTok, xs), Just attr) -> Just (attr, xs)
                     _                                 -> mbtok
 
-checkLineEnd :: Context -> TokenizerM ()
-checkLineEnd c = do
-  unless (null (cLineEndContext c)) $ do
-    eol <- gets endline
-    info $ "checkLineEnd for " ++ show (cName c) ++ " eol = " ++ show eol ++ " cLineEndContext = " ++ show (cLineEndContext c)
-    when eol $ do
-      lineCont' <- gets lineContinuation
-      unless lineCont' $ do
-        doContextSwitches (cLineEndContext c)
-        c' <- currentContext
-        unless (c == c') $ checkLineEnd c'
+-- | Apply line-end context switches for successive top contexts
+-- until a context with no switches (#stay) is on top, guarding
+-- against endless loops (KDE abstracthighlighter.cpp, highlightLine).
+checkLineEnd :: TokenizerM ()
+checkLineEnd = do
+  lineCont' <- gets lineContinuation
+  unless lineCont' $ go loopLimit
+ where
+  go counter = do
+    c <- currentContext
+    unless (null (cLineEndContext c)) $
+      if counter <= 0
+         then info $ "Endless switch context transitions " ++
+                "for line end context, aborting highlighting of line."
+         else do
+           info $ "checkLineEnd for " ++ show (cName c) ++
+                  " cLineEndContext = " ++ show (cLineEndContext c)
+           before <- gets (fmap fst . unContextStack . contextStack)
+           doContextSwitches (cLineEndContext c)
+           after <- gets (fmap fst . unContextStack . contextStack)
+           -- if the stack is unchanged (e.g. #pop of the initial
+           -- context), stop:
+           when (before /= after) $ go (counter - 1)
 
 detectChar :: Bool -> Char -> ByteString -> TokenizerM Text
 detectChar dynamic c inp = do
@@ -465,9 +589,12 @@
   d' <- if dynamic && d >= '0' && d <= '9'
            then getDynamicChar d
            else return d
-  if (encodeUtf8 (Text.pack [c',d'])) `BS.isPrefixOf` inp
-     then takeChars 2
-     else mzero
+  case UTF8.uncons inp of
+    Just (x, rest) | x == c' ->
+      case UTF8.uncons rest of
+        Just (y, _) | y == d' -> takeChars 2
+        _ -> mzero
+    _ -> mzero
 
 rangeDetect :: Char -> Char -> ByteString -> TokenizerM Text
 rangeDetect c d inp = do
@@ -499,9 +626,9 @@
                                      not (isAlphaNum d || d == '_')) t)
     _ -> mzero
 
-lineContinue :: ByteString -> TokenizerM Text
-lineContinue inp = do
-  if inp == "\\"
+lineContinue :: Char -> ByteString -> TokenizerM Text
+lineContinue c inp = do
+  if inp == UTF8.fromString [c]
      then do
        modify $ \st -> st{ lineContinuation = True }
        takeChars 1
@@ -518,25 +645,22 @@
   -- return $! traceShowId $! (reStr, inp)
   let reStr = reString re
   when (BS.take 2 reStr == "\\b") $ wordBoundary inp
-  compiledREs <- gets compiledRegexes
-  regex <- case Map.lookup re compiledREs of
-              Nothing -> do
-                cre <- case compileRegex (reCaseSensitive re) reStr of
-                         Right r  -> return r
-                         Left e   -> throwError $
-                           "Error compiling regex " ++
-                            UTF8.toString reStr ++ ": " ++ e
-                modify $ \st -> st{ compiledRegexes =
-                      Map.insert re cre (compiledRegexes st) }
-                return cre
-              Just cre -> return cre
-  regex' <- if dynamic
-               then subDynamic regex
-               else return regex
-  case matchRegex regex' inp of
+  (regex, groups) <- case compileRE re of
+            Right r  -> return r
+            Left e   -> throwError $
+              "Error compiling regex " ++
+              UTF8.toString reStr ++ ": " ++ e
+  mbmatch <- if dynamic
+                then do
+                  regex' <- subDynamic regex
+                  -- the capturing groups have to be recomputed after
+                  -- dynamic substitution (matchRegex does this):
+                  return $ matchRegex regex' inp
+                else return $ matchRegexWithGroups groups regex inp
+  case mbmatch of
         Just (matchedBytes, capts) -> do
           unless (null capts) $
-             modify $ \st -> st{ captures =
+            modify $ \st -> st{ captures = Captures $
                                   IntMap.map (toSlice inp) capts }
           takeChars (UTF8.length matchedBytes)
         _ -> mzero
@@ -555,6 +679,16 @@
 isWordBoundary :: Char -> Char -> Bool
 isWordBoundary c d = isWordChar c /= isWordChar d
 
+-- In KDE, Int, Float, HlCOct, and HlCHex rules match only if the
+-- preceding character is a word delimiter (or we are at the start
+-- of the line, which we detect via prevChar == '\n', since '\n'
+-- is always a delimiter).  Nothing is required of the character
+-- following the match.
+precededByWordDelim :: Set.Set Char -> TokenizerM ()
+precededByWordDelim delims = do
+  c <- gets prevChar
+  guard $ c `Set.member` delims
+
 decodeBS :: ByteString -> TokenizerM Text
 decodeBS bs = case decodeUtf8' bs of
                     Left _ -> throwError ("ByteString " ++
@@ -581,13 +715,6 @@
   AssertNegative dir <$> subDynamic r
 subDynamic x = return x
 
-getCapture :: Int -> TokenizerM Text
-getCapture capnum = do
-  capts <- gets captures
-  case IntMap.lookup capnum capts of
-     Nothing -> throwError $ "Capture " <> show capnum <> " not defined!"
-     Just x  -> decodeBS x
-
 keyword :: KeywordAttr -> WordSet Text -> ByteString -> TokenizerM Text
 keyword kwattr kws inp = do
   prev <- gets prevChar
@@ -638,82 +765,65 @@
   pCStringChar <|> () <$ A.satisfy (\c -> c /= '\'' && c /= '\\')
   () <$ A.char '\''
 
-parseInt :: ByteString -> TokenizerM Text
-parseInt inp = do
-  wordBoundary inp
-  case A.parseOnly (A.match (pHex <|> pOct <|> pDec)) inp of
+-- Like KDE's Int rule: a sequence of one or more decimal digits.
+-- No sign, and no hex or octal forms.
+parseInt :: Set.Set Char -> ByteString -> TokenizerM Text
+parseInt delims inp = do
+  precededByWordDelim delims
+  case A.parseOnly (A.match (void $ A.takeWhile1 (A.inClass "0-9"))) inp of
        Left _      -> mzero
        Right (r,_) -> takeChars (BS.length r) -- assumes ascii
 
-pDec :: A.Parser ()
-pDec = do
-  mbMinus
-  _ <- A.takeWhile1 (A.inClass "0-9")
-  guardWordBoundary
-
-parseOct :: ByteString -> TokenizerM Text
-parseOct inp = do
-  wordBoundary inp
-  case A.parseOnly (A.match pHex) inp of
+-- Like KDE's HlCOct rule: a C-style octal, 0 followed by one or
+-- more octal digits.  No sign, and no "0o" prefix.
+parseOct :: Set.Set Char -> ByteString -> TokenizerM Text
+parseOct delims inp = do
+  precededByWordDelim delims
+  case A.parseOnly (A.match pOct) inp of
        Left _      -> mzero
        Right (r,_) -> takeChars (BS.length r) -- assumes ascii
 
 pOct :: A.Parser ()
 pOct = do
-  mbMinus
   _ <- A.char '0'
-  _ <- A.satisfy (A.inClass "Oo")
   _ <- A.takeWhile1 (A.inClass "0-7")
-  guardWordBoundary
+  return ()
 
-parseHex :: ByteString -> TokenizerM Text
-parseHex inp = do
-  wordBoundary inp
+-- Like KDE's HlCHex rule: 0x or 0X followed by one or more hex
+-- digits.  No sign.
+parseHex :: Set.Set Char -> ByteString -> TokenizerM Text
+parseHex delims inp = do
+  precededByWordDelim delims
   case A.parseOnly (A.match pHex) inp of
        Left _      -> mzero
        Right (r,_) -> takeChars (BS.length r) -- assumes ascii
 
 pHex :: A.Parser ()
 pHex = do
-  mbMinus
   _ <- A.char '0'
   _ <- A.satisfy (A.inClass "Xx")
   _ <- A.takeWhile1 (A.inClass "0-9a-fA-F")
-  guardWordBoundary
-
-guardWordBoundary :: A.Parser ()
-guardWordBoundary = do
-  mbw <- A.peekChar
-  case mbw of
-       Just c  ->  guard $ isWordBoundary '0' c
-       Nothing -> return ()
-
-mbMinus :: A.Parser ()
-mbMinus = (() <$ A.char '-') <|> return ()
-
-mbPlusMinus :: A.Parser ()
-mbPlusMinus = () <$ A.satisfy (A.inClass "+-") <|> return ()
+  return ()
 
-parseFloat :: ByteString -> TokenizerM Text
-parseFloat inp = do
-  wordBoundary inp
+-- Like KDE's Float rule: optional digits, a mandatory '.', and
+-- optional digits (at least one digit is required on one side of
+-- the dot), followed by an optional exponent (e or E, an optional
+-- sign, and digits); if the exponent is not complete, the match
+-- ends before the e/E.  No leading sign, and "5e2" is not a Float.
+parseFloat :: Set.Set Char -> ByteString -> TokenizerM Text
+parseFloat delims inp = do
+  precededByWordDelim delims
   case A.parseOnly (A.match pFloat) inp of
        Left _      -> mzero
        Right (r,_) -> takeChars (BS.length r)  -- assumes all ascii
   where pFloat :: A.Parser ()
         pFloat = do
-          let digits = A.takeWhile1 (A.inClass "0-9")
-          mbPlusMinus
-          before <- A.option False $ True <$ digits
-          dot <- A.option False $ True <$ A.satisfy (A.inClass ".")
-          after <- A.option False $ True <$ digits
-          e <- A.option False $ True <$ (A.satisfy (A.inClass "Ee") >>
-                                         mbPlusMinus >> digits)
-          mbnext <- A.peekChar
-          case mbnext of
-               Nothing -> return ()
-               Just c  -> guard (not $ A.inClass "." c)
-          guard $ (before && not dot && e)     -- 5e2
-               || (before && dot && (after || not e)) -- 5.2e2 or 5.2 or 5.
-               || (not before && dot && after) -- .23 or .23e2
+          before <- A.takeWhile (A.inClass "0-9")
+          _ <- A.char '.'
+          after <- A.takeWhile (A.inClass "0-9")
+          guard $ not (BS.null before && BS.null after)
+          A.option () $ do
+            _ <- A.satisfy (A.inClass "Ee")
+            _ <- A.option '+' (A.satisfy (A.inClass "+-"))
+            void $ A.takeWhile1 (A.inClass "0-9")
 
diff --git a/src/Skylighting/Types.hs b/src/Skylighting/Types.hs
--- a/src/Skylighting/Types.hs
+++ b/src/Skylighting/Types.hs
@@ -36,7 +36,6 @@
               , FromColor(..)
               , Style(..)
               , ANSIColorLevel(..)
-              , Xterm256ColorCode(..)
               -- * Format options
               , FormatOptions(..)
               , defaultFormatOpts
@@ -51,11 +50,8 @@
 import Data.Colour.SRGB (Colour, sRGB24, toSRGB24)
 import qualified Data.Colour.SRGB as Colour
 import Data.Data (Data)
-import Data.Int
-import Data.List (minimumBy)
 import qualified Data.Map as Map
 import Data.Maybe (fromMaybe)
-import Data.Ord (comparing)
 import qualified Data.Set as Set
 import Data.Text (Text)
 import qualified Data.Text as Text
@@ -64,7 +60,6 @@
 import GHC.Generics (Generic)
 import Safe (readMay)
 import Skylighting.Regex
-import qualified System.Console.ANSI.Types as ANSI
 import Text.Printf
 
 -- | Full name of a context: the first member of the pair is the full
@@ -114,7 +109,7 @@
   | HlCHex
   | HlCStringChar
   | HlCChar
-  | LineContinue
+  | LineContinue !Char
   | IncludeRules !ContextName
   | DetectSpaces
   | DetectIdentifier
@@ -135,6 +130,7 @@
     rMatcher          :: !Matcher
   , rAttribute        :: !TokenType
   , rIncludeAttribute :: !Bool
+  , rWordDelimiters   :: Set.Set Char
   , rDynamic          :: !Bool
   , rCaseSensitive    :: !Bool
   , rChildren         :: ![Rule]
@@ -182,7 +178,6 @@
   , cAttribute          :: !TokenType
   , cLineEmptyContext   :: ![ContextSwitch]
   , cLineEndContext     :: ![ContextSwitch]
-  , cLineBeginContext   :: ![ContextSwitch]
   , cFallthrough        :: !Bool
   , cFallthroughContext :: ![ContextSwitch]
   , cDynamic            :: !Bool
@@ -226,7 +221,7 @@
                | AlertTok
                | ErrorTok
                | NormalTok
-               deriving (Read, Show, Eq, Ord, Enum, Data, Typeable, Generic)
+               deriving (Read, Show, Eq, Ord, Enum, Bounded, Data, Typeable, Generic)
 
 instance Binary TokenType
 
@@ -316,6 +311,10 @@
      case reads ['(','0','x',r1,r2,',','0','x',g1,g2,',','0','x',b1,b2,')'] of
            ((r,g,b),_) : _ -> Just $ RGB r g b
            _               -> Nothing
+  toColor ['#',_,_,r1,r2,g1,g2,b1,b2] = -- ARGB format, we just ignore the A
+     case reads ['(','0','x',r1,r2,',','0','x',g1,g2,',','0','x',b1,b2,')'] of
+           ((r,g,b),_) : _ -> Just $ RGB r g b
+           _               -> Nothing
   toColor _        = Nothing
 
 instance ToColor Int where
@@ -337,297 +336,6 @@
 instance (RealFrac a, Floating a) => ToColor (Colour a) where
     toColor c = let (Colour.RGB r g b) = toSRGB24 c in toColor (r, g, b)
 
-instance ToColor (ANSI.ColorIntensity, ANSI.Color) where
-    toColor = flip lookup ansi16ColorList -- cannot actually fail
-
--- | Standard values taken from https://jonasjacek.github.io/colors/
-ansi16ColorList :: [((ANSI.ColorIntensity, ANSI.Color), Color)]
-ansi16ColorList = [ ((ANSI.Dull , ANSI.Black  ), RGB 0   0   0  )
-                  , ((ANSI.Dull , ANSI.Red    ), RGB 128 0   0  )
-                  , ((ANSI.Dull , ANSI.Green  ), RGB 0   128 0  )
-                  , ((ANSI.Dull , ANSI.Yellow ), RGB 128 128 0  )
-                  , ((ANSI.Dull , ANSI.Blue   ), RGB 0   0   128)
-                  , ((ANSI.Dull , ANSI.Magenta), RGB 128 0   128)
-                  , ((ANSI.Dull , ANSI.Cyan   ), RGB 0   128 128)
-                  , ((ANSI.Dull , ANSI.White  ), RGB 192 192 192)
-                  , ((ANSI.Vivid, ANSI.Black  ), RGB 128 128 128)
-                  , ((ANSI.Vivid, ANSI.Red    ), RGB 255 0   0  )
-                  , ((ANSI.Vivid, ANSI.Green  ), RGB 0   255 0  )
-                  , ((ANSI.Vivid, ANSI.Yellow ), RGB 255 255 0  )
-                  , ((ANSI.Vivid, ANSI.Blue   ), RGB 0   0   255)
-                  , ((ANSI.Vivid, ANSI.Magenta), RGB 255 0   255)
-                  , ((ANSI.Vivid, ANSI.Cyan   ), RGB 0   255 255)
-                  , ((ANSI.Vivid, ANSI.White  ), RGB 255 255 255)
-                  ]
-
-newtype Xterm256ColorCode = Xterm256ColorCode { getXterm256ColorCode :: Word8 }
-    deriving (Show, Read, Eq, Ord, Enum, Bounded, Data, Typeable, Generic)
-
-instance Binary Xterm256ColorCode
-
--- | Converted from https://jonasjacek.github.io/colors/data.json, then slightly rearranged
-ansi256ColorList :: [(Xterm256ColorCode, Color)]
-ansi256ColorList = [ (Xterm256ColorCode 232, RGB 8 8 8) -- grayscale colors
-                   , (Xterm256ColorCode 233, RGB 18 18 18)
-                   , (Xterm256ColorCode 234, RGB 28 28 28)
-                   , (Xterm256ColorCode 235, RGB 38 38 38)
-                   , (Xterm256ColorCode 236, RGB 48 48 48)
-                   , (Xterm256ColorCode 237, RGB 58 58 58)
-                   , (Xterm256ColorCode 238, RGB 68 68 68)
-                   , (Xterm256ColorCode 239, RGB 78 78 78)
-                   , (Xterm256ColorCode 240, RGB 88 88 88)
-                   , (Xterm256ColorCode 241, RGB 98 98 98)
-                   , (Xterm256ColorCode 242, RGB 108 108 108)
-                   , (Xterm256ColorCode 243, RGB 118 118 118)
-                   , (Xterm256ColorCode 244, RGB 128 128 128)
-                   , (Xterm256ColorCode 245, RGB 138 138 138)
-                   , (Xterm256ColorCode 246, RGB 148 148 148)
-                   , (Xterm256ColorCode 247, RGB 158 158 158)
-                   , (Xterm256ColorCode 248, RGB 168 168 168)
-                   , (Xterm256ColorCode 249, RGB 178 178 178)
-                   , (Xterm256ColorCode 250, RGB 188 188 188)
-                   , (Xterm256ColorCode 251, RGB 198 198 198)
-                   , (Xterm256ColorCode 252, RGB 208 208 208)
-                   , (Xterm256ColorCode 253, RGB 218 218 218)
-                   , (Xterm256ColorCode 254, RGB 228 228 228)
-                   , (Xterm256ColorCode 255, RGB 238 238 238)
-                   , (Xterm256ColorCode 16, RGB 0 0 0) -- RGB cube colors
-                   , (Xterm256ColorCode 17, RGB 0 0 95)
-                   , (Xterm256ColorCode 18, RGB 0 0 135)
-                   , (Xterm256ColorCode 19, RGB 0 0 175)
-                   , (Xterm256ColorCode 20, RGB 0 0 215)
-                   , (Xterm256ColorCode 21, RGB 0 0 255)
-                   , (Xterm256ColorCode 22, RGB 0 95 0)
-                   , (Xterm256ColorCode 23, RGB 0 95 95)
-                   , (Xterm256ColorCode 24, RGB 0 95 135)
-                   , (Xterm256ColorCode 25, RGB 0 95 175)
-                   , (Xterm256ColorCode 26, RGB 0 95 215)
-                   , (Xterm256ColorCode 27, RGB 0 95 255)
-                   , (Xterm256ColorCode 28, RGB 0 135 0)
-                   , (Xterm256ColorCode 29, RGB 0 135 95)
-                   , (Xterm256ColorCode 30, RGB 0 135 135)
-                   , (Xterm256ColorCode 31, RGB 0 135 175)
-                   , (Xterm256ColorCode 32, RGB 0 135 215)
-                   , (Xterm256ColorCode 33, RGB 0 135 255)
-                   , (Xterm256ColorCode 34, RGB 0 175 0)
-                   , (Xterm256ColorCode 35, RGB 0 175 95)
-                   , (Xterm256ColorCode 36, RGB 0 175 135)
-                   , (Xterm256ColorCode 37, RGB 0 175 175)
-                   , (Xterm256ColorCode 38, RGB 0 175 215)
-                   , (Xterm256ColorCode 39, RGB 0 175 255)
-                   , (Xterm256ColorCode 40, RGB 0 215 0)
-                   , (Xterm256ColorCode 41, RGB 0 215 95)
-                   , (Xterm256ColorCode 42, RGB 0 215 135)
-                   , (Xterm256ColorCode 43, RGB 0 215 175)
-                   , (Xterm256ColorCode 44, RGB 0 215 215)
-                   , (Xterm256ColorCode 45, RGB 0 215 255)
-                   , (Xterm256ColorCode 46, RGB 0 255 0)
-                   , (Xterm256ColorCode 47, RGB 0 255 95)
-                   , (Xterm256ColorCode 48, RGB 0 255 135)
-                   , (Xterm256ColorCode 49, RGB 0 255 175)
-                   , (Xterm256ColorCode 50, RGB 0 255 215)
-                   , (Xterm256ColorCode 51, RGB 0 255 255)
-                   , (Xterm256ColorCode 52, RGB 95 0 0)
-                   , (Xterm256ColorCode 53, RGB 95 0 95)
-                   , (Xterm256ColorCode 54, RGB 95 0 135)
-                   , (Xterm256ColorCode 55, RGB 95 0 175)
-                   , (Xterm256ColorCode 56, RGB 95 0 215)
-                   , (Xterm256ColorCode 57, RGB 95 0 255)
-                   , (Xterm256ColorCode 58, RGB 95 95 0)
-                   , (Xterm256ColorCode 59, RGB 95 95 95)
-                   , (Xterm256ColorCode 60, RGB 95 95 135)
-                   , (Xterm256ColorCode 61, RGB 95 95 175)
-                   , (Xterm256ColorCode 62, RGB 95 95 215)
-                   , (Xterm256ColorCode 63, RGB 95 95 255)
-                   , (Xterm256ColorCode 64, RGB 95 135 0)
-                   , (Xterm256ColorCode 65, RGB 95 135 95)
-                   , (Xterm256ColorCode 66, RGB 95 135 135)
-                   , (Xterm256ColorCode 67, RGB 95 135 175)
-                   , (Xterm256ColorCode 68, RGB 95 135 215)
-                   , (Xterm256ColorCode 69, RGB 95 135 255)
-                   , (Xterm256ColorCode 70, RGB 95 175 0)
-                   , (Xterm256ColorCode 71, RGB 95 175 95)
-                   , (Xterm256ColorCode 72, RGB 95 175 135)
-                   , (Xterm256ColorCode 73, RGB 95 175 175)
-                   , (Xterm256ColorCode 74, RGB 95 175 215)
-                   , (Xterm256ColorCode 75, RGB 95 175 255)
-                   , (Xterm256ColorCode 76, RGB 95 215 0)
-                   , (Xterm256ColorCode 77, RGB 95 215 95)
-                   , (Xterm256ColorCode 78, RGB 95 215 135)
-                   , (Xterm256ColorCode 79, RGB 95 215 175)
-                   , (Xterm256ColorCode 80, RGB 95 215 215)
-                   , (Xterm256ColorCode 81, RGB 95 215 255)
-                   , (Xterm256ColorCode 82, RGB 95 255 0)
-                   , (Xterm256ColorCode 83, RGB 95 255 95)
-                   , (Xterm256ColorCode 84, RGB 95 255 135)
-                   , (Xterm256ColorCode 85, RGB 95 255 175)
-                   , (Xterm256ColorCode 86, RGB 95 255 215)
-                   , (Xterm256ColorCode 87, RGB 95 255 255)
-                   , (Xterm256ColorCode 88, RGB 135 0 0)
-                   , (Xterm256ColorCode 89, RGB 135 0 95)
-                   , (Xterm256ColorCode 90, RGB 135 0 135)
-                   , (Xterm256ColorCode 91, RGB 135 0 175)
-                   , (Xterm256ColorCode 92, RGB 135 0 215)
-                   , (Xterm256ColorCode 93, RGB 135 0 255)
-                   , (Xterm256ColorCode 94, RGB 135 95 0)
-                   , (Xterm256ColorCode 95, RGB 135 95 95)
-                   , (Xterm256ColorCode 96, RGB 135 95 135)
-                   , (Xterm256ColorCode 97, RGB 135 95 175)
-                   , (Xterm256ColorCode 98, RGB 135 95 215)
-                   , (Xterm256ColorCode 99, RGB 135 95 255)
-                   , (Xterm256ColorCode 100, RGB 135 135 0)
-                   , (Xterm256ColorCode 101, RGB 135 135 95)
-                   , (Xterm256ColorCode 102, RGB 135 135 135)
-                   , (Xterm256ColorCode 103, RGB 135 135 175)
-                   , (Xterm256ColorCode 104, RGB 135 135 215)
-                   , (Xterm256ColorCode 105, RGB 135 135 255)
-                   , (Xterm256ColorCode 106, RGB 135 175 0)
-                   , (Xterm256ColorCode 107, RGB 135 175 95)
-                   , (Xterm256ColorCode 108, RGB 135 175 135)
-                   , (Xterm256ColorCode 109, RGB 135 175 175)
-                   , (Xterm256ColorCode 110, RGB 135 175 215)
-                   , (Xterm256ColorCode 111, RGB 135 175 255)
-                   , (Xterm256ColorCode 112, RGB 135 215 0)
-                   , (Xterm256ColorCode 113, RGB 135 215 95)
-                   , (Xterm256ColorCode 114, RGB 135 215 135)
-                   , (Xterm256ColorCode 115, RGB 135 215 175)
-                   , (Xterm256ColorCode 116, RGB 135 215 215)
-                   , (Xterm256ColorCode 117, RGB 135 215 255)
-                   , (Xterm256ColorCode 118, RGB 135 255 0)
-                   , (Xterm256ColorCode 119, RGB 135 255 95)
-                   , (Xterm256ColorCode 120, RGB 135 255 135)
-                   , (Xterm256ColorCode 121, RGB 135 255 175)
-                   , (Xterm256ColorCode 122, RGB 135 255 215)
-                   , (Xterm256ColorCode 123, RGB 135 255 255)
-                   , (Xterm256ColorCode 124, RGB 175 0 0)
-                   , (Xterm256ColorCode 125, RGB 175 0 95)
-                   , (Xterm256ColorCode 126, RGB 175 0 135)
-                   , (Xterm256ColorCode 127, RGB 175 0 175)
-                   , (Xterm256ColorCode 128, RGB 175 0 215)
-                   , (Xterm256ColorCode 129, RGB 175 0 255)
-                   , (Xterm256ColorCode 130, RGB 175 95 0)
-                   , (Xterm256ColorCode 131, RGB 175 95 95)
-                   , (Xterm256ColorCode 132, RGB 175 95 135)
-                   , (Xterm256ColorCode 133, RGB 175 95 175)
-                   , (Xterm256ColorCode 134, RGB 175 95 215)
-                   , (Xterm256ColorCode 135, RGB 175 95 255)
-                   , (Xterm256ColorCode 136, RGB 175 135 0)
-                   , (Xterm256ColorCode 137, RGB 175 135 95)
-                   , (Xterm256ColorCode 138, RGB 175 135 135)
-                   , (Xterm256ColorCode 139, RGB 175 135 175)
-                   , (Xterm256ColorCode 140, RGB 175 135 215)
-                   , (Xterm256ColorCode 141, RGB 175 135 255)
-                   , (Xterm256ColorCode 142, RGB 175 175 0)
-                   , (Xterm256ColorCode 143, RGB 175 175 95)
-                   , (Xterm256ColorCode 144, RGB 175 175 135)
-                   , (Xterm256ColorCode 145, RGB 175 175 175)
-                   , (Xterm256ColorCode 146, RGB 175 175 215)
-                   , (Xterm256ColorCode 147, RGB 175 175 255)
-                   , (Xterm256ColorCode 148, RGB 175 215 0)
-                   , (Xterm256ColorCode 149, RGB 175 215 95)
-                   , (Xterm256ColorCode 150, RGB 175 215 135)
-                   , (Xterm256ColorCode 151, RGB 175 215 175)
-                   , (Xterm256ColorCode 152, RGB 175 215 215)
-                   , (Xterm256ColorCode 153, RGB 175 215 255)
-                   , (Xterm256ColorCode 154, RGB 175 255 0)
-                   , (Xterm256ColorCode 155, RGB 175 255 95)
-                   , (Xterm256ColorCode 156, RGB 175 255 135)
-                   , (Xterm256ColorCode 157, RGB 175 255 175)
-                   , (Xterm256ColorCode 158, RGB 175 255 215)
-                   , (Xterm256ColorCode 159, RGB 175 255 255)
-                   , (Xterm256ColorCode 160, RGB 215 0 0)
-                   , (Xterm256ColorCode 161, RGB 215 0 95)
-                   , (Xterm256ColorCode 162, RGB 215 0 135)
-                   , (Xterm256ColorCode 163, RGB 215 0 175)
-                   , (Xterm256ColorCode 164, RGB 215 0 215)
-                   , (Xterm256ColorCode 165, RGB 215 0 255)
-                   , (Xterm256ColorCode 166, RGB 215 95 0)
-                   , (Xterm256ColorCode 167, RGB 215 95 95)
-                   , (Xterm256ColorCode 168, RGB 215 95 135)
-                   , (Xterm256ColorCode 169, RGB 215 95 175)
-                   , (Xterm256ColorCode 170, RGB 215 95 215)
-                   , (Xterm256ColorCode 171, RGB 215 95 255)
-                   , (Xterm256ColorCode 172, RGB 215 135 0)
-                   , (Xterm256ColorCode 173, RGB 215 135 95)
-                   , (Xterm256ColorCode 174, RGB 215 135 135)
-                   , (Xterm256ColorCode 175, RGB 215 135 175)
-                   , (Xterm256ColorCode 176, RGB 215 135 215)
-                   , (Xterm256ColorCode 177, RGB 215 135 255)
-                   , (Xterm256ColorCode 178, RGB 215 175 0)
-                   , (Xterm256ColorCode 179, RGB 215 175 95)
-                   , (Xterm256ColorCode 180, RGB 215 175 135)
-                   , (Xterm256ColorCode 181, RGB 215 175 175)
-                   , (Xterm256ColorCode 182, RGB 215 175 215)
-                   , (Xterm256ColorCode 183, RGB 215 175 255)
-                   , (Xterm256ColorCode 184, RGB 215 215 0)
-                   , (Xterm256ColorCode 185, RGB 215 215 95)
-                   , (Xterm256ColorCode 186, RGB 215 215 135)
-                   , (Xterm256ColorCode 187, RGB 215 215 175)
-                   , (Xterm256ColorCode 188, RGB 215 215 215)
-                   , (Xterm256ColorCode 189, RGB 215 215 255)
-                   , (Xterm256ColorCode 190, RGB 215 255 0)
-                   , (Xterm256ColorCode 191, RGB 215 255 95)
-                   , (Xterm256ColorCode 192, RGB 215 255 135)
-                   , (Xterm256ColorCode 193, RGB 215 255 175)
-                   , (Xterm256ColorCode 194, RGB 215 255 215)
-                   , (Xterm256ColorCode 195, RGB 215 255 255)
-                   , (Xterm256ColorCode 196, RGB 255 0 0)
-                   , (Xterm256ColorCode 197, RGB 255 0 95)
-                   , (Xterm256ColorCode 198, RGB 255 0 135)
-                   , (Xterm256ColorCode 199, RGB 255 0 175)
-                   , (Xterm256ColorCode 200, RGB 255 0 215)
-                   , (Xterm256ColorCode 201, RGB 255 0 255)
-                   , (Xterm256ColorCode 202, RGB 255 95 0)
-                   , (Xterm256ColorCode 203, RGB 255 95 95)
-                   , (Xterm256ColorCode 204, RGB 255 95 135)
-                   , (Xterm256ColorCode 205, RGB 255 95 175)
-                   , (Xterm256ColorCode 206, RGB 255 95 215)
-                   , (Xterm256ColorCode 207, RGB 255 95 255)
-                   , (Xterm256ColorCode 208, RGB 255 135 0)
-                   , (Xterm256ColorCode 209, RGB 255 135 95)
-                   , (Xterm256ColorCode 210, RGB 255 135 135)
-                   , (Xterm256ColorCode 211, RGB 255 135 175)
-                   , (Xterm256ColorCode 212, RGB 255 135 215)
-                   , (Xterm256ColorCode 213, RGB 255 135 255)
-                   , (Xterm256ColorCode 214, RGB 255 175 0)
-                   , (Xterm256ColorCode 215, RGB 255 175 95)
-                   , (Xterm256ColorCode 216, RGB 255 175 135)
-                   , (Xterm256ColorCode 217, RGB 255 175 175)
-                   , (Xterm256ColorCode 218, RGB 255 175 215)
-                   , (Xterm256ColorCode 219, RGB 255 175 255)
-                   , (Xterm256ColorCode 220, RGB 255 215 0)
-                   , (Xterm256ColorCode 221, RGB 255 215 95)
-                   , (Xterm256ColorCode 222, RGB 255 215 135)
-                   , (Xterm256ColorCode 223, RGB 255 215 175)
-                   , (Xterm256ColorCode 224, RGB 255 215 215)
-                   , (Xterm256ColorCode 225, RGB 255 215 255)
-                   , (Xterm256ColorCode 226, RGB 255 255 0)
-                   , (Xterm256ColorCode 227, RGB 255 255 95)
-                   , (Xterm256ColorCode 228, RGB 255 255 135)
-                   , (Xterm256ColorCode 229, RGB 255 255 175)
-                   , (Xterm256ColorCode 230, RGB 255 255 215)
-                   , (Xterm256ColorCode 231, RGB 255 255 255)
-                   , (Xterm256ColorCode 0, RGB 0 0 0) -- “system” colors
-                   , (Xterm256ColorCode 1, RGB 128 0 0)
-                   , (Xterm256ColorCode 2, RGB 0 128 0)
-                   , (Xterm256ColorCode 3, RGB 128 128 0)
-                   , (Xterm256ColorCode 4, RGB 0 0 128)
-                   , (Xterm256ColorCode 5, RGB 128 0 128)
-                   , (Xterm256ColorCode 6, RGB 0 128 128)
-                   , (Xterm256ColorCode 7, RGB 192 192 192)
-                   , (Xterm256ColorCode 8, RGB 128 128 128)
-                   , (Xterm256ColorCode 9, RGB 255 0 0)
-                   , (Xterm256ColorCode 10, RGB 0 255 0)
-                   , (Xterm256ColorCode 11, RGB 255 255 0)
-                   , (Xterm256ColorCode 12, RGB 0 0 255)
-                   , (Xterm256ColorCode 13, RGB 255 0 255)
-                   , (Xterm256ColorCode 14, RGB 0 255 255)
-                   , (Xterm256ColorCode 15, RGB 255 255 255)
-                   ]
-
-instance ToColor Xterm256ColorCode where
-    toColor = flip lookup ansi256ColorList -- cannot actually fail
-
 -- | JSON @"#1aff2b"@ corresponds to the color @RGB 0x1a 0xff 0x2b@.
 instance FromJSON Color where
   parseJSON (String t) = maybe mempty return $ toColor (Text.unpack t)
@@ -651,26 +359,6 @@
 
 instance (Ord a, Floating a) => FromColor (Colour a) where
     fromColor (RGB r g b) = sRGB24 r g b
-
--- | Warning: this conversion is extremely approximate!
-instance FromColor (ANSI.ColorIntensity, ANSI.Color) where
-    fromColor = findApproximateColor ansi16ColorList
-
--- | Warning: this conversion is noticeably approximate!
-instance FromColor Xterm256ColorCode where
-    -- Same algorithm as above
-    fromColor = findApproximateColor ansi256ColorList
-
-colorDistance :: Color -> Color -> Int16
-colorDistance (RGB r1 g1 b1) (RGB r2 g2 b2) = abs (fromIntegral r1 - fromIntegral r2)
-                                                + abs (fromIntegral g1 - fromIntegral g2)
-                                                + abs (fromIntegral b1 - fromIntegral b2)
-
--- This is the most naïve possible nearest-neighbor search;
--- it could almost certainly be optimized, if its speed matters at all.
-findApproximateColor :: [(a, Color)] -> Color -> a
-findApproximateColor acs c = let ranked = map (\ac -> (ac, colorDistance c $ snd ac)) acs
-                      in fst . fst $ minimumBy (comparing snd) ranked
 
 -- | A rendering style. This determines how each kind of token
 -- is to be rendered, and sets a default color and background
diff --git a/test/expected/abc.c.native b/test/expected/abc.c.native
--- a/test/expected/abc.c.native
+++ b/test/expected/abc.c.native
@@ -38,9 +38,40 @@
   , ( OperatorTok , ");" )
   ]
 , []
-, [ ( PreprocessorTok
-    , "#define SWAP(a, b) if (a != b) { char * tmp = a; a = b; b = tmp; }"
-    )
+, [ ( PreprocessorTok , "#define SWAP" )
+  , ( OperatorTok , "(" )
+  , ( PreprocessorTok , "a" )
+  , ( OperatorTok , "," )
+  , ( PreprocessorTok , " b" )
+  , ( OperatorTok , ")" )
+  , ( PreprocessorTok , " " )
+  , ( ControlFlowTok , "if" )
+  , ( PreprocessorTok , " " )
+  , ( OperatorTok , "(" )
+  , ( PreprocessorTok , "a " )
+  , ( OperatorTok , "!=" )
+  , ( PreprocessorTok , " b" )
+  , ( OperatorTok , ")" )
+  , ( PreprocessorTok , " " )
+  , ( OperatorTok , "{" )
+  , ( PreprocessorTok , " " )
+  , ( DataTypeTok , "char" )
+  , ( PreprocessorTok , " " )
+  , ( OperatorTok , "*" )
+  , ( PreprocessorTok , " tmp " )
+  , ( OperatorTok , "=" )
+  , ( PreprocessorTok , " a" )
+  , ( OperatorTok , ";" )
+  , ( PreprocessorTok , " a " )
+  , ( OperatorTok , "=" )
+  , ( PreprocessorTok , " b" )
+  , ( OperatorTok , ";" )
+  , ( PreprocessorTok , " b " )
+  , ( OperatorTok , "=" )
+  , ( PreprocessorTok , " tmp" )
+  , ( OperatorTok , ";" )
+  , ( PreprocessorTok , " " )
+  , ( OperatorTok , "}" )
   ]
 , []
 , [ ( NormalTok , "        " )
@@ -322,10 +353,8 @@
   ]
 , [ ( NormalTok , "                printf" )
   , ( OperatorTok , "(" )
-  , ( StringTok , "\"%s" )
-  , ( SpecialCharTok , "\\t" )
-  , ( StringTok , "%d" )
-  , ( SpecialCharTok , "\\n" )
+  , ( StringTok , "\"" )
+  , ( SpecialCharTok , "%s\\t%d\\n" )
   , ( StringTok , "\"" )
   , ( OperatorTok , "," )
   , ( NormalTok , " " )
diff --git a/test/expected/abc.cpp.native b/test/expected/abc.cpp.native
--- a/test/expected/abc.cpp.native
+++ b/test/expected/abc.cpp.native
@@ -405,8 +405,8 @@
   ]
 , [ ( NormalTok , "        " )
   , ( BuiltInTok , "std::" )
-  , ( NormalTok , "cout" )
-  , ( OperatorTok , " <<" )
+  , ( NormalTok , "cout " )
+  , ( OperatorTok , "<<" )
   , ( NormalTok , " w " )
   , ( OperatorTok , "<<" )
   , ( NormalTok , " " )
@@ -415,8 +415,8 @@
   , ( OperatorTok , "<<" )
   , ( NormalTok , " " )
   , ( BuiltInTok , "std::" )
-  , ( NormalTok , "boolalpha" )
-  , ( OperatorTok , " <<" )
+  , ( NormalTok , "boolalpha " )
+  , ( OperatorTok , "<<" )
   , ( NormalTok , " can_make_word" )
   , ( OperatorTok , "(" )
   , ( NormalTok , "w" )
diff --git a/test/expected/abc.haskell.native b/test/expected/abc.haskell.native
--- a/test/expected/abc.haskell.native
+++ b/test/expected/abc.haskell.native
@@ -103,7 +103,9 @@
   , ( OtherTok , "=" )
   , ( NormalTok , " " )
   , ( FunctionTok , "mapM_" )
-  , ( NormalTok , " (\\w " )
+  , ( NormalTok , " (" )
+  , ( OperatorTok , "\\" )
+  , ( NormalTok , "w " )
   , ( OtherTok , "->" )
   , ( NormalTok , " " )
   , ( FunctionTok , "print" )
diff --git a/test/expected/abc.kotlin.native b/test/expected/abc.kotlin.native
--- a/test/expected/abc.kotlin.native
+++ b/test/expected/abc.kotlin.native
@@ -87,12 +87,12 @@
   , ( OperatorTok , ")" )
   ]
 , []
-, [ ( NormalTok , "/*" ) ]
-, [ ( NormalTok
+, [ ( CommentTok , "/*" ) ]
+, [ ( CommentTok
     , " *  Not the most elegant way but interesting from an highlighting perspective ;)"
     )
   ]
-, [ ( NormalTok , " */" ) ]
+, [ ( CommentTok , " */" ) ]
 , [ ( KeywordTok , "public" )
   , ( NormalTok , " " )
   , ( KeywordTok , "class" )
diff --git a/test/expected/abc.lisp.native b/test/expected/abc.lisp.native
--- a/test/expected/abc.lisp.native
+++ b/test/expected/abc.lisp.native
@@ -38,7 +38,9 @@
   ]
 , [ ( NormalTok , "          (bs (" )
   , ( KeywordTok , "remove-if-not" )
-  , ( NormalTok , " #'(" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "#'" )
+  , ( NormalTok , "(" )
   , ( KeywordTok , "lambda" )
   , ( NormalTok , " (b) " )
   ]
@@ -46,12 +48,16 @@
   , ( KeywordTok , "find" )
   , ( NormalTok , " c b " )
   , ( BuiltInTok , ":test" )
-  , ( NormalTok , " #'char-equal))" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "#'" )
+  , ( NormalTok , "char-equal))" )
   ]
 , [ ( NormalTok , "                             blocks)))" ) ]
 , [ ( NormalTok , "         (" )
   , ( KeywordTok , "some" )
-  , ( NormalTok , " #'identity " )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "#'" )
+  , ( NormalTok , "identity " )
   ]
 , [ ( NormalTok , "               (" )
   , ( KeywordTok , "loop" )
diff --git a/test/expected/abc.perl.native b/test/expected/abc.perl.native
--- a/test/expected/abc.perl.native
+++ b/test/expected/abc.perl.native
@@ -1,7 +1,9 @@
 [ [ ( FunctionTok , "use" )
   , ( NormalTok , " " )
   , ( FunctionTok , "Test::More" )
-  , ( NormalTok , " tests => " )
+  , ( NormalTok , " " )
+  , ( FunctionTok , "tests" )
+  , ( NormalTok , " => " )
   , ( DecValTok , "8" )
   , ( NormalTok , ";" )
   ]
diff --git a/test/expected/abc.r.native b/test/expected/abc.r.native
--- a/test/expected/abc.r.native
+++ b/test/expected/abc.r.native
@@ -43,7 +43,10 @@
   , ( NormalTok , " char, " )
   , ( AttributeTok , "arr.ind=" )
   , ( ConstantTok , "TRUE" )
-  , ( NormalTok , ")[, 1L])))" )
+  , ( NormalTok , ")[, " )
+  , ( DecValTok , "1" )
+  , ( DataTypeTok , "L" )
+  , ( NormalTok , "])))" )
   ]
 , [ ( NormalTok , "    charBlocks " )
   , ( OtherTok , "<-" )
@@ -67,9 +70,15 @@
   , ( ControlFlowTok , "if" )
   , ( NormalTok , " (" )
   , ( FunctionTok , "dim" )
-  , ( NormalTok , "(charBlocks)[1L] " )
+  , ( NormalTok , "(charBlocks)[" )
+  , ( DecValTok , "1" )
+  , ( DataTypeTok , "L" )
+  , ( NormalTok , "] " )
   , ( SpecialCharTok , ">" )
-  , ( NormalTok , " 0L) {" )
+  , ( NormalTok , " " )
+  , ( DecValTok , "0" )
+  , ( DataTypeTok , "L" )
+  , ( NormalTok , ") {" )
   ]
 , [ ( NormalTok , "      " )
   , ( FunctionTok , "t" )
diff --git a/test/expected/abc.ruby.native b/test/expected/abc.ruby.native
--- a/test/expected/abc.ruby.native
+++ b/test/expected/abc.ruby.native
@@ -1,10 +1,11 @@
 [ [ ( NormalTok , "words " )
-  , ( KeywordTok , "=" )
-  , ( OtherTok , " %w(" )
-  , ( StringTok , "A BaRK BOoK tREaT COmMOn SqUAD CoNfuSE" )
+  , ( OperatorTok , "=" )
+  , ( NormalTok , " " )
+  , ( OtherTok , "%w(" )
+  , ( VerbatimStringTok , "A BaRK BOoK tREaT COmMOn SqUAD CoNfuSE" )
   , ( OtherTok , ")" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "<<" )
+  , ( OperatorTok , "<<" )
   , ( NormalTok , " " )
   , ( StringTok , "\"\"" )
   ]
@@ -14,36 +15,38 @@
   , ( NormalTok , " " )
   , ( ControlFlowTok , "do" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "|" )
+  , ( OperatorTok , "|" )
   , ( NormalTok , "word" )
-  , ( KeywordTok , "|" )
+  , ( OperatorTok , "|" )
   ]
 , [ ( NormalTok , "  blocks " )
-  , ( KeywordTok , "=" )
+  , ( OperatorTok , "=" )
   , ( NormalTok , " " )
   , ( StringTok
     , "\"BO XK DQ CP NA GT RE TG QD FS JW HU VI AN OB ER FS LY PC ZM\""
     )
   ]
 , [ ( NormalTok , "  res " )
-  , ( KeywordTok , "=" )
+  , ( OperatorTok , "=" )
   , ( NormalTok , " word" )
   , ( AttributeTok , ".each_char.all?" )
-  , ( KeywordTok , "{|" )
+  , ( OperatorTok , "{|" )
   , ( NormalTok , "c" )
-  , ( KeywordTok , "|" )
+  , ( OperatorTok , "|" )
   , ( NormalTok , " blocks" )
   , ( AttributeTok , ".sub!" )
   , ( NormalTok , "(" )
-  , ( SpecialStringTok , "/\\w?" )
+  , ( SpecialStringTok , "/" )
+  , ( SpecialCharTok , "\\w" )
+  , ( SpecialStringTok , "?" )
   , ( SpecialCharTok , "#{" )
   , ( NormalTok , "c" )
-  , ( SpecialCharTok , "}" )
-  , ( SpecialStringTok , "\\w?/i" )
+  , ( SpecialCharTok , "}\\w" )
+  , ( SpecialStringTok , "?/i" )
   , ( NormalTok , ", " )
   , ( StringTok , "\"\"" )
   , ( NormalTok , ")" )
-  , ( KeywordTok , "}" )
+  , ( OperatorTok , "}" )
   , ( NormalTok , "  " )
   , ( CommentTok , "#regexps can be interpolated like strings" )
   ]
diff --git a/test/expected/abc.scheme.native b/test/expected/abc.scheme.native
--- a/test/expected/abc.scheme.native
+++ b/test/expected/abc.scheme.native
@@ -61,12 +61,16 @@
 , [ ( NormalTok , "(" )
   , ( ExtensionTok , "define" )
   , ( FunctionTok , " " )
-  , ( NormalTok , "(can-make-word? w)" )
+  , ( NormalTok , "(" )
+  , ( FunctionTok , "can-make-word? " )
+  , ( NormalTok , "w)" )
   ]
 , [ ( NormalTok , "  (" )
   , ( ExtensionTok , "define" )
   , ( FunctionTok , " " )
-  , ( NormalTok , "(usable-block blocks word-char)" )
+  , ( NormalTok , "(" )
+  , ( FunctionTok , "usable-block " )
+  , ( NormalTok , "blocks word-char)" )
   ]
 , [ ( NormalTok
     , "    (for/first ((b (in-list blocks)) #:when (memf (curry "
@@ -78,7 +82,9 @@
 , [ ( NormalTok , "  (" )
   , ( ExtensionTok , "define" )
   , ( FunctionTok , " " )
-  , ( NormalTok , "(inner word-chars blocks tried-blocks)" )
+  , ( NormalTok , "(" )
+  , ( FunctionTok , "inner " )
+  , ( NormalTok , "word-chars blocks tried-blocks)" )
   ]
 , [ ( NormalTok , "    (" ) , ( KeywordTok , "cond" ) ]
 , [ ( NormalTok , "      " )
@@ -153,7 +159,9 @@
 , [ ( NormalTok , "(" )
   , ( ExtensionTok , "define" )
   , ( FunctionTok , " " )
-  , ( NormalTok , "(report-word w)" )
+  , ( NormalTok , "(" )
+  , ( FunctionTok , "report-word " )
+  , ( NormalTok , "w)" )
   ]
 , [ ( NormalTok , "  (printf " )
   , ( StringTok , "\"Can we make: ~a? ~a~%\"" )
diff --git a/test/expected/abc.tcl.native b/test/expected/abc.tcl.native
--- a/test/expected/abc.tcl.native
+++ b/test/expected/abc.tcl.native
@@ -43,28 +43,33 @@
   , ( DecValTok , "0" )
   ]
 , [ ( NormalTok , "        " )
-  , ( KeywordTok , "foreach" )
+  , ( ControlFlowTok , "foreach" )
   , ( NormalTok , " blk " )
   , ( DataTypeTok , "$blocks" )
   , ( NormalTok , " " )
   , ( KeywordTok , "{" )
   ]
 , [ ( NormalTok , "            " )
-  , ( KeywordTok , "if" )
+  , ( ControlFlowTok , "if" )
   , ( NormalTok , " " )
   , ( KeywordTok , "{" )
   , ( DataTypeTok , "$ch" )
   , ( NormalTok , " in " )
   , ( DataTypeTok , "$blk" )
-  , ( NormalTok , " && (!" )
+  , ( NormalTok , " " )
+  , ( OperatorTok , "&&" )
+  , ( NormalTok , " (" )
+  , ( OperatorTok , "!" )
   , ( KeywordTok , "[llength" )
   , ( NormalTok , " " )
   , ( DataTypeTok , "$rest" )
   , ( KeywordTok , "]" )
   ]
-, [ ( NormalTok , "                    || " )
-  , ( KeywordTok , "[" )
-  , ( NormalTok , "apply " )
+, [ ( NormalTok , "                    " )
+  , ( OperatorTok , "||" )
+  , ( NormalTok , " " )
+  , ( KeywordTok , "[apply" )
+  , ( NormalTok , " " )
   , ( DataTypeTok , "$abc" )
   , ( NormalTok , " " )
   , ( DataTypeTok , "$rest" )
@@ -86,7 +91,7 @@
   , ( KeywordTok , "{" )
   ]
 , [ ( NormalTok , "                " )
-  , ( KeywordTok , "return" )
+  , ( ControlFlowTok , "return" )
   , ( NormalTok , " true" )
   ]
 , [ ( NormalTok , "            " ) , ( KeywordTok , "}" ) ]
@@ -96,15 +101,15 @@
   ]
 , [ ( NormalTok , "        " ) , ( KeywordTok , "}" ) ]
 , [ ( NormalTok , "        " )
-  , ( KeywordTok , "return" )
+  , ( ControlFlowTok , "return" )
   , ( NormalTok , " false" )
   ]
 , [ ( NormalTok , "    " ) , ( KeywordTok , "}}" ) ]
 , [ ( NormalTok , "    " )
-  , ( KeywordTok , "return" )
+  , ( ControlFlowTok , "return" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "[" )
-  , ( NormalTok , "apply " )
+  , ( KeywordTok , "[apply" )
+  , ( NormalTok , " " )
   , ( DataTypeTok , "$abc" )
   , ( NormalTok , " " )
   , ( KeywordTok , "[split" )
@@ -114,8 +119,8 @@
   , ( StringTok , "\"\"" )
   , ( KeywordTok , "]" )
   , ( NormalTok , " " )
-  , ( KeywordTok , "[" )
-  , ( NormalTok , "lmap b " )
+  , ( KeywordTok , "[lmap" )
+  , ( NormalTok , " b " )
   , ( DataTypeTok , "$blocks" )
   , ( NormalTok , " " )
   , ( KeywordTok , "{split" )
@@ -130,7 +135,7 @@
   ]
 , [ ( KeywordTok , "}" ) ]
 , []
-, [ ( KeywordTok , "foreach" )
+, [ ( ControlFlowTok , "foreach" )
   , ( NormalTok , " word " )
   , ( KeywordTok , "{" )
   , ( StringTok , "\"\"" )
diff --git a/test/expected/docbook.xml.native b/test/expected/docbook.xml.native
--- a/test/expected/docbook.xml.native
+++ b/test/expected/docbook.xml.native
@@ -1,7 +1,9 @@
 [ [ ( FunctionTok , "<?xml" )
-  , ( OtherTok , " version=" )
+  , ( NormalTok , " " )
+  , ( OtherTok , "version=" )
   , ( StringTok , "\"1.0\"" )
-  , ( OtherTok , " encoding=" )
+  , ( NormalTok , " " )
+  , ( OtherTok , "encoding=" )
   , ( StringTok , "\"utf-8\"" )
   , ( FunctionTok , "?>" )
   ]
@@ -38,7 +40,8 @@
   ]
 , [ ( NormalTok , "      <" )
   , ( KeywordTok , "filename" )
-  , ( OtherTok , " class=" )
+  , ( NormalTok , " " )
+  , ( OtherTok , "class=" )
   , ( StringTok , "\"directory\"" )
   , ( NormalTok , ">/usr/bin</" )
   , ( KeywordTok , "filename" )
diff --git a/test/expected/hk91.html.native b/test/expected/hk91.html.native
--- a/test/expected/hk91.html.native
+++ b/test/expected/hk91.html.native
@@ -1,15 +1,22 @@
-[ [ ( DataTypeTok , "<!DOCTYPE " )
-  , ( NormalTok , "HTML" )
+[ [ ( DataTypeTok , "<!DOCTYPE" )
+  , ( NormalTok , " HTML" )
   , ( DataTypeTok , ">" )
   ]
-, [ ( KeywordTok , "<html>" ) ]
-, [ ( KeywordTok , "<head>" ) ]
+, [ ( DataTypeTok , "<" )
+  , ( KeywordTok , "html" )
+  , ( DataTypeTok , ">" )
+  ]
+, [ ( DataTypeTok , "<" )
+  , ( KeywordTok , "head" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
 , [ ( NormalTok , "  " )
-  , ( KeywordTok , "<script" )
+  , ( DataTypeTok , "<" )
+  , ( KeywordTok , "script" )
   , ( OtherTok , " type=" )
   , ( StringTok , "\"text/javascript\"" )
-  , ( KeywordTok , ">" )
+  , ( DataTypeTok , ">" )
   ]
 , [ ( NormalTok , "    " )
   , ( KeywordTok , "function" )
@@ -63,9 +70,17 @@
   , ( OperatorTok , ";" )
   ]
 , [ ( NormalTok , "    }" ) ]
-, [ ( NormalTok , "  " ) , ( KeywordTok , "</script>" ) ]
+, [ ( NormalTok , "  " )
+  , ( DataTypeTok , "</" )
+  , ( KeywordTok , "script" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( NormalTok , "  " ) , ( KeywordTok , "<script>" ) ]
+, [ ( NormalTok , "  " )
+  , ( DataTypeTok , "<" )
+  , ( KeywordTok , "script" )
+  , ( DataTypeTok , ">" )
+  ]
 , [ ( NormalTok , "    " )
   , ( FunctionTok , "$" )
   , ( NormalTok , "(" )
@@ -83,13 +98,29 @@
   , ( OperatorTok , ";" )
   ]
 , [ ( NormalTok , "    })" ) , ( OperatorTok , ";" ) ]
-, [ ( NormalTok , "  " ) , ( KeywordTok , "</script>" ) ]
+, [ ( NormalTok , "  " )
+  , ( DataTypeTok , "</" )
+  , ( KeywordTok , "script" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "</head>" ) ]
+, [ ( DataTypeTok , "</" )
+  , ( KeywordTok , "head" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "<body>" ) ]
+, [ ( DataTypeTok , "<" )
+  , ( KeywordTok , "body" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "</body>" ) ]
+, [ ( DataTypeTok , "</" )
+  , ( KeywordTok , "body" )
+  , ( DataTypeTok , ">" )
+  ]
 , []
-, [ ( KeywordTok , "</html>" ) ]
+, [ ( DataTypeTok , "</" )
+  , ( KeywordTok , "html" )
+  , ( DataTypeTok , ">" )
+  ]
 ]
diff --git a/test/expected/if.cmake.native b/test/expected/if.cmake.native
--- a/test/expected/if.cmake.native
+++ b/test/expected/if.cmake.native
@@ -1,9 +1,9 @@
-[ [ ( KeywordTok , "if" )
+[ [ ( ControlFlowTok , "if" )
   , ( NormalTok , "(CMARK_TESTS and CMARK_SHARED)" )
   ]
 , [ ( NormalTok , "      " )
   , ( KeywordTok , "add_subdirectory" )
   , ( NormalTok , "(api_test)" )
   ]
-, [ ( KeywordTok , "endif" ) , ( NormalTok , "()" ) ]
+, [ ( ControlFlowTok , "endif" ) , ( NormalTok , "()" ) ]
 ]
diff --git a/test/expected/life.lua.native b/test/expected/life.lua.native
--- a/test/expected/life.lua.native
+++ b/test/expected/life.lua.native
@@ -10,7 +10,8 @@
 , [ ( CommentTok , "-- modified to use for instead of while" ) ]
 , []
 , [ ( KeywordTok , "local" )
-  , ( NormalTok , " write" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "write" )
   , ( OperatorTok , "=" )
   , ( FunctionTok , "io.write" )
   ]
@@ -42,7 +43,8 @@
   ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "for" )
-  , ( NormalTok , " i" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "i" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
@@ -62,38 +64,43 @@
 , [ ( KeywordTok , "function" )
   , ( NormalTok , " ARRAY2D" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , ")" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " t " )
+  , ( NormalTok , " " )
+  , ( VariableTok , "t" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " " )
   , ( OperatorTok , "{" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "=" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "=" )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "}" )
   ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "for" )
-  , ( NormalTok , " y" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h " )
+  , ( VariableTok , "h" )
+  , ( NormalTok , " " )
   , ( ControlFlowTok , "do" )
   ]
-, [ ( NormalTok , "    t" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "t" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "=" )
@@ -102,18 +109,21 @@
   ]
 , [ ( NormalTok , "    " )
   , ( ControlFlowTok , "for" )
-  , ( NormalTok , " x" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "w " )
+  , ( VariableTok , "w" )
+  , ( NormalTok , " " )
   , ( ControlFlowTok , "do" )
   ]
-, [ ( NormalTok , "      t" )
+, [ ( NormalTok , "      " )
+  , ( VariableTok , "t" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "]=" )
   , ( DecValTok , "0" )
   ]
@@ -121,7 +131,8 @@
 , [ ( NormalTok , "  " ) , ( ControlFlowTok , "end" ) ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "return" )
-  , ( NormalTok , " t" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "t" )
   ]
 , [ ( KeywordTok , "end" ) ]
 , []
@@ -142,22 +153,23 @@
   , ( OperatorTok , ":" )
   , ( NormalTok , "spawn" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "shape" )
+  , ( VariableTok , "shape" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "left" )
+  , ( VariableTok , "left" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "top" )
+  , ( VariableTok , "top" )
   , ( OperatorTok , ")" )
   ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "for" )
-  , ( NormalTok , " y" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "0" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "shape" )
+  , ( VariableTok , "shape" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "-" )
   , ( DecValTok , "1" )
   , ( NormalTok , " " )
@@ -165,39 +177,42 @@
   ]
 , [ ( NormalTok , "    " )
   , ( ControlFlowTok , "for" )
-  , ( NormalTok , " x" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "0" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "shape" )
+  , ( VariableTok , "shape" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "-" )
   , ( DecValTok , "1" )
   , ( NormalTok , " " )
   , ( ControlFlowTok , "do" )
   ]
-, [ ( NormalTok , "      self" )
+, [ ( NormalTok , "      " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "top" )
+  , ( VariableTok , "top" )
   , ( OperatorTok , "+" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "left" )
+  , ( VariableTok , "left" )
   , ( OperatorTok , "+" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " shape" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "shape" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "*" )
-  , ( NormalTok , "shape" )
+  , ( VariableTok , "shape" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "+" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "+" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "]" )
@@ -221,33 +236,36 @@
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " ym1" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "ym1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "yp1" )
+  , ( VariableTok , "yp1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "yi" )
+  , ( VariableTok , "yi" )
   , ( OperatorTok , "=" )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "-" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "," )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "while" )
-  , ( NormalTok , " yi " )
+  , ( NormalTok , " " )
+  , ( VariableTok , "yi" )
+  , ( NormalTok , " " )
   , ( OperatorTok , ">" )
   , ( NormalTok , " " )
   , ( DecValTok , "0" )
@@ -256,33 +274,36 @@
   ]
 , [ ( NormalTok , "    " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " xm1" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "xm1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "xp1" )
+  , ( VariableTok , "xp1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "xi" )
+  , ( VariableTok , "xi" )
   , ( OperatorTok , "=" )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "-" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   ]
 , [ ( NormalTok , "    " )
   , ( ControlFlowTok , "while" )
-  , ( NormalTok , " xi " )
+  , ( NormalTok , " " )
+  , ( VariableTok , "xi" )
+  , ( NormalTok , " " )
   , ( OperatorTok , ">" )
   , ( NormalTok , " " )
   , ( DecValTok , "0" )
@@ -291,101 +312,112 @@
   ]
 , [ ( NormalTok , "      " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " sum " )
+  , ( NormalTok , " " )
+  , ( VariableTok , "sum" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " self" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "ym1" )
+  , ( VariableTok , "ym1" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "xm1" )
+  , ( VariableTok , "xm1" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "+" )
-  , ( NormalTok , " self" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "ym1" )
+  , ( VariableTok , "ym1" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "+" )
-  , ( NormalTok , " self" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "ym1" )
+  , ( VariableTok , "ym1" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "xp1" )
+  , ( VariableTok , "xp1" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "+" )
   ]
-, [ ( NormalTok , "                  self" )
+, [ ( NormalTok , "                  " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "xm1" )
+  , ( VariableTok , "xm1" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "+" )
-  , ( NormalTok , " self" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "xp1" )
+  , ( VariableTok , "xp1" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "+" )
   ]
-, [ ( NormalTok , "                  self" )
+, [ ( NormalTok , "                  " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "yp1" )
+  , ( VariableTok , "yp1" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "xm1" )
+  , ( VariableTok , "xm1" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "+" )
-  , ( NormalTok , " self" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "yp1" )
+  , ( VariableTok , "yp1" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "+" )
-  , ( NormalTok , " self" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "yp1" )
+  , ( VariableTok , "yp1" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "xp1" )
+  , ( VariableTok , "xp1" )
   , ( OperatorTok , "]" )
   ]
 , [ ( NormalTok , "      " )
   , ( FunctionTok , "next" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "]" )
   , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " " )
   , ( OperatorTok , "((" )
-  , ( NormalTok , "sum" )
+  , ( VariableTok , "sum" )
   , ( OperatorTok , "==" )
   , ( DecValTok , "2" )
   , ( OperatorTok , ")" )
   , ( NormalTok , " " )
   , ( KeywordTok , "and" )
-  , ( NormalTok , " self" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "])" )
   , ( NormalTok , " " )
   , ( KeywordTok , "or" )
   , ( NormalTok , " " )
   , ( OperatorTok , "((" )
-  , ( NormalTok , "sum" )
+  , ( VariableTok , "sum" )
   , ( OperatorTok , "==" )
   , ( DecValTok , "3" )
   , ( OperatorTok , ")" )
@@ -399,44 +431,50 @@
   , ( NormalTok , " " )
   , ( DecValTok , "0" )
   ]
-, [ ( NormalTok , "      xm1" )
+, [ ( NormalTok , "      " )
+  , ( VariableTok , "xm1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "xp1" )
+  , ( VariableTok , "xp1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "xi " )
+  , ( VariableTok , "xi" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " x" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "xp1" )
+  , ( VariableTok , "xp1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "xp1" )
+  , ( VariableTok , "xp1" )
   , ( OperatorTok , "+" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "xi" )
+  , ( VariableTok , "xi" )
   , ( OperatorTok , "-" )
   , ( DecValTok , "1" )
   ]
 , [ ( NormalTok , "    " ) , ( ControlFlowTok , "end" ) ]
-, [ ( NormalTok , "    ym1" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "ym1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "yp1" )
+  , ( VariableTok , "yp1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "yi " )
+  , ( VariableTok , "yi" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " y" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "yp1" )
+  , ( VariableTok , "yp1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "yp1" )
+  , ( VariableTok , "yp1" )
   , ( OperatorTok , "+" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "yi" )
+  , ( VariableTok , "yi" )
   , ( OperatorTok , "-" )
   , ( DecValTok , "1" )
   ]
@@ -453,7 +491,8 @@
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " out" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "out" )
   , ( OperatorTok , "=" )
   , ( StringTok , "\"\"" )
   , ( NormalTok , " " )
@@ -461,35 +500,40 @@
   ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "for" )
-  , ( NormalTok , " y" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "h " )
+  , ( VariableTok , "h" )
+  , ( NormalTok , " " )
   , ( ControlFlowTok , "do" )
   ]
 , [ ( NormalTok , "   " )
   , ( ControlFlowTok , "for" )
-  , ( NormalTok , " x" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "1" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "w " )
+  , ( VariableTok , "w" )
+  , ( NormalTok , " " )
   , ( ControlFlowTok , "do" )
   ]
-, [ ( NormalTok , "      out" )
+, [ ( NormalTok , "      " )
+  , ( VariableTok , "out" )
   , ( OperatorTok , "=" )
-  , ( NormalTok , "out" )
+  , ( VariableTok , "out" )
   , ( OperatorTok , "..(((" )
-  , ( NormalTok , "self" )
+  , ( VariableTok , "self" )
   , ( OperatorTok , "[" )
-  , ( NormalTok , "y" )
+  , ( VariableTok , "y" )
   , ( OperatorTok , "][" )
-  , ( NormalTok , "x" )
+  , ( VariableTok , "x" )
   , ( OperatorTok , "]>" )
   , ( DecValTok , "0" )
   , ( OperatorTok , ")" )
@@ -505,9 +549,10 @@
   , ( OperatorTok , ")" )
   ]
 , [ ( NormalTok , "    " ) , ( ControlFlowTok , "end" ) ]
-, [ ( NormalTok , "    out" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "out" )
   , ( OperatorTok , "=" )
-  , ( NormalTok , "out" )
+  , ( VariableTok , "out" )
   , ( OperatorTok , ".." )
   , ( StringTok , "\"" )
   , ( SpecialCharTok , "\\n" )
@@ -517,7 +562,7 @@
 , [ ( NormalTok , "  " )
   , ( FunctionTok , "write" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "out" )
+  , ( VariableTok , "out" )
   , ( OperatorTok , ")" )
   ]
 , [ ( KeywordTok , "end" ) ]
@@ -526,52 +571,61 @@
 , [ ( KeywordTok , "function" )
   , ( NormalTok , " CELLS" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , ")" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " c " )
+  , ( NormalTok , " " )
+  , ( VariableTok , "c" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " ARRAY2D" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , ")" )
   ]
-, [ ( NormalTok , "  c" )
+, [ ( NormalTok , "  " )
+  , ( VariableTok , "c" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "spawn " )
+  , ( VariableTok , "spawn" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " " )
   , ( ConstantTok , "_CELLS" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "spawn" )
+  , ( VariableTok , "spawn" )
   ]
-, [ ( NormalTok , "  c" )
+, [ ( NormalTok , "  " )
+  , ( VariableTok , "c" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "evolve " )
+  , ( VariableTok , "evolve" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " " )
   , ( ConstantTok , "_CELLS" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "evolve" )
+  , ( VariableTok , "evolve" )
   ]
-, [ ( NormalTok , "  c" )
+, [ ( NormalTok , "  " )
+  , ( VariableTok , "c" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "draw " )
+  , ( VariableTok , "draw" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " " )
   , ( ConstantTok , "_CELLS" )
   , ( OperatorTok , "." )
-  , ( NormalTok , "draw" )
+  , ( VariableTok , "draw" )
   ]
 , [ ( NormalTok , "  " )
   , ( ControlFlowTok , "return" )
-  , ( NormalTok , " c" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "c" )
   ]
 , [ ( KeywordTok , "end" ) ]
 , []
@@ -605,11 +659,12 @@
   , ( OperatorTok , "," )
   , ( DecValTok , "1" )
   , ( OperatorTok , ";" )
-  , ( NormalTok , " w" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "3" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "3" )
   , ( NormalTok , " " )
@@ -639,11 +694,12 @@
   , ( OperatorTok , "," )
   , ( DecValTok , "1" )
   , ( OperatorTok , ";" )
-  , ( NormalTok , " w" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "3" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "3" )
   , ( NormalTok , " " )
@@ -679,11 +735,12 @@
   , ( OperatorTok , "," )
   , ( DecValTok , "0" )
   , ( OperatorTok , ";" )
-  , ( NormalTok , " w" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "3" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "4" )
   , ( NormalTok , " " )
@@ -735,11 +792,12 @@
   , ( OperatorTok , "," )
   , ( DecValTok , "0" )
   , ( OperatorTok , ";" )
-  , ( NormalTok , " w" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "5" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "4" )
   , ( NormalTok , " " )
@@ -801,11 +859,12 @@
   , ( OperatorTok , "," )
   , ( DecValTok , "1" )
   , ( OperatorTok , ";" )
-  , ( NormalTok , " w" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "5" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "5" )
   , ( NormalTok , " " )
@@ -816,9 +875,9 @@
 , [ ( KeywordTok , "function" )
   , ( NormalTok , " LIFE" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , ")" )
   ]
 , [ ( NormalTok , "  " )
@@ -826,24 +885,28 @@
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " thisgen " )
+  , ( NormalTok , " " )
+  , ( VariableTok , "thisgen" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " CELLS" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , ")" )
   ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " nextgen " )
+  , ( NormalTok , " " )
+  , ( VariableTok , "nextgen" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " CELLS" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "w" )
+  , ( VariableTok , "w" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "h" )
+  , ( VariableTok , "h" )
   , ( OperatorTok , ")" )
   ]
 , []
@@ -853,7 +916,8 @@
     , "-- about 1000 generations of fun, then a glider steady-state"
     )
   ]
-, [ ( NormalTok , "  thisgen" )
+, [ ( NormalTok , "  " )
+  , ( VariableTok , "thisgen" )
   , ( OperatorTok , ":" )
   , ( NormalTok , "spawn" )
   , ( OperatorTok , "(" )
@@ -864,7 +928,8 @@
   , ( DecValTok , "4" )
   , ( OperatorTok , ")" )
   ]
-, [ ( NormalTok , "  thisgen" )
+, [ ( NormalTok , "  " )
+  , ( VariableTok , "thisgen" )
   , ( OperatorTok , ":" )
   , ( NormalTok , "spawn" )
   , ( OperatorTok , "(" )
@@ -875,7 +940,8 @@
   , ( DecValTok , "10" )
   , ( OperatorTok , ")" )
   ]
-, [ ( NormalTok , "  thisgen" )
+, [ ( NormalTok , "  " )
+  , ( VariableTok , "thisgen" )
   , ( OperatorTok , ":" )
   , ( NormalTok , "spawn" )
   , ( OperatorTok , "(" )
@@ -890,7 +956,8 @@
 , [ ( NormalTok , "  " ) , ( CommentTok , "-- run until break" ) ]
 , [ ( NormalTok , "  " )
   , ( KeywordTok , "local" )
-  , ( NormalTok , " gen" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "gen" )
   , ( OperatorTok , "=" )
   , ( DecValTok , "1" )
   ]
@@ -911,20 +978,24 @@
   , ( NormalTok , " " )
   , ( ControlFlowTok , "do" )
   ]
-, [ ( NormalTok , "    thisgen" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "thisgen" )
   , ( OperatorTok , ":" )
   , ( NormalTok , "evolve" )
   , ( OperatorTok , "(" )
-  , ( NormalTok , "nextgen" )
+  , ( VariableTok , "nextgen" )
   , ( OperatorTok , ")" )
   ]
-, [ ( NormalTok , "    thisgen" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "thisgen" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "nextgen " )
+  , ( VariableTok , "nextgen" )
+  , ( NormalTok , " " )
   , ( OperatorTok , "=" )
-  , ( NormalTok , " nextgen" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "nextgen" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "thisgen" )
+  , ( VariableTok , "thisgen" )
   ]
 , [ ( NormalTok , "    " )
   , ( FunctionTok , "write" )
@@ -936,7 +1007,8 @@
   , ( NormalTok , "\t" )
   , ( CommentTok , "-- ANSI home cursor" )
   ]
-, [ ( NormalTok , "    thisgen" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "thisgen" )
   , ( OperatorTok , ":" )
   , ( NormalTok , "draw" )
   , ( OperatorTok , "()" )
@@ -946,22 +1018,24 @@
   , ( OperatorTok , "(" )
   , ( StringTok , "\"Life - generation \"" )
   , ( OperatorTok , "," )
-  , ( NormalTok , "gen" )
+  , ( VariableTok , "gen" )
   , ( OperatorTok , "," )
   , ( StringTok , "\"" )
   , ( SpecialCharTok , "\\n" )
   , ( StringTok , "\"" )
   , ( OperatorTok , ")" )
   ]
-, [ ( NormalTok , "    gen" )
+, [ ( NormalTok , "    " )
+  , ( VariableTok , "gen" )
   , ( OperatorTok , "=" )
-  , ( NormalTok , "gen" )
+  , ( VariableTok , "gen" )
   , ( OperatorTok , "+" )
   , ( DecValTok , "1" )
   ]
 , [ ( NormalTok , "    " )
   , ( ControlFlowTok , "if" )
-  , ( NormalTok , " gen" )
+  , ( NormalTok , " " )
+  , ( VariableTok , "gen" )
   , ( OperatorTok , ">" )
   , ( DecValTok , "2000" )
   , ( NormalTok , " " )
diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs
--- a/test/test-skylighting.hs
+++ b/test/test-skylighting.hs
@@ -103,12 +103,14 @@
                 testCase ("regex " <>
                            (Text.unpack $ TE.decodeUtf8 regex) <> " in "
                            <> sFilename syn)
-             $ case compileRegex True regex of
+             $ case compileRegex True False regex of
                  Right _ -> assertBool "regex does not compile" True
                  Left e -> assertFailure ("regex does not compile: " <> show e))
                          $ getRegexesFromSyntax syn))
         syntaxes
     , testGroup "Regex module" $ map regexTest regexTests
+    , testGroup "Regex module compile errors" $
+        map regexErrorTest regexErrorTests
     , testGroup "Regression tests" $
       let perl = maybe (error "could not find Perl syntax") id
                              (lookupSyntax "Perl" sMap)
@@ -119,7 +121,21 @@
           bash  = maybe (error "could not find bash syntax") id
                              (lookupSyntax "bash" sMap)
           c    = maybe (error "could not find C syntax") id
-                             (lookupSyntax "c" sMap) in
+                             (lookupSyntax "c" sMap)
+          dosbat = maybe (error "could not find MS-DOS Batch syntax") id
+                             (lookupSyntax "MS-DOS Batch" sMap)
+          cmake = maybe (error "could not find CMake syntax") id
+                             (lookupSyntax "CMake" sMap)
+          lua = maybe (error "could not find Lua syntax") id
+                             (lookupSyntax "Lua" sMap)
+          awk = maybe (error "could not find AWK syntax") id
+                             (lookupSyntax "AWK" sMap)
+          glsl = maybe (error "could not find GLSL syntax") id
+                             (lookupSyntax "GLSL" sMap)
+          makefile = maybe (error "could not find Makefile syntax") id
+                             (lookupSyntax "Makefile" sMap)
+          markdown = maybe (error "could not find Markdown syntax") id
+                             (lookupSyntax "Markdown" sMap) in
       [ testCase "perl NUL case" $ Right
              [[(OtherTok,"s\NULb\NUL")
               ,(StringTok,"c")
@@ -170,7 +186,7 @@
            ] @=? tokenize defConfig cpp "ng_or"
 
       , testCase "c '\\0' (#82)" $ Right
-           [ [ (CharTok,"'\\0'") ]
+           [ [ (CharTok,"'"),(SpecialCharTok,"\\0"),(CharTok,"'") ]
            ] @=? tokenize defConfig c "'\\0'"
 
       , testCase "c very long integer (#81)" $ Right
@@ -178,7 +194,8 @@
            ] @=? tokenize defConfig c "1111111111111111111111"
 
       , testCase "Chinese characters in HTML (#110)" $ Right
-          [ [ ( NormalTok , "\35797\65306" ) , ( KeywordTok , "<a>" ) ]
+          [ [ ( NormalTok , "\35797\65306" ) , ( DataTypeTok , "<" ) ,
+              ( KeywordTok , "a" ) , ( DataTypeTok , ">" ) ]
           ] @=? tokenize defConfig html "试：<a>"
 
       , testCase "Bash closing brace (#119)" $ Right
@@ -194,9 +211,148 @@
              @=? tokenize defConfig bash
                      "f() {\n    echo > f\n}\n"
 
+      , testCase "LineContinue with char attribute (dosbat ^)" $ Right
+          [ [ ( BuiltInTok , "echo" )
+            , ( NormalTok , " foo " )
+            , ( SpecialCharTok , "^" ) ]
+          , [ ( NormalTok , "bar" ) ] ]
+             @=? tokenize defConfig dosbat "echo foo ^\nbar"
+
+      , testCase "keyword rule insensitive attribute (cmake)" $ Right
+          [ [ ( ControlFlowTok , "if" )
+            , ( NormalTok , "(" )
+            , ( OtherTok , "YES" )
+            , ( NormalTok , ")" ) ]
+          , [ ( ControlFlowTok , "if" )
+            , ( NormalTok , "(" )
+            , ( OtherTok , "yes" )
+            , ( NormalTok , ")" ) ] ]
+             @=? tokenize defConfig cmake "if(YES)\nif(yes)"
+
+      , testCase "keyword rule additionalDeliminator attribute (lua)" $ Right
+          [ [ ( VariableTok , "a" )
+            , ( NormalTok , " " )
+            , ( OperatorTok , "=" )
+            , ( NormalTok , " " )
+            , ( KeywordTok , "nil" )
+            , ( OperatorTok , "." )
+            , ( VariableTok , "x" ) ] ]
+             @=? tokenize defConfig lua "a = nil.x"
+
+      , testCase "Int respects general weakDeliminator (awk)" $ Right
+          [ [ ( NormalTok , "x" )
+            , ( OperatorTok , "@" )
+            , ( NormalTok , "5" ) ] ]
+             @=? tokenize defConfig awk "x@5"
+
+      , testCase "C floating-point literal (#174)" $ Right
+          [ [ ( DataTypeTok , "double")
+            , ( NormalTok , " x " )
+            , ( OperatorTok , "=" )
+            , ( NormalTok , " " )
+            , ( FloatTok , "0.5")
+            , ( OperatorTok , ";" ) ] ]
+             @=? tokenize defConfig c
+                     "double x = 0.5;\n"
+
+      -- HlCOct matches C-style octals (0 followed by octal digits);
+      -- HlCHex matches 0x followed by hex digits:
+      , testCase "HlCOct and HlCHex rules (glsl)" $ Right
+          [ [ ( NormalTok , "x " )
+            , ( OperatorTok , "=" )
+            , ( NormalTok , " " )
+            , ( BaseNTok , "0755" )
+            , ( OperatorTok , ";" ) ]
+          , [ ( NormalTok , "y " )
+            , ( OperatorTok , "=" )
+            , ( NormalTok , " " )
+            , ( BaseNTok , "0x1F" )
+            , ( OperatorTok , ";" ) ] ]
+             @=? tokenize defConfig glsl "x = 0755;\ny = 0x1F;"
+
+      -- As in KDE, the Float rule requires a '.', so 5e2 is matched
+      -- by Int (leaving e2 unmatched), and an incomplete exponent is
+      -- excluded from the match:
+      , testCase "Float rule requires dot; exponent all-or-nothing (glsl)" $
+          Right
+          [ [ ( NormalTok , "x " )
+            , ( OperatorTok , "=" )
+            , ( NormalTok , " " )
+            , ( DecValTok , "5" )
+            , ( NormalTok , "e2" )
+            , ( OperatorTok , ";" ) ]
+          , [ ( NormalTok , "y " )
+            , ( OperatorTok , "=" )
+            , ( NormalTok , " " )
+            , ( FloatTok , "1.5" )
+            , ( NormalTok , "e" )
+            , ( OperatorTok , "+;" ) ] ]
+             @=? tokenize defConfig glsl "x = 5e2;\ny = 1.5e+;"
+
+      -- As in KDE, Int and Float rules do not consume a leading sign:
+      , testCase "Int does not include leading minus (glsl)" $ Right
+          [ [ ( NormalTok , "x " )
+            , ( OperatorTok , "=" )
+            , ( NormalTok , " " )
+            , ( OperatorTok , "-" )
+            , ( DecValTok , "15" )
+            , ( OperatorTok , ";" ) ] ]
+             @=? tokenize defConfig glsl "x = -15;"
+
+      -- As in KDE, column and firstNonspaceColumn restart on every
+      -- physical line; a line continuation only suppresses the
+      -- previous line's lineEndContext.  So the column="0" Target
+      -- rule applies to "bar" on the continuation line:
+      , testCase "column restarts after LineContinue (makefile)" $ Right
+          [ [ ( DecValTok , "foo " )
+            , ( CharTok , "\\" ) ]
+          , [ ( DecValTok , "bar:" )
+            , ( DataTypeTok , " baz" ) ] ]
+             @=? tokenize defConfig makefile "foo \\\nbar: baz"
+
+      -- As in KDE, an empty line applies the lineEmptyContext
+      -- switches of successive top contexts until #stay (and
+      -- lineEmptyContext defaults to lineEndContext).  Here the empty
+      -- line pops blockquote and then enters Normal Text's
+      -- lineEmptyContext (find-code-block), so the indented line
+      -- becomes a code block:
+      , testCase "empty line applies successive lineEmptyContexts (markdown)" $
+          Right
+          [ [ ( AttributeTok , "> quote" ) ]
+          , []
+          , [ ( InformationTok , "    code" ) ] ]
+             @=? tokenize defConfig markdown "> quote\n\n    code"
+
+      -- A zero-progress cycle of context switches driven by a
+      -- lookahead rule must trigger the endless-loop guard (as in
+      -- KDE), aborting the line instead of hanging; in particular a
+      -- lookahead match must not reset the loop counter:
+      , testCase "zero-progress lookahead loop aborts line" $
+          Right [ [ ( NormalTok, "xy" ) ] ]
+             @=? tokenize defConfig{ syntaxMap =
+                    addSyntaxDefinition loopSyntax (syntaxMap defConfig) }
+                  loopSyntax "xy"
       ]
     ]
 
+-- | A syntax definition with a zero-progress loop: a lookahead rule
+-- pushes a context that immediately pops back via fallthrough.
+loopSyntax :: Syntax
+loopSyntax = either error id $ parseSyntaxDefinitionFromText "loop.xml" $
+     "<language name=\"Loop\" version=\"1\" kateversion=\"5.0\""
+  <> " section=\"Other\" extensions=\"\">"
+  <> "<highlighting><contexts>"
+  <> "<context name=\"start\" attribute=\"Normal Text\""
+  <> " lineEndContext=\"#stay\">"
+  <> "<AnyChar lookAhead=\"1\" context=\"other\" String=\"x\"/>"
+  <> "</context>"
+  <> "<context name=\"other\" attribute=\"Normal Text\""
+  <> " lineEndContext=\"#stay\" fallthroughContext=\"#pop\">"
+  <> "</context>"
+  <> "</contexts><itemDatas>"
+  <> "<itemData name=\"Normal Text\" defStyleNum=\"dsNormal\"/>"
+  <> "</itemDatas></highlighting></language>"
+
 compareValues :: FilePath -> Text -> Text -> IO (Maybe String)
 compareValues referenceFile expected actual =
    if expected == actual
@@ -224,7 +380,7 @@
 
 noDropTest :: TokenizerConfig -> [Text] -> Syntax -> TestTree
 noDropTest cfg inps syntax =
-  localOption (mkTimeout 25000000)
+  localOption (mkTimeout 75000000)
   $ testCase (Text.unpack (sName syntax))
   $ mapM_ go inps
     where go inp =
@@ -238,7 +394,7 @@
                       assertFailure ("Unexpected error: " ++ e ++ "\ninput = " ++ show inp)
 
 tokenizerTest :: TokenizerConfig -> SyntaxMap -> Bool -> FilePath -> TestTree
-tokenizerTest cfg sMap regen inpFile = localOption (mkTimeout 25000000) $
+tokenizerTest cfg sMap regen inpFile = localOption (mkTimeout 75000000) $
   goldenTest testname getExpected getActual
       (compareValues referenceFile) updateGolden
   where testname = lang ++ " tokenizing of " ++ inpFile
@@ -290,7 +446,8 @@
   , ("abc|ab$", "abd", Nothing)
   , ("[\\x50-\\x51]*", "PQR", Just ("PQ", []))
   , ("[\\x{2019}]*", "\x2019PQR", Just ("\x2019", []))
-  , ("(?:ab)*|a.*", "abababa", Just ("abababa", []))
+  , ("(?:ab)*|a.*", "abababa", Just ("ababab", []))
+    -- leftmost-first: first alternative matches, so second is never tried
   , ("a[b-e]*", "abcdefg", Just ("abcde", []))
   , ("a[b-e\\n-]*", "abcde\nb-bcfg", Just ("abcde\nb-bc", []))
   , ("^\\s+\\S+\\s+$", "   abc  ", Just ("   abc  ", []))
@@ -299,6 +456,7 @@
   , ("[\\p{Lu}\\p{Ll}]*", "Σφa1B", Just ("Σφa", []))
   , ("\\bhello\\b|hell", "hello there", Just ("hello", []))
   , ("\\bhello\\b|hell", "hellothere", Just ("hell", []))
+  , ("u\\b", "ue", Nothing)
   , ("[[:space:]]{2,4}.", "  abc", Just ("  a", []))
   , ("[[:space:]]{2,4}.", " abc", Nothing)
   , ("[[:space:]]{2,4}.", "     abc", Just ("     ", []))
@@ -324,14 +482,234 @@
   , ("(?|(abc)|(def))", "abc", Just ("abc", [(1,"abc")]))
   , ("(?|(abc)|(def))", "def", Just ("def", [(1,"def")]))
   , ("(?:(abc)|(def))", "def", Just ("def", [(2,"def")]))
+  , ("((?i:infinity|e|pi)|NaN)", "InfInity",
+      Just ("InfInity", [(1,"InfInity")]))
+--  , ("(?im)foo", "Foo", Just ("Foo", []))
   , ("d(?=(bc)|(ef))", "def", Just ("d", [(2,"ef")]))
   , ("([bcd])([efg])(?2)(?1)", "befd", Just ("befd", [(1,"b"),(2,"e")]))
   , ("([abc](?1)*)", "abcd", Just ("abc", [(1,"abc")]))
   , ("(x(?1)*)", "xxxxy", Just ("xxxx", [(1,"xxxx")]))
   , ("a|\\((?0)\\)", "(((a)))", Just ("(((a)))", []))
-  , ("([abc](x(?1))*)", "axbxcc", Just ("axbxc", [(1,"axbxc"),(2,"xc")]))
-    -- note: pcre gives insetad (2, "xbxc") -- I don't understand why
+  , ("([abc](x(?1))*)", "axbxcc", Just ("axbxc", [(1,"axbxc"),(2,"xbxc")]))
+    -- group 2's last iteration is "xbxc": the recursion (?1) inside it
+    -- matches "bxc", and inner iterations' captures are overwritten
+  , ("[\\p{Nd}]", "33", Just ("3", []))
+  , ("\\p{N}", "33", Just ("3", []))
+    -- {m,n} with m > n is a compile error (see regexErrorTests; it
+    -- used to send the compiler into an infinite loop, and later was
+    -- treated as a literal)
+    -- lazy quantifiers in lookbehinds used to hang the matcher:
+  , ("ab(?<=a+?b)c", "abc", Just ("abc", []))
+  , ("ab(?<=a+?)c", "abc", Nothing)
+    -- recursive subroutine calls that consume no input used to hang;
+    -- now re-entering a subroutine at the same offset just fails:
+  , ("x|(?R)", "x", Just ("x", []))
+  , ("a|(?R)(?R)", "aa", Just ("a", []))
+    -- leftmost-first: the first alternative succeeds on "a"
+    -- backward matching (lookbehind, \b) after multibyte characters
+    -- used to land inside a UTF-8 sequence:
+  , ("\x00e9(?<=\x00e9)x", "\x00e9x", Just ("\x00e9x", []))
+  , ("\x00e9\\bx", "\x00e9x", Nothing)
+  , ("\x2019(?<=\x2019)x", "\x2019x", Just ("\x2019x", []))
+  , ("\x00e9(?<!\x00e9)x", "\x00e9x", Nothing)
+    -- (?i:...) is scoped to the group; it used to leak to the rest
+    -- of the pattern:
+  , ("(?i:a)b", "Ab", Just ("Ab", []))
+  , ("(?i:a)b", "AB", Nothing)
+  , ("x(?i:a(?-i:b)c)y", "xAbCy", Just ("xAbCy", []))
+  , ("x(?i:a(?-i:b)c)y", "xABCy", Nothing)
+    -- [[:graph:]] and [[:word:]] used to be unparseable (and graph
+    -- meant "print"):
+  , ("[[:graph:]]+", "ab cd", Just ("ab", []))
+  , ("[[:word:]]+", "a_b-c", Just ("a_b", []))
+  , ("[^[:graph:]]", " a", Just (" ", []))
+  , ("[[:alpha:][:digit:]]+", "ab1 x", Just ("ab1", []))
+    -- subroutine calls to groups nested inside other groups used to
+    -- be silently ignored (matching the empty string):
+  , ("((a)b)(?2)", "aba", Just ("aba", [(1,"ab"),(2,"a")]))
+  , ("((a)b)(?2)", "abx", Nothing)
+    -- character classes, escaped literals, and backreferences used
+    -- to ignore case-insensitivity:
+  , ("(?i:[abc]+)d", "aBcd", Just ("aBcd", []))
+  , ("(?i:[a-z]+)!", "aBcD!", Just ("aBcD!", []))
+  , ("(?i:[^a]+)", "xA", Just ("x", []))
+  , ("(?i:\\x61+)", "aA", Just ("aA", []))
+  , ("(?i:(ab)\\1)", "abAB", Just ("abAB", [(1,"ab")]))
+  , ("(ab)\\1", "abAB", Nothing)
+    -- {m,n} expansion is now linear in n; behavior is unchanged:
+  , ("a{0,3}b", "aaab", Just ("aaab", []))
+  , ("a{0,3}b", "aaaab", Nothing)
+  , ("a{2,4}c", "aaaac", Just ("aaaac", []))
+  , ("a{2,4}c", "aaaaac", Nothing)
+  , ("[ab]{0,800}", replicate 800 'a', Just (replicate 800 'a', []))
+    -- repeat counts over 65535 are compile errors (see
+    -- regexErrorTests)
+    -- an unmatched ] outside a character class is a literal, as in
+    -- PCRE (used, e.g., by mermaid.xml and apparmor.xml):
+  , ("a]b", "a]b", Just ("a]b", []))
+  , ("\\d{1,3}]", "42]x", Just ("42]", []))
+  , ("[ab]]", "b]", Just ("b]", []))
+    -- a class is terminated by the first unescaped ] even if that
+    -- yields a stray ] later (as in PCRE):
+  , ("[^|{}[]", "a", Just ("a", []))
+  , ("[^|{}[]", "[", Nothing)
+    -- \0 takes up to two further octal digits, as in PCRE
+    -- (\041 = '!', \042 = '"'); it is octal, not a backreference:
+  , ("[\\041-\\043]", "\"", Just ("\"", []))
+  , ("\\041", "!!", Just ("!", []))
+  , ("a\\0b", "a\NULb", Just ("a\NULb", []))
+  , ("[\\0]", "\NULx", Just ("\NUL", []))
+    -- a third digit is not consumed (\0101 is \b followed by 1):
+  , ("\\0101", "\b1", Just ("\b1", []))
+    -- \G asserts the position where the match attempt started;
+    -- since our matches are anchored, a leading \G is always true
+    -- and a \G after consuming input always fails:
+  , ("\\G\\d{4}-\\d{2}", "2024-01x", Just ("2024-01", []))
+  , ("a\\Gb", "ab", Nothing)
+    -- \g1 and \g{1} are PCRE syntax for backreferences:
+  , ("(ab)\\g1", "ababx", Just ("abab", [(1,"ab")]))
+  , ("(a)(b)\\g2\\g1", "abba", Just ("abba", [(1,"a"),(2,"b")]))
+  , ("(ab)c\\g{1}", "abcabx", Just ("abcab", [(1,"ab")]))
+  , ("([_*]{1,2})x\\g1", "**x**", Just ("**x**", [(1,"**")]))
+  , ("([_*]{1,2})x\\g1", "**x*", Nothing)
+    -- inline modifiers without a colon, like (?i), apply from that
+    -- point to the end of the enclosing group (as in PCRE):
+  , ("(?i)ab", "AB", Just ("AB", []))
+  , ("A(?i)B", "aB", Nothing)
+  , ("A(?i)B", "Ab", Just ("Ab", []))
+  , ("x(?:(?i)a)Y", "xAY", Just ("xAY", []))
+  , ("x(?:(?i)a)Y", "xAy", Nothing)
+  , ("(a(?i)b|c)", "C", Just ("C", [(1,"C")]))
+  , ("(?i)A(?-i)B", "aB", Just ("aB", []))
+  , ("(?i)A(?-i)B", "Ab", Nothing)
+    -- \h and \H match horizontal whitespace (and its complement):
+  , ("a\\hb", "a b", Just ("a b", []))
+  , ("a\\hb", "a\tb", Just ("a\tb", []))
+  , ("a\\hb", "a\xa0\&b", Just ("a\xa0\&b", []))
+  , ("\\h", "\x180e", Just ("\x180e", []))
+  , ("a\\hb", "a\nb", Nothing)
+  , ("a\\Hb", "axb", Just ("axb", []))
+  , ("a\\Hb", "a b", Nothing)
+  , ("[\\h]", "\xa0", Just ("\xa0", []))
+  , ("[^\\h]+", "ab cd", Just ("ab", []))
+    -- \A asserts the start of the subject:
+  , ("\\Aab", "abc", Just ("ab", []))
+  , ("a\\Ab", "ab", Nothing)
+    -- an empty first alternative matches the empty string:
+  , ("(?:|abc)x", "x", Just ("x", []))
+  , ("(?:|abc)x", "abcx", Just ("abcx", []))
+  , ("(?:\\d\\d(?:|[DT]\\d\\d))y", "12y", Just ("12y", []))
+  , ("(?:\\d\\d(?:|[DT]\\d\\d))y", "12T34y", Just ("12T34y", []))
+  , ("(?<=|)z\\d", "z4", Just ("z4", []))
+    -- inside a character class, \b means backspace:
+  , ("[\\b]", "\b", Just ("\b", []))
+  , ("[\\b+-]x", "\bx", Just ("\bx", []))
+  , ("[\\b+-]x", "+x", Just ("+x", []))
+  , ("[\\b+-]x", "bx", Nothing)
+    -- atomic groups (?>...):
+  , ("(?>ab|a)c", "abc", Just ("abc", []))
+  , ("(?>ab|a)c", "ac", Just ("ac", []))
+  , ("(?>a+)ab", "aaab", Nothing)
+  , ("x(?>)y", "xy", Just ("xy", []))
+  , ("(?>a|ab)c", "abc", Nothing)
+  , ("(?>(a|ab)c)", "abc", Just ("abc", [(1,"ab")]))
+    -- alternation is leftmost-first, not longest-match (as in PCRE):
+  , ("a|ab", "ab", Just ("a", []))
+  , ("(a|ab)c?", "abc", Just ("a", [(1,"a")]))
+  , ("(?=(a|ab))", "ab", Just ("", [(1,"a")]))
+    -- lazy quantifiers match as little as possible:
+  , ("a+?b", "aaab", Just ("aaab", []))
+  , ("a*?b", "aaab", Just ("aaab", []))
+  , ("(a+?)ab", "aaab", Just ("aaab", [(1,"aa")]))
+    -- subroutine calls to groups with multi-digit numbers:
+  , ("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)x(?12)", "abcdefghijklxl",
+      Just ("abcdefghijklxl",
+            [(1,"a"),(2,"b"),(3,"c"),(4,"d"),(5,"e"),(6,"f"),(7,"g"),
+             (8,"h"),(9,"i"),(10,"j"),(11,"k"),(12,"l")]))
+  , ("(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)x(?12)", "abcdefghijklxa", Nothing)
+    -- numbering after (?|...) resumes after the highest group number
+    -- used in any alternative:
+  , ("(?|(a)(b)|(c))(d)\\2", "abdb",
+      Just ("abdb", [(1,"a"),(2,"b"),(3,"d")]))
+  , ("(?|(a)(b)|(c))(d)\\2", "cdd", Nothing)
+    -- a ] in first position in a character class is a literal, and
+    -- may be the start of a range:
+  , ("[]-a]+", "^_`", Just ("^_`", []))
+  , ("[]-a]+", "b", Nothing)
+  , ("[]-]+", "]-]", Just ("]-]", []))
+  , ("[]-]+", "^", Nothing)
+  , ("[^]-a]+", "bz!", Just ("bz!", []))
+  , ("[^]-a]+", "^", Nothing)
+  , ("[]a-]+", "a]-", Just ("a]-", []))
+    -- \pL is short for \p{L}; \P is the complement of \p:
+  , ("\\pL+", "ab\x3a3\&9", Just ("ab\x3a3", []))
+  , ("\\pN", "9", Just ("9", []))
+  , ("\\pN", "a", Nothing)
+  , ("\\PL+", "9!", Just ("9!", []))
+  , ("\\P{L}+", "9!a", Just ("9!", []))
+  , ("\\p{^L}+", "9!a", Just ("9!", []))
+  , ("[\\pL]+", "ab9", Just ("ab", []))
+  , ("[\\PL]+", "9!a", Just ("9!", []))
+  , ("[\\P{N}]+", "a!9", Just ("a!", []))
+  , ("[^\\PL]+", "ab9", Just ("ab", []))
+    -- {,n} is a quantifier (as in PCRE 10.43+), but {,} and {b} are
+    -- literal:
+  , ("a{,2}", "aaa", Just ("aa", []))
+  , ("a{,}", "a{,}", Just ("a{,}", []))
+  , ("a{b}", "a{b}", Just ("a{b}", []))
+    -- (?s) and (?m) are accepted (and are no-ops on our single-line
+    -- subjects):
+  , ("(?s)a.b", "axb", Just ("axb", []))
+  , ("(?m)^ab", "ab", Just ("ab", []))
+  , ("(?ims)ab", "AB", Just ("AB", []))
+    -- (?U) makes quantifiers minimal by default and ? makes them
+    -- greedy (PCRE's UNGREEDY option, QRegularExpression's
+    -- InvertedGreedinessOption, minimal="1" in KDE syntax files):
+  , ("(?U)a+", "aaa", Just ("a", []))
+  , ("(?U)a+?", "aaa", Just ("aaa", []))
+  , ("(?U)a*b", "aabb", Just ("aab", []))
+  , ("(?U)a?", "a", Just ("", []))
+  , ("(?U)a{2,4}", "aaaaa", Just ("aa", []))
+  , ("(?U)a{2,4}?", "aaaaa", Just ("aaaa", []))
+  , ("(?U)a{2}", "aaa", Just ("aa", []))
+  , ("(?U)a*+b", "aab", Just ("aab", [])) -- possessive is unaffected
+  , ("(?U)<(.*)>", "<x><y>", Just ("<x>", [(1, "x")]))
+  , ("(?U:a+)a", "aaa", Just ("aa", []))
+  , ("((?U)a+)(a+)", "aaaa", Just ("aaaa", [(1, "a"), (2, "aaa")]))
+  , ("(?iU)ab+", "ABBB", Just ("AB", []))
+  , ("(?U)(?-U)a+", "aaa", Just ("aaa", []))
   ]
+
+-- these should fail to compile, as they do in PCRE ("quantifier does
+-- not follow a repeatable item", "numbers out of order in {}
+-- quantifier", "number too big in {} quantifier", or an unsupported
+-- inline flag):
+regexErrorTests :: [String]
+regexErrorTests =
+  [ "{2}"
+  , "({2})"
+  , "a|{2}"
+  , "a{2}{3}"
+  , "a+{2}"
+  , "{,2}"
+  , "a{3,1}"
+  , "x{70000}"
+  , "a{2,70000}"
+  , "^{2}"
+  , "^*a"
+  , "a$*"
+  , "\\b+a"
+  , "(?x)a b"
+  , "(?n)(a)b"
+  , "(?u)a"
+  ]
+
+regexErrorTest :: String -> TestTree
+regexErrorTest re =
+  testCase ("/" ++ re ++ "/") $
+    case compileRegex True False (TE.encodeUtf8 (Text.pack re)) of
+      Left _  -> return ()
+      Right _ -> assertFailure "regex compiled, but an error was expected"
 
 
 vividize :: Diff Text -> Text
diff --git a/xml/abc.xml b/xml/abc.xml
--- a/xml/abc.xml
+++ b/xml/abc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- Andrea Primiani - primiani at dag dot it
  	version1.10 - 12 december 2005 -->
 <language name="ABC" version="8" kateversion="5.0" section="Other" extensions="*.abc;*.ABC" mimetype="text/vnd.abc" casesensitive="1" author="Andrea Primiani (primiani@dag.it)" license="LGPL">
diff --git a/xml/abnf.xml b/xml/abnf.xml
new file mode 100644
--- /dev/null
+++ b/xml/abnf.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY rulename "[[:alpha:]_][-\w]*">
+]>
+<!--
+  SPDX-FileCopyrightText: 2026 Jonathan Poelen <jonathan.poelen@gmail.com>
+  SPDX-License-Identifier: MIT
+
+  https://www.rfc-editor.org/rfc/rfc5234 (Augmented BNF for Syntax Specifications: ABNF)
+  https://www.rfc-editor.org/rfc/rfc7405 (Case-Sensitive String Support in ABNF)
+-->
+<language
+  name="ABNF"
+  section="Sources"
+  version="1"
+  kateversion="5.79"
+  extensions="*.abnf"
+  mimetype="text/x-abnf"
+  author="Jonathan Poelen (jonathan.poelen@gmail.com)"
+  indenter="normal"
+  license="MIT"
+>
+  <highlighting>
+
+    <list name="core rules">
+      <item>ALPHA</item>
+      <item>BIT</item>
+      <item>CHAR</item>
+      <item>CR</item>
+      <item>CRLF</item>
+      <item>CTL</item>
+      <item>DIGIT</item>
+      <item>DQUOTE</item>
+      <item>HEXDIG</item>
+      <item>HTAB</item>
+      <item>LF</item>
+      <item>LWSP</item>
+      <item>OCTET</item>
+      <item>SP</item>
+      <item>VCHAR</item>
+      <item>WSP</item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" name="Normal" fallthroughContext="Elements">
+        <DetectSpaces/>
+
+        <StringDetect String=";" attribute="Comment" context="Comment"/>
+        <StringDetect String="=" attribute="New Rule Operator" context="Elements"/>
+        <RegExpr attribute="New Rule" String="&rulename;(?=\s*=)" context="SetRule"/>
+      </context>
+
+      <context attribute="Normal Text" name="SetRule">
+        <DetectSpaces/>
+        <StringDetect String="=" attribute="New Rule Operator" context="#pop!Elements"/>
+      </context>
+
+      <context attribute="Normal Text" name="Elements" lineEndContext="#pop">
+        <DetectSpaces/>
+
+        <AnyChar String="/" attribute="Alternation"/>
+        <!-- other than '*' as extension -->
+        <AnyChar String="*+?!#$&amp;@^~" attribute="Operator"/>
+
+        <StringDetect String=";" attribute="Comment" context="#pop!Comment"/>
+
+        <AnyChar String="()" attribute="Group"/>
+        <AnyChar String="[]" attribute="Option"/>
+
+        <!-- do not use <Int> to colorize %b012DIGIT
+                                          ~~~~        special char
+                                              ~       Integer
+                                               ~~~~~  Rule
+        -->
+        <AnyChar String="0123456789" attribute="Integer"/>
+
+        <DetectChar attribute="String" context="DQuote" char="&quot;"/>
+
+        <StringDetect String="%b" attribute="Numeric Base" context="NumBin"/>
+        <StringDetect String="%d" attribute="Numeric Base" context="NumDec"/>
+        <StringDetect String="%x" attribute="Numeric Base" context="NumHex"/>
+
+        <StringDetect String="%i" attribute="Case Sensitivity"/>
+        <StringDetect String="%s" attribute="Case Sensitivity"/>
+
+        <DetectChar char="&lt;" attribute="Prose" context="Prose"/>
+
+        <keyword attribute="Core Rule" String="core rules" weakDeliminator="-"/>
+        <RegExpr attribute="Rule Name" String="&rulename;"/>
+
+        <!-- extension -->
+        <DetectChar lookAhead="1" context="Escape" char="\"/>
+      </context>
+
+
+      <!-- ;... -->
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+
+      <!-- "..." -->
+      <context name="DQuote" attribute="String">
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+
+      <!-- %b### -->
+      <context name="NumBin" attribute="Numeric Value" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Numeric Value" String="01"/>
+        <IncludeRules context="NumCommon"/>
+      </context>
+      <!-- %d### -->
+      <context name="NumDec" attribute="Numeric Value" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Numeric Value" String="0123456789"/>
+        <IncludeRules context="NumCommon"/>
+      </context>
+      <!-- %h### -->
+      <context name="NumHex" attribute="Numeric Value" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Numeric Value" String="0123456789abcdefABCDEF"/>
+        <IncludeRules context="NumCommon"/>
+      </context>
+
+      <context name="NumCommon" attribute="Numeric Value">
+        <AnyChar attribute="Concatenation" String="."/>
+        <AnyChar attribute="Range" String="-"/>
+      </context>
+
+
+      <!-- <...> -->
+      <context name="Prose" attribute="Prose" lineEndContext="#pop">
+        <DetectChar char="&gt;" attribute="Prose" context="#pop"/>
+      </context>
+
+
+      <!-- \w, etc -->
+      <context attribute="String" lineEndContext="#stay" name="Escape">
+        <HlCStringChar attribute="String Char" context="#pop"/>
+        <RegExpr attribute="String Char" context="#pop" String="\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\[a-zA-Z]\b"/>
+        <DetectChar context="#pop" char="\"/>
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Alternation" defStyleNum="dsControlFlow" spellChecking="0"/>
+      <itemData name="Comment" defStyleNum="dsComment" spellChecking="1"/>
+      <itemData name="New Rule" defStyleNum="dsKeyword" spellChecking="0"/>
+      <itemData name="New Rule Operator" defStyleNum="dsVariable" spellChecking="0"/>
+      <itemData name="Integer" defStyleNum="dsDecVal" spellChecking="0"/>
+      <itemData name="Rule Name" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Core Rule" defStyleNum="dsPreprocessor" spellChecking="0"/>
+      <itemData name="Operator" defStyleNum="dsOperator" bold="true" spellChecking="0"/>
+      <itemData name="Group" defStyleNum="dsInformation" spellChecking="0"/>
+      <itemData name="Option" defStyleNum="dsConstant" spellChecking="0"/>
+      <itemData name="Case Sensitivity" defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="Numeric Base" defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="Numeric Value" defStyleNum="dsSpecialString" spellChecking="0"/>
+      <itemData name="String" defStyleNum="dsString" spellChecking="0"/>
+      <itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="0"/>
+      <itemData name="Prose" defStyleNum="dsDataType" spellChecking="1"/>
+      <itemData name="Concatenation" defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="Range" defStyleNum="dsFunction" spellChecking="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start=";"/>
+    </comments>
+    <folding indentationsensitive="true"/>
+  </general>
+</language>
+<!-- kate: replace-tabs on; indent-width 2; -->
diff --git a/xml/actionscript.xml b/xml/actionscript.xml
--- a/xml/actionscript.xml
+++ b/xml/actionscript.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="ActionScript 2.0" version="9" kateversion="5.62" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
+<!DOCTYPE language>
+<language name="ActionScript 2.0" version="10" kateversion="5.79" section="Sources" extensions="*.as" mimetype="text/x-actionscript" license="LGPL" author="Aaron Miller (armantic101@gmail.com)">
   <highlighting>
     
     <list name="properties">
diff --git a/xml/ada.xml b/xml/ada.xml
--- a/xml/ada.xml
+++ b/xml/ada.xml
@@ -1,13 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language
+[
+  <!ENTITY b2 "[0-1]++(_?[0-1])*+">
+  <!ENTITY b3 "[0-2]++(_?[0-2])*+">
+  <!ENTITY b4 "[0-3]++(_?[0-3])*+">
+  <!ENTITY b5 "[0-4]++(_?[0-4])*+">
+  <!ENTITY b6 "[0-5]++(_?[0-5])*+">
+  <!ENTITY b7 "[0-6]++(_?[0-6])*+">
+  <!ENTITY b8 "[0-7]++(_?[0-7])*+">
+  <!ENTITY b9 "[0-8]++(_?[0-8])*+">
+  <!ENTITY b10 "[0-9]++(_?[0-9])*+">
+  <!ENTITY b11 "[0-9a-a]++(_?[0-9]a-a)*+">
+  <!ENTITY b12 "[0-9a-b]++(_?[0-9]a-b)*+">
+  <!ENTITY b13 "[0-9a-c]++(_?[0-9]a-c)*+">
+  <!ENTITY b14 "[0-9a-d]++(_?[0-9]a-d)*+">
+  <!ENTITY b15 "[0-9a-e]++(_?[0-9]a-e)*+">
+  <!ENTITY b16 "[0-9a-f]++(_?[0-9]a-f)*+">
+]>
 <language name="Ada"
-          version="6"
-          kateversion="5.0"
+          version="7"
+          kateversion="5.79"
           section="Sources"
           extensions="*.adb;*.ads;*.ada;*.a"
           indenter="ada"
           mimetype="text/x-adasrc">
   <highlighting>
+    <!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-P.html -->
+
+    <!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-2-9.html -->
     <list name="keywords">
       <item>abort</item>
       <item>abs</item>
@@ -21,6 +41,7 @@
       <item>at</item>
       <item>begin</item>
       <item>body</item>
+      <item>case</item>
       <item>constant</item>
       <item>declare</item>
       <item>delay</item>
@@ -37,10 +58,12 @@
       <item>function</item>
       <item>generic</item>
       <item>goto</item>
+      <item>if</item>
       <item>in</item>
       <item>interface</item>
       <item>is</item>
       <item>limited</item>
+      <item>loop</item>
       <item>mod</item>
       <item>new</item>
       <item>not</item>
@@ -57,14 +80,17 @@
       <item>protected</item>
       <item>raise</item>
       <item>range</item>
-      <item>rem</item>
       <item>record</item>
+      <item>rem</item>
       <item>renames</item>
       <item>requeue</item>
       <item>return</item>
       <item>reverse</item>
+      <item>select</item>
       <item>separate</item>
+      <item>some</item>
       <item>subtype</item>
+      <item>synchronized</item>
       <item>tagged</item>
       <item>task</item>
       <item>terminate</item>
@@ -77,6 +103,7 @@
       <item>with</item>
       <item>xor</item>
     </list>
+
     <list name="pragmas">
       <item>all_calls_remote</item>
       <item>assert</item>
@@ -128,6 +155,7 @@
       <item>volatile</item>
       <item>volatile_components</item>
     </list>
+
     <list name="types">
       <item>boolean</item>
       <item>character</item>
@@ -145,38 +173,151 @@
       <item>wide_wide_character</item>
       <item>wide_wide_string</item>
     </list>
+
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Default">
-        <RegExpr attribute="Keyword" context="#stay" String="\brecord\b"       insensitive="true" beginRegion="RecordRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+record\b" insensitive="true"   endRegion="RecordRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bcase\b"         insensitive="true" beginRegion="CaseRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+case\b"   insensitive="true"   endRegion="CaseRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bif\b"           insensitive="true" beginRegion="IfRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+if\b"     insensitive="true"   endRegion="IfRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bloop\b"         insensitive="true" beginRegion="LoopRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+loop\b"   insensitive="true"   endRegion="LoopRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bselect\b"       insensitive="true" beginRegion="SelectRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\s+select\b" insensitive="true"   endRegion="SelectRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bbegin\b"        insensitive="true" beginRegion="BeginRegion"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\bend\b"          insensitive="true"   endRegion="BeginRegion"/>
+        <DetectSpaces />
+
         <StringDetect attribute="Region Marker" context="Region Marker" String="--  BEGIN" beginRegion="RegionMarker" firstNonSpace="true" />
         <StringDetect attribute="Region Marker" context="Region Marker" String="--  END" endRegion="RegionMarker" firstNonSpace="true" />
+        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
+        <AnyChar context="Numeric" String="0123456789" lookAhead="1"/>
+        <DetectChar context="String" char="&quot;" lookAhead="1"/>
+
+        <WordDetect attribute="Keyword" context="#stay" String="record" insensitive="true" beginRegion="RecordRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="case"   insensitive="true" beginRegion="CaseRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="if"     insensitive="true" beginRegion="IfRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="loop"   insensitive="true" beginRegion="LoopRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="select" insensitive="true" beginRegion="SelectRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="begin"  insensitive="true" beginRegion="BeginRegion"/>
+
+        <WordDetect attribute="Keyword" context="End"   String="end"    insensitive="true" lookAhead="1"/>
+        <WordDetect attribute="Keyword" context="Null"  String="null"   insensitive="true"/>
+
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Pragmas" context="#stay" String="pragmas" />
         <keyword attribute="Data Type" context="#stay" String="types" />
-        <Float attribute="Float" context="#stay"/>
-        <Int attribute="Decimal" context="#stay"/>
+
+        <DetectIdentifier />
+
         <RegExpr attribute="Char" context="#stay" String="'.'"/>
-        <DetectChar attribute="String" context="String" char="&quot;"/>
-        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
       </context>
-      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker"/>
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+
+      <context attribute="Keyword" lineEndContext="#pop" name="End">
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+record\b" insensitive="true"   endRegion="RecordRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+case\b"   insensitive="true"   endRegion="CaseRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+if\b"     insensitive="true"   endRegion="IfRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+loop\b"   insensitive="true"   endRegion="LoopRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+select\b" insensitive="true"   endRegion="SelectRegion"/>
+        <DetectIdentifier attribute="Keyword" context="#pop" endRegion="BeginRegion"/>
       </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Null" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect attribute="Keyword" context="#pop" String="record" insensitive="true"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Numeric">
+        <RegExpr attribute="Float" context="NumericExp" String="\b&b10;\.&b10;"/>
+        <RegExpr attribute="Decimal" context="NumericExp" String="\b&b10;(?!#)"/>
+        <WordDetect attribute="Base" context="Base2" String="2#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base3" String="3#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base4" String="4#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base5" String="5#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base6" String="6#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base7" String="7#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base8" String="8#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base9" String="9#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base10" String="10#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base11" String="11#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base12" String="12#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base13" String="13#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base14" String="14#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base15" String="15#" additionalDeliminator="#"/>
+        <WordDetect attribute="Base" context="Base16" String="16#" additionalDeliminator="#"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NumericExp" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Exponent" context="#pop#pop" String="(?:[eE][-+]?&b10;)"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base2" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b2;\.&b2;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b2;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base3" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b3;\.&b3;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b3;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base4" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b4;\.&b4;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b4;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base5" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b5;\.&b5;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b5;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base6" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b6;\.&b6;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b6;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base7" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b7;\.&b7;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b7;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base8" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b8;\.&b8;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b8;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base9" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b9;\.&b9;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b9;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base10" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b10;\.&b10;"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b10;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base11" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b11;\.&b11;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b11;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base12" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b12;\.&b12;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b12;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base13" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b13;\.&b13;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b13;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base14" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b14;\.&b14;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b14;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base15" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b15;\.&b15;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b15;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Base16" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Float" context="BaseExp" String="&b16;\.&b16;" insensitive="1"/>
+        <RegExpr attribute="Decimal" context="BaseExp" String="&b16;" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BaseExp" fallthroughContext="#pop#pop#pop">
+        <DetectChar attribute="Base" context="#pop#pop!NumericExp" char="#"/>
+      </context>
+
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String" fallthroughContext="PartialString">
+        <RangeDetect attribute="String" context="#pop" char="&quot;" char1="&quot;"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop#pop" name="PartialString">
+      </context>
+
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces attribute="Comment"/>
         <IncludeRules context="##Comments" />
+        <DetectIdentifier attribute="Comment"/>
       </context>
     </contexts>
     <itemDatas>
@@ -186,6 +327,8 @@
       <itemData name="Data Type"   defStyleNum="dsDataType"/>
       <itemData name="Decimal"     defStyleNum="dsDecVal" />
       <itemData name="Float"       defStyleNum="dsFloat" />
+      <itemData name="Base"        defStyleNum="dsBaseN" />
+      <itemData name="Exponent"    defStyleNum="dsDecVal" />
       <itemData name="Char"        defStyleNum="dsChar" />
       <itemData name="String"      defStyleNum="dsString" />
       <itemData name="Comment"     defStyleNum="dsComment" />
diff --git a/xml/agda.xml b/xml/agda.xml
--- a/xml/agda.xml
+++ b/xml/agda.xml
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"[
+<!DOCTYPE language[
   <!ENTITY charsdelim "_;.&#34;(){}@">
   <!ENTITY wordsep "(?=[&charsdelim;]|\s|$)">
 ]>
-<language name="Agda" version="9" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
+<language name="Agda" version="10" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
   <highlighting>
     <list name="reserved keywords">
       <item>abstract</item>
@@ -29,6 +29,7 @@
       <item>module</item>
       <item>mutual</item>
       <item>no-eta-equality</item>
+      <item>opaque</item>
       <item>open</item>
       <item>overlap</item>
       <item>pattern</item>
@@ -44,6 +45,7 @@
       <item>syntax</item>
       <item>tactic</item>
       <item>to</item>
+      <item>unfolding</item>
       <item>unquote</item>
       <item>unquoteDecl</item>
       <item>unquoteDef</item>
diff --git a/xml/alert.xml b/xml/alert.xml
--- a/xml/alert.xml
+++ b/xml/alert.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language version="6" kateversion="3.1" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true">
+<!DOCTYPE language>
+<language version="8" kateversion="3.1" name="Alerts" section="Other" extensions="" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" hidden="true">
   <highlighting>
     <list name="alerts_hi">
       <item>ALERT</item>
@@ -36,6 +36,8 @@
         <WordDetect attribute="Region Marker" context="#stay" String="END" endRegion="AlertRegion2" />
         <keyword attribute="Alert Level 1" context="#stay" String="alerts_hi" />
         <keyword attribute="Alert Level 2" context="#stay" String="alerts_mid" />
+        <!-- Some (Python?) linters use `noqa:` (small case w/ colon) -->
+        <WordDetect attribute="Alert Level 2" context="#stay" String="noqa:" />
         <keyword attribute="Alert Level 3" context="#stay" String="alerts_lo" />
       </context>
     </contexts>
@@ -48,7 +50,8 @@
     </itemDatas>
   </highlighting>
   <general>
-    <keywords casesensitive="1"/>
+    <!-- NO-BREAK SPACE (nbsp) as deliminator -->
+    <keywords casesensitive="1" additionalDeliminator="&#160;"/>
   </general>
 </language>
 <!-- kate: indent-width 2; -->
diff --git a/xml/apache.xml b/xml/apache.xml
--- a/xml/apache.xml
+++ b/xml/apache.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 
 <!-- Changelog:
 
@@ -426,7 +426,6 @@
 <item>None</item>
 <item>AuthConfig</item>
 <item>FileInfo</item>
-<item>Indexes</item>
 <item>Limit</item>
 <item>Options</item>
 
@@ -488,7 +487,6 @@
 <item>Descending</item>
 <item>Name</item>
 <item>Date</item>
-<item>Size</item>
 <item>Description</item>
 <item>SSL</item>
 <item>TLS</item>
@@ -496,7 +494,6 @@
 <item>emerg</item>
 <item>alert</item>
 <item>crit</item>
-<item>error</item>
 <item>warn</item>
 <item>notice</item>
 <item>info</item>
@@ -527,12 +524,8 @@
 <item>Prod</item>
 <item>ProductOnly</item>
 <item>OS</item>
-<item>Full</item>
 <item>optional</item>
-<item>posixsem</item>
-<item>sysvsem</item>
 <item>sem</item>
-<item>pthread</item>
 <item>fcntl:</item>
 <item>flock:</item>
 <item>file:</item>
diff --git a/xml/asciidoc.xml b/xml/asciidoc.xml
new file mode 100644
--- /dev/null
+++ b/xml/asciidoc.xml
@@ -0,0 +1,640 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+    <!-- alphabetic -->
+    <!ENTITY alp "a-zA-Z">
+    <!-- alphanumeric -->
+    <!ENTITY aln "&alp;0-9">
+    <!ENTITY id "\w[\w-]+">
+    <!-- percent symbol, needs to be encoded inside an entity definition -->
+    <!ENTITY perc "&#x0025;">
+
+    <!ENTITY admonition_names "CAUTION|IMPORTANT|NOTE|TIP|WARNING">
+
+    <!-- regular expression parts to identify anchors -->
+    <!ENTITY anchor_mid "&id;(?:,.+?)?">
+    <!ENTITY anchor_phrase "#\S(?:.*?\S)?#">
+
+    <!-- block delimiters -->
+    <!ENTITY block_dels_comment "/{4,}">
+    <!ENTITY block_dels_normal "={4,}|_{4,}|\*{4,}|-{2}|&quot;{2}">
+    <!ENTITY block_dels_pass "\+{4,}">
+    <!ENTITY block_dels_verbatim "`{3}|-{4,}|\.{4,}">
+    <!-- postfix/trailing part of block name -->
+    <!ENTITY block_name_post "(?:[#&perc;].+)?\s*(?:,.*)?\]\s*$">
+    <!-- block end delimiter, dynamic matching: "^%1\s*$" -->
+    <!ENTITY block_end_del "^&perc;1\s*$">
+
+    <!-- unicode character reference, decimal and hexadecimal -->
+    <!ENTITY char_ref "&amp;#(?:\d{2,4}|x[\da-fA-F]{2,4});">
+
+    <!-- email - inline -->
+    <!ENTITY email "\w[\w.&perc;+-]*@[&aln;][&aln;.-]*\.[&alp;]{2,4}\b">
+
+    <!-- link macro and mailto: -->
+    <!ENTITY link_mailto "(?:link|mailto):[^:\s\[][^\s\[]*\[(?:\]|.*?[^\\]\])">
+
+    <!-- macro -->
+    <!ENTITY macro "(?:anchor|xref):&id;\[.*?\]|(?:btn|footnote(?:ref)?|kbd):\[.*?\]|pass:\w*\[.*?\]|(?:icon|image|menu):[^:].*?\[.*?\]|toc::\[\]">
+
+    <!ENTITY list_marker "(?:\S.+::(?=\s|$)|(?:(?:\.+|\d+\.)|(?:-|\*+)(?:\s+\[[*x ]\])?)(?=\s+\S))">
+
+    <!ENTITY table_option_delimiter "(?:(?:\d*\.)?\d+\+|\d+\*)?(?:[&lt;&gt;^]?\.?[&lt;&gt;^])?[adehlmsv]?\|">
+
+    <!-- parts to build regular expressions to identify quoted (formatted) text
+         E.g. emphasized, marked, strong. -->
+    <!-- prefix/leading part -->
+    <!ENTITY quoted_pre "(?&lt;=^|[^\w;:}])">
+    <!ENTITY quoted_pre_pass "(?&lt;=^|\W)">
+    <!-- central part -->
+    <!ENTITY quoted "\S(?:.*?\S)??">
+    <!-- postfix/trailing part -->
+    <!ENTITY quoted_post "(?=\W|$)">
+]>
+<language author="Andreas Gratzer" extensions="*.ad;*.adoc;*.asciidoc" kateversion="5.0" mimetype="text/asciidoc" name="AsciiDoc" license="MIT" section="Markup" version="9">
+    <highlighting>
+        <list name="macro">
+            <item>anchor</item>
+            <item>btn</item>
+            <item>footnote</item>
+            <item>footnoteref</item>
+            <item>icon</item>
+            <item>image</item>
+            <item>indexterm</item>
+            <item>indexterm2</item>
+            <item>kbd</item>
+            <item>menu</item>
+            <item>pass</item>
+            <item>toc</item>
+            <item>xref</item>
+        </list>
+
+        <contexts>
+            <context name="start" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
+                <!-- section title level 0 to 5 -->
+                <RegExpr String="^(?:={1,6}|#{1,6})\s+(?=\S)" lookAhead="1" context="dispatch section main title" column="0"/>
+                <IncludeRules context="R section inline"/>
+            </context>
+
+            <!-- attribute value definition, may span multiple lines -->
+            <context name="attribute value" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
+                <!-- line with continuation -->
+                <RegExpr String=".*?(?=\s+(?:\+\s+)?\\\s*$)" attribute="Attribute Value" context="continuation"/>
+                <!-- line without continuation, terminates value definition -->
+                <RegExpr String=".*" attribute="Attribute Value" context="#pop"/>
+            </context>
+            <!-- inline attribute value definition -->
+            <context name="attribute value inline" attribute="Attribute Value" lineEndContext="#stay">
+                <!-- the leading `:` is part of the definition syntax and should not be highlighted as value -->
+                <DetectChar char=":" attribute="Attribute" context="attribute value inline L2"/>
+                <DetectChar char="}" attribute="Attribute" context="#pop"/>
+            </context>
+            <context name="attribute value inline L2" attribute="Attribute Value" lineEndContext="#stay">
+                <DetectChar char="}" attribute="Attribute" context="#pop#pop"/>
+            </context>
+
+            <!-- backlash, may function as an escape -->
+            <context name="backlash" attribute="Normal" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+                <!-- attribute usage
+                     formatted/quoted text
+                     replacement of apostrophe
+                     table separator (default)
+                     anchor, consuming leading char will make anchor matches fail
+                     cross reference
+                     indexterm, consuming leading char will make matches fail
+                -->
+                <!-- replacement (besides apostrophe -->
+                <Detect2Chars char="&lt;" char1="-" attribute="Normal" context="#pop"/>
+                <Detect2Chars char="&lt;" char1="=" attribute="Normal" context="#pop"/>
+                <AnyChar String="_#`+*~^'|{[&lt;(" attribute="Normal" context="#pop"/>
+                <Detect2Chars char="-" char1="-" attribute="Normal" context="#pop"/>
+                <Detect2Chars char="-" char1="&gt;" attribute="Normal" context="#pop"/>
+                <Detect2Chars char="=" char1="&gt;" attribute="Normal" context="#pop"/>
+                <StringDetect String="..." attribute="Normal" context="#pop"/>
+                <!-- email - inline, needs to be ordered after mailto: -->
+                <!-- link and mailto macros, note that ftp, irc, http(s) don't match with leading `\` anyway -->
+                <RegExpr String="&email;|&link_mailto;|&char_ref;" attribute="Normal" context="#pop"/>
+                <!-- macro -->
+                <keyword String="macro" attribute="Normal" context="#pop"/>
+            </context>
+
+            <context name="block title" attribute="Block Title" lineEndContext="#pop">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="comment" attribute="Comment" lineEndContext="#stay" lineEmptyContext="#pop">
+                <DetectSpaces attribute="Comment"/>
+                <RegExpr String="^(&block_dels_comment;)\s*$" attribute="Comment" context="#pop!comment delimited" beginRegion="comment" column="0"/>
+                <IncludeRules context="R anchor"/>
+                <IncludeRules context="R block title"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier attribute="Comment"/>
+            </context>
+            <context name="comment delimited" attribute="Comment" lineEndContext="#stay">
+                <DetectSpaces attribute="Comment"/>
+                <RegExpr String="&block_end_del;" dynamic="true" attribute="Comment" context="#pop" endRegion="comment" column="0"/>
+                <IncludeRules context="##Comments" />
+                <DetectIdentifier attribute="Comment"/>
+            </context>
+            <context name="comment single-line" attribute="Comment" lineEndContext="#pop">
+                <DetectSpaces attribute="Comment"/>
+                <IncludeRules context="##Comments" />
+                <DetectIdentifier attribute="Comment"/>
+            </context>
+
+            <!-- continuation, both for normal text and attribute value definition
+                 The allowed pattern must already by validated.
+                 Here only the possible characters are highlighted. -->
+            <context name="continuation" attribute="Normal" lineEndContext="#pop">
+                <AnyChar String="+\" attribute="Control"/>
+            </context>
+
+            <context name="main title" attribute="Main Title" lineEndContext="#pop!section L0">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="normal" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
+                <RegExpr String="^(-{2}|&block_dels_normal;)\s*$" attribute="Delimiter" context="#pop!normal delimited" beginRegion="block" column="0"/>
+                <IncludeRules context="R block title"/>
+                <!-- shared rules includes anchor rules, so we do not need to include that separately -->
+                <IncludeRules context="R shared"/>
+                <IncludeRules context="R normal"/>
+            </context>
+            <context name="normal delimited" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
+                <IncludeRules context="R admonition"/>
+                <IncludeRules context="R block"/>
+                <!-- shared rules includes anchor rules, so we do not need to include that separately -->
+                <IncludeRules context="R shared"/>
+                <IncludeRules context="R normal"/>
+            </context>
+
+            <context name="passthrough" attribute="Passthrough" lineEndContext="#stay" lineEmptyContext="#pop">
+                <DetectSpaces attribute="Passthrough"/>
+                <IncludeRules context="R include"/>
+                <DetectIdentifier attribute="Passthrough"/>
+                <RegExpr String="^(&block_dels_pass;)\s*$" attribute="Delimiter" context="#pop!passthrough delimited" beginRegion="block" column="0"/>
+                <IncludeRules context="R anchor"/>
+                <IncludeRules context="R block title"/>
+            </context>
+            <context name="passthrough delimited" attribute="Passthrough" lineEndContext="#stay">
+                <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
+                <IncludeRules context="R include"/>
+            </context>
+
+            <context name="dispatch section main title" attribute="Normal" lineEndContext="#stay">
+                <IncludeRules context="dispatch section title L1-5"/>
+                <!-- main title, first level 0 section title -->
+                <AnyChar String="=#" attribute="Main Title" context="#pop!main title" beginRegion="section" column="0"/>
+            </context>
+
+            <context name="dispatch section title L0-5" attribute="Normal" lineEndContext="#stay">
+                <IncludeRules context="dispatch section title L1-5"/>
+                <AnyChar String="=#" attribute="Section Title" context="#pop!section title L0" beginRegion="section" endRegion="section" column="0"/>
+            </context>
+            <context name="dispatch section title L1-5" attribute="Normal" lineEndContext="#stay">
+                <IncludeRules context="dispatch section title L2-5"/>
+                <Detect2Chars char="=" char1="=" attribute="Section Title" context="#pop!section title L1" beginRegion="section" column="0"/>
+                <Detect2Chars char="#" char1="#" attribute="Section Title" context="#pop!section title L1" beginRegion="section" column="0"/>
+            </context>
+            <context name="dispatch section title L2-5" attribute="Normal" lineEndContext="#stay">
+                <IncludeRules context="dispatch section title L3-5"/>
+                <StringDetect String="===" attribute="Section Title" context="#pop!section title L2" beginRegion="section" column="0"/>
+                <StringDetect String="###" attribute="Section Title" context="#pop!section title L2" beginRegion="section" column="0"/>
+            </context>
+            <context name="dispatch section title L3-5" attribute="Normal" lineEndContext="#stay">
+                <IncludeRules context="dispatch section title L4-5"/>
+                <StringDetect String="====" attribute="Section Title" context="#pop!section title L3" beginRegion="section" column="0"/>
+                <StringDetect String="####" attribute="Section Title" context="#pop!section title L3" beginRegion="section" column="0"/>
+            </context>
+            <context name="dispatch section title L4-5" attribute="Normal" lineEndContext="#stay">
+                <IncludeRules context="dispatch section title L5"/>
+                <StringDetect String="=====" attribute="Section Title" context="#pop!section title L4" beginRegion="section" column="0"/>
+                <StringDetect String="#####" attribute="Section Title" context="#pop!section title L4" beginRegion="section" column="0"/>
+            </context>
+            <context name="dispatch section title L5" attribute="Normal" lineEndContext="#stay">
+                <StringDetect String="======" attribute="Section Title" context="#pop!section title L5" beginRegion="section" column="0"/>
+                <StringDetect String="######" attribute="Section Title" context="#pop!section title L5" beginRegion="section" column="0"/>
+            </context>
+
+            <context name="section L0" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
+                <RegExpr String="^(?:={1,6}|#{1,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L0-5" column="0"/>
+                <IncludeRules context="section L5"/>
+            </context>
+
+            <context name="section L1" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
+                <RegExpr String="^(?:={3,6}|#{3,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L2-5" column="0"/>
+                <IncludeRules context="section L5"/>
+            </context>
+
+            <context name="section L2" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
+                <RegExpr String="^(?:={4,6}|#{4,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L3-5" column="0"/>
+                <IncludeRules context="section L5"/>
+            </context>
+
+            <context name="section L3" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
+                <RegExpr String="^(?:={5,6}|#{5,6})\s+(?=\S)" lookAhead="1" context="dispatch section title L4-5" column="0"/>
+                <IncludeRules context="section L5"/>
+            </context>
+
+            <context name="section L4" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
+                <RegExpr String="^(?:={6}|#{6})\s+(?=\S)" lookAhead="1" context="dispatch section title L5" column="0"/>
+                <IncludeRules context="section L5"/>
+            </context>
+
+            <context name="section L5" attribute="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="R section block">
+                <RegExpr String="^(?:={1,6}|#{1,6})\s+\S" lookAhead="1" context="#pop" endRegion="section" column="0"/>
+                <IncludeRules context="R section inline"/>
+            </context>
+
+            <context name="section title L0" attribute="Section Title" lineEndContext="#pop">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="section title L1" attribute="Section Title" lineEndContext="#pop!section L1">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="section title L2" attribute="Section Title" lineEndContext="#pop!section L2">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="section title L3" attribute="Section Title" lineEndContext="#pop!section L3">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="section title L4" attribute="Section Title" lineEndContext="#pop!section L4">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="section title L5" attribute="Section Title" lineEndContext="#pop!section L5">
+                <IncludeRules context="R title"/>
+            </context>
+
+            <context name="table" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
+                <!-- `|` with prefix for alignment, style etc. -->
+                <RegExpr String="(?&lt;=^|\s)&table_option_delimiter;" attribute="Delimiter"/>
+                <!-- simple `|` without alignment, style etc. -->
+                <DetectChar char="|" attribute="Delimiter"/>
+                <IncludeRules context="R shared"/>
+                <IncludeRules context="R normal"/>
+            </context>
+
+            <context name="verbatim" attribute="Verbatim" lineEndContext="#stay">
+                <RegExpr String="^(-{2}|&block_dels_verbatim;)\s*$" attribute="Delimiter" context="#pop!verbatim delimited" beginRegion="block" column="0"/>
+                <IncludeRules context="R anchor"/>
+                <RegExpr String="^(\[\w+[^,\]]*(,[^,\]]*)*\]\s*)+$" attribute="Preprocessor" column="0"/>
+                <IncludeRules context="R block title"/>
+                <IncludeRules context="R comment"/>
+                <IncludeRules context="R include"/>
+                <RegExpr String="^.*" attribute="Verbatim" context="#pop!verbatim paragraph" column="0"/>
+            </context>
+            <context name="verbatim delimited" attribute="Verbatim" lineEndContext="#stay">
+                <RegExpr String="&block_end_del;" dynamic="true" attribute="Delimiter" context="#pop" endRegion="block" column="0"/>
+                <IncludeRules context="R include"/>
+            </context>
+            <context name="verbatim paragraph" attribute="Verbatim" lineEndContext="#stay" lineEmptyContext="#pop">
+                <IncludeRules context="R include"/>
+            </context>
+
+            <!-- contexts to be used for IncludeRules only -->
+
+            <context name="R normal" attribute="Normal" lineEndContext="#stay">
+                <!-- Regex which allows to quickly consume text that is not
+                    - macro
+                    - continuation
+                    - index term
+                    - link
+                    - replacement
+                    - preprocessor
+                    - formatted text
+                    - table delimiter
+
+                maanchor:anchor-id[Macro Anchor]
+                ^ Normal
+                  ^ Macro
+
+                bla__bla__bla
+                ^ Normal
+                   ^ Emphasized
+                          ^ Normal
+
+                For some reason, Asciidoctor recognizes emails with leading : or / but does not render them as link
+
+                /example@mail.com
+                ^ Normal
+
+                example@mail.com
+                ^ Link
+                -->
+                <RegExpr String="([:/]&email;|(?!&macro;|link:|mailto:|(?:ftp|https?|irc)://|&char_ref;|indexterm2?:\[.+?\]|[\\+|\[{~^]|__|##|\([CR]\)|\(TM\)|\.\.\.|&lt;[-=&lt;]|--|->|=>|``\*?_?|\*\*_?|\(\(|\s+[[+]|\s&table_option_delimiter;|(?&lt;=[^&alp;;:}])_|&quoted_pre;(`\*?_?|\*_?|#)|(?&lt;=[&alp;])'(?=[&alp;])|&email;).)++" attribute="Normal"/>
+            </context>
+
+            <context name="R admonition" attribute="Normal" lineEndContext="#stay">
+                <!-- admonition - simple form, block form is part of block rules -->
+                <RegExpr String="^(?:&admonition_names;):(?=\s+\S)" attribute="Preprocessor" context="normal" column="0"/>
+            </context>
+
+            <context name="R anchor" attribute="Normal" lineEndContext="#stay">
+                <!-- shorthand form at line start -->
+                <!-- bibliographic anchor -->
+                <!-- normal form -->
+                <!-- shorthand form inline -->
+                <RegExpr String="^\[#&anchor_mid;\](?:&anchor_phrase;|\s*$)|\[{3}&anchor_mid;\]{3}|\[{2}&anchor_mid;\]{2}|(?&lt;=\S\s)\s*\[\s*#&anchor_mid;\s*\]&anchor_phrase;" attribute="Anchor"/>
+            </context>
+
+            <context name="R attribute" attribute="Normal" lineEndContext="#stay">
+                <!-- attribute definition without value / unset attribute -->
+                <RegExpr String="^:!?&id;!?:$" attribute="Attribute" column="0"/>
+                <!-- attribute definition with value -->
+                <RegExpr String="^:!?&id;!?:\s(?=\S)" attribute="Attribute" context="attribute value" column="0"/>
+                <!-- attribute inline definition -->
+                <RegExpr String="\{set:&id;(?=(?::.*)?\})" minimal="true" attribute="Attribute" context="attribute value inline"/>
+                <IncludeRules context="R attribute usage"/>
+            </context>
+
+            <context name="R attribute usage" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="\{&id;\}" attribute="Attribute"/>
+            </context>
+
+            <context name="R block" attribute="Normal" lineEndContext="#stay">
+                <IncludeRules context="R block title"/>
+                <IncludeRules context="R block without title"/>
+            </context>
+
+            <context name="R block without title" attribute="Normal" lineEndContext="#stay">
+                <!-- name matching -->
+                <RegExpr String="^\[(?:&admonition_names;)&block_name_post;|^\[(?:example|quote|sidebar|verse)&block_name_post;" attribute="Preprocessor" context="normal" column="0"/>
+                <RegExpr String="^\[(?:pass|stem)&block_name_post;" attribute="Preprocessor" context="passthrough" column="0"/>
+                <RegExpr String="^\[(?:listing|literal|source)&block_name_post;" attribute="Preprocessor" context="verbatim" column="0"/>
+
+                <!-- delimiter matching -->
+                <RegExpr String="^(&block_dels_normal;)\s*$" attribute="Delimiter" context="normal delimited" beginRegion="block" column="0"/>
+                <RegExpr String="^(&block_dels_pass;)\s*$" attribute="Delimiter" context="passthrough delimited" beginRegion="block" column="0"/>
+                <RegExpr String="^(\|={3,})\s*$" attribute="Delimiter" context="table" beginRegion="block" column="0"/>
+                <RegExpr String="^(&block_dels_verbatim;)\s*$" attribute="Delimiter" context="verbatim delimited" beginRegion="block" column="0"/>
+            </context>
+
+            <context name="R block title" attribute="Normal" lineEndContext="#stay">
+                <!-- not more than 3 leading dots followed by a non-dot, otherwise it would conflict with the delimited literal block -->
+                <RegExpr String="^\.{1,3}(?=[^\.\s])" attribute="Block Title" context="block title" column="0"/>
+            </context>
+
+            <context name="R comment" attribute="Normal" lineEndContext="#stay">
+                <!-- comment - multi-line, named block -->
+                <RegExpr String="^\[comment&block_name_post;" attribute="Preprocessor" context="comment" column="0"/>
+                <!-- comment - multi-line, delimited block -->
+                <RegExpr String="^(&block_dels_comment;)\s*$" attribute="Comment" context="comment delimited" beginRegion="comment" column="0"/>
+                <!-- comment - single line -->
+                <RegExpr String="^/{2}(?:[^/]|$)" attribute="Comment" context="comment single-line" column="0"/>
+            </context>
+
+            <context name="R formatted" attribute="Normal" lineEndContext="#stay">
+                <!-- custom style, e.g. [underline]#underlined text# -->
+                <RegExpr String="(?&lt;=^|\W)\[[^\]]+?\]([#_`*]{1,2})&quoted;\g1&quoted_post;" attribute="Preprocessor"/>
+
+                <!-- combined highlighting must be ordered before simple highlighting -->
+
+                <!-- emphasized monospaced strong unconstrained - must be ordered before constrained -->
+                <!-- emphasized monospaced strong - constrained must be ordered after unconstrained -->
+                <RegExpr String="`{2}\*_.*?_\*`{2}|&quoted_pre;`\*_&quoted;_\*`&quoted_post;" attribute="Emphasized Monospaced Strong"/>
+
+                <!-- emphasized strong unconstrained - must be ordered before constrained -->
+                <!-- emphasized strong constrained - must be ordered after unconstrained -->
+                <RegExpr String="\*{2}_.*?_\*{2}|&quoted_pre;\*_&quoted;_\*&quoted_post;" attribute="Emphasized Strong"/>
+
+                <!-- monospaced strong unconstrained - must be ordered before constrained -->
+                <!-- monospaced strong constrained - must be ordered after unconstrained -->
+                <RegExpr String="`{2}\*.*?\*`{2}|&quoted_pre;`\*&quoted;\*`&quoted_post;" attribute="Monospaced Strong"/>
+
+                <!-- emphasized monospaced unconstrained - must be ordered before constrained -->
+                <!-- emphasized monospaced constrained - must be ordered after unconstrained -->
+                <RegExpr String="`{2}_.*?_`{2}|&quoted_pre;`_&quoted;_`&quoted_post;" attribute="Emphasized Monospaced"/>
+
+                <!-- strong unconstrained - must be ordered before constrained -->
+                <!-- strong constrained - must be ordered after unconstrained -->
+                <RegExpr String="\*{2}[^*].*?\*{2}|&quoted_pre;\*&quoted;\*&quoted_post;" attribute="Strong"/>
+
+                <!-- emphasized unconstrained - must be ordered before constrained -->
+                <!-- emphasized constrained - must be ordered after unconstrained
+                     Can't use &quoted_pre; as that excludes \w which excludes `_` too. -->
+                <RegExpr String="_{2}[^_].*?_{2}|(?&lt;=^|[^&alp;;:}])_&quoted;_&quoted_post;" attribute="Emphasized"/>
+
+                <IncludeRules context="R marked"/>
+                <IncludeRules context="R monospaced"/>
+
+                <!-- subscript -->
+                <RegExpr String="~\S+~" minimal="true" attribute="Subscript"/>
+                <!-- superscript -->
+                <RegExpr String="\^\S+\^" minimal="true" attribute="Superscript"/>
+            </context>
+
+            <context name="R include" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="^include::.*\[.*?\](?=\s*$)" attribute="Preprocessor" column="0"/>
+            </context>
+
+            <context name="R macro" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="&macro;" attribute="Preprocessor"/>
+            </context>
+
+            <context name="R marked" attribute="Normal" lineEndContext="#stay">
+                <!-- marked unconstrained - must be ordered before constrained -->
+                <!-- marked constrained - must be ordered after unconstrained -->
+                <RegExpr String="#{2}.+?#{2}|&quoted_pre;#&quoted;#&quoted_post;" attribute="Marked"/>
+            </context>
+
+            <context name="R monospaced" attribute="Normal" lineEndContext="#stay">
+                <!-- monospaced unconstrained - must be ordered before constrained -->
+                <!-- monospaced constrained - must be ordered after unconstrained -->
+                <RegExpr String="`{2}[^`].*?`{2}|&quoted_pre;`&quoted;`&quoted_post;" attribute="Monospaced"/>
+            </context>
+
+            <!-- replacements -->
+            <context name="R replacement" attribute="Normal" lineEndContext="#stay">
+                <!-- copyright -->
+                <StringDetect String="(C)" attribute="Replacement"/>
+                <!-- registered -->
+                <StringDetect String="(R)" attribute="Replacement"/>
+                <!-- trademark -->
+                <StringDetect String="(TM)" attribute="Replacement"/>
+                <!-- apostrophe, only when between alphabetic characters -->
+                <RegExpr String="(?&lt;=[&alp;])'(?=[&alp;])" attribute="Replacement"/>
+                <!-- ellipses -->
+                <StringDetect String="..." attribute="Replacement"/>
+                <!-- mdash -->
+                <Detect2Chars char="-" char1="-" attribute="Replacement"/>
+                <!-- left single arrow -->
+                <Detect2Chars char="&lt;" char1="-" attribute="Replacement"/>
+                <!-- right single arrow -->
+                <Detect2Chars char="-" char1="&gt;" attribute="Replacement"/>
+                <!-- left double arrow -->
+                <Detect2Chars char="&lt;" char1="=" attribute="Replacement"/>
+                <!-- right double arrow -->
+                <Detect2Chars char="=" char1="&gt;" attribute="Replacement"/>
+                <!-- unicode character reference -->
+                <RegExpr String="&char_ref;" attribute="Replacement"/>
+            </context>
+
+            <context name="R section inline" attribute="Normal" lineEndContext="#stay">
+                <!-- literal paragraph started by a line with leading spaces -->
+                <RegExpr String="^\s+(?!&list_marker;)\S.*" attribute="Verbatim" context="verbatim paragraph" column="0"/>
+                <IncludeRules context="R block"/>
+                <IncludeRules context="R anchor"/>
+                <IncludeRules context="R comment"/>
+                <IncludeRules context="R media"/>
+                <IncludeRules context="R preprocessor"/>
+                <IncludeRules context="R horizontal rules and page break"/>
+            </context>
+
+            <!-- first line of a section block -->
+            <context name="R section block" attribute="Normal" lineEndContext="#pop!section block continuation" lineEmptyContext="#pop">
+                <IncludeRules context="R callout"/>
+                <RegExpr String="^\+\s*$" attribute="Control" context="#pop" column="0"/>
+                <IncludeRules context="R admonition"/>
+                <IncludeRules context="R block"/>
+                <IncludeRules context="R shared"/>
+                <IncludeRules context="R empty"/>
+                <IncludeRules context="R normal"/>
+            </context>
+
+            <!-- callout as being used below a source code block -->
+            <context name="R callout" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
+                <RegExpr String="^&lt;(?:\.|\d+)&gt;(?=\s+\S)" attribute="Callout" context="#pop!callout" column="0"/>
+            </context>
+            <context name="callout" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
+                <IncludeRules context="R callout"/>
+                <IncludeRules context="section block continuation"/>
+            </context>
+
+            <!-- line 2 and following of a section block -->
+            <context name="section block continuation" attribute="Normal" lineEndContext="#stay" lineEmptyContext="#pop">
+                <RegExpr String="^\+\s*$" attribute="Control" context="#pop" column="0"/>
+                <IncludeRules context="R block without title"/>
+                <IncludeRules context="R shared"/>
+                <IncludeRules context="R empty"/>
+                <IncludeRules context="R normal"/>
+            </context>
+
+            <context name="R empty" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="^\s+$" attribute="Normal" context="#pop" column="0"/>
+            </context>
+
+            <context name="R shared" attribute="Normal" lineEndContext="#stay">
+                <!-- the escaped forms must be ordered before the not escaped forms -->
+                <DetectChar char="\" attribute="Normal" context="backlash"/>
+
+                <!-- passthrough - inline, must be ordered before other rules
+                     The macro form pass: is part of "R macro" context -->
+                <RegExpr String="&quoted_pre_pass;(\+{1,3})&quoted;\g1&quoted_post;" attribute="Passthrough"/>
+
+                <IncludeRules context="R anchor"/>
+                <IncludeRules context="R attribute"/>
+                <IncludeRules context="R comment"/>
+                <IncludeRules context="R include"/>
+                <IncludeRules context="R macro"/>
+
+                <!-- counter and counter2 -->
+                <RegExpr String="\{counter2?:\s*&id;\s*(?::\s*(?:\d+|[&alp;])\s*)?\}" minimal="true" attribute="Attribute"/>
+
+                <!-- horizontal rules and page break -->
+                <!-- to enable highlighting of the horizontal rules using "- - -" or "* * *",
+                     keep this before the checklist and unnumbered list definition -->
+                <IncludeRules context="R horizontal rules and page break"/>
+
+                <!-- cross reference -->
+                <RegExpr String="&lt;&lt;[^&lt;\s].*?&gt;&gt;" attribute="Link"/>
+
+                <!-- index term -->
+                <RegExpr String="\({3}.+?\){3}|\({2}.+?\){2}|indexterm2?:\[.+?\]" attribute="Preprocessor"/>
+
+                <!-- marker for description list -->
+                <!-- marker for numbered list -->
+                <!-- marker for checklist and bulleted/unnumbered list
+                     To enable highlighting of the horizontal rules using "- - -" or "* * *",
+                     keep this after the horizontal rules definition -->
+                <RegExpr String="^\s*&list_marker;" attribute="List Marker" column="0"/>
+
+                <!-- media - block format -->
+                <IncludeRules context="R media"/>
+
+                <!-- links -->
+                <RegExpr String="(?&lt;=^|[\s\[\]();&lt;&gt;])(?:ftp|https?|irc)://[^\s\[]*?(?:\[\]|\[.*?[^\\]\]|(?=(?:[\[\]]|[\.,;:]??(?:\s|$))))|&link_mailto;|&email;" attribute="Link"/>
+
+                <!-- preprocessor -->
+                <!-- general meta data attribute list - must be ordered after other rules matching for lines of the form of [some content] -->
+                <IncludeRules context="R preprocessor"/>
+
+                <!-- continuation `+`, both at end of line and on a line on its own -->
+                <RegExpr String="(?:^|\s)\s*\+\s*$" lookAhead="true" attribute="Normal" context="continuation"/>
+
+                <!-- formatted/quoted must be ordered after unnumbered list -->
+                <IncludeRules context="R formatted"/>
+                <!-- replacements are done only if nothing else matched -->
+                <IncludeRules context="R replacement"/>
+            </context>
+
+            <context name="R media" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="^(?:audio|image|video)::.*\[.*?\](?=\s*$)" attribute="Preprocessor" column="0"/>
+            </context>
+
+            <context name="R preprocessor" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="^ifn?def::&id;(?:[,\+]&id;)*\[.*\]|^ifeval::\[.*\]|^endif::(?:&id;)?\[\]|^\[[^\s\[].*\](?=\s*$)" attribute="Preprocessor" column="0"/>
+            </context>
+
+            <context name="R horizontal rules and page break" attribute="Normal" lineEndContext="#stay">
+                <RegExpr String="^(?:'{3}|-{3}|\*{3}|- - -|\* \* \*|&lt;{3})\s*$" attribute="Control" column="0"/>
+            </context>
+
+            <!-- common rules for main title, section title, block title -->
+            <context name="R title" attribute="Normal" lineEndContext="#stay">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <!-- the escaped forms must be ordered before the not escaped forms -->
+                <DetectChar char="\" attribute="Section Title" context="backlash"/>
+                <IncludeRules context="R anchor"/>
+                <IncludeRules context="R attribute usage"/>
+                <IncludeRules context="R marked"/>
+                <IncludeRules context="R monospaced"/>
+            </context>
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Anchor" defStyleNum="dsFunction"/>
+            <itemData name="Attribute" defStyleNum="dsVariable"/>
+            <itemData name="Attribute Value" defStyleNum="dsVariable" italic="true"/>
+            <itemData name="Block Title" defStyleNum="dsString" italic="true"/>
+            <itemData name="Callout" defStyleNum="dsNormal" bold="true" underline="true"/>
+            <itemData name="Comment" defStyleNum="dsComment"/>
+            <itemData name="Control" defStyleNum="dsControlFlow" bold="true" underline="true"/>
+            <itemData name="Delimiter" defStyleNum="dsPreprocessor" bold="true"/>
+            <itemData name="Emphasized" defStyleNum="dsNormal" italic="true"/>
+            <itemData name="Emphasized Monospaced" defStyleNum="dsDocumentation" italic="true"/>
+            <itemData name="Emphasized Monospaced Strong" defStyleNum="dsDocumentation" bold="true" italic="true"/>
+            <itemData name="Emphasized Strong" defStyleNum="dsNormal" bold="true" italic="true"/>
+            <itemData name="Link" defStyleNum="dsVariable" underline="true"/>
+            <itemData name="List Marker" defStyleNum="dsNormal" bold="true"/>
+            <itemData name="Main Title" defStyleNum="dsNormal" bold="true"/>
+            <itemData name="Marked" defStyleNum="dsFloat"/>
+            <itemData name="Monospaced" defStyleNum="dsDocumentation"/>
+            <itemData name="Monospaced Strong" defStyleNum="dsDocumentation" bold="true"/>
+            <itemData name="Normal" defStyleNum="dsNormal"/>
+            <itemData name="Passthrough" defStyleNum="dsSpecialString"/>
+            <itemData name="Preprocessor" defStyleNum="dsPreprocessor"/>
+            <itemData name="Replacement" defStyleNum="dsNormal" bold="true" underline="true"/>
+            <itemData name="Section Title" defStyleNum="dsString" bold="true"/>
+            <itemData name="Strong" defStyleNum="dsNormal" bold="true"/>
+            <itemData name="Subscript" defStyleNum="dsNormal" underline="true"/>
+            <itemData name="Superscript" defStyleNum="dsNormal" bold="true" underline="true"/>
+            <itemData name="Verbatim" defStyleNum="dsDocumentation"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <comments>
+            <comment name="singleLine" start="//"/>
+            <comment name="multiLine" start="////" end="////" region="comment"/>
+        </comments>
+        <keywords casesensitive="1"/>
+    </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/asn1.xml b/xml/asn1.xml
--- a/xml/asn1.xml
+++ b/xml/asn1.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
         You'll find the "Writing a Kate Highlighting XML File HOWTO" at http://kate.kde.org/doc/hlhowto.php
         This is a template for the XML format used for syntax highlight descriptions
@@ -13,12 +13,10 @@
 
         You'll find the "Writing a Kate Highlighting XML File HOWTO" at http://kate.kde.org/doc/hlhowto.php
 -->
-<language name="ASN.1" section="Markup" version="5" kateversion="5.0" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">
+<language name="ASN.1" section="Markup" version="6" kateversion="5.0" extensions="*.asn;*.asn1" mimetype="" author="Philippe Rigault" license="GPL">
   <highlighting>
     <list name="keywords">
       <item>DEFINITIONS</item>
-      <item>BEGIN</item>
-      <item>END</item>
       <item>EXPORTS</item>
       <item>IMPORTS</item>
       <item>FROM</item>
@@ -29,6 +27,11 @@
       <item>OPTIONAL</item>
       <item>FALSE</item>
       <item>TRUE</item>
+      <item>AUTOMATIC</item>
+      <item>CLASS</item>
+      <item>WITH</item>
+      <item>SIZE</item>
+      <item>TAGS</item>
     </list>
     <list name="types">
       <item>BOOLEAN</item>
@@ -42,32 +45,67 @@
       <item>SET</item>
       <item>CHOICE</item>
       <item>OF</item>
-      <item>VisibleString</item>
+      <item>UNION</item>
       <item>StringStore</item>
+      <item>GeneralString</item>
+      <item>IA5String</item>
+      <item>ISO64String</item>
+      <item>NumericString</item>
+      <item>PrintableString</item>
+      <item>T61String</item>
+      <item>TeletexString</item>
+      <item>UniversalString</item>
+      <item>UTF8String</item>
+      <item>VideotexString</item>
+      <item>VisibleString</item>
+      <item>DATE</item>
+      <item>DATE-TIME</item>
+      <item>DURATION</item>
+      <item>GeneralizedTime</item>
+      <item>UTCTime</item>
     </list>
     
     <contexts>
       <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
         <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <StringDetect attribute="Keyword" context="#stay" String="BEGIN" beginRegion="Block"/>
+        <StringDetect attribute="Keyword" context="#stay" String="END" endRegion="Block"/>
         <keyword attribute="Data Type" context="#stay" String="types" />
-        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>      
+        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
+        <Detect2Chars attribute="Comment" context="Multiline Comment" char="/" char1="*" beginRegion="Comment"/>
+        <DetectChar attribute="Normal Text" context="#stay" char="{" beginRegion="BraceBlock"/>
+        <DetectChar attribute="Normal Text" context="#stay" char="}" endRegion="BraceBlock"/>
+
+        <Int attribute="Decimal" context="#stay"/>
+        <DetectChar attribute="String" context="ctxString" char="&quot;"/>
       </context>
       
       <context attribute="Comment" lineEndContext="#pop" name="Comment">
         <IncludeRules context="##Comments" />
       </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <IncludeRules context="##Comments"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="ctxString">
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
     </contexts>
     
     <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Keyword"     defStyleNum="dsKeyword"/>
+      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword" spellChecking="false"/>
       <itemData name="Comment"     defStyleNum="dsComment"/>
-      <itemData name="Data Type"   defStyleNum="dsDataType"/>
+      <itemData name="Data Type"   defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Decimal"     defStyleNum="dsDecVal"/>
+      <itemData name="String"      defStyleNum="dsString"/>
     </itemDatas>
   </highlighting>
   <general>
     <comments>
       <comment name="singleLine" start="--"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
   </general>
 </language>
diff --git a/xml/asp.xml b/xml/asp.xml
--- a/xml/asp.xml
+++ b/xml/asp.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE  language SYSTEM "language.dtd">
+<!DOCTYPE  language>
 <language name="ASP" version="9" kateversion="5.44" section="Markup" extensions="*.asp;" mimetype="text/x-asp-src;text/x-asp-src" author="Antonio Salazar (savedfastcool@gmail.com)" license="LGPL">
     <highlighting>
         <list name="control structures">
diff --git a/xml/ats.xml b/xml/ats.xml
--- a/xml/ats.xml
+++ b/xml/ats.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 <!-- Regular expression constants: -->
 <!ENTITY LETTER "A-Za-z\xc0-\xd6\xd8-\xf6\xf8-\xff">                <!-- Latin-1 letters. -->
diff --git a/xml/awk.xml b/xml/awk.xml
--- a/xml/awk.xml
+++ b/xml/awk.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="AWK" version="6" kateversion="5.0" section="Scripts"
   extensions="*.awk" mimetype="text/x-awk" indenter="cstyle"
   license="LGPL">
diff --git a/xml/bash.xml b/xml/bash.xml
--- a/xml/bash.xml
+++ b/xml/bash.xml
@@ -1,46 +1,86 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-        <!ENTITY tab      "&#009;">
-        <!ENTITY funcname "([^&_fragpathseps;}=#$]|[+!@](?!\())([^&_fragpathseps;}=$]*+([+!@](?!\())?+)*+">
-        <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
-        <!ENTITY eos      "(?=$|[ &tab;])">                 <!-- eol or space following -->
-        <!ENTITY eoexpr   "(?=$|[ &tab;&lt;>|&amp;;)])">
+    <!ENTITY tab      "&#009;">
+    <!ENTITY funcname "([^&_fragpathseps;}=#$]|[+!@](?!\())([^&_fragpathseps;}=$]*+([+!@](?!\())?+)*+">
+    <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
+    <!ENTITY eos      "(?=$|[ &tab;])">                 <!-- eol or space following -->
+    <!ENTITY eoexpr   "(?=$|[ &tab;&lt;>|&amp;;)])">
 
-        <!ENTITY substseps  "${'&quot;`\\">
-        <!ENTITY symbolseps "&lt;>|&amp;;()"> <!-- see man bash -->
-        <!ENTITY wordseps   " &tab;&symbolseps;"> <!-- see man bash -->
+    <!ENTITY substseps  "${'&quot;`\\">
+    <!ENTITY symbolseps "&lt;>|&amp;;()"> <!-- see man bash -->
+    <!ENTITY wordseps   " &tab;&symbolseps;"> <!-- see man bash -->
 
-        <!ENTITY _fragpathseps  "*?+!@&wordseps;&substseps;">
-        <!ENTITY _fragpathnosep "(?:[+!@](?!\()|\\.|&_brace_noexpansion;)?+">
-        <!ENTITY path       "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">
-        <!ENTITY fragpath   "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">
-        <!ENTITY opt        "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">
-        <!ENTITY pathpart   "(?:~|\.\.?|&fragpath;)(?:/&path;|(?=[*?]|[+!@]\(|&fragpath;(?:[/*?]|[+!@]\()))|(?:~|\.\.?)(?=[&wordseps;]|$)">
+    <!ENTITY bq_string  "`[^`]*+`">
+    <!ENTITY sq_string  "'[^']*+'">
+    <!ENTITY dq_string  "&quot;(?:[^&quot;\\`]*+|&bq_string;|\\.)*+&quot;">
+    <!ENTITY strings    "(?:&sq_string;|&dq_string;|&bq_string;)">
 
-        <!ENTITY _fragpathseps_alt  "*?+!@&substseps;}">
-        <!ENTITY _fragpathnosep_alt "(?:[+!@](?!\()|\\.)?+">
-        <!ENTITY path_alt       "(?:[^&_fragpathseps_alt;]*+&_fragpathnosep_alt;)*+">
-        <!ENTITY fragpath_alt   "(?:[^&_fragpathseps_alt;/]*+&_fragpathnosep_alt;)*+">
-        <!ENTITY opt_alt        "(?:[^&_fragpathseps_alt;=/]*+&_fragpathnosep_alt;)*+">
-        <!ENTITY pathpart_alt   "(?:~|\.\.?|&fragpath_alt;)(?:/&path_alt;|(?=[*?]|[+!@]\(|&fragpath_alt;(?:[/*?]|[+!@]\()))|(?:~|\.\.?)(?=\}|$)">
+    <!ENTITY globany    "\[(?:[^&wordseps;&quot;'`\\\[\]]+|\\.|&strings;|\[:\w+:\]|\[)*\]">
 
-        <!ENTITY _braceexpansion_spe     " &tab;&lt;>|&amp;;{}\\`'&quot;$">
-        <!ENTITY _brace_noexpansion       "\{[^&_braceexpansion_spe;,]*+\}">
-        <!ENTITY _braceexpansion_var     "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">
-        <!ENTITY _braceexpansion_string  "'[^']*'|&quot;([^&quot;\`]*+|`[^`]*`)*+&quot;">
-        <!ENTITY _braceexpansion_elems   "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&_brace_noexpansion;">
-        <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">
-        <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">
-        <!ENTITY braceexpansion "{&_braceexpansion;">
+    <!ENTITY next_is_globany    "(?:\^?\]\]|(?:\^?\]?)?(?:\\.|[^'&quot; &tab;&lt;>|&amp;;()\\[\]]+|&strings;|\[:\w+:\])+\])">
+    <!ENTITY bracket_noglobany  "\[(?!&next_is_globany;)">
 
-        <!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">
+    <!ENTITY _fragpathseps  "*?+!@&wordseps;&substseps;">
+    <!ENTITY _fragpathnosep "(?:[+!@](?!\()|\\.|&_brace_noexpansion;)?+">
+    <!ENTITY path       "(?:[^&_fragpathseps;\[]*+&_fragpathnosep;)*+">
+    <!ENTITY fragpath   "(?:[^&_fragpathseps;\[/]*+&_fragpathnosep;)*+">
+    <!ENTITY opt        "(?:[^&_fragpathseps;\[=/]*+&_fragpathnosep;)*+">
+    <!ENTITY pathpart   "(?:~|\.\.?|&fragpath;)(?:/&path;|(?=[*?]|[+!@]\(|&fragpath;(?:[/*?]|\[&next_is_globany;|[+!@]\()))|(?:~|\.\.?)(?=[&wordseps;]|$)">
 
-        <!ENTITY arithmetic_as_subshell "\(((?:[^`'&quot;()$]++|\$\{[^`'&quot;(){}$]+\}|\$(?=[^{`'&quot;()])|`[^`]*+`|\((?1)(?:[)]|(?=['&quot;])))++)(?:[)](?=$|[^)])|[&quot;'])">
+    <!ENTITY _fragpathseps_alt  "*?+!@&substseps;}">
+    <!ENTITY _fragpathnosep_alt "(?:[+!@](?!\()|\\.)?+">
+    <!ENTITY path_alt       "(?:[^&_fragpathseps_alt;]*+&_fragpathnosep_alt;)*+">
+    <!ENTITY fragpath_alt   "(?:[^&_fragpathseps_alt;/]*+&_fragpathnosep_alt;)*+">
+    <!ENTITY opt_alt        "(?:[^&_fragpathseps_alt;=/]*+&_fragpathnosep_alt;)*+">
+    <!ENTITY pathpart_alt   "(?:~|\.\.?|&fragpath_alt;)(?:/&path_alt;|(?=[*?]|[+!@]\(|&fragpath_alt;(?:[/*?]|[+!@]\()))|(?:~|\.\.?)(?=\}|$)">
+
+    <!-- Path only with / -->
+    <!ENTITY path_with_sep_text  "[^?*+!@&wordseps;'&quot;`\\/]">
+    <!ENTITY path_with_sep_text2 "[^?*+!@()'&quot;`\\/]">
+    <!ENTITY path_with_sep_expr  "\\.|&strings;|&globany;|[?*+](?!\()">
+    <!ENTITY path_with_sep_spe   "(~|\.\.?)($|[/ &tab;&lt;>|&amp;;)])">
+    <!ENTITY path_with_sep_sub   "[?*+!@]\((&path_with_sep_text2;++|&path_with_sep_expr;)*+(\)|(?=/))">
+    <!ENTITY path_with_sep "/|&path_with_sep_spe;|(&path_with_sep_text;++|&path_with_sep_expr;|&path_with_sep_sub;)*+/">
+
+    <!ENTITY _braceexpansion_spe     " &tab;&lt;>|&amp;;{}\\`'&quot;$">
+    <!ENTITY _brace_noexpansion       "\{[^&_braceexpansion_spe;,]*+\}">
+    <!ENTITY _braceexpansion_var     "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">
+    <!ENTITY _braceexpansion_string  "'[^']*'|&quot;([^&quot;\`]*+|`[^`]*`)*+&quot;">
+    <!ENTITY _braceexpansion_elems   "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&_brace_noexpansion;">
+    <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">
+    <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">
+    <!ENTITY braceexpansion "{&_braceexpansion;">
+
+    <!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">
+
+    <!ENTITY arithmetic_as_subshell "\(((?:[^`'&quot;()$]++|\$\{[^`'&quot;(){}$]+\}|\$(?=[^{`'&quot;()])|`[^`]*+`|\((?1)(?:[)]|(?=['&quot;])))++)(?:[)](?=$|[^)])|[&quot;'])">
+
+    <!ENTITY unary_operators  "-[abcdefghkprstuwxGLNOSovRnz](?=\\?$|[ &tab;])">
+    <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=\\?$|[ &tab;])">
+
+    <!ENTITY dblbracket_close "\]\](?=($|[ &tab;;|&amp;)]))">
+
+    <!ENTITY weakDeliminatorSymbols "^&#37;#[]$.{}:-/">
 ]>
 
-<language name="Bash" version="38" kateversion="5.79" section="Scripts" extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;PKGBUILD;APKBUILD" mimetype="application/x-shellscript" casesensitive="1" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+<!--
+https://git.savannah.gnu.org/cgit/bash.git/tree/NEWS
+current: bash-5.2
+-->
 
+<language
+    name="Bash"
+    version="58"
+    kateversion="5.79"
+    section="Scripts"
+    extensions="*.sh;*.bash;*.ebuild;*.eclass;*.exlib;*.exheres-0;.bashrc;.bash_profile;.bash_login;.profile;.envrc;PKGBUILD;APKBUILD"
+    mimetype="application/x-shellscript;text/x-shellscript"
+    casesensitive="1"
+    author="Wilbert Berendsen (wilbert@kde.nl)"
+    license="LGPL"
+  >
+
 <!-- (c) 2004 by Wilbert Berendsen (wilbert@kde.nl)
     Changes by Matthew Woehlke (mw_triad@users.sourceforge.net)
     Changes by Sebastian Pipping (webmaster@hartwork.org)
@@ -498,7 +538,7 @@
 
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">
-          <IncludeRules context="BashOneLine"/>
+        <IncludeRules context="BashOneLine"/>
       </context>
 
       <!-- used by other syntaxes -->
@@ -544,6 +584,9 @@
         <keyword attribute="Builtin" context="VarName" String="builtins_var" lookAhead="1"/>
         <!-- mark function definitions without function keyword -->
         <RegExpr attribute="Function" context="#stay" String="&funcname;[ &tab;]*\(\)"/>
+        <!-- Special case for `: << '#BLOCK-COMMENT' form of "multiline" comments-->
+        <RegExpr attribute="Normal Text" context="PreHereDocMLComment" String="^:[ &tab;]+&lt;&lt;[ &tab;]*'#([^']+)'$" lookAhead="1" column="0"/>
+        <WordDetect attribute="Builtin" context="Coproc" String="coproc"/>
         <keyword attribute="Builtin" context="CommandArgs" String="builtins"/>
         <keyword attribute="Command" context="CommandArgs" String="unixcommands"/>
 
@@ -592,6 +635,18 @@
         <DetectChar context="#pop!Command" char="}" lookAhead="1"/>
       </context>
 
+      <context attribute="Normal Text" lineEndContext="#pop" name="Coproc" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+        <RegExpr context="CoprocName" String="(\$?&varname;|\$\{&varname;\}|'&varname;'|&quot;(\$?&varname;|\$\{&varname;\}|[a-zA-Z0-9_])+&quot;)+(?=\s+\{($|\s))" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="CoprocName">
+        <DetectChar attribute="Keyword" context="#pop#pop!Group" char="{" beginRegion="group"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectIdentifier attribute="Normal Text"/>
+        <IncludeRules context="FindWord"/>
+      </context>
+
       <context attribute="Command" lineEndContext="#pop" name="Command" fallthroughContext="#pop">
         <DetectSpaces attribute="Normal Text" context="#pop!CommandArgs"/>
         <DetectChar context="CommandVariables" char="$" lookAhead="1"/>
@@ -614,14 +669,20 @@
         <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/>
         <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>
         <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>
+        <!-- The old format $[exp] is undocumented, deprecated
+        and will be removed in upcoming versions of bash. -->
       </context>
       <context attribute="Command" lineEndContext="#pop#pop" name="DispatchStringVariables">
         <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/>
-        <Detect2Chars attribute="String Transl." context="#pop!StringDQ" char="$" char1="&quot;"/>
+        <Detect2Chars attribute="String Transl." context="#pop!StringTrDQ" char="$" char1="&quot;"/>
       </context>
       <context attribute="Command" lineEndContext="#pop#pop" name="DispatchVarnameVariables">
-        <RegExpr attribute="Variable" context="#pop" String="\$(?:&varname;|[*@#?$!0-9-])"/>
+        <RegExpr attribute="Dollar Prefix" context="#pop!VarNamePrefixedWithDollar" String="\$(?=&varname;|[*@#?$!0-9-])"/>
       </context>
+      <context attribute="Variable" lineEndContext="#pop" name="VarNamePrefixedWithDollar">
+        <DetectIdentifier attribute="Variable" context="#pop"/>
+        <AnyChar attribute="Variable" context="#pop" String="*@#?$!0123456789-"/>
+      </context>
       <context attribute="OtherCommand" lineEndContext="#pop#pop" name="CommandName">
         <DetectSpaces attribute="Normal Text" context="#pop#pop!CommandArgs"/>
         <DetectIdentifier attribute="OtherCommand" context="#stay"/>
@@ -693,17 +754,24 @@
         <IncludeRules context="FindWord"/>
         <IncludeRules context="FindGlobAndPop"/>
         <DetectChar context="OptionMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="LongOptionMaybeGlobAny" char="[" lookAhead="1"/>
         <RegExpr attribute="Option" context="#stay" String="&opt;"/>
       </context>
+      <context attribute="Option" lineEndContext="#pop#pop" name="LongOptionMaybeGlobAny" fallthroughContext="#pop">
+        <IncludeRules context="FindGlobAny"/>
+        <DetectChar attribute="Option" context="#pop" char="["/>
+      </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="NormalOption" fallthroughContext="#pop">
         <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
         <IncludeRules context="FindWord"/>
         <DetectChar context="NormalMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <IncludeRules context="FindPathThenPop"/>
-        <IncludeRules context="FindNormalTextOption"/>
+        <IncludeRules context="FindNormalText"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalTextOption">
-        <RegExpr attribute="Normal Text" context="#stay" String="[^&wordseps;&substseps;]+"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalText">
+        <IncludeRules context="FindGlobAndPop"/>
+        <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/>
+        <DetectChar context="FindPathThenPopMaybeGlobAny" char="[" lookAhead="1"/>
+        <RegExpr attribute="Normal Text" context="#stay" String="[^&wordseps;&substseps;\[]+"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="OptionMaybeBraceExpansion">
         <IncludeRules context="DispatchBraceExpansion"/>
@@ -735,18 +803,15 @@
         <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="{(?=([-+]?[0-9]+\.\.[-+]?[0-9]+|[a-zA-Z]\.\.[a-zA-Z])(\.\.[-+]?[0-9]+)?\})"/>
       </context>
 
-      <!-- FindPathThenPop consumes path -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPop">
-        <IncludeRules context="FindGlobAndPop"/>
-        <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/>
+      <!-- FindPathThenPopMaybeGlobAny consumes path -->
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="FindPathThenPopMaybeGlobAny" fallthroughContext="#pop!PathThenPop">
+        <IncludeRules context="FindGlobAny"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="["/>
       </context>
       <context attribute="Path" lineEndContext="#pop" name="FindGlobAndPop">
-        <IncludeRules context="FindExtGlobAndPop"/>
-        <AnyChar attribute="Glob" context="PathThenPop" String="?*"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop" name="FindExtGlobAndPop">
         <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="?" char1="("/>
         <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="*" char1="("/>
+        <AnyChar attribute="Glob" context="PathThenPop" String="?*"/>
         <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="+" char1="("/>
         <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="@" char1="("/>
         <Detect2Chars attribute="Glob" context="ExtGlobAndPop" char="!" char1="("/>
@@ -768,8 +833,10 @@
         <DetectChar attribute="Glob" context="#pop" char=")"/>
         <IncludeRules context="FindWord"/>
         <IncludeRules context="IncExtGlob"/>
+        <IncludeRules context="PathThenPopMaybeGlobAny"/>
       </context>
       <context attribute="Path" lineEndContext="#stay" name="IncExtGlob">
+        <DetectIdentifier attribute="Path"/>
         <IncludeRules context="FindExtGlob"/>
         <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
       </context>
@@ -778,15 +845,41 @@
         <IncludeRules context="FindWord"/>
         <IncludeRules context="FindExtGlob"/>
         <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="PathThenPopMaybeGlobAny" char="[" lookAhead="1"/>
         <RegExpr attribute="Path" context="#stay" String="&path;"/>
       </context>
+      <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPopMaybeGlobAny" fallthroughContext="#pop">
+        <IncludeRules context="FindGlobAny"/>
+        <DetectChar attribute="Path" context="#pop" char="["/>
+      </context>
       <context attribute="Path" lineEndContext="#pop" name="PathMaybeBraceExpansion" fallthroughContext="#pop">
         <IncludeRules context="DispatchBraceExpansion"/>
         <DetectChar attribute="Path" context="#pop" char="{"/>
       </context>
 
+      <context attribute="Glob" lineEndContext="#stay" name="FindGlobAny">
+        <RegExpr attribute="Glob" context="GlobAnyFlag" String="\[(?=&next_is_globany;)"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#pop" name="GlobAnyFlag" fallthroughContext="#pop!GlobAny">
+        <DetectChar attribute="Glob" context="#pop!GlobAny" char="^"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#pop" name="GlobAny">
+        <DetectIdentifier attribute="Pattern"/>
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+        <DetectChar attribute="Glob" context="#stay" char="-"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar attribute="Glob" context="#pop" char="]"/>
+        <Detect2Chars attribute="Glob" context="GlobClass" char="[" char1=":"/>
+      </context>
+      <context attribute="Glob" lineEndContext="#pop#pop" name="GlobClass">
+        <DetectIdentifier attribute="Pattern"/>
+        <Detect2Chars attribute="Glob" context="#pop" char=":" char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+
       <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}-->
       <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue">
+        <DetectChar attribute="Variable" char="&amp;"/>
         <Detect2Chars context="#pop!PathThenPopInAlternateValue" char="?" char1="(" lookAhead="1"/>
         <Detect2Chars context="#pop!PathThenPopInAlternateValue" char="*" char1="(" lookAhead="1"/>
         <Detect2Chars context="#pop!PathThenPopInAlternateValue" char="+" char1="(" lookAhead="1"/>
@@ -813,6 +906,7 @@
         <IncludeRules context="FindExtGlobInAlternateValue"/>
       </context>
       <context attribute="Path" lineEndContext="#stay" name="FindExtGlobInAlternateValue">
+        <DetectIdentifier attribute="Path"/>
         <Detect2Chars attribute="Glob" context="RecursiveExtGlobInAlternateValue" char="?" char1="("/>
         <Detect2Chars attribute="Glob" context="RecursiveExtGlobInAlternateValue" char="*" char1="("/>
         <Detect2Chars attribute="Glob" context="RecursiveExtGlobInAlternateValue" char="+" char1="("/>
@@ -836,6 +930,7 @@
         <AnyChar attribute="Glob" context="#stay" String="?*"/>
       </context>
       <context attribute="Pattern" lineEndContext="#stay" name="ExtPattern">
+        <DetectIdentifier attribute="Pattern"/>
         <DetectChar attribute="Glob" context="#stay" char="|"/>
         <IncludeRules context="FindWord"/>
         <DetectChar attribute="Glob" context="#pop" char=")"/>
@@ -918,13 +1013,15 @@
         <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">
         <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">
         <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
@@ -932,11 +1029,13 @@
         <RegExpr attribute="Path" context="PathThenPop" String="&path;"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">
         <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
         <IncludeRules context="FindWord"/>
+        <DetectIdentifier attribute="Normal Text"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="CloseFile" fallthroughContext="#pop">
         <DetectChar attribute="Keyword" context="#pop" char="-"/>
@@ -944,6 +1043,7 @@
 
       <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->
       <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">
+        <RegExpr attribute="Redirection" context="HereDocMLComment" String="^[ &tab;]*&lt;&lt;[ &tab;]*'#([^']+)'$" column="0"/>
         <RegExpr attribute="Redirection" context="HereDocIQ"  String="&lt;&lt;-[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>
         <RegExpr attribute="Redirection" context="HereDocINQ" String="&lt;&lt;-[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/>
         <RegExpr attribute="Redirection" context="HereDocQ"   String="&lt;&lt;[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>
@@ -957,16 +1057,35 @@
         <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;"/><!-- always met -->
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="Command">
-        <IncludeRules context="Start"/>
+      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg">
+        <AnyChar context="BashOneLine" String="&amp;|;`" lookAhead="1"/>
+        <IncludeRules context="CommandArgs"/>
       </context>
 
+      <!-- Highlight the builtin `:` (true) and the followed redirection, then fall into `HereDocMLComment` -->
+      <context attribute="Comment" lineEndContext="#stay" name="PreHereDocMLComment">
+        <DetectChar attribute="Builtin" context="#stay" char=":" column="0"/>
+        <RegExpr attribute="Redirection" context="HereDocMLComment" String="&lt;&lt;[ &tab;]*'#([^']+)'$"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="HereDocMLComment" dynamic="true" fallthroughContext="Comment">
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^#%1$" column="0" dynamic="true"/>
+        <RegExpr attribute="Region Marker" context="RST Documentation" String="^#?\[(=*)\[\.rst:" column="0" beginRegion="RSTDocumentation" />
+        <IncludeRules context="Comment"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true">
+        <RegExpr attribute="Redirection" context="#pop#pop#pop" String="^#BLOCK-COMMENT$" column="0"/>
+        <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" endRegion="RSTDocumentation" />
+        <IncludeRules context="##reStructuredText" />
+      </context>
+
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQ" dynamic="true" fallthroughContext="HereDocText">
         <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="true" column="0"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocQ" />
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="true" fallthroughContext="HereDocText">
@@ -974,33 +1093,40 @@
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocIQ" />
       </context>
 
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="true" fallthroughContext="HereDocText">
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd">
+        <!-- Only if the redirect is before the command, but as this is too complicated,
+             check if the redirect is at the beginning of the line. -->
+        <StringDetect attribute="Redirection" context="BashOneLine" String="%1" dynamic="true" firstNonSpace="1"/>
         <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="true" fallthroughContext="HereDocText">
+        <IncludeRules context="HereDocCmd"/>
         <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocQCmd"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="true" fallthroughContext="HereDocText">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+        <IncludeRules context="HereDocCmd"/>
         <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="true" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="true" column="0"/>
+        <IncludeRules context="HereDocIQCmd"/>
       </context>
 
       <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">
       </context>
 
       <context attribute="Here Doc" lineEndContext="#pop" name="HereDocSubstitutions">
+        <DetectSpaces attribute="Here Doc"/>
+        <DetectIdentifier attribute="Here Doc"/>
         <DetectChar context="HereDocVariables" char="$" lookAhead="1"/>
         <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
         <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
@@ -1086,11 +1212,15 @@
 
       <!-- StringSQ consumes anything till ' -->
       <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
+        <DetectSpaces attribute="String SingleQ"/>
+        <DetectIdentifier attribute="String SingleQ"/>
         <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
       </context>
 
       <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
       <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
+        <DetectSpaces attribute="String DoubleQ"/>
+        <DetectIdentifier attribute="String DoubleQ"/>
         <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;"/>
         <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>
         <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>
@@ -1099,7 +1229,7 @@
       <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">
         <IncludeRules context="DispatchSubstVariables"/>
         <IncludeRules context="DispatchVarnameVariables"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>
+        <DetectChar context="#pop" char="$"/>
       </context>
       <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">
         <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="&quot;"/>
@@ -1107,9 +1237,19 @@
         <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/>
         <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/>
         <LineContinue attribute="String Escape" context="#pop"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="\"/>
+        <DetectChar context="#pop" char="\"/>
       </context>
 
+      <!-- StringTrDQ consumes anything till $", substitutes vars and expressions -->
+      <context attribute="String Transl." lineEndContext="#stay" name="StringTrDQ">
+        <DetectSpaces attribute="String Transl."/>
+        <DetectIdentifier attribute="String Transl."/>
+        <DetectChar attribute="String Transl." context="#pop" char="&quot;"/>
+        <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>
+        <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+      </context>
+
       <!-- RegularBackq consumes anything till ` -->
       <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command">
         <DetectChar attribute="Backquote" context="#pop" char="`"/>
@@ -1117,10 +1257,12 @@
         <IncludeRules context="Start"/>
       </context>
 
-      <!-- StringEsc eats till ', but escaping many characters -->
+      <!-- StringEsc eats till ', but escaping many characters in $'...' -->
       <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">
+        <DetectSpaces attribute="String SingleQ"/>
+        <DetectIdentifier attribute="String SingleQ"/>
         <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
-        <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abefnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)"/>
+        <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abeEfnrtv\\'&quot;?]|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|u[A-Fa-f0-9]{1,4}|U[A-Fa-f0-9]{1,8}|c.)"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">
@@ -1146,15 +1288,29 @@
       </context>
 
       <!-- VarBraceStart is called as soon as ${ is encoutered -->
-      <context attribute="Variable" lineEndContext="#pop!VarBrace" name="VarBraceStart" fallthroughContext="#pop!VarBrace">
+      <context attribute="Variable" lineEndContext="#pop!SubstBraceCommand" name="VarBraceStart" fallthroughContext="#pop!VarBrace">
+        <!-- '${!}' as process ID variable, not a Parameter Expansion -->
+        <StringDetect context="#pop!VarBrace" String="!}" lookAhead="1"/>
         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBracePrefix" char="!"/>
         <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBrace" char="#"/>
+        <!-- Bash-5.3: ${ cmd; } -->
+        <DetectSpaces attribute="Normal Text" context="#pop!SubstBraceCommand"/>
+        <!-- Bash-5.3: ${|cmd;} -->
+        <DetectChar attribute="Control" context="#pop!SubstBraceCommand" char="|"/>
       </context>
 
+      <!-- SubstBraceCommand is called after a '${ ' are '${|' are encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstBraceCommand" fallthroughContext="Command">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <IncludeRules context="Start"/>
+      </context>
+
       <!-- VarBracePrefix called as soon as ${! is encoutered -->
       <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefix">
         <DetectIdentifier attribute="Variable" context="#pop!VarBracePrefixSuffix"/>
         <Int attribute="Variable" context="#pop!VarBracePrefixSuffix"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarBracePrefixSharp" String="@*#"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
       </context>
       <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSuffix" fallthroughContext="#pop!VarError">
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
@@ -1162,16 +1318,20 @@
         <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>
         <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>
       </context>
+      <context attribute="Variable" lineEndContext="#pop" name="VarBracePrefixSharp" fallthroughContext="#pop!VarError">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <DetectChar attribute="Parameter Expansion Operator" char="#"/>
+      </context>
 
       <!-- VarBrace is called as soon as ${ or ${# are encoutered -->
       <context attribute="Variable" lineEndContext="#stay" name="VarBrace" fallthroughContext="#pop!VarError">
-        <DetectChar attribute="Variable" context="#pop" char="}"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
         <DetectIdentifier attribute="Variable" context="#pop!CheckVarAlt"/>
         <AnyChar attribute="Variable" context="#pop!CheckVarAlt" String="*@?$!-"/>
         <Int attribute="Variable" context="#pop!CheckVarAlt" additionalDeliminator=":#%^,/@{}"/>
       </context>
       <context attribute="Error" lineEndContext="#stay" name="VarError">
-        <DetectChar attribute="Variable" context="#pop" char="}"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="CheckVarAlt" fallthroughContext="#pop!VarError">
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
@@ -1195,7 +1355,7 @@
 
       <!-- called as soon as ${xxx: is encoutered -->
       <context attribute="Normal Text" lineEndContext="#stay" name="VarSub">
-        <DetectChar attribute="Variable" context="#pop" char="}"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
         <!-- <Int> doesn't match :3 because : is a weakDeliminator -->
         <AnyChar attribute="Decimal" String="0123456789"/>
         <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>
@@ -1214,6 +1374,7 @@
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
         <IncludeRules context="FindWord"/>
         <IncludeRules context="FindPathThenPopInAlternateValue"/>
+        <DetectIdentifier attribute="Normal Text"/>
       </context>
 
       <!-- called as soon as ${xxx^ are ${xxx, are encoutered -->
@@ -1221,6 +1382,7 @@
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
         <IncludeRules context="FindWord"/>
         <IncludeRules context="FindPattern"/>
+        <DetectIdentifier attribute="Pattern"/>
       </context>
 
       <!-- called as soon as ${xxx/ is encoutered -->
@@ -1235,7 +1397,7 @@
       <!-- called as soon as ${xxx@ is encoutered -->
       <context attribute="Normal Text" lineEndContext="#stay" name="VarTransformation" fallthroughContext="#pop!VarError">
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <AnyChar attribute="Parameter Expansion" context="#stay" String="QEPAa"/>
+        <AnyChar attribute="Parameter Expansion" context="#stay" String="UuLQEPAKak"/>
       </context>
 
       <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">
@@ -1250,6 +1412,7 @@
         <DetectChar context="BraceExpansionVariables" char="$" lookAhead="1"/>
         <IncludeRules context="FindStrings"/>
         <IncludeRules context="FindPattern"/>
+        <DetectIdentifier attribute="Escape"/>
       </context>
       <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">
         <IncludeRules context="DispatchBraceExpansion"/>
@@ -1305,27 +1468,17 @@
       </context>
 
       <context attribute="Decimal" lineEndContext="#pop" name="Number">
-        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>
-        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>
-        <DetectChar context="#pop!Octal" char="0" lookAhead="1"/>
+        <HlCHex attribute="Hex" context="#pop" additionalDeliminator="&weakDeliminatorSymbols;"/>
+        <HlCOct attribute="Octal" context="#pop!NumberError" additionalDeliminator="&weakDeliminatorSymbols;"/>
         <RegExpr attribute="Base" context="#pop!BaseN" String="[1-9][0-9]*#"/>
-        <AnyChar attribute="Decimal" context="#pop!Decimal" String="123456789"/>
-      </context>
-      <context attribute="Octal" lineEndContext="#pop" name="Octal" fallthroughContext="#pop!Decimal">
-        <RegExpr attribute="Octal" context="#pop!NumberError" String="0[0-7]+"/>
-        <DetectChar attribute="Decimal" context="#pop" char="0"/>
-      </context>
-      <context attribute="Decimal" lineEndContext="#pop" name="Decimal" fallthroughContext="#pop">
-        <AnyChar attribute="Decimal" context="#stay" String="0123456789"/>
-      </context>
-      <context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop">
-        <RegExpr attribute="Hex" context="#pop" String="[0-9a-fA-F]+"/>
+        <DetectChar attribute="Decimal" context="#pop!NumberError" char="0"/>
+        <Int attribute="Decimal" context="#pop" additionalDeliminator="&weakDeliminatorSymbols;"/>
       </context>
       <context attribute="BaseN" lineEndContext="#pop" name="BaseN" fallthroughContext="#pop">
         <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>
       </context>
       <context attribute="Error" lineEndContext="#pop" name="NumberError" fallthroughContext="#pop">
-        <AnyChar attribute="Error" context="#stay" String="8901234567"/>
+        <Int attribute="Error" context="#pop" additionalDeliminator="0123456789"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubstOrSubstCommand">
@@ -1335,7 +1488,7 @@
       <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
         <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression"/>
+        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=")" char1=")" endRegion="expression"/>
         <IncludeRules context="FindExprDblParen"/>
         <!-- $((cmd
               ) # jump to SubstCommand context -->
@@ -1368,17 +1521,22 @@
         <AnyChar context="#pop" String=" &tab;" lookAhead="1"/>
         <IncludeRules context="FindWord"/>
         <DetectChar context="NormalMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <IncludeRules context="FindPathThenPop"/>
-        <IncludeRules context="FindNormalTextOption"/>
+        <IncludeRules context="FindNormalText"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="ExprBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="#pop!ExprBracketParam2_Value">
+        <LineContinue attribute="Escape" context="SkipSpaces"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2_Value" fallthroughContext="ExprBracketValue">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/>
         <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/>
         <IncludeRules context="FindExprBracketEnd"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="ExprBracketValue">
+      <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="#pop!ExprBracketParam3_Value">
+        <LineContinue attribute="Escape" context="SkipSpaces"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3_Value" fallthroughContext="ExprBracketValue">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/>
         <IncludeRules context="FindExprBracketEnd"/>
       </context>
@@ -1386,6 +1544,7 @@
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketFinal" fallthroughContext="ExprBracketValue">
         <DetectSpaces attribute="Normal Text" context="#stay"/>
         <IncludeRules context="FindExprBracketEnd"/>
+        <RegExpr attribute="Expression" context="#pop!ExprBracket" String="-[ao]&eos;"/>
         <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\][^ &tab;])++" endRegion="expression"/>
       </context>
 
@@ -1395,16 +1554,21 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">
-        <RegExpr attribute="Expression" context="#pop" String="-[abcdefghkprstuwxGLNOSovRnz](?=[ &tab;])"/>
+        <RegExpr attribute="Expression" context="#pop#pop!ExprBracketParam2" String="&unary_operators;"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!ExprBracketValue">
-        <RegExpr attribute="Expression" context="#pop" String="(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=[ &tab;])"/>
+        <RegExpr attribute="Expression" context="#pop" String="&binary_operators;"/>
       </context>
 
+      <context attribute="Normal Text" lineEndContext="#pop" name="SkipSpaces" fallthroughContext="#pop">
+        <DetectSpaces context="#pop"/>
+      </context>
 
-      <!-- ExprDblBracket consumes an expression till ]] -->
+
+      <!-- ExprDblBracket consumes an expression till ]] in [[ ... ]] -->
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot">
         <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
       </context>
 
@@ -1416,28 +1580,88 @@
         <RegExpr attribute="Expression" context="#pop" String="!(?=$|[ &tab;(])"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="ExprDblBracketValueText">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>
         <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/>
         <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValue">
-        <IncludeRules context="TestMaybeUnary"/>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValueText">
+        <RegExpr attribute="Expression" context="#pop!ExprDblBracketUnary" String="&unary_operators;(?!\s+(?:=~|&binary_operators;))"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketUnary">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketValueText"/>
+      </context>
 
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText" fallthroughContext="#pop!ExprDblBracketValueText2">
+        <Detect2Chars context="#pop!ExprDblBracketValueTextMaybeEnd" char="]" char1="]" lookAhead="1"/>
+        <DetectChar attribute="Error" context="#pop!Comment" char="#"/>
+        <IncludeRules context="FindExprDblBracketValueTextPath"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindExprDblBracketValueTextPath">
+        <RegExpr context="#pop!ExprDblBracketValueTextPath" String="&path_with_sep;|" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeEnd">
+        <RegExpr attribute="Keyword" context="#pop#pop" String="&dblbracket_close;" endRegion="expression"/>
+        <IncludeRules context="FindExprDblBracketValueTextPath"/>
+        <Detect2Chars context="#pop!ExprDblBracketValueText2" char="]" char1="]" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText2">
+        <DetectIdentifier/>
+        <AnyChar String="*?+!@~^:%+-/,"/>
+        <IncludeRules context="ExprDblBracketValueCommon"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="ExprDblBracketValueTextPath">
+        <IncludeRules context="ExprDblBracketValueText2"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern" fallthroughContext="#pop!ExprDblBracketValuePattern2">
+        <RegExpr context="PathThenPop" String="&path_with_sep;|" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern2">
+        <DetectIdentifier attribute="Normal Text"/>
+        <IncludeRules context="ExprDblBracketValueCommon"/>
+        <IncludeRules context="FindExprDblBracketValueExtGlob"/>
+        <AnyChar attribute="Glob" String="?*"/>
+      </context>
+      <context attribute="Glob" lineEndContext="#stay" name="FindExprDblBracketValueExtGlob">
+        <Detect2Chars attribute="Glob" context="ExprDblBracketValueExtGlob" char="?" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExprDblBracketValueExtGlob" char="*" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExprDblBracketValueExtGlob" char="+" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExprDblBracketValueExtGlob" char="@" char1="("/>
+        <Detect2Chars attribute="Glob" context="ExprDblBracketValueExtGlob" char="!" char1="("/>
+        <DetectChar context="ExprDblBracketValueMaybeGlobAny" char="[" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketValueMaybeGlobAny" fallthroughContext="#pop">
+        <IncludeRules context="FindGlobAny"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="["/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="ExprDblBracketValueExtGlob">
+        <DetectIdentifier attribute="Normal Text"/>
+        <DetectChar attribute="Glob" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="ExprDblBracketValueExtGlobNormal" char="("/>
+        <IncludeRules context="FindExprDblBracketValueExtGlob"/>
+        <AnyChar attribute="Glob" String="|?*"/>
+        <IncludeRules context="FindWord"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="ExprDblBracketValueExtGlobNormal">
+        <DetectIdentifier attribute="Normal Text"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="ExprDblBracketValueExtGlobNormal" char="("/>
+        <IncludeRules context="FindExprDblBracketValueExtGlob"/>
+        <AnyChar attribute="Glob" String="?*"/>
+        <IncludeRules context="FindWord"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueCommon">
         <Detect2Chars context="ExprDblBracketDblParentOrSubValue" char="(" char1="(" lookAhead="1"/>
         <DetectChar context="ExprDblBracketSubValue" char="(" lookAhead="1"/>
         <DetectChar attribute="Operator" context="#pop#pop" char=")"/>
         <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
         <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>
-        <AnyChar attribute="Error" context="#stay" String="|&amp;;)"/>
+        <AnyChar attribute="Error" context="#stay" String="|&amp;;"/>
         <AnyChar context="#pop" String=" &tab;&lt;>" lookAhead="1"/>
         <IncludeRules context="FindWord"/>
-        <DetectChar context="NormalMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <IncludeRules context="FindPathThenPop"/>
-        <IncludeRules context="FindNormalTextOption"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketSubValue" fallthroughContext="#pop">
         <DetectChar attribute="Operator" context="ExprDblBracketNot" char="("/>
@@ -1452,34 +1676,44 @@
         <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression"/>
         <IncludeRules context="FindExprDblParen"/>
         <!-- ((cmd
-              ) # jump to ExprDblBracketValue context -->
-        <DetectChar attribute="Operator" context="ExprDblBracketValue" char=")" endRegion="expression" beginRegion="subshell"/>
+              ) # jump to ExprDblBracketValuePattern context -->
+        <DetectChar attribute="Operator" context="ExprDblBracketValuePattern" char=")" endRegion="expression" beginRegion="subshell"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_Value">
+        <LineContinue attribute="Escape" context="SkipSpaces"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_Value" fallthroughContext="ExprDblBracketValuePattern">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
         <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/>
         <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValuePattern">
         <IncludeRules context="TestMaybeBinary"/>
-        <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~(?=[ &tab;(])"/>
+        <RegExpr attribute="Expression" context="#pop!ExprDblBracketRegex" String="=~(?=[ &tab;(])"/>
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_Value">
+        <LineContinue attribute="Escape" context="SkipSpaces"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3_Value" fallthroughContext="ExprDblBracketValuePattern">
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
         <AnyChar attribute="Error" context="#stay" String="&lt;>"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="ExprDblBracketValue">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="ExprDblBracketValuePattern">
         <DetectSpaces attribute="Normal Text" context="#stay"/>
         <IncludeRules context="FindExprDblBracketEnd"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <DetectChar attribute="Operator" context="#pop" char=")"/>
         <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\](?:[^]]|\][^ &tab;]))++" endRegion="expression"/>
       </context>
 
@@ -1487,13 +1721,17 @@
         <LineContinue attribute="Escape" context="#stay"/>
         <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
         <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/>
-        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&amp;)]))" endRegion="expression"/>
+        <RegExpr attribute="Keyword" context="#pop" String="&dblbracket_close;" endRegion="expression"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex">
-        <DetectSpaces attribute="Normal Text" context="#pop!Regex"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex" fallthroughContext="#pop!ExprDblBracketRegexCheck">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketRegexCheck"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketRegexCheck" fallthroughContext="#pop#pop!Regex">
+        <DetectChar attribute="Error" context="Comment" char="#"/>
+      </context>
       <context attribute="Pattern" lineEndContext="#stay" name="Regex">
+        <DetectIdentifier attribute="Pattern"/>
         <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
         <DetectChar attribute="Operator" context="#pop" char=")"/>
         <Detect2Chars attribute="Operator" context="RegexChar" char="[" char1="^"/>
@@ -1501,6 +1739,7 @@
         <IncludeRules context="FindRegex"/>
       </context>
       <context attribute="Pattern" lineEndContext="#stay" name="ExprDblBracketSubRegex">
+        <DetectIdentifier attribute="Pattern"/>
         <DetectSpaces attribute="Pattern" context="#stay"/>
         <DetectChar attribute="Operator" context="#pop" char=")"/>
         <Detect2Chars attribute="Operator" context="RegexSubChar" char="[" char1="^"/>
@@ -1527,7 +1766,7 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" name="RegexDup">
-        <AnyChar attribute="Decimal" context="#stay" String="0123456789"/>
+        <Int attribute="Decimal" additionalDeliminator="{"/>
         <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=","/>
         <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
       </context>
@@ -1550,6 +1789,7 @@
         <DetectChar context="RegexCharClassSelect" char="[" lookAhead="1"/>
         <DetectChar attribute="Operator" context="#pop" char="]"/>
         <AnyChar context="#pop" String="() &tab;" lookAhead="1"/>
+        <IncludeRules context="FindStrings"/>
       </context>
       <context attribute="Operator" lineEndContext="#stay" name="RegexInCharEnd">
         <DetectChar attribute="Pattern" context="#stay" char="-"/>
@@ -1563,19 +1803,22 @@
       </context>
 
       <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClass">
+        <DetectIdentifier attribute="Parameter Expansion"/>
         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char=":" char1="]"/>
         <DetectChar attribute="Error" context="#pop" char="]"/>
       </context>
       <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCollatingSymbols">
+        <DetectIdentifier attribute="Parameter Expansion"/>
         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="." char1="]"/>
         <DetectChar attribute="Error" context="#pop" char="]"/>
       </context>
       <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexEquivalenceClass">
+        <DetectIdentifier attribute="Parameter Expansion"/>
         <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="=" char1="]"/>
         <DetectChar attribute="Error" context="#pop" char="]"/>
       </context>
 
-      <!-- SubShell consumes shell input till ) -->
+      <!-- SubShell consumes shell input till ) in (...) -->
       <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command">
         <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/>
         <IncludeRules context="Start"/>
@@ -1590,7 +1833,7 @@
         <IncludeRules context="NormalOption"/>
       </context>
 
-      <!-- AssignArray consumes everything till ), marking assignments -->
+      <!-- AssignArray consumes everything till ) in var=(...), marking assignments -->
       <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">
         <DetectSpaces attribute="Normal Text" context="#stay"/>
         <DetectChar attribute="Comment" context="Comment" char="#"/>
@@ -1609,12 +1852,13 @@
         <IncludeRules context="Start"/>
       </context>
 
-      <!-- Subscript consumes anything till ], marks as Variable -->
+      <!-- Subscript consumes anything till ] in [ ... ], marks as Variable -->
       <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="#pop!Subscript2">
         <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
         <AnyChar attribute="Decimal" context="#stay" String="0123456789"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="Subscript2">
+        <DetectIdentifier attribute="Normal Text"/>
         <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
         <IncludeRules context="FindWord"/>
         <IncludeRules context="FindPattern"/>
@@ -1665,43 +1909,46 @@
     <itemDatas>
       <itemData name="Normal Text"    defStyleNum="dsNormal"/>
       <itemData name="Comment"        defStyleNum="dsComment"/>
-      <itemData name="Keyword"        defStyleNum="dsKeyword"/>
-      <itemData name="Control"        defStyleNum="dsKeyword"/>
-      <itemData name="Control Flow"   defStyleNum="dsControlFlow"/>
-      <itemData name="Builtin"        defStyleNum="dsBuiltIn"/>
-      <itemData name="Command"        defStyleNum="dsFunction"/>
-      <itemData name="OtherCommand"   defStyleNum="dsExtension"/>
-      <itemData name="Redirection"    defStyleNum="dsOperator"/>
-      <itemData name="Escape"         defStyleNum="dsDataType"/>
+      <itemData name="Keyword"        defStyleNum="dsKeyword"       spellChecking="false"/>
+      <itemData name="Control"        defStyleNum="dsKeyword"       spellChecking="false"/>
+      <itemData name="Control Flow"   defStyleNum="dsControlFlow"   spellChecking="false"/>
+      <itemData name="Builtin"        defStyleNum="dsBuiltIn"       spellChecking="false"/>
+      <itemData name="Command"        defStyleNum="dsFunction"      spellChecking="false"/>
+      <itemData name="OtherCommand"   defStyleNum="dsExtension"     spellChecking="false"/>
+      <itemData name="Redirection"    defStyleNum="dsOperator"      spellChecking="false"/>
+      <itemData name="Escape"         defStyleNum="dsDataType"      spellChecking="false"/>
       <itemData name="String SingleQ" defStyleNum="dsString"/>
       <itemData name="String DoubleQ" defStyleNum="dsString"/>
       <itemData name="Here Doc"       defStyleNum="dsString"/>
-      <itemData name="Backquote"      defStyleNum="dsKeyword"/>
+      <itemData name="Backquote"      defStyleNum="dsKeyword"       spellChecking="false"/>
       <itemData name="String Transl." defStyleNum="dsString"/>
       <itemData name="String Escape"  defStyleNum="dsDataType"/>
-      <itemData name="Variable"       defStyleNum="dsVariable"/>
-      <itemData name="Expression"     defStyleNum="dsOthers"/>
-      <itemData name="Function"       defStyleNum="dsFunction"/>
-      <itemData name="Pattern"        defStyleNum="dsSpecialString"/>
-      <itemData name="Path"           defStyleNum="dsNormal"/>
-      <itemData name="Glob"           defStyleNum="dsPreprocessor"/>
-      <itemData name="Option"         defStyleNum="dsAttribute"/>
-      <itemData name="Hex"            defStyleNum="dsBaseN"/>
-      <itemData name="Octal"          defStyleNum="dsBaseN"/>
-      <itemData name="Decimal"        defStyleNum="dsDecVal"/>
-      <itemData name="Base"           defStyleNum="dsDataType"/>
-      <itemData name="BaseN"          defStyleNum="dsBaseN"/>
-      <itemData name="File Descriptor" defStyleNum="dsDecVal"/>
-      <itemData name="Parameter Expansion" defStyleNum="dsVariable"/>
-      <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator"/>
-      <itemData name="Operator"       defStyleNum="dsOperator"/>
-      <itemData name="Error"          defStyleNum="dsError"/>
+      <itemData name="Variable"       defStyleNum="dsVariable"      spellChecking="false"/>
+      <itemData name="Dollar Prefix"  defStyleNum="dsVariable"      spellChecking="false"/>
+      <itemData name="Expression"     defStyleNum="dsOthers"        spellChecking="false"/>
+      <itemData name="Function"       defStyleNum="dsFunction"      spellChecking="false"/>
+      <itemData name="Pattern"        defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="Path"           defStyleNum="dsNormal"        spellChecking="false"/>
+      <itemData name="Glob"           defStyleNum="dsPreprocessor"  spellChecking="false"/>
+      <itemData name="Option"         defStyleNum="dsAttribute"     spellChecking="false"/>
+      <itemData name="Hex"            defStyleNum="dsBaseN"         spellChecking="false"/>
+      <itemData name="Octal"          defStyleNum="dsBaseN"         spellChecking="false"/>
+      <itemData name="Decimal"        defStyleNum="dsDecVal"        spellChecking="false"/>
+      <itemData name="Base"           defStyleNum="dsDataType"      spellChecking="false"/>
+      <itemData name="BaseN"          defStyleNum="dsBaseN"         spellChecking="false"/>
+      <itemData name="File Descriptor" defStyleNum="dsDecVal"       spellChecking="false"/>
+      <itemData name="Parameter Expansion" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Operator"       defStyleNum="dsOperator"      spellChecking="false"/>
+      <itemData name="Error"          defStyleNum="dsError"         spellChecking="false"/>
+      <itemData name="Region Marker"  defStyleNum="dsRegionMarker"  spellChecking="false" />
     </itemDatas>
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="#"/>
+      <comment name="singleLine" start="#" position="afterwhitespace"/>
     </comments>
-    <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-/" additionalDeliminator="`"/>
+    <keywords casesensitive="1" weakDeliminator="_&weakDeliminatorSymbols;" additionalDeliminator="`"/>
   </general>
 </language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/bibtex.xml b/xml/bibtex.xml
--- a/xml/bibtex.xml
+++ b/xml/bibtex.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 	  [
 	  <!ENTITY stringVariable   "[a-zA-Z0-9\-]+">
 	  <!ENTITY fieldFormat    	"[a-zA-Z0-9\-_\.]+">
diff --git a/xml/c.xml b/xml/c.xml
--- a/xml/c.xml
+++ b/xml/c.xml
@@ -1,16 +1,21 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-    <!ENTITY int "(?:[0-9]++)">
-    <!ENTITY hex_int "(?:[0-9A-Fa-f]++)">
+    <!ENTITY int "(?:[0-9](?:'?[0-9]++)*+)">
+    <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]++)*+)">
     <!ENTITY exp_float "(?:[eE][+-]?&int;)">
     <!ENTITY exp_hexfloat "(?:[pP][-+]?&int;)">
 
+    <!ENTITY symbols ":!&#37;&amp;()+,-/.*&lt;=&gt;?[]|~^;">
+
+    <!-- printf-like format strings conversion specifiers -->
+    <!ENTITY printf_like "&#37;[-+ #0]*+(?:[0-9]++|\*)?(?:\.(?:[0-9]++|\*))?(?:(?:hh|ll|[hljzt]|wf?(?:8|16|32|64))?[dioxXubn]|(?:DD|[lLHD])?[fFeEaAgG]|l?[cs]|[p&#37;])">
+
     <!ENTITY ispphash "(?:#|&#37;\:|\?\?=)">
     <!ENTITY pphash "&ispphash;\s*">
 ]>
 <language name="C" section="Sources"
-          version="14" kateversion="5.0"
+          version="19" kateversion="5.79"
           indenter="cstyle"
           extensions="*.c;*.C;*.h"
           mimetype="text/x-csrc;text/x-c++src;text/x-chdr"
@@ -38,13 +43,24 @@
       <item>switch</item>
       <item>while</item>
     </list>
+
     <list name="keywords">
+      <item>alignas</item> <!-- C23 -->
+      <item>alignof</item> <!-- C23 -->
+      <item>auto</item>
+      <item>constexpr</item> <!-- C23 -->
       <item>enum</item>
       <item>extern</item>
+      <item>false</item> <!-- C23 -->
       <item>inline</item>
+      <item>nullptr</item> <!-- C23 -->
       <item>sizeof</item>
+      <item>static_assert</item> <!-- C23 -->
       <item>struct</item>
+      <item>true</item> <!-- C23 -->
       <item>typedef</item>
+      <item>typeof</item> <!-- C23 -->
+      <item>typeof_unqual</item> <!-- C23 -->
       <item>union</item>
       <item>_Alignas</item>
       <item>_Alignof</item>
@@ -53,22 +69,31 @@
       <item>_Static_assert</item>
       <item>_Thread_local</item>
     </list>
+
+    <!-- https://en.cppreference.com/w/c/language/attributes -->
+    <list name="attributes">
+      <item>noreturn</item>
+      <item>deprecated</item>
+      <item>fallthrough</item>
+      <item>nodiscard</item>
+      <item>maybe_unused</item>
+      <item>unsequenced</item>
+      <item>reproducible</item>
+    </list>
+
     <list name="types">
-      <item>auto</item>
+      <item>bool</item> <!-- C23 -->
       <item>char</item>
-      <item>const</item>
+      <item>char16_t</item>
+      <item>char32_t</item>
       <item>double</item>
       <item>float</item>
       <item>int</item>
       <item>long</item>
-      <item>register</item>
-      <item>restrict</item>
       <item>short</item>
       <item>signed</item>
-      <item>static</item>
       <item>unsigned</item>
       <item>void</item>
-      <item>volatile</item>
       <item>int8_t</item>
       <item>int16_t</item>
       <item>int32_t</item>
@@ -103,8 +128,11 @@
       <item>ptrdiff_t</item>
       <item>sig_atomic_t</item>
       <item>wint_t</item>
+      <item>_BitInt</item> <!-- C23 -->
       <item>_Bool</item>
-      <item>bool</item>
+      <item>_Decimal32</item> <!-- C23 -->
+      <item>_Decimal64</item> <!-- C23 -->
+      <item>_Decimal128</item> <!-- C23 -->
       <item>_Complex</item>
       <item>complex</item>
       <item>_Imaginary</item>
@@ -115,42 +143,187 @@
       <item>fpos_t</item>
       <item>time_t</item>
       <item>max_align_t</item>
+
+      <!-- modifiers -->
+      <item>const</item>
+      <item>register</item>
+      <item>restrict</item>
+      <item>static</item>
+      <item>thread_local</item> <!-- C23 -->
+      <item>volatile</item>
     </list>
+
+    <list name="preprocessor">
+      <item>if</item>
+      <item>ifdef</item>
+      <item>ifndef</item>
+      <item>elif</item>
+      <item>elifdef</item> <!-- C23 -->
+      <item>elifndef</item> <!-- C23 -->
+      <item>else</item>
+      <item>endif</item>
+      <item>define</item>
+      <item>include</item>
+      <item>error</item>
+      <item>line</item>
+      <item>pragma</item>
+      <item>undef</item>
+      <item>warning</item>
+      <item>embed</item>
+    </list>
+
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces />
-        <RegExpr attribute="Preprocessor" context="Outscoped" String="&pphash;if\s+0\s*$" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr context="AfterHash" String="&ispphash;" firstNonSpace="true" lookAhead="true" />
-        <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
-        <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <!-- Match symbols (partial for fast path) -->
+        <AnyChar attribute="Symbol" context="#stay" String=":()]+-*=&gt;!|&amp;~^,;" />
+
+        <IncludeRules context="match keywords" />
+        <AnyChar context="SelectString" String="UuL&quot;'" lookAhead="1"/>
         <DetectIdentifier />
+
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
         <Detect2Chars attribute="Symbol" context="#stay" char="&lt;" char1="%" beginRegion="Brace1" /> <!-- Digraph: { -->
         <Detect2Chars attribute="Symbol" context="#stay" char="%" char1="&gt;" endRegion="Brace1" /> <!-- Digraph: } -->
 
+        <!-- Detect attributes -->
+        <Detect2Chars attribute="Symbol" context="Attribute" char="[" char1="[" />
+        <StringDetect attribute="Symbol" context="Attribute" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
+
         <!-- Match numbers -->
-        <RegExpr attribute="Decimal" context="Number" String="\.?[0-9]" lookAhead="true" />
+        <RegExpr context="Number" String="\.?[0-9]" lookAhead="1" />
 
-        <HlCChar attribute="Char" context="#stay"/>
-        <DetectChar attribute="String" context="String" char="&quot;"/>
         <IncludeRules context="FindComments" />
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
+        <RegExpr context="AfterHash" String="&ispphash;|" firstNonSpace="1" lookAhead="1" />
+        <AnyChar attribute="Symbol" context="#stay" String="&symbols;"/>
       </context>
 
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <LineContinue attribute="String" context="#stay"/>
-        <HlCStringChar attribute="String Char" context="#stay"/>
-        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      <context name="match keywords" attribute="Normal Text" lineEndContext="#pop">
+        <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
       </context>
 
+
+      <context name="SelectStringPP" attribute="Preprocessor" lineEndContext="#pop">
+        <IncludeRules context="SelectString"/>
+      </context>
+      <context name="SelectString" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String8" char="&quot;"/>
+        <DetectChar attribute="Char" context="#pop!Char8" char="'"/>
+        <Detect2Chars context="#pop!SelectStringPrefix" char="U" char1="&quot;" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectStringPrefix" char="u" char1="&quot;" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectStringPrefix" char="L" char1="&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!SelectStringPrefix" String="u8&quot;" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectCharPrefix" char="U" char1="'" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectCharPrefix" char="u" char1="'" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectCharPrefix" char="L" char1="'" lookAhead="1"/>
+        <StringDetect context="#pop!SelectCharPrefix" String="u8'" lookAhead="1"/>
+
+        <!-- match identifier -->
+        <keyword attribute="Data Type" context="#pop" String="types"/>
+        <DetectIdentifier context="#pop"/>
+      </context>
+
+
+      <context name="SelectStringPrefix" attribute="String" lineEndContext="#pop">
+        <Detect2Chars attribute="String Literal Prefix" context="#pop!StringPrefix8" char="u" char1="8"/>
+        <AnyChar attribute="String Literal Prefix" context="#pop!StringPrefix16" String="uL"/>
+        <DetectChar attribute="String Literal Prefix" context="#pop!StringPrefix32" char="U"/>
+      </context>
+      <context name="StringPrefix8" attribute="String" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String8" char="&quot;"/>
+      </context>
+      <context name="StringPrefix16" attribute="String" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String16" char="&quot;"/>
+      </context>
+      <context name="StringPrefix32" attribute="String" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String32" char="&quot;"/>
+      </context>
+
+      <context name="SelectCharPrefix" attribute="String" lineEndContext="#pop">
+        <Detect2Chars attribute="Char Literal Prefix" context="#pop!CharPrefix8" char="u" char1="8"/>
+        <AnyChar attribute="Char Literal Prefix" context="#pop!CharPrefix16" String="uL"/>
+        <DetectChar attribute="Char Literal Prefix" context="#pop!CharPrefix32" char="U"/>
+      </context>
+      <context name="CharPrefix8" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="#pop!Char8" char="'"/>
+      </context>
+      <context name="CharPrefix16" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="#pop!Char16" char="'"/>
+      </context>
+      <context name="CharPrefix32" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="#pop!Char32" char="'"/>
+      </context>
+
+
+      <context name="String8" attribute="String" lineEndContext="#pop">
+        <IncludeRules context="string normal char" />
+        <Detect2Chars context="String8EscapeX" char="\" char1="x" lookAhead="1"/>
+        <IncludeRules context="string special char" />
+      </context>
+      <context name="String8EscapeX" attribute="String" lineEndContext="#pop">
+        <HlCStringChar attribute="String Char" context="#pop!StringNoHex"/>
+        <Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
+      </context>
+
+      <context name="String16" attribute="String" lineEndContext="#pop">
+        <IncludeRules context="string normal char" />
+        <Detect2Chars context="String16EscapeX" char="\" char1="x" lookAhead="1"/>
+        <IncludeRules context="string special char" />
+      </context>
+      <context name="String16EscapeX" attribute="String" lineEndContext="#pop">
+        <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,4}" />
+        <Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
+      </context>
+
+      <context name="String32" attribute="String" lineEndContext="#pop">
+        <IncludeRules context="string normal char" />
+        <Detect2Chars context="String32EscapeX" char="\" char1="x" lookAhead="1"/>
+        <IncludeRules context="string special char" />
+      </context>
+      <context name="String32EscapeX" attribute="String" lineEndContext="#pop">
+        <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,8}" />
+        <Detect2Chars context="#pop" attribute="Error" char="\" char1="x"/>
+      </context>
+
+      <context name="StringNoHex" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Error" context="#pop" String="[0-9A-Fa-f]{1,}" />
+      </context>
+
+
+      <context name="Char8" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
+        <HlCStringChar attribute="String Char" context="CharClose"/>
+        <IncludeRules context="FindSingleChar"/>
+      </context>
+
+      <context name="Char16" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
+        <RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4})|" />
+        <IncludeRules context="FindSingleChar"/>
+      </context>
+
+      <context name="Char32" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
+        <RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,8}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|" />
+        <IncludeRules context="FindSingleChar"/>
+      </context>
+
+
+      <context name="FindSingleChar" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Error" context="#pop" char="'" />
+        <RegExpr attribute="Char" context="CharClose" String="." />
+      </context>
+      <context name="CharClose" attribute="Error" lineEndContext="#pop#pop">
+        <DetectChar attribute="Char" context="#pop#pop" char="'" />
+      </context>
+
+
       <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
         <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true" />
         <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
       </context>
 
-      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
         <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
         <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
         <IncludeRules context="##Doxygen" />
@@ -171,93 +344,194 @@
         <IncludeRules context="##Comments" />
       </context>
 
-      <context attribute="Error" lineEndContext="#pop" name="AfterHash">
-        <RegExpr attribute="Preprocessor" context="Include" String="&pphash;(?:include|include_next)" insensitive="true" firstNonSpace="true" />
 
-        <!-- define, elif, else, endif, error, if, ifdef, ifndef, line, pragma, undef, warning -->
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="Define" String="&pphash;define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+      <context name="string special char" attribute="String" lineEndContext="#pop">
+        <HlCStringChar attribute="String Char"/>
+        <RegExpr attribute="String Char" String="\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|&printf_like;"/>
+        <DetectChar attribute="String" char="%"/>
+        <RegExpr attribute="Error" String="\\(?:u[^&quot;]{0,3}|U[^&quot;]{0,7}|.)"/>
+        <LineContinue attribute="Symbol"/>
+      </context>
 
+      <context name="string normal char" attribute="String" lineEndContext="#pop">
+        <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->
+        <!-- % -> printf format -->
+        <RegExpr attribute="String" context="#stay" String="[^%\\&quot;]+" />
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+      </context>
+
+
+      <context attribute="Error" lineEndContext="#pop" name="AfterHash" fallthroughContext="#pop!LineError">
+        <RegExpr attribute="Preprocessor" context="#pop!PreprocessorCmd" String="&pphash;(?=.)|" firstNonSpace="true" />
+      </context>
+
+      <context name="LineError" attribute="Error" lineEndContext="#pop">
+        <LineContinue attribute="Error" context="#stay" />
+        <RegExpr attribute="Error" context="#stay" String="[^\\]+" />
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="PreprocessorCmd" fallthroughContext="#pop!LineError">
+        <WordDetect attribute="Preprocessor" context="#pop!Include" String="include" insensitive="true" />
+
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="ifdef" beginRegion="PP" lookAhead="true" insensitive="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="ifndef" beginRegion="PP" lookAhead="true" insensitive="true" />
+        <RegExpr attribute="Preprocessor" context="#pop!Outscoped" String="if\s+0\s*$|" beginRegion="PP" />
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="if" beginRegion="PP" lookAhead="true" insensitive="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="elif" endRegion="PP" beginRegion="PP" lookAhead="true" insensitive="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="else" endRegion="PP" beginRegion="PP" insensitive="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="endif" endRegion="PP" insensitive="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="elifdef" endRegion="PP" beginRegion="PP" lookAhead="true" insensitive="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!Preprocessor" String="elifndef" endRegion="PP" beginRegion="PP" lookAhead="true" insensitive="true" />
+
+        <WordDetect attribute="Preprocessor" context="#pop!Define" String="define"/>
+
         <!-- folding for apple style #pragma mark - label -->
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark\s+-\s*$" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" />
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark" insensitive="true" firstNonSpace="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;pragma\s+mark\s+-\s*|" insensitive="true" endRegion="pragma_mark" />
+        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;pragma\s+mark|" insensitive="true" endRegion="pragma_mark" beginRegion="pragma_mark" />
 
-        <RegExpr attribute="Preprocessor" context="Preprocessor" String="&pphash;(?:el(?:se|if)|define|undef|line|error|warning|pragma)|&ispphash;\s+[0-9]+" insensitive="true" firstNonSpace="true" />
+        <keyword attribute="Preprocessor" context="#pop!Preprocessor" String="preprocessor" />
+        <!-- GCC extension -->
+        <WordDetect attribute="Preprocessor" context="#pop!Include" String="include_next" />
+        <Int attribute="Preprocessor" context="#pop!Preprocessor"/>
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Include">
-        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <DetectSpaces />
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
         <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
         <IncludeRules context="Preprocessor" />
+        <DetectIdentifier/>
       </context>
 
       <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
-        <LineContinue attribute="Preprocessor" context="#stay"/>
+        <LineContinue attribute="Symbol" context="#stay"/>
         <IncludeRules context="FindComments" />
       </context>
 
-      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
-        <LineContinue attribute="Preprocessor" context="#stay"/>
+      <context name="Define" attribute="Preprocessor" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="InPreprocessor" />
+        <Detect2Chars attribute="Error" context="#pop!LineError" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
+        <IncludeRules context="GNUMacros##GCCExtensions" />
+        <DetectIdentifier attribute="Preprocessor" context="#pop!In Define"/>
       </context>
 
+      <context name="In Define" attribute="Preprocessor" lineEndContext="#pop">
+        <DetectSpaces/>
+        <LineContinue attribute="Symbol" context="#stay" />
+        <!-- Match symbols (partial for fast path) -->
+        <AnyChar attribute="Symbol" context="#stay" String="#:(){}]+-*%=&gt;!|&amp;~^,;" />
+
+        <IncludeRules context="match keywords" />
+        <AnyChar context="SelectStringPP" String="UuLR&quot;'" lookAhead="1"/>
+        <DetectIdentifier />
+
+        <!-- Detect attributes -->
+        <Detect2Chars attribute="Symbol" context="Attribute In PP" char="[" char1="[" />
+        <StringDetect attribute="Symbol" context="Attribute In PP" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
+
+        <!-- Match numbers -->
+        <RegExpr context="Number" String="\.?\d" lookAhead="1" />
+
+        <IncludeRules context="FindComments" />
+        <AnyChar attribute="Symbol" context="#stay" String="#&symbols;"/>
+      </context>
+
+      <context name="Attribute In PP" attribute="Attribute" lineEndContext="#pop">
+        <IncludeRules context="InPreprocessor" />
+        <IncludeRules context="Attribute" />
+      </context>
+
+      <context name="InPreprocessor" attribute="Normal Text" lineEndContext="#pop">
+        <LineContinue attribute="Symbol" context="#stay" />
+        <DetectChar attribute="Error" context="#stay" char="\" />
+      </context>
+
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped" >
         <DetectSpaces />
         <IncludeRules context="##Comments" />
         <DetectIdentifier />
-        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectChar attribute="String" context="String8" char="&quot;"/>
         <IncludeRules context="FindComments" />
-        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;el(?:se|if)" firstNonSpace="true" />
-        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;el(?:se|if(n?def)?)|" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Outscoped intern">
         <DetectSpaces />
         <IncludeRules context="##Comments" />
         <DetectIdentifier />
-        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <DetectChar attribute="String" context="String8" char="&quot;"/>
         <IncludeRules context="FindComments" />
-        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Comment" context="#pop" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#pop" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
       </context>
 
-      <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+
+      <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <WordDetect attribute="Decimal" context="IntSuffix" String="0" weakDeliminator="."/>
         <RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|&int;(?:&exp_float;|\.&int;?&exp_float;?)" />
         <IncludeRules context="Integer" />
       </context>
 
-      <context name="Integer" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="Hex" context="IntSuffix" String="0[xX]&hex_int;" />
-        <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01]++" />
-        <RegExpr attribute="Octal" context="IntSuffix" String="0[0-7]++" />
-        <RegExpr attribute="Decimal" context="IntSuffix" String="0(?![xXbB0-9])|[1-9][0-9]*+" />
+      <context name="Integer" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar context="#pop!IntStartsWith0" char="0" lookAhead="1"/>
+        <RegExpr attribute="Decimal" context="IntSuffix" String="&int;" />
         <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']++" />
       </context>
+      <context name="IntStartsWith0" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Hex" context="IntSuffix" String="0[xX]&hex_int;" />
+        <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01](?:'?[01]++)*+" />
+        <RegExpr attribute="Octal" context="IntSuffix" String="0(?:'?[0-7]++)++" />
+        <DetectChar attribute="Decimal" context="IntSuffix" char="0"/>
+      </context>
 
-      <context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">
+      <context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
         <DetectChar attribute="Error" context="#stay" char="'" />
-        <AnyChar attribute="Error" context="#pop!IntSuffixPattern" String="uUlLimunshyd_" lookAhead="true" />
+        <!-- https://en.cppreference.com/w/c/language/integer_constant#The_type_of_the_integer_constant -->
+        <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="([Uu](LL?|ll?|wb|WB)?|(LL?|ll?|wb|WB)[Uu]?)\b"/>
       </context>
 
-      <context name="IntSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">
-        <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="[Uu][Ll]{0,2}|[Ll]{0,2}[Uu]?" />
+      <context name="FloatSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
+        <DetectChar attribute="Error" context="#stay" char="'" />
+        <!-- https://en.cppreference.com/w/c/language/floating_constant#Suffixes -->
+        <AnyChar attribute="Standard Suffix" context="NumericSuffixError" String="fFlL"/>
+        <Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="d" char1="f"/>
+        <Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="D" char1="F"/>
+        <Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="d" char1="d"/>
+        <Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="D" char1="D"/>
+        <Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="d" char1="l"/>
+        <Detect2Chars attribute="Standard Suffix" context="NumericSuffixError" char="D" char1="L"/>
       </context>
 
-      <context name="FloatSuffix" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">
-        <AnyChar attribute="Standard Suffix" context="NumericSuffixError" String="fFlL" />
+      <context name="NumericSuffixError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
+        <AnyChar attribute="Error" String=".'0123456789"/>
+        <DetectIdentifier attribute="Error"/>
       </context>
 
-      <context name="NumericSuffixError" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="true" fallthroughContext="#pop#pop#pop">
-        <RegExpr attribute="Error" context="#pop#pop#pop" String="\.[_0-9A-Za-z]*|[_0-9A-Za-z]+" />
+      <context name="Attribute" attribute="Attribute" lineEndContext="#stay">
+        <DetectSpaces/>
+        <keyword attribute="Standard Attribute" context="#stay" String="attributes" />
+        <Detect2Chars attribute="Symbol" context="#pop" char="]" char1="]" />
+        <StringDetect attribute="Symbol" context="#pop" String=":&gt;:&gt;" /> <!-- Digraph: ]] -->
+        <AnyChar attribute="Symbol" context="#stay" String="&symbols;" />
+        <!-- Attributes may contain some text: [[deprecated("Reason text")]] -->
+        <DetectChar attribute="String" context="String8" char="&quot;" />
+        <AnyChar attribute="Decimal" context="Integer" String="0123456789" lookAhead="true" />
+        <IncludeRules context="DetectGccAttributes##GCCExtensions" />
+        <DetectIdentifier />
       </context>
+
     </contexts>
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal" spellChecking="false"/>
       <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
       <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false"/>
       <itemData name="Data Type"    defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Attribute"    defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Standard Attribute" defStyleNum="dsAttribute" spellChecking="false"/>
       <itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false"/>
       <itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false"/>
       <itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false"/>
@@ -265,8 +539,10 @@
       <itemData name="Float"        defStyleNum="dsFloat" spellChecking="false"/>
       <itemData name="Standard Suffix" defStyleNum="dsBuiltIn" spellChecking="false" />
       <itemData name="Char"         defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="Char Literal Prefix" defStyleNum="dsChar" spellChecking="false" />
       <itemData name="String"       defStyleNum="dsString"/>
-      <itemData name="String Char"  defStyleNum="dsSpecialChar"/>
+      <itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="String Literal Prefix" defStyleNum="dsString" spellChecking="true" />
       <itemData name="Comment"      defStyleNum="dsComment"/>
       <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>
       <itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false"/>
@@ -277,10 +553,10 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
       <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
-    <keywords casesensitive="1" additionalDeliminator="'&quot;" />
+    <keywords casesensitive="1" additionalDeliminator="#'&quot;" />
   </general>
 </language>
 <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/cabal.xml b/xml/cabal.xml
new file mode 100644
--- /dev/null
+++ b/xml/cabal.xml
@@ -0,0 +1,398 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY version "(?&lt;![-+@$\w.])[0-9]+(\.[0-9]+)*">
+  <!ENTITY noversion "[0-9.]+">
+]>
+<language name="Cabal" section="Configuration" version="1" kateversion="5.62"
+          extensions="*.cabal;cabal.config;cabal.project;cabal.project.freeze;cabal.project.local"
+          author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+  <highlighting>
+
+<list name="conditional">
+  <item>if</item>
+  <item>elif</item>
+  <item>else</item>
+</list>
+
+<list name="function">
+  <item>os</item>
+  <item>arche</item>
+  <item>impl</item>
+  <item>flag</item>
+</list>
+
+<list name="category">
+	<item>executable</item>
+	<item>library</item>
+	<item>benchmark</item>
+	<item>test-suite</item>
+	<item>source-repository</item>
+	<item>flag</item>
+  <item>foreign-library</item>
+	<item>custom-setup</item>
+	<item>common</item>
+</list>
+
+<list name="constant">
+  <item>True</item>
+  <item>False</item>
+</list>
+
+<list name="stmt">
+  <item>asm-options</item>
+  <item>asm-sources</item>
+  <item>author</item>
+  <item>autogen-includes</item>
+  <item>autogen-modules</item>
+  <item>branch</item>
+  <item>bug-reports</item>
+  <item>build-depends</item>
+  <item>build-tool-depends</item>
+  <item>build-tools</item>
+  <item>build-type</item>
+  <item>buildable</item>
+  <item>c-sources</item>
+  <item>cabal-version</item>
+  <item>category</item>
+  <item>cc-options</item>
+  <item>cmm-options</item>
+  <item>cmm-sources</item>
+  <item>copyright</item>
+  <item>cpp-options</item>
+  <item>cxx-options</item>
+  <item>cxx-sources</item>
+  <item>data-dir</item>
+  <item>data-files</item>
+  <item>default-extensions</item>
+  <item>default-language</item>
+  <item>default</item>
+  <item>description</item>
+  <item>executable</item>
+  <item>exposed-modules</item>
+  <item>exposed</item>
+  <item>extensions</item>
+  <item>extra-bundled-libraries</item>
+  <item>extra-doc-files</item>
+  <item>extra-dynamic-library-flavours</item>
+  <item>extra-framework-dirs</item>
+  <item>extra-ghci-libraries</item>
+  <item>extra-lib-dirs-static</item>
+  <item>extra-lib-dirs</item>
+  <item>extra-libraries-static</item>
+  <item>extra-libraries</item>
+  <item>extra-library-flavours</item>
+  <item>extra-source-files</item>
+  <item>extra-tmp-files</item>
+  <item>frameworks</item>
+  <item>ghc-options</item>
+  <item>ghc-prof-options</item>
+  <item>ghc-shared-options</item>
+  <item>ghcjs-options</item>
+  <item>ghcjs-prof-options</item>
+  <item>ghcjs-shared-options</item>
+  <item>homepage</item>
+  <item>hs-source-dir</item>
+  <item>hs-source-dirs</item>
+  <item>hugs-options</item>
+  <item>import</item>
+  <item>include-dirs</item>
+  <item>includes</item>
+  <item>install-includes</item>
+  <item>js-sources</item>
+  <item>ld-options</item>
+  <item>lib-version-info</item>
+  <item>lib-version-linux</item>
+  <item>license-file</item>
+  <item>license</item>
+  <item>location</item>
+  <item>main-is</item>
+  <item>maintainer</item>
+  <item>manual</item>
+  <item>mixins</item>
+  <item>mod-def-file</item>
+  <item>module</item>
+  <item>name</item>
+  <item>nhc98-options</item>
+  <item>options</item>
+  <item>other-extensions</item>
+  <item>other-language</item>
+  <item>other-languages</item>
+  <item>other-modules</item>
+  <item>package-url</item>
+  <item>pkgconfig-depends</item>
+  <item>reexported-modules</item>
+  <item>scope</item>
+  <item>setup-depends</item>
+  <item>signatures</item>
+  <item>stability</item>
+  <item>subdir</item>
+  <item>synopsis</item>
+  <item>tag</item>
+  <item>test-module</item>
+  <item>tested-with</item>
+  <item>type</item>
+  <item>version</item>
+  <item>virtual-modules</item>
+</list>
+
+<list name="language">
+  <item>Haskell98</item>
+  <item>Haskell2010</item>
+</list>
+
+<list name="compiler">
+  <item>ghc</item>
+  <item>nhc</item>
+  <item>yhc</item>
+  <item>hugs</item>
+  <item>hbc</item>
+  <item>helium</item>
+  <item>jhc</item>
+  <item>lhc</item>
+</list>
+
+<list name="build-type">
+  <item>simple</item>
+  <item>custom</item>
+  <item>configure</item>
+</list>
+
+<list name="default-extensions">
+  <include>language_pragmas##Haskell</include>
+</list>
+
+<contexts>
+  <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+    <WordDetect attribute="Statement" context="stmtVersion" String="version" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtVersion" String="cabal-version" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtBuildType" String="build-type" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtTestWith" String="tested-with" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtLicenseFile" String="license-file" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtLicense" String="license" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtMaintainer" String="maintainer" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtAuthor" String="author" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtName" String="name" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtDescription" String="description" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtCopyright" String="copyright" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtHomepage" String="homepage" insensitive="1"/>
+    <WordDetect attribute="Statement" context="stmtBugReports" String="bug-reports" insensitive="1"/>
+    <keyword attribute="Statement" context="stmt" String="stmt"/>
+    <keyword attribute="Category" context="category" String="category"/>
+    <keyword attribute="Conditional" context="conditional" String="conditional"/>
+    <RegExpr attribute="Other Statement" context="stmt" String="[-\w]+"/>
+  </context>
+
+  <context name="Comment" attribute="Comment" lineEndContext="#pop">
+    <DetectSpaces attribute="Comment"/>
+    <IncludeRules context="##Comments"/>
+    <DetectIdentifier attribute="Comment"/>
+  </context>
+
+  <context name="category" attribute="Category Title" lineEndContext="#pop">
+    <StringDetect attribute="Comment" context="#pop!Comment" String="--"/>
+  </context>
+
+  <context name="stmt" attribute="Normal Text" lineEndContext="#pop!stmt2" fallthroughContext="#pop!stmt2">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!stmt2"/>
+  </context>
+  <context name="stmt2" attribute="Normal Text" lineEndContext="stmtContinuation">
+    <IncludeRules context="findStmt"/>
+    <RegExpr attribute="Normal Text" String="[-\w.]+\s*"/>
+  </context>
+
+  <context name="findOperator" attribute="Normal Text" lineEndContext="#stay">
+    <StringDetect attribute="Operator" String="!"/>
+    <StringDetect attribute="Operator" String="||"/>
+    <StringDetect attribute="Operator" String="&amp;&amp;"/>
+  </context>
+
+  <context name="findStmt" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces attribute="Normal Text"/>
+    <IncludeRules context="findOperator"/>
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+    <StringDetect attribute="Version Operator" String="==" context="versionOp"/>
+    <StringDetect attribute="Version Operator" String=">=" context="versionOp"/>
+    <StringDetect attribute="Version Operator" String="&lt;=" context="versionOp"/>
+    <StringDetect attribute="Version Operator" String="^>=" context="versionOp"/>
+    <AnyChar attribute="Version Operator" String="&lt;>" context="versionOp"/>
+    <AnyChar String="=^" context="versionOp" lookAhead="1"/>
+    <keyword attribute="Constant" String="constant"/>
+    <keyword attribute="Language" String="language"/>
+  </context>
+
+  <context name="versionOp" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
+    <DetectSpaces attribute="Normal Text"/>
+    <AnyChar attribute="Error" String="=^!&lt;>"/>
+    <DetectChar attribute="Normal Text" context="#pop!versionOpList" char="{"/>
+    <RegExpr attribute="Version" String="&version;" context="#pop"/>
+    <RegExpr attribute="Error" String="&noversion;" context="#pop"/>
+  </context>
+  <context name="versionOpList" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
+    <DetectSpaces attribute="Normal Text"/>
+    <DetectChar attribute="Normal Text" char=","/>
+    <DetectChar attribute="Normal Text" context="#pop" char="}"/>
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+    <IncludeRules context="findVersion"/>
+  </context>
+  <context name="findVersion" attribute="Normal Text" lineEndContext="#pop">
+    <RegExpr attribute="Version" String="&version;"/>
+    <RegExpr attribute="Error" String="&noversion;"/>
+  </context>
+
+  <context name="stmtContinuation" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+    <RegExpr attribute="Normal Text" String="^\s*[a-zA-Z]+[-0-9a-zA-Z]*\s*:|^\s*(if|else|elif|executable|library|benchmark|test-suite|source-repository|flag|foreign-library|custom-setup|common)(?![-\w])" lookAhead="1" context="#pop#pop" insensitive="1"/>
+  </context>
+
+  <context name="stmtVersion" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop!version">
+    <DetectSpaces attribute="Normal Text"/>
+    <DetectChar attribute="Symbol Separator" char=":" context="#pop!version"/>
+  </context>
+  <context name="version" attribute="Normal Text" lineEndContext="stmtContinuation">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+    <IncludeRules context="findVersion"/>
+  </context>
+
+  <context name="stmtBuildType" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="stmtContinuation">
+    <DetectSpaces attribute="Normal Text"/>
+    <DetectChar attribute="Symbol Separator" char=":"/>
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+    <keyword attribute="Built Type" String="build-type"/>
+  </context>
+
+  <context name="stmtTestWith" attribute="Normal Text" lineEndContext="#pop!testWith" fallthroughContext="#pop!testWith">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!testWith"/>
+  </context>
+  <context name="testWith" attribute="Normal Text" lineEndContext="stmtContinuation">
+    <IncludeRules context="findStmt"/>
+    <keyword attribute="Compiler" String="compiler"/>
+    <RegExpr attribute="Error" String="[-\w.]+"/>
+  </context>
+
+  <context name="stmtLicense" attribute="License" lineEndContext="#pop!license" fallthroughContext="#pop!license">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!license"/>
+  </context>
+  <context name="license" attribute="License" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtLicenseFile" attribute="License File" lineEndContext="#pop!licenseFile" fallthroughContext="#pop!licenseFile">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!licenseFile"/>
+  </context>
+  <context name="licenseFile" attribute="License File" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtMaintainer" attribute="Maintainer" lineEndContext="#pop!maintainer" fallthroughContext="#pop!maintainer">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!maintainer"/>
+  </context>
+  <context name="maintainer" attribute="Maintainer" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtAuthor" attribute="Author" lineEndContext="#pop!author" fallthroughContext="#pop!author">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!author"/>
+  </context>
+  <context name="author" attribute="Author" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtName" attribute="Name" lineEndContext="#pop!name" fallthroughContext="#pop!name">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!name"/>
+  </context>
+  <context name="name" attribute="Name" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtDescription" attribute="Description" lineEndContext="#pop!description" fallthroughContext="#pop!description">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!description"/>
+  </context>
+  <context name="description" attribute="Description" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtCopyright" attribute="Copyright" lineEndContext="#pop!copyright" fallthroughContext="#pop!copyright">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!copyright"/>
+  </context>
+  <context name="copyright" attribute="Copyright" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtHomepage" attribute="Homepage" lineEndContext="#pop!homepage" fallthroughContext="#pop!homepage">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!homepage"/>
+  </context>
+  <context name="homepage" attribute="Homepage" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="stmtBugReports" attribute="Bug Reports" lineEndContext="#pop!bugReports" fallthroughContext="#pop!bugReports">
+    <DetectSpaces attribute="Normal Text"/>
+    <StringDetect attribute="Symbol Separator" String=":" context="#pop!bugReports"/>
+  </context>
+  <context name="bugReports" attribute="Bug Reports" lineEndContext="stmtContinuation">
+    <StringDetect attribute="Comment" context="Comment" String="--"/>
+  </context>
+
+  <context name="conditional" attribute="Normal Text" lineEndContext="#pop">
+    <DetectSpaces attribute="Normal Text"/>
+    <AnyChar attribute="Symbol" String="()"/>
+    <IncludeRules context="findOperator"/>
+    <StringDetect attribute="Comment" context="#pop!Comment" String="--"/>
+    <keyword attribute="Function" String="function" insensitive="0"/>
+    <keyword attribute="Constant" String="constant"/>
+    <DetectIdentifier attribute="Normal Text"/>
+  </context>
+
+</contexts>
+
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
+  <itemData name="Comment" defStyleNum="dsComment"/>
+  <itemData name="Category" defStyleNum="dsKeyword" spellChecking="0"/>
+  <itemData name="Category Title" defStyleNum="dsAttribute" spellChecking="0"/>
+  <itemData name="Statement" defStyleNum="dsDataType" spellChecking="0"/>
+  <itemData name="Other Statement" defStyleNum="dsPreprocessor" spellChecking="0"/>
+  <itemData name="Name" defStyleNum="dsVerbatimString" spellChecking="0"/>
+  <itemData name="Author" defStyleNum="dsString" spellChecking="0"/>
+  <itemData name="Homepage" defStyleNum="dsSpecialString" spellChecking="0"/>
+  <itemData name="Description" defStyleNum="dsVerbatimString" spellChecking="0"/>
+  <itemData name="Maintainer" defStyleNum="dsString" spellChecking="0"/>
+  <itemData name="Bug Reports" defStyleNum="dsSpecialString" spellChecking="0"/>
+  <itemData name="Copyright" defStyleNum="dsString" spellChecking="0"/>
+  <itemData name="License" defStyleNum="dsString" spellChecking="0"/>
+  <itemData name="License File" defStyleNum="dsString" spellChecking="0"/>
+  <itemData name="Built Type" defStyleNum="dsKeyword" spellChecking="0"/>
+  <itemData name="Operator" defStyleNum="dsOperator" spellChecking="0"/>
+  <itemData name="Version Operator" defStyleNum="dsOperator" spellChecking="0"/>
+  <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="0"/>
+  <itemData name="Symbol Separator" defStyleNum="dsNormal" spellChecking="0"/>
+  <itemData name="Version" defStyleNum="dsDecVal" spellChecking="0"/>
+  <itemData name="Constant" defStyleNum="dsConstant" spellChecking="0"/>
+  <itemData name="Language" defStyleNum="dsConstant" spellChecking="0"/>
+  <itemData name="Function" defStyleNum="dsFunction" spellChecking="0"/>
+  <itemData name="Conditional" defStyleNum="dsControlFlow" spellChecking="0"/>
+  <itemData name="Compiler" defStyleNum="dsConstant" spellChecking="0"/>
+  <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>
+</itemDatas>
+
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--"/>
+    </comments>
+    <keywords casesensitive="0" weakDeliminator="-"/>
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/changelog.xml b/xml/changelog.xml
--- a/xml/changelog.xml
+++ b/xml/changelog.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="ChangeLog" version="4" kateversion="2.4" section="Other" extensions="ChangeLog" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
   <highlighting>
     <contexts>
diff --git a/xml/clojure.xml b/xml/clojure.xml
--- a/xml/clojure.xml
+++ b/xml/clojure.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
   This file is part of KDE's kate project.
 
@@ -22,7 +22,7 @@
  * Boston, MA  02110-1301, USA.                                       *
  **********************************************************************
  -->
-<language version="15" kateversion="5.0" name="Clojure" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">
+<language version="18" kateversion="5.0" name="Clojure" alternativeNames="CLJ" section="Sources" extensions="*.clj;*.cljs;*.cljc" mimetype="" author="Dominik Haumann [lisp] modified for clojure by Caspar Hasenclever" license="LGPLv2+">
   <highlighting>
     <list name="definitions">
       <item>def</item>
@@ -697,20 +697,11 @@
       <item>*test-out*</item>
       <item>*use-context-classloader*</item>
       <item>*warn-on-reflection*</item>
-      <item>*warn-on-reflection*</item>
       <item>false</item>
       <item>nil</item>
       <item>true</item>
     </list>
     <contexts>
-      <context name="Level0" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets1" context="Level1" char="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>
-        <IncludeRules context="Default" />
-      </context>
       <context name="Default" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Comment" context="Comment" char=";"/>
         <Detect2Chars attribute="Comment" context="#stay" char="#" char1="_"/>
@@ -720,6 +711,7 @@
         <Detect2Chars attribute="BracketsSet" context="BracketsSet" char="#" char1="{"/>
         <Detect2Chars attribute="BracketsMeta" context="BracketsMeta" char="^" char1="{"/>
         <DetectChar attribute="BracketsMap" context="BracketsMap" char="{"/>
+        <AnyChar attribute="Brackets" context="#stay" String="()"/>
         <AnyChar attribute="BracketsSquare" context="#stay" String="[]"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <RegExpr attribute="Variable" context="#stay" String="#'[^\s\(\)\{\}\[\]]+|%[0-9]*"/>
@@ -734,7 +726,6 @@
         <RegExpr attribute="Error" context="#stay" String="(3[7-9]|[0-9]*[4-9][0-9]+)[rR][0-9a-zA-Z]+"/>
         <Float attribute="Float" context="Float Suffixes"/>
         <Int attribute="Decimal" context="Int Suffixes"/>
-        <DetectChar attribute="Brackets1" context="Level1" char="("/>
       </context>
       <context name="Float Suffixes" attribute="Float" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
         <DetectChar attribute="Float" context="#pop" char="M"/>
@@ -783,60 +774,6 @@
         <DetectChar attribute="BracketsMap" context="#pop" char="}" />
         <IncludeRules context="Default" />
       </context>
-      <context name="Level1" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets2" context="Level2" char="("/>
-        <Detect2Chars attribute="Brackets2" context="Level2" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets2" context="Level2" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets2" context="Level2" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets2" context="Level2" char="@" char1="("/>
-        <DetectChar attribute="Brackets1" context="#pop" char=")" />
-        <IncludeRules context="Default" />
-      </context>
-      <context name="Level2" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets3" context="Level3" char="("/>
-        <Detect2Chars attribute="Brackets3" context="Level3" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets3" context="Level3" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets3" context="Level3" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets3" context="Level3" char="@" char1="("/>
-        <DetectChar attribute="Brackets2" context="#pop" char=")" />
-        <IncludeRules context="Default" />
-      </context>
-      <context name="Level3" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets4" context="Level4" char="("/>
-        <Detect2Chars attribute="Brackets4" context="Level4" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets4" context="Level4" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets4" context="Level4" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets4" context="Level4" char="@" char1="("/>
-        <DetectChar attribute="Brackets3" context="#pop" char=")" />
-        <IncludeRules context="Default" />
-      </context>
-      <context name="Level4" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets5" context="Level5" char="("/>
-        <Detect2Chars attribute="Brackets5" context="Level5" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets5" context="Level5" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets5" context="Level5" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets5" context="Level5" char="@" char1="("/>
-        <DetectChar attribute="Brackets4" context="#pop" char=")" />
-        <IncludeRules context="Default" />
-      </context>
-      <context name="Level5" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets6" context="Level6" char="("/>
-        <Detect2Chars attribute="Brackets6" context="Level6" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets6" context="Level6" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets6" context="Level6" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets6" context="Level6" char="@" char1="("/>
-        <DetectChar attribute="Brackets5" context="#pop" char=")" />
-        <IncludeRules context="Default" />
-      </context>
-      <context name="Level6" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets1" context="Level1" char="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>
-        <DetectChar attribute="Brackets6" context="#pop" char=")" />
-        <IncludeRules context="Default" />
-      </context>
     </contexts>
     <itemDatas>
       <itemData name="Normal" defStyleNum="dsNormal" spellChecking="false"/>
@@ -860,13 +797,8 @@
       <itemData name="BracketsSet" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00"/>
       <itemData name="BracketsMeta" defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>
       <itemData name="BracketsMap" defStyleNum="dsNormal" color="#33ab33" selColor="#219921"/>
+      <itemData name="Brackets"    defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>
       <itemData name="BracketsSquare" defStyleNum="dsNormal" color="#3333ff" selColor="#3333aa"/>
-      <itemData name="Brackets1" defStyleNum="dsNormal" color="#ff0000" selColor="#ffaa00" bold="0" italic="0"/>
-      <itemData name="Brackets2" defStyleNum="dsNormal" color="#ff8800" selColor="#ffff00" bold="0" italic="0"/>
-      <itemData name="Brackets3" defStyleNum="dsNormal" color="#888800" selColor="#888888" bold="0" italic="0"/>
-      <itemData name="Brackets4" defStyleNum="dsNormal" color="#008800" bold="0" italic="0"/>
-      <itemData name="Brackets5" defStyleNum="dsNormal" color="#3689e6" bold="0" italic="0"/>
-      <itemData name="Brackets6" defStyleNum="dsNormal" color="#a100a1" bold="0" italic="0"/>
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -1,7554 +1,7499 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-  <!-- NOTE See https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#variable-references -->
-  <!ENTITY var_ref_re "[/\.\+\-_0-9A-Za-z]+">
-  <!-- NOTE See `cmGeneratorExpression::IsValidTargetName` -->
-  <!ENTITY tgt_name_re "[A-Za-z0-9_\.\+\-]+">
-]>
-<!--
-    This file is part of KDE's kate project.
-
-    SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>
-    SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
-    SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>
-    SPDX-FileCopyrightText: 2013-2015, 2017-2020 Alex Turbov <i.zaufi@gmail.com>
-
-    SPDX-License-Identifier: LGPL-2.0-or-later
- -->
-
-<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
-  cd data/generators
-  # increase version of cmake.xml.tpl then
-  ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml
--->
-
-<language
-    name="CMake"
-    version="38"
-    kateversion="5.0"
-    section="Other"
-    extensions="CMakeLists.txt;*.cmake;*.cmake.in"
-    style="CMake"
-    mimetype="text/x-cmake"
-    author="Alex Turbov (i.zaufi@gmail.com)"
-    license="LGPLv2+"
-  >
-  <highlighting>
-
-    <list name="commands">
-        <item>break</item>
-        <item>cmake_host_system_information</item>
-        <item>cmake_language</item>
-        <item>cmake_minimum_required</item>
-        <item>cmake_parse_arguments</item>
-        <item>cmake_path</item>
-        <item>cmake_policy</item>
-        <item>configure_file</item>
-        <item>continue</item>
-        <item>elseif</item>
-        <item>else</item>
-        <item>endforeach</item>
-        <item>endfunction</item>
-        <item>endif</item>
-        <item>endmacro</item>
-        <item>endwhile</item>
-        <item>execute_process</item>
-        <item>file</item>
-        <item>find_file</item>
-        <item>find_library</item>
-        <item>find_package</item>
-        <item>find_path</item>
-        <item>find_program</item>
-        <item>foreach</item>
-        <item>function</item>
-        <item>get_cmake_property</item>
-        <item>get_directory_property</item>
-        <item>get_filename_component</item>
-        <item>get_property</item>
-        <item>if</item>
-        <item>include</item>
-        <item>include_guard</item>
-        <item>list</item>
-        <item>macro</item>
-        <item>mark_as_advanced</item>
-        <item>math</item>
-        <item>message</item>
-        <item>option</item>
-        <item>return</item>
-        <item>separate_arguments</item>
-        <item>set_directory_properties</item>
-        <item>set_property</item>
-        <item>set</item>
-        <item>site_name</item>
-        <item>string</item>
-        <item>unset</item>
-        <item>variable_watch</item>
-        <item>while</item>
-        <item>add_compile_definitions</item>
-        <item>add_compile_options</item>
-        <item>add_custom_command</item>
-        <item>add_custom_target</item>
-        <item>add_definitions</item>
-        <item>add_dependencies</item>
-        <item>add_executable</item>
-        <item>add_library</item>
-        <item>add_link_options</item>
-        <item>add_subdirectory</item>
-        <item>add_test</item>
-        <item>aux_source_directory</item>
-        <item>build_command</item>
-        <item>create_test_sourcelist</item>
-        <item>define_property</item>
-        <item>enable_language</item>
-        <item>enable_testing</item>
-        <item>export</item>
-        <item>fltk_wrap_ui</item>
-        <item>get_source_file_property</item>
-        <item>get_target_property</item>
-        <item>get_test_property</item>
-        <item>include_directories</item>
-        <item>include_external_msproject</item>
-        <item>include_regular_expression</item>
-        <item>install</item>
-        <item>link_directories</item>
-        <item>link_libraries</item>
-        <item>load_cache</item>
-        <item>project</item>
-        <item>qt_wrap_cpp</item>
-        <item>qt_wrap_ui</item>
-        <item>remove_definitions</item>
-        <item>set_source_files_properties</item>
-        <item>set_target_properties</item>
-        <item>set_tests_properties</item>
-        <item>source_group</item>
-        <item>target_compile_definitions</item>
-        <item>target_compile_features</item>
-        <item>target_compile_options</item>
-        <item>target_include_directories</item>
-        <item>target_link_directories</item>
-        <item>target_link_libraries</item>
-        <item>target_link_options</item>
-        <item>target_precompile_headers</item>
-        <item>target_sources</item>
-        <item>try_compile</item>
-        <item>try_run</item>
-        <item>ctest_build</item>
-        <item>ctest_configure</item>
-        <item>ctest_coverage</item>
-        <item>ctest_empty_binary_directory</item>
-        <item>ctest_memcheck</item>
-        <item>ctest_read_custom_files</item>
-        <item>ctest_run_script</item>
-        <item>ctest_sleep</item>
-        <item>ctest_start</item>
-        <item>ctest_submit</item>
-        <item>ctest_test</item>
-        <item>ctest_update</item>
-        <item>ctest_upload</item>
-    </list>
-    <list name="cmake_host_system_information_nargs">
-      <item>QUERY</item>
-      <item>RESULT</item>
-    </list>
-    <list name="cmake_host_system_information_sargs">
-      <item>AVAILABLE_PHYSICAL_MEMORY</item>
-      <item>AVAILABLE_VIRTUAL_MEMORY</item>
-      <item>DISTRIB_INFO</item>
-      <item>FQDN</item>
-      <item>HAS_AMD_3DNOW</item>
-      <item>HAS_AMD_3DNOW_PLUS</item>
-      <item>HAS_FPU</item>
-      <item>HAS_IA64</item>
-      <item>HAS_MMX</item>
-      <item>HAS_MMX_PLUS</item>
-      <item>HAS_SERIAL_NUMBER</item>
-      <item>HAS_SSE</item>
-      <item>HAS_SSE2</item>
-      <item>HAS_SSE_FP</item>
-      <item>HAS_SSE_MMX</item>
-      <item>HOSTNAME</item>
-      <item>IS_64BIT</item>
-      <item>NUMBER_OF_LOGICAL_CORES</item>
-      <item>NUMBER_OF_PHYSICAL_CORES</item>
-      <item>OS_NAME</item>
-      <item>OS_PLATFORM</item>
-      <item>OS_RELEASE</item>
-      <item>OS_VERSION</item>
-      <item>PROCESSOR_DESCRIPTION</item>
-      <item>PROCESSOR_NAME</item>
-      <item>PROCESSOR_SERIAL_NUMBER</item>
-      <item>TOTAL_PHYSICAL_MEMORY</item>
-      <item>TOTAL_VIRTUAL_MEMORY</item>
-    </list>
-    <list name="cmake_language_nargs">
-      <item>CALL</item>
-      <item>CANCEL_CALL</item>
-      <item>CODE</item>
-      <item>DEFER</item>
-      <item>DIRECTORY</item>
-      <item>EVAL</item>
-      <item>GET_CALL</item>
-      <item>GET_CALL_IDS</item>
-      <item>ID</item>
-      <item>ID_VAR</item>
-    </list>
-    <list name="cmake_minimum_required_nargs">
-      <item>FATAL_ERROR</item>
-      <item>VERSION</item>
-    </list>
-    <list name="cmake_parse_arguments_nargs">
-      <item>PARSE_ARGV</item>
-    </list>
-    <list name="cmake_path_nargs">
-      <item>ABSOLUTE_PATH</item>
-      <item>APPEND</item>
-      <item>APPEND_STRING</item>
-      <item>BASE_DIRECTORY</item>
-      <item>CONVERT</item>
-      <item>EXTENSION</item>
-      <item>FILENAME</item>
-      <item>GET</item>
-      <item>HASH</item>
-      <item>HAS_EXTENSION</item>
-      <item>HAS_FILENAME</item>
-      <item>HAS_PARENT_PATH</item>
-      <item>HAS_RELATIVE_PART</item>
-      <item>HAS_ROOT_DIRECTORY</item>
-      <item>HAS_ROOT_NAME</item>
-      <item>HAS_ROOT_PATH</item>
-      <item>HAS_STEM</item>
-      <item>IS_ABSOLUTE</item>
-      <item>IS_PREFIX</item>
-      <item>IS_RELATIVE</item>
-      <item>LAST_ONLY</item>
-      <item>NATIVE_PATH</item>
-      <item>NORMALIZE</item>
-      <item>NORMAL_PATH</item>
-      <item>OUTPUT_VARIABLE</item>
-      <item>PARENT_PATH</item>
-      <item>RELATIVE_PART</item>
-      <item>RELATIVE_PATH</item>
-      <item>REMOVE_EXTENSION</item>
-      <item>REMOVE_FILENAME</item>
-      <item>REPLACE_EXTENSION</item>
-      <item>REPLACE_FILENAME</item>
-      <item>ROOT_DIRECTORY</item>
-      <item>ROOT_NAME</item>
-      <item>ROOT_PATH</item>
-      <item>SET</item>
-      <item>STEM</item>
-      <item>TO_CMAKE_PATH_LIST</item>
-      <item>TO_NATIVE_PATH_LIST</item>
-    </list>
-    <list name="cmake_policy_nargs">
-      <item>GET</item>
-      <item>POP</item>
-      <item>PUSH</item>
-      <item>SET</item>
-      <item>VERSION</item>
-    </list>
-    <list name="cmake_policy_sargs">
-      <item>NEW</item>
-      <item>OLD</item>
-    </list>
-    <list name="configure_file_nargs">
-      <item>@ONLY</item>
-      <item>COPYONLY</item>
-      <item>ESCAPE_QUOTES</item>
-      <item>FILE_PERMISSIONS</item>
-      <item>NEWLINE_STYLE</item>
-      <item>NO_SOURCE_PERMISSIONS</item>
-      <item>USE_SOURCE_PERMISSIONS</item>
-    </list>
-    <list name="configure_file_sargs">
-      <item>CRLF</item>
-      <item>DOS</item>
-      <item>LF</item>
-      <item>UNIX</item>
-      <item>WIN32</item>
-    </list>
-    <list name="elseif_nargs">
-      <item>AND</item>
-      <item>COMMAND</item>
-      <item>DEFINED</item>
-      <item>EQUAL</item>
-      <item>EXISTS</item>
-      <item>GREATER</item>
-      <item>GREATER_EQUAL</item>
-      <item>IN_LIST</item>
-      <item>IS_ABSOLUTE</item>
-      <item>IS_DIRECTORY</item>
-      <item>IS_NEWER_THAN</item>
-      <item>IS_SYMLINK</item>
-      <item>LESS</item>
-      <item>LESS_EQUAL</item>
-      <item>MATCHES</item>
-      <item>NOT</item>
-      <item>OR</item>
-      <item>POLICY</item>
-      <item>STREQUAL</item>
-      <item>STRGREATER</item>
-      <item>STRGREATER_EQUAL</item>
-      <item>STRLESS</item>
-      <item>STRLESS_EQUAL</item>
-      <item>TARGET</item>
-      <item>TEST</item>
-      <item>VERSION_EQUAL</item>
-      <item>VERSION_GREATER</item>
-      <item>VERSION_GREATER_EQUAL</item>
-      <item>VERSION_LESS</item>
-      <item>VERSION_LESS_EQUAL</item>
-    </list>
-    <list name="execute_process_nargs">
-      <item>COMMAND</item>
-      <item>COMMAND_ECHO</item>
-      <item>COMMAND_ERROR_IS_FATAL</item>
-      <item>ECHO_ERROR_VARIABLE</item>
-      <item>ECHO_OUTPUT_VARIABLE</item>
-      <item>ENCODING</item>
-      <item>ERROR_FILE</item>
-      <item>ERROR_QUIET</item>
-      <item>ERROR_STRIP_TRAILING_WHITESPACE</item>
-      <item>ERROR_VARIABLE</item>
-      <item>INPUT_FILE</item>
-      <item>OUTPUT_FILE</item>
-      <item>OUTPUT_QUIET</item>
-      <item>OUTPUT_STRIP_TRAILING_WHITESPACE</item>
-      <item>OUTPUT_VARIABLE</item>
-      <item>RESULTS_VARIABLE</item>
-      <item>RESULT_VARIABLE</item>
-      <item>TIMEOUT</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="execute_process_sargs">
-      <item>ANSI</item>
-      <item>ANY</item>
-      <item>AUTO</item>
-      <item>LAST</item>
-      <item>NONE</item>
-      <item>OEM</item>
-      <item>STDERR</item>
-      <item>STDOUT</item>
-      <item>UTF8</item>
-    </list>
-    <list name="file_nargs">
-      <item>@ONLY</item>
-      <item>APPEND</item>
-      <item>ARCHIVE_CREATE</item>
-      <item>ARCHIVE_EXTRACT</item>
-      <item>BASE_DIRECTORY</item>
-      <item>BUNDLE_EXECUTABLE</item>
-      <item>CHMOD</item>
-      <item>CHMOD_RECURSE</item>
-      <item>COMPRESSION</item>
-      <item>COMPRESSION_LEVEL</item>
-      <item>CONDITION</item>
-      <item>CONFIGURE</item>
-      <item>CONFIGURE_DEPENDS</item>
-      <item>CONTENT</item>
-      <item>COPY</item>
-      <item>COPY_FILE</item>
-      <item>DESTINATION</item>
-      <item>DIRECTORIES</item>
-      <item>DIRECTORY</item>
-      <item>DIRECTORY_PERMISSIONS</item>
-      <item>DOWNLOAD</item>
-      <item>ENCODING</item>
-      <item>ESCAPE_QUOTES</item>
-      <item>EXCLUDE</item>
-      <item>EXECUTABLES</item>
-      <item>EXPAND_TILDE</item>
-      <item>EXPECTED_HASH</item>
-      <item>EXPECTED_MD5</item>
-      <item>FILES</item>
-      <item>FILES_MATCHING</item>
-      <item>FILE_PERMISSIONS</item>
-      <item>FOLLOW_SYMLINKS</item>
-      <item>FOLLOW_SYMLINK_CHAIN</item>
-      <item>FORMAT</item>
-      <item>GENERATE</item>
-      <item>GET_RUNTIME_DEPENDENCIES</item>
-      <item>GLOB</item>
-      <item>GLOB_RECURSE</item>
-      <item>GUARD</item>
-      <item>HEX</item>
-      <item>HTTPHEADER</item>
-      <item>INACTIVITY_TIMEOUT</item>
-      <item>INPUT</item>
-      <item>INSTALL</item>
-      <item>LENGTH_MAXIMUM</item>
-      <item>LENGTH_MINIMUM</item>
-      <item>LIBRARIES</item>
-      <item>LIMIT</item>
-      <item>LIMIT_COUNT</item>
-      <item>LIMIT_INPUT</item>
-      <item>LIMIT_OUTPUT</item>
-      <item>LIST_DIRECTORIES</item>
-      <item>LIST_ONLY</item>
-      <item>LOCK</item>
-      <item>LOG</item>
-      <item>MAKE_DIRECTORY</item>
-      <item>MD5</item>
-      <item>MODULES</item>
-      <item>MTIME</item>
-      <item>NETRC</item>
-      <item>NETRC_FILE</item>
-      <item>NEWLINE_CONSUME</item>
-      <item>NEWLINE_STYLE</item>
-      <item>NO_HEX_CONVERSION</item>
-      <item>NO_REPLACE</item>
-      <item>NO_SOURCE_PERMISSIONS</item>
-      <item>OFFSET</item>
-      <item>ONLY_IF_DIFFERENT</item>
-      <item>OUTPUT</item>
-      <item>PATTERN</item>
-      <item>PERMISSIONS</item>
-      <item>POST_EXCLUDE_FILES</item>
-      <item>POST_EXCLUDE_REGEXES</item>
-      <item>POST_INCLUDE_FILES</item>
-      <item>POST_INCLUDE_REGEXES</item>
-      <item>PRE_EXCLUDE_REGEXES</item>
-      <item>PRE_INCLUDE_REGEXES</item>
-      <item>READ</item>
-      <item>READ_SYMLINK</item>
-      <item>REAL_PATH</item>
-      <item>REGEX</item>
-      <item>RELATIVE</item>
-      <item>RELATIVE_PATH</item>
-      <item>RELEASE</item>
-      <item>REMOVE</item>
-      <item>REMOVE_RECURSE</item>
-      <item>RENAME</item>
-      <item>RESOLVED_DEPENDENCIES_VAR</item>
-      <item>RESULT</item>
-      <item>RESULT_VARIABLE</item>
-      <item>SHA1</item>
-      <item>SHA224</item>
-      <item>SHA256</item>
-      <item>SHA384</item>
-      <item>SHA3_224</item>
-      <item>SHA3_256</item>
-      <item>SHA3_384</item>
-      <item>SHA3_512</item>
-      <item>SHA512</item>
-      <item>SHOW_PROGRESS</item>
-      <item>SIZE</item>
-      <item>STATUS</item>
-      <item>STRINGS</item>
-      <item>TARGET</item>
-      <item>TIMEOUT</item>
-      <item>TIMESTAMP</item>
-      <item>TLS_CAINFO</item>
-      <item>TLS_VERIFY</item>
-      <item>TOUCH</item>
-      <item>TOUCH_NOCREATE</item>
-      <item>TO_CMAKE_PATH</item>
-      <item>TO_NATIVE_PATH</item>
-      <item>UNRESOLVED_DEPENDENCIES_VAR</item>
-      <item>UPLOAD</item>
-      <item>USERPWD</item>
-      <item>USE_SOURCE_PERMISSIONS</item>
-      <item>UTC</item>
-      <item>VERBOSE</item>
-      <item>WRITE</item>
-    </list>
-    <list name="file_sargs">
-      <item>7zip</item>
-      <item>BZip2</item>
-      <item>CRLF</item>
-      <item>DOS</item>
-      <item>FILE</item>
-      <item>FUNCTION</item>
-      <item>GROUP_EXECUTE</item>
-      <item>GROUP_READ</item>
-      <item>GROUP_WRITE</item>
-      <item>GZip</item>
-      <item>IGNORED</item>
-      <item>LF</item>
-      <item>None</item>
-      <item>OPTIONAL</item>
-      <item>OWNER_EXECUTE</item>
-      <item>OWNER_READ</item>
-      <item>OWNER_WRITE</item>
-      <item>PROCESS</item>
-      <item>REQUIRED</item>
-      <item>SETGID</item>
-      <item>SETUID</item>
-      <item>UNIX</item>
-      <item>UTF-16BE</item>
-      <item>UTF-16LE</item>
-      <item>UTF-32B</item>
-      <item>UTF-32LE</item>
-      <item>UTF-8</item>
-      <item>WIN32</item>
-      <item>WORLD_EXECUTE</item>
-      <item>WORLD_READ</item>
-      <item>WORLD_WRITE</item>
-      <item>XZ</item>
-      <item>Zstd</item>
-      <item>gnutar</item>
-      <item>pax</item>
-      <item>paxr</item>
-      <item>raw</item>
-      <item>zip</item>
-    </list>
-    <list name="find_file_nargs">
-      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
-      <item>DOC</item>
-      <item>HINTS</item>
-      <item>NAMES</item>
-      <item>NO_CACHE</item>
-      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
-      <item>NO_CMAKE_FIND_ROOT_PATH</item>
-      <item>NO_CMAKE_PATH</item>
-      <item>NO_CMAKE_SYSTEM_PATH</item>
-      <item>NO_DEFAULT_PATH</item>
-      <item>NO_PACKAGE_ROOT_PATH</item>
-      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
-      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
-      <item>PATHS</item>
-      <item>PATH_SUFFIXES</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="find_library_nargs">
-      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
-      <item>DOC</item>
-      <item>HINTS</item>
-      <item>NAMES</item>
-      <item>NAMES_PER_DIR</item>
-      <item>NO_CACHE</item>
-      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
-      <item>NO_CMAKE_FIND_ROOT_PATH</item>
-      <item>NO_CMAKE_PATH</item>
-      <item>NO_CMAKE_SYSTEM_PATH</item>
-      <item>NO_DEFAULT_PATH</item>
-      <item>NO_PACKAGE_ROOT_PATH</item>
-      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
-      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
-      <item>PATHS</item>
-      <item>PATH_SUFFIXES</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="find_package_nargs">
-      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
-      <item>COMPONENTS</item>
-      <item>CONFIG</item>
-      <item>CONFIGS</item>
-      <item>EXACT</item>
-      <item>HINTS</item>
-      <item>MODULE</item>
-      <item>NAMES</item>
-      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
-      <item>NO_CMAKE_FIND_ROOT_PATH</item>
-      <item>NO_CMAKE_PACKAGE_REGISTRY</item>
-      <item>NO_CMAKE_PATH</item>
-      <item>NO_CMAKE_SYSTEM_PACKAGE_REGISTRY</item>
-      <item>NO_CMAKE_SYSTEM_PATH</item>
-      <item>NO_DEFAULT_PATH</item>
-      <item>NO_MODULE</item>
-      <item>NO_PACAKGE_ROOT_PATH</item>
-      <item>NO_POLICY_SCOPE</item>
-      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
-      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
-      <item>OPTIONAL_COMPONENTS</item>
-      <item>PATHS</item>
-      <item>PATH_SUFFIXES</item>
-      <item>QUIET</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="find_path_nargs">
-      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
-      <item>DOC</item>
-      <item>HINTS</item>
-      <item>NAMES</item>
-      <item>NO_CACHE</item>
-      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
-      <item>NO_CMAKE_FIND_ROOT_PATH</item>
-      <item>NO_CMAKE_PATH</item>
-      <item>NO_CMAKE_SYSTEM_PATH</item>
-      <item>NO_DEFAULT_PATH</item>
-      <item>NO_PACKAGE_ROOT_PATH</item>
-      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
-      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
-      <item>PATHS</item>
-      <item>PATH_SUFFIXES</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="find_program_nargs">
-      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
-      <item>DOC</item>
-      <item>HINTS</item>
-      <item>NAMES</item>
-      <item>NAMES_PER_DIR</item>
-      <item>NO_CACHE</item>
-      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
-      <item>NO_CMAKE_FIND_ROOT_PATH</item>
-      <item>NO_CMAKE_PATH</item>
-      <item>NO_CMAKE_SYSTEM_PATH</item>
-      <item>NO_DEFAULT_PATH</item>
-      <item>NO_PACKAGE_ROOT_PATH</item>
-      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
-      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
-      <item>PATHS</item>
-      <item>PATH_SUFFIXES</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="foreach_nargs">
-      <item>IN</item>
-      <item>ITEMS</item>
-      <item>LISTS</item>
-      <item>RANGE</item>
-      <item>ZIP_LISTS</item>
-    </list>
-    <list name="get_cmake_property_sargs">
-      <item>CACHE_VARIABLES</item>
-      <item>COMMANDS</item>
-      <item>COMPONENTS</item>
-      <item>MACROS</item>
-      <item>VARIABLES</item>
-    </list>
-    <list name="get_directory_property_nargs">
-      <item>DEFINITION</item>
-      <item>DIRECTORY</item>
-    </list>
-    <list name="get_filename_component_nargs">
-      <item>ABSOLUTE</item>
-      <item>BASE_DIR</item>
-      <item>CACHE</item>
-      <item>DIRECTORY</item>
-      <item>EXT</item>
-      <item>LAST_EXT</item>
-      <item>NAME</item>
-      <item>NAME_WE</item>
-      <item>NAME_WLE</item>
-      <item>PATH</item>
-      <item>PROGRAM</item>
-      <item>PROGRAM_ARGS</item>
-      <item>REALPATH</item>
-    </list>
-    <list name="get_property_nargs">
-      <item>BRIEF_DOCS</item>
-      <item>CACHE</item>
-      <item>DEFINED</item>
-      <item>DIRECTORY</item>
-      <item>FULL_DOCS</item>
-      <item>GLOBAL</item>
-      <item>INSTALL</item>
-      <item>PROPERTY</item>
-      <item>SET</item>
-      <item>SOURCE</item>
-      <item>TARGET</item>
-      <item>TARGET_DIRECTORY</item>
-      <item>TEST</item>
-      <item>VARIABLE</item>
-    </list>
-    <list name="if_nargs">
-      <item>AND</item>
-      <item>COMMAND</item>
-      <item>DEFINED</item>
-      <item>EQUAL</item>
-      <item>EXISTS</item>
-      <item>GREATER</item>
-      <item>GREATER_EQUAL</item>
-      <item>IN_LIST</item>
-      <item>IS_ABSOLUTE</item>
-      <item>IS_DIRECTORY</item>
-      <item>IS_NEWER_THAN</item>
-      <item>IS_SYMLINK</item>
-      <item>LESS</item>
-      <item>LESS_EQUAL</item>
-      <item>MATCHES</item>
-      <item>NOT</item>
-      <item>OR</item>
-      <item>POLICY</item>
-      <item>STREQUAL</item>
-      <item>STRGREATER</item>
-      <item>STRGREATER_EQUAL</item>
-      <item>STRLESS</item>
-      <item>STRLESS_EQUAL</item>
-      <item>TARGET</item>
-      <item>TEST</item>
-      <item>VERSION_EQUAL</item>
-      <item>VERSION_GREATER</item>
-      <item>VERSION_GREATER_EQUAL</item>
-      <item>VERSION_LESS</item>
-      <item>VERSION_LESS_EQUAL</item>
-    </list>
-    <list name="include_nargs">
-      <item>NO_POLICY_SCOPE</item>
-      <item>OPTIONAL</item>
-      <item>RESULT_VARIABLE</item>
-    </list>
-    <list name="include_guard_nargs">
-      <item>DIRECTORY</item>
-      <item>GLOBAL</item>
-    </list>
-    <list name="list_nargs">
-      <item>APPEND</item>
-      <item>AT</item>
-      <item>CASE</item>
-      <item>COMPARE</item>
-      <item>EXCLUDE</item>
-      <item>FILTER</item>
-      <item>FIND</item>
-      <item>FOR</item>
-      <item>GENEX_STRIP</item>
-      <item>GET</item>
-      <item>INCLUDE</item>
-      <item>INSERT</item>
-      <item>JOIN</item>
-      <item>LENGTH</item>
-      <item>ORDER</item>
-      <item>OUTPUT_VARIABLE</item>
-      <item>POP_BACK</item>
-      <item>POP_FRONT</item>
-      <item>PREPEND</item>
-      <item>REGEX</item>
-      <item>REMOVE_AT</item>
-      <item>REMOVE_DUPLICATES</item>
-      <item>REMOVE_ITEM</item>
-      <item>REPLACE</item>
-      <item>REVERSE</item>
-      <item>SORT</item>
-      <item>STRIP</item>
-      <item>SUBLIST</item>
-      <item>TOLOWER</item>
-      <item>TRANSFORM</item>
-    </list>
-    <list name="list_sargs">
-      <item>ASCENDING</item>
-      <item>DESCENDING</item>
-      <item>FILE_BASENAME</item>
-      <item>INSENSITIVE</item>
-      <item>NATURAL</item>
-      <item>SENSITIVE</item>
-      <item>STRING</item>
-    </list>
-    <list name="mark_as_advanced_nargs">
-      <item>CLEAR</item>
-      <item>FORCE</item>
-    </list>
-    <list name="math_nargs">
-      <item>EXPR</item>
-      <item>OUTPUT_FORMAT</item>
-    </list>
-    <list name="math_sargs">
-      <item>DECIMAL</item>
-      <item>HEXADECIMAL</item>
-    </list>
-    <list name="message_nargs">
-      <item>AUTHOR_WARNING</item>
-      <item>CHECK_FAIL</item>
-      <item>CHECK_PASS</item>
-      <item>CHECK_START</item>
-      <item>DEBUG</item>
-      <item>DEPRECATION</item>
-      <item>FATAL_ERROR</item>
-      <item>NOTICE</item>
-      <item>SEND_ERROR</item>
-      <item>STATUS</item>
-      <item>TRACE</item>
-      <item>VERBOSE</item>
-      <item>WARNING</item>
-    </list>
-    <list name="separate_arguments_nargs">
-      <item>NATIVE_COMMAND</item>
-      <item>PROGRAM</item>
-      <item>SEPARATE_ARGS</item>
-      <item>UNIX_COMMAND</item>
-      <item>WINDOWS_COMMAND</item>
-    </list>
-    <list name="set_directory_properties_nargs">
-      <item>PROPERTIES</item>
-    </list>
-    <list name="set_property_nargs">
-      <item>APPEND</item>
-      <item>APPEND_STRING</item>
-      <item>CACHE</item>
-      <item>DIRECTORY</item>
-      <item>GLOBAL</item>
-      <item>INSTALL</item>
-      <item>PROPERTY</item>
-      <item>SOURCE</item>
-      <item>TARGET</item>
-      <item>TARGET_DIRECTORY</item>
-      <item>TEST</item>
-      <item>VARIABLE</item>
-    </list>
-    <list name="set_nargs">
-      <item>CACHE</item>
-      <item>FORCE</item>
-      <item>PARENT_SCOPE</item>
-    </list>
-    <list name="set_sargs">
-      <item>BOOL</item>
-      <item>FILEPATH</item>
-      <item>INTERNAL</item>
-      <item>PATH</item>
-      <item>STATIC</item>
-      <item>STRING</item>
-    </list>
-    <list name="string_nargs">
-      <item>@ONLY</item>
-      <item>ALPHABET</item>
-      <item>APPEND</item>
-      <item>ASCII</item>
-      <item>COMPARE</item>
-      <item>CONCAT</item>
-      <item>CONFIGURE</item>
-      <item>EQUAL</item>
-      <item>ERROR_VARIABLE</item>
-      <item>ESCAPE_QUOTES</item>
-      <item>FIND</item>
-      <item>GENEX_STRIP</item>
-      <item>GET</item>
-      <item>GREATER</item>
-      <item>GREATER_EQUAL</item>
-      <item>HEX</item>
-      <item>JOIN</item>
-      <item>JSON</item>
-      <item>LENGTH</item>
-      <item>LESS</item>
-      <item>LESS_EQUAL</item>
-      <item>MAKE_C_IDENTIFIER</item>
-      <item>MATCH</item>
-      <item>MATCHALL</item>
-      <item>MD5</item>
-      <item>MEMBER</item>
-      <item>NAME</item>
-      <item>NAMESPACE</item>
-      <item>NOTEQUAL</item>
-      <item>PREPEND</item>
-      <item>RANDOM</item>
-      <item>RANDOM_SEED</item>
-      <item>REGEX</item>
-      <item>REMOVE</item>
-      <item>REPEAT</item>
-      <item>REPLACE</item>
-      <item>REVERSE</item>
-      <item>SET</item>
-      <item>SHA1</item>
-      <item>SHA224</item>
-      <item>SHA256</item>
-      <item>SHA384</item>
-      <item>SHA3_224</item>
-      <item>SHA3_256</item>
-      <item>SHA3_384</item>
-      <item>SHA3_512</item>
-      <item>SHA512</item>
-      <item>STRIP</item>
-      <item>SUBSTRING</item>
-      <item>TIMESTAMP</item>
-      <item>TOLOWER</item>
-      <item>TOUPPER</item>
-      <item>TYPE</item>
-      <item>UPPER</item>
-      <item>UTC</item>
-      <item>UUID</item>
-    </list>
-    <list name="unset_nargs">
-      <item>CACHE</item>
-      <item>PARENT_SCOPE</item>
-    </list>
-    <list name="while_nargs">
-      <item>AND</item>
-      <item>COMMAND</item>
-      <item>DEFINED</item>
-      <item>EQUAL</item>
-      <item>EXISTS</item>
-      <item>GREATER</item>
-      <item>GREATER_EQUAL</item>
-      <item>IN_LIST</item>
-      <item>IS_ABSOLUTE</item>
-      <item>IS_DIRECTORY</item>
-      <item>IS_NEWER_THAN</item>
-      <item>IS_SYMLINK</item>
-      <item>LESS</item>
-      <item>LESS_EQUAL</item>
-      <item>MATCHES</item>
-      <item>NOT</item>
-      <item>OR</item>
-      <item>POLICY</item>
-      <item>STREQUAL</item>
-      <item>STRGREATER</item>
-      <item>STRGREATER_EQUAL</item>
-      <item>STRLESS</item>
-      <item>STRLESS_EQUAL</item>
-      <item>TARGET</item>
-      <item>TEST</item>
-      <item>VERSION_EQUAL</item>
-      <item>VERSION_GREATER</item>
-      <item>VERSION_GREATER_EQUAL</item>
-      <item>VERSION_LESS</item>
-      <item>VERSION_LESS_EQUAL</item>
-    </list>
-    <list name="add_custom_command_nargs">
-      <item>APPEND</item>
-      <item>ARGS</item>
-      <item>BYPRODUCTS</item>
-      <item>COMMAND</item>
-      <item>COMMAND_EXPAND_LISTS</item>
-      <item>COMMENT</item>
-      <item>DEPENDS</item>
-      <item>DEPFILE</item>
-      <item>IMPLICIT_DEPENDS</item>
-      <item>JOB_POOL</item>
-      <item>MAIN_DEPENDENCY</item>
-      <item>OUTPUT</item>
-      <item>POST_BUILD</item>
-      <item>PRE_BUILD</item>
-      <item>PRE_LINK</item>
-      <item>TARGET</item>
-      <item>USES_TERMINAL</item>
-      <item>VERBATIM</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="add_custom_target_nargs">
-      <item>ALL</item>
-      <item>APPEND</item>
-      <item>BYPRODUCTS</item>
-      <item>COMMAND</item>
-      <item>COMMAND_EXPAND_LISTS</item>
-      <item>COMMENT</item>
-      <item>DEPENDS</item>
-      <item>DEPFILE</item>
-      <item>IMPLICIT_DEPENDS</item>
-      <item>JOB_POOL</item>
-      <item>SOURCES</item>
-      <item>USES_TERMINAL</item>
-      <item>VERBATIM</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="add_executable_nargs">
-      <item>ALIAS</item>
-      <item>EXCLUDE_FROM_ALL</item>
-      <item>GLOBAL</item>
-      <item>IMPORTED</item>
-      <item>MACOSX_BUNDLE</item>
-      <item>WIN32</item>
-    </list>
-    <list name="add_library_nargs">
-      <item>ALIAS</item>
-      <item>EXCLUDE_FROM_ALL</item>
-      <item>GLOBAL</item>
-      <item>IMPORTED</item>
-      <item>INTERFACE</item>
-      <item>MODULE</item>
-      <item>OBJECT</item>
-      <item>SHARED</item>
-      <item>STATIC</item>
-      <item>UNKNOWN</item>
-    </list>
-    <list name="add_subdirectory_nargs">
-      <item>EXCLUDE_FROM_ALL</item>
-    </list>
-    <list name="add_test_nargs">
-      <item>COMMAND</item>
-      <item>COMMAND_EXPAND_LISTS</item>
-      <item>CONFIGURATIONS</item>
-      <item>NAME</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="build_command_nargs">
-      <item>CONFIGURATION</item>
-      <item>PARALLEL_LEVEL</item>
-      <item>TARGET</item>
-    </list>
-    <list name="create_test_sourcelist_nargs">
-      <item>EXTRA_INCLUDE</item>
-      <item>FUNCTION</item>
-    </list>
-    <list name="define_property_nargs">
-      <item>BRIEF_DOCS</item>
-      <item>CACHED_VARIABLE</item>
-      <item>DIRECTORY</item>
-      <item>FULL_DOCS</item>
-      <item>GLOBAL</item>
-      <item>INHERITED</item>
-      <item>INITIALIZE_FROM_VARIABLE</item>
-      <item>PROPERTY</item>
-      <item>SOURCE</item>
-      <item>TEST</item>
-      <item>VARIABLE</item>
-    </list>
-    <list name="enable_language_nargs">
-      <item>OPTIONAL</item>
-    </list>
-    <list name="enable_language_sargs">
-      <item>ASM</item>
-      <item>ASM-ATT</item>
-      <item>ASM_MASM</item>
-      <item>ASM_NASM</item>
-      <item>C</item>
-      <item>CSharp</item>
-      <item>CUDA</item>
-      <item>CXX</item>
-      <item>Fortran</item>
-      <item>HIP</item>
-      <item>ISPC</item>
-      <item>Java</item>
-      <item>OBJC</item>
-      <item>OBJCXX</item>
-      <item>RC</item>
-      <item>Swift</item>
-    </list>
-    <list name="export_nargs">
-      <item>ANDROID_MK</item>
-      <item>APPEND</item>
-      <item>EXPORT</item>
-      <item>EXPORT_LINK_INTERFACE_LIBRARIES</item>
-      <item>FILE</item>
-      <item>NAMESPACE</item>
-      <item>TARGETS</item>
-    </list>
-    <list name="get_source_file_property_nargs">
-      <item>DIRECTORY</item>
-      <item>TARGET_DIRECTORY</item>
-    </list>
-    <list name="include_directories_nargs">
-      <item>AFTER</item>
-      <item>BEFORE</item>
-      <item>SYSTEM</item>
-    </list>
-    <list name="include_external_msproject_nargs">
-      <item>GUID</item>
-      <item>PLATFORM</item>
-      <item>TYPE</item>
-    </list>
-    <list name="install_nargs">
-      <item>ARCHIVE</item>
-      <item>BUNDLE</item>
-      <item>CODE</item>
-      <item>COMPONENT</item>
-      <item>CONFIGURATIONS</item>
-      <item>DESTINATION</item>
-      <item>DIRECTORIES</item>
-      <item>DIRECTORY</item>
-      <item>DIRECTORY_PERMISSIONS</item>
-      <item>EXCLUDE</item>
-      <item>EXCLUDE_FROM_ALL</item>
-      <item>EXPORT</item>
-      <item>EXPORT_ANDROID_MK</item>
-      <item>EXPORT_LINK_INTERFACE_LIBRARIES</item>
-      <item>FILE</item>
-      <item>FILES</item>
-      <item>FILES_MATCHING</item>
-      <item>FILE_PERMISSIONS</item>
-      <item>FILE_SET</item>
-      <item>FRAMEWORK</item>
-      <item>IMPORTED_RUNTIME_ARTIFACTS</item>
-      <item>INCLUDES</item>
-      <item>LIBRARY</item>
-      <item>MESSAGE_NEVER</item>
-      <item>NAMELINK_COMPONENT</item>
-      <item>NAMELINK_ONLY</item>
-      <item>NAMELINK_SKIP</item>
-      <item>NAMESPACE</item>
-      <item>OBJECTS</item>
-      <item>OPTIONAL</item>
-      <item>PATTERN</item>
-      <item>PERMISSIONS</item>
-      <item>POST_EXCLUDE_FILES</item>
-      <item>POST_EXCLUDE_REGEXES</item>
-      <item>POST_INCLUDE_FILES</item>
-      <item>POST_INCLUDE_REGEXES</item>
-      <item>PRE_EXCLUDE_REGEXES</item>
-      <item>PRE_INCLUDE_REGEXES</item>
-      <item>PRIVATE_HEADER</item>
-      <item>PROGRAMS</item>
-      <item>PUBLIC_HEADER</item>
-      <item>REGEX</item>
-      <item>RENAME</item>
-      <item>RESOURCE</item>
-      <item>RUNTIME</item>
-      <item>RUNTIME_DEPENDENCIES</item>
-      <item>RUNTIME_DEPENDENCY_SET</item>
-      <item>SCRIPT</item>
-      <item>TARGETS</item>
-      <item>TYPE</item>
-      <item>USE_SOURCE_PERMISSIONS</item>
-    </list>
-    <list name="install_sargs">
-      <item>GROUP_EXECUTE</item>
-      <item>GROUP_READ</item>
-      <item>GROUP_WRITE</item>
-      <item>OWNER_EXECUTE</item>
-      <item>OWNER_READ</item>
-      <item>OWNER_WRITE</item>
-      <item>SETGID</item>
-      <item>SETUID</item>
-      <item>WORLD_EXECUTE</item>
-      <item>WORLD_READ</item>
-      <item>WORLD_WRITE</item>
-    </list>
-    <list name="link_directories_nargs">
-      <item>AFTER</item>
-      <item>BEFORE</item>
-    </list>
-    <list name="link_libraries_nargs">
-      <item>debug</item>
-      <item>general</item>
-      <item>optimized</item>
-    </list>
-    <list name="load_cache_nargs">
-      <item>EXCLUDE</item>
-      <item>INCLUDE_INTERNALS</item>
-      <item>READ_WITH_PREFIX</item>
-    </list>
-    <list name="project_nargs">
-      <item>DESCRIPTION</item>
-      <item>HOMEPAGE_URL</item>
-      <item>LANGUAGES</item>
-      <item>VERSION</item>
-    </list>
-    <list name="project_sargs">
-      <item>ASM</item>
-      <item>ASM-ATT</item>
-      <item>ASM_MASM</item>
-      <item>ASM_NASM</item>
-      <item>C</item>
-      <item>CSharp</item>
-      <item>CUDA</item>
-      <item>CXX</item>
-      <item>Fortran</item>
-      <item>HIP</item>
-      <item>ISPC</item>
-      <item>Java</item>
-      <item>NONE</item>
-      <item>OBJC</item>
-      <item>OBJCXX</item>
-      <item>RC</item>
-      <item>Swift</item>
-    </list>
-    <list name="set_source_files_properties_nargs">
-      <item>DIRECTORY</item>
-      <item>PROPERTIES</item>
-      <item>TARGET_DIRECTORY</item>
-    </list>
-    <list name="set_target_properties_nargs">
-      <item>PROPERTIES</item>
-    </list>
-    <list name="set_tests_properties_nargs">
-      <item>PROPERTIES</item>
-    </list>
-    <list name="source_group_nargs">
-      <item>FILES</item>
-      <item>PREFIX</item>
-      <item>REGULAR_EXPRESSION</item>
-      <item>TREE</item>
-    </list>
-    <list name="target_compile_definitions_nargs">
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-    </list>
-    <list name="target_compile_features_nargs">
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-    </list>
-    <list name="target_compile_features_sargs">
-      <item>c_function_prototypes</item>
-      <item>c_restrict</item>
-      <item>c_static_assert</item>
-      <item>c_std_11</item>
-      <item>c_std_17</item>
-      <item>c_std_23</item>
-      <item>c_std_90</item>
-      <item>c_std_99</item>
-      <item>c_variadic_macros</item>
-      <item>cuda_std_03</item>
-      <item>cuda_std_11</item>
-      <item>cuda_std_14</item>
-      <item>cuda_std_17</item>
-      <item>cuda_std_20</item>
-      <item>cuda_std_23</item>
-      <item>cxx_aggregate_default_initializers</item>
-      <item>cxx_alias_templates</item>
-      <item>cxx_alignas</item>
-      <item>cxx_alignof</item>
-      <item>cxx_attribute_deprecated</item>
-      <item>cxx_attributes</item>
-      <item>cxx_auto_type</item>
-      <item>cxx_binary_literals</item>
-      <item>cxx_constexpr</item>
-      <item>cxx_contextual_conversions</item>
-      <item>cxx_decltype</item>
-      <item>cxx_decltype_auto</item>
-      <item>cxx_decltype_incomplete_return_types</item>
-      <item>cxx_default_function_template_args</item>
-      <item>cxx_defaulted_functions</item>
-      <item>cxx_defaulted_move_initializers</item>
-      <item>cxx_delegating_constructors</item>
-      <item>cxx_deleted_functions</item>
-      <item>cxx_digit_separators</item>
-      <item>cxx_enum_forward_declarations</item>
-      <item>cxx_explicit_conversions</item>
-      <item>cxx_extended_friend_declarations</item>
-      <item>cxx_extern_templates</item>
-      <item>cxx_final</item>
-      <item>cxx_func_identifier</item>
-      <item>cxx_generalized_initializers</item>
-      <item>cxx_generic_lambdas</item>
-      <item>cxx_inheriting_constructors</item>
-      <item>cxx_inline_namespaces</item>
-      <item>cxx_lambda_init_captures</item>
-      <item>cxx_lambdas</item>
-      <item>cxx_local_type_template_args</item>
-      <item>cxx_long_long_type</item>
-      <item>cxx_noexcept</item>
-      <item>cxx_nonstatic_member_init</item>
-      <item>cxx_nullptr</item>
-      <item>cxx_override</item>
-      <item>cxx_range_for</item>
-      <item>cxx_raw_string_literals</item>
-      <item>cxx_reference_qualified_functions</item>
-      <item>cxx_relaxed_constexpr</item>
-      <item>cxx_return_type_deduction</item>
-      <item>cxx_right_angle_brackets</item>
-      <item>cxx_rvalue_references</item>
-      <item>cxx_sizeof_member</item>
-      <item>cxx_static_assert</item>
-      <item>cxx_std_11</item>
-      <item>cxx_std_14</item>
-      <item>cxx_std_17</item>
-      <item>cxx_std_20</item>
-      <item>cxx_std_23</item>
-      <item>cxx_std_98</item>
-      <item>cxx_strong_enums</item>
-      <item>cxx_template_template_parameters</item>
-      <item>cxx_thread_local</item>
-      <item>cxx_trailing_return_types</item>
-      <item>cxx_unicode_literals</item>
-      <item>cxx_uniform_initialization</item>
-      <item>cxx_unrestricted_unions</item>
-      <item>cxx_user_literals</item>
-      <item>cxx_variable_templates</item>
-      <item>cxx_variadic_macros</item>
-      <item>cxx_variadic_templates</item>
-    </list>
-    <list name="target_compile_options_nargs">
-      <item>BEFORE</item>
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-    </list>
-    <list name="target_include_directories_nargs">
-      <item>AFTER</item>
-      <item>BEFORE</item>
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-      <item>SYSTEM</item>
-    </list>
-    <list name="target_link_directories_nargs">
-      <item>BEFORE</item>
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-    </list>
-    <list name="target_link_libraries_nargs">
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-    </list>
-    <list name="target_link_options_nargs">
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-    </list>
-    <list name="target_precompile_headers_nargs">
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-      <item>REUSE_FROM</item>
-    </list>
-    <list name="target_sources_nargs">
-      <item>BASE_DIRS</item>
-      <item>FILES</item>
-      <item>FILE_SET</item>
-      <item>INTERFACE</item>
-      <item>PRIVATE</item>
-      <item>PUBLIC</item>
-      <item>TYPE</item>
-    </list>
-    <list name="try_compile_nargs">
-      <item>CMAKE_FLAGS</item>
-      <item>COMPILE_DEFINITIONS</item>
-      <item>COPY_FILE</item>
-      <item>COPY_FILE_ERROR</item>
-      <item>LINK_LIBRARIES</item>
-      <item>LINK_OPTIONS</item>
-      <item>OUTPUT_VARIABLE</item>
-      <item>RESULT_VAR</item>
-      <item>SOURCES</item>
-    </list>
-    <list name="try_run_nargs">
-      <item>ARGS</item>
-      <item>CMAKE_FLAGS</item>
-      <item>COMPILE_DEFINITIONS</item>
-      <item>COMPILE_OUTPUT_VARIABLE</item>
-      <item>COMPILE_RESULT_VAR</item>
-      <item>LINK_LIBRARIES</item>
-      <item>LINK_OPTIONS</item>
-      <item>OUTPUT_VARIABLE</item>
-      <item>RUN_OUTPUT_VARIABLE</item>
-      <item>RUN_RESULT_VAR</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="ctest_build_nargs">
-      <item>APPEND</item>
-      <item>BUILD</item>
-      <item>CAPTURE_CMAKE_ERROR</item>
-      <item>CONFIGURATION</item>
-      <item>FLAGS</item>
-      <item>NUMBER_ERRORS</item>
-      <item>NUMBER_WARNINGS</item>
-      <item>PROJECT_NAME</item>
-      <item>RETURN_VALUE</item>
-      <item>TARGET</item>
-    </list>
-    <list name="ctest_configure_nargs">
-      <item>APPEND</item>
-      <item>BUILD</item>
-      <item>CAPTURE_CMAKE_ERROR</item>
-      <item>OPTIONS</item>
-      <item>QUIET</item>
-      <item>RETURN_VALUE</item>
-      <item>SOURCE</item>
-    </list>
-    <list name="ctest_coverage_nargs">
-      <item>APPEND</item>
-      <item>BUILD</item>
-      <item>CAPTURE_CMAKE_ERROR</item>
-      <item>LABELS</item>
-      <item>QUIET</item>
-      <item>RETURN_VALUE</item>
-    </list>
-    <list name="ctest_memcheck_nargs">
-      <item>APPEND</item>
-      <item>BUILD</item>
-      <item>DEFECT_COUNT</item>
-      <item>END</item>
-      <item>EXCLUDE</item>
-      <item>EXCLUDE_FIXTURE</item>
-      <item>EXCLUDE_FIXTURE_CLEANUP</item>
-      <item>EXCLUDE_FIXTURE_SETUP</item>
-      <item>EXCLUDE_LABEL</item>
-      <item>INCLUDE</item>
-      <item>INCLUDE_LABEL</item>
-      <item>PARALLEL_LEVEL</item>
-      <item>QUIET</item>
-      <item>RETURN_VALUE</item>
-      <item>SCHEDULE_RANDOM</item>
-      <item>START</item>
-      <item>STOP_TIME</item>
-      <item>STRIDE</item>
-      <item>TEST_LOAD</item>
-    </list>
-    <list name="ctest_run_script_nargs">
-      <item>NEW_PROCESS</item>
-      <item>RETURN_VALUE</item>
-    </list>
-    <list name="ctest_start_nargs">
-      <item>APPEND</item>
-      <item>QUIET</item>
-      <item>TRACK</item>
-    </list>
-    <list name="ctest_submit_nargs">
-      <item>BUILD_ID</item>
-      <item>CDASH_UPLOAD</item>
-      <item>CDASH_UPLOAD_TYPE</item>
-      <item>FILES</item>
-      <item>HTTPHEADER</item>
-      <item>PARTS</item>
-      <item>QUIET</item>
-      <item>RETRY_COUNT</item>
-      <item>RETRY_DELAY</item>
-      <item>RETURN_VALUE</item>
-      <item>SUBMIT_URL</item>
-    </list>
-    <list name="ctest_test_nargs">
-      <item>APPEND</item>
-      <item>BUILD</item>
-      <item>CAPTURE_CMAKE_ERROR</item>
-      <item>END</item>
-      <item>EXCLUDE</item>
-      <item>EXCLUDE_FIXTURE</item>
-      <item>EXCLUDE_FIXTURE_CLEANUP</item>
-      <item>EXCLUDE_FIXTURE_SETUP</item>
-      <item>EXCLUDE_LABEL</item>
-      <item>INCLUDE</item>
-      <item>INCLUDE_LABEL</item>
-      <item>PARALLEL_LEVEL</item>
-      <item>QUIET</item>
-      <item>REPEAT</item>
-      <item>RETURN_VALUE</item>
-      <item>SCHEDULE_RANDOM</item>
-      <item>START</item>
-      <item>STOP_ON_FAILURE</item>
-      <item>STOP_TIME</item>
-      <item>STRIDE</item>
-      <item>TEST_LOAD</item>
-    </list>
-    <list name="ctest_test_sargs">
-      <item>AFTER_TIMEOUT</item>
-      <item>UNTIL_FAIL</item>
-      <item>UNTIL_PASS</item>
-    </list>
-    <list name="ctest_update_nargs">
-      <item>QUIET</item>
-      <item>RETURN_VALUE</item>
-      <item>SOURCE</item>
-    </list>
-    <list name="ctest_upload_nargs">
-      <item>CAPTURE_CMAKE_ERROR</item>
-      <item>FILES</item>
-      <item>QUIET</item>
-    </list>
-    <list name="android_add_test_data_nargs">
-      <item>DEVICE_OBJECT_STORE</item>
-      <item>DEVICE_TEST_DIR</item>
-      <item>FILES</item>
-      <item>FILES_DEST</item>
-      <item>LIBS</item>
-      <item>LIBS_DEST</item>
-      <item>NO_LINK_REGEX</item>
-    </list>
-    <list name="check_c_source_compiles_nargs">
-      <item>FAIL_REGEX</item>
-    </list>
-    <list name="check_cxx_source_compiles_nargs">
-      <item>FAIL_REGEX</item>
-    </list>
-    <list name="check_fortran_source_compiles_nargs">
-      <item>FAIL_REGEX</item>
-      <item>SRC_EXT</item>
-    </list>
-    <list name="check_fortran_source_runs_nargs">
-      <item>SRC_EXT</item>
-    </list>
-    <list name="check_include_files_nargs">
-      <item>LANGUAGE</item>
-    </list>
-    <list name="check_include_files_sargs">
-      <item>C</item>
-      <item>CXX</item>
-    </list>
-    <list name="check_ipo_supported_nargs">
-      <item>LANGUAGES</item>
-      <item>OUTPUT</item>
-      <item>RESULT</item>
-    </list>
-    <list name="check_ipo_supported_sargs">
-      <item>C</item>
-      <item>CXX</item>
-      <item>Fortran</item>
-    </list>
-    <list name="check_language_sargs">
-      <item>ASM</item>
-      <item>ASM-ATT</item>
-      <item>ASM_MASM</item>
-      <item>ASM_NASM</item>
-      <item>C</item>
-      <item>CSharp</item>
-      <item>CUDA</item>
-      <item>CXX</item>
-      <item>Fortran</item>
-      <item>HIP</item>
-      <item>ISPC</item>
-      <item>Java</item>
-      <item>OBJC</item>
-      <item>OBJCXX</item>
-      <item>RC</item>
-      <item>Swift</item>
-    </list>
-    <list name="check_objc_source_compiles_nargs">
-      <item>FAIL_REGEX</item>
-    </list>
-    <list name="check_objcxx_source_compiles_nargs">
-      <item>FAIL_REGEX</item>
-    </list>
-    <list name="check_pie_supported_nargs">
-      <item>LANGUAGES</item>
-      <item>OUTPUT_VARIABLE</item>
-    </list>
-    <list name="check_pie_supported_sargs">
-      <item>C</item>
-      <item>CUDA</item>
-      <item>CXX</item>
-      <item>Fortran</item>
-      <item>HIP</item>
-      <item>OBJC</item>
-      <item>OBJCXX</item>
-    </list>
-    <list name="check_source_compiles_nargs">
-      <item>FAIL_REGEX</item>
-      <item>SRC_EXT</item>
-    </list>
-    <list name="check_source_runs_nargs">
-      <item>SRC_EXT</item>
-    </list>
-    <list name="check_struct_has_member_nargs">
-      <item>LANGUAGE</item>
-    </list>
-    <list name="check_struct_has_member_sargs">
-      <item>C</item>
-      <item>CXX</item>
-    </list>
-    <list name="check_type_size_nargs">
-      <item>BUILTIN_TYPES_ONLY</item>
-      <item>LANGUAGE</item>
-    </list>
-    <list name="check_type_size_sargs">
-      <item>C</item>
-      <item>CXX</item>
-    </list>
-    <list name="cmake_add_fortran_subdirectory_nargs">
-      <item>ARCHIVE_DIR</item>
-      <item>CMAKE_COMMAND_LINE</item>
-      <item>LIBRARIES</item>
-      <item>LINK_LIBRARIES</item>
-      <item>LINK_LIBS</item>
-      <item>NO_EXTERNAL_INSTALL</item>
-      <item>PROJECT</item>
-      <item>RUNTIME_DIR</item>
-    </list>
-    <list name="configure_package_config_file_nargs">
-      <item>INSTALL_DESTINATION</item>
-      <item>INSTALL_PREFIX</item>
-      <item>NO_CHECK_REQUIRED_COMPONENTS_MACRO</item>
-      <item>NO_SET_AND_CHECK_MACRO</item>
-      <item>PATH_VARS</item>
-    </list>
-    <list name="write_basic_package_version_file_nargs">
-      <item>ARCH_INDEPENDENT</item>
-      <item>COMPATIBILITY</item>
-      <item>VERSION</item>
-    </list>
-    <list name="write_basic_package_version_file_sargs">
-      <item>AnyNewerVersion</item>
-      <item>ExactVersion</item>
-      <item>SameMajorVersion</item>
-      <item>SameMinorVersion</item>
-    </list>
-    <list name="cmake_print_properties_nargs">
-      <item>CACHE_ENTRIES</item>
-      <item>DIRECTORIES</item>
-      <item>PROPERTIES</item>
-      <item>SOURCES</item>
-      <item>TARGETS</item>
-      <item>TESTS</item>
-    </list>
-    <list name="cmake_push_check_state_nargs">
-      <item>RESET</item>
-    </list>
-    <list name="cpack_add_component_nargs">
-      <item>ARCHIVE_FILE</item>
-      <item>DEPENDS</item>
-      <item>DESCRIPTION</item>
-      <item>DISABLED</item>
-      <item>DISPLAY_NAME</item>
-      <item>DOWNLOADED</item>
-      <item>GROUP</item>
-      <item>HIDDEN</item>
-      <item>INSTALL_TYPES</item>
-      <item>PLIST</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="cpack_add_component_group_nargs">
-      <item>BOLD_TITLE</item>
-      <item>DESCRIPTION</item>
-      <item>DISPLAY_NAME</item>
-      <item>EXPANDED</item>
-      <item>PARENT_GROUP</item>
-    </list>
-    <list name="cpack_add_install_type_nargs">
-      <item>DISPLAY_NAME</item>
-    </list>
-    <list name="cpack_configure_downloads_nargs">
-      <item>ADD_REMOVE</item>
-      <item>ALL</item>
-      <item>NO_ADD_REMOVE</item>
-      <item>UPLOAD_DIRECTORY</item>
-    </list>
-    <list name="cpack_ifw_configure_component_nargs">
-      <item>AUTO_DEPEND_ON</item>
-      <item>CHECKABLE</item>
-      <item>COMMON</item>
-      <item>DEFAULT</item>
-      <item>DEPENDENCIES</item>
-      <item>DEPENDS</item>
-      <item>DESCRIPTION</item>
-      <item>DISPLAY_NAME</item>
-      <item>ESSENTIAL</item>
-      <item>FORCED_INSTALLATION</item>
-      <item>LICENSES</item>
-      <item>NAME</item>
-      <item>PRIORITY</item>
-      <item>RELEASE_DATE</item>
-      <item>REPLACES</item>
-      <item>REQUIRES_ADMIN_RIGHTS]</item>
-      <item>SCRIPT</item>
-      <item>SORTING_PRIORITY</item>
-      <item>TRANSLATIONS</item>
-      <item>UPDATE_TEXT</item>
-      <item>USER_INTERFACES</item>
-      <item>VERSION</item>
-      <item>VIRTUAL</item>
-    </list>
-    <list name="cpack_ifw_configure_component_group_nargs">
-      <item>AUTO_DEPEND_ON</item>
-      <item>CHECKABLE</item>
-      <item>DEFAULT</item>
-      <item>DEPENDENCIES</item>
-      <item>DEPENDS</item>
-      <item>DESCRIPTION</item>
-      <item>DISPLAY_NAME</item>
-      <item>FORCED_INSTALLATION</item>
-      <item>LICENSES</item>
-      <item>NAME</item>
-      <item>PRIORITY</item>
-      <item>RELEASE_DATE</item>
-      <item>REPLACES</item>
-      <item>REQUIRES_ADMIN_RIGHTS</item>
-      <item>SCRIPT</item>
-      <item>SORTING_PRIORITY</item>
-      <item>TRANSLATIONS</item>
-      <item>UPDATE_TEXT</item>
-      <item>USER_INTERFACES</item>
-      <item>VERSION</item>
-      <item>VIRTUAL</item>
-    </list>
-    <list name="cpack_ifw_add_repository_nargs">
-      <item>DISABLED</item>
-      <item>DISPLAY_NAME</item>
-      <item>PASSWORD</item>
-      <item>URL</item>
-      <item>USERNAME</item>
-    </list>
-    <list name="cpack_ifw_update_repository_nargs">
-      <item>ADD</item>
-      <item>DISPLAY_NAME</item>
-      <item>NEW_URL</item>
-      <item>OLD_URL</item>
-      <item>PASSWORD</item>
-      <item>REMOVE</item>
-      <item>REPLACE</item>
-      <item>URL</item>
-      <item>USERNAME</item>
-    </list>
-    <list name="ctest_coverage_collect_gcov_nargs">
-      <item>BUILD</item>
-      <item>DELETE</item>
-      <item>GCOV_COMMAND</item>
-      <item>GCOV_OPTIONS</item>
-      <item>GLOB</item>
-      <item>QUIET</item>
-      <item>SOURCE</item>
-      <item>TARBALL</item>
-      <item>TARBALL_COMPRESSION</item>
-    </list>
-    <list name="ExternalData_Add_Target_nargs">
-      <item>SHOW_PROGRESS</item>
-    </list>
-    <list name="ExternalProject_Add_nargs">
-      <item>BINARY_DIR</item>
-      <item>BUILD_ALWAYS</item>
-      <item>BUILD_BYPRODUCTS</item>
-      <item>BUILD_COMMAND</item>
-      <item>BUILD_IN_SOURCE</item>
-      <item>CMAKE_ARGS</item>
-      <item>CMAKE_CACHE_ARGS</item>
-      <item>CMAKE_CACHE_DEFAULT_ARGS</item>
-      <item>CMAKE_COMMAND</item>
-      <item>CMAKE_GENERATOR</item>
-      <item>CMAKE_GENERATOR_INSTANCE</item>
-      <item>CMAKE_GENERATOR_PLATFORM</item>
-      <item>CMAKE_GENERATOR_TOOLSET</item>
-      <item>COMMAND</item>
-      <item>CONFIGURE_COMMAND</item>
-      <item>CONFIGURE_HANDLED_BY_BUILD</item>
-      <item>CVS_MODULE</item>
-      <item>CVS_REPOSITORY</item>
-      <item>CVS_TAG</item>
-      <item>DEPENDS</item>
-      <item>DOWNLOAD_COMMAND</item>
-      <item>DOWNLOAD_DIR</item>
-      <item>DOWNLOAD_NAME</item>
-      <item>DOWNLOAD_NO_EXTRACT</item>
-      <item>DOWNLOAD_NO_PROGRESS</item>
-      <item>EXCLUDE_FROM_ALL</item>
-      <item>GIT_CONFIG</item>
-      <item>GIT_PROGRESS</item>
-      <item>GIT_REMOTE_NAME</item>
-      <item>GIT_REMOTE_UPDATE_STRATEGY</item>
-      <item>GIT_REPOSITORY</item>
-      <item>GIT_SHALLOW</item>
-      <item>GIT_SUBMODULES</item>
-      <item>GIT_SUBMODULES_RECURSE</item>
-      <item>GIT_TAG</item>
-      <item>HG_REPOSITORY</item>
-      <item>HG_TAG</item>
-      <item>HTTP_HEADER</item>
-      <item>HTTP_PASSWORD</item>
-      <item>HTTP_USERNAME</item>
-      <item>INACTIVITY_TIMEOUT</item>
-      <item>INDEPENDENT_STEP_TARGETS</item>
-      <item>INSTALL_COMMAND</item>
-      <item>INSTALL_DIR</item>
-      <item>LIST_SEPARATOR</item>
-      <item>LOG_BUILD</item>
-      <item>LOG_CONFIGURE</item>
-      <item>LOG_DIR</item>
-      <item>LOG_DOWNLOAD</item>
-      <item>LOG_INSTALL</item>
-      <item>LOG_MERGED_STDOUTERR</item>
-      <item>LOG_OUTPUT_ON_FAILURE</item>
-      <item>LOG_PATCH</item>
-      <item>LOG_TEST</item>
-      <item>LOG_UPDATE</item>
-      <item>NETRC</item>
-      <item>NETRC_FILE</item>
-      <item>PATCH_COMMAND</item>
-      <item>PREFIX</item>
-      <item>SOURCE_DIR</item>
-      <item>SOURCE_SUBDIR</item>
-      <item>STAMP_DIR</item>
-      <item>STEP_TARGETS</item>
-      <item>SVN_PASSWORD</item>
-      <item>SVN_REPOSITORY</item>
-      <item>SVN_REVISION</item>
-      <item>SVN_TRUST_CERT</item>
-      <item>SVN_USERNAME</item>
-      <item>TEST_AFTER_INSTALL</item>
-      <item>TEST_BEFORE_INSTALL</item>
-      <item>TEST_COMMAND</item>
-      <item>TEST_EXCLUDE_FROM_MAIN</item>
-      <item>TIMEOUT</item>
-      <item>TLS_CAINFO</item>
-      <item>TLS_VERIFY</item>
-      <item>TMP_DIR</item>
-      <item>UPDATE_COMMAND</item>
-      <item>UPDATE_DISCONNECTED</item>
-      <item>URL</item>
-      <item>URL_HASH</item>
-      <item>URL_MD5</item>
-      <item>USES_TERMINAL_BUILD</item>
-      <item>USES_TERMINAL_CONFIGURE</item>
-      <item>USES_TERMINAL_DOWNLOAD</item>
-      <item>USES_TERMINAL_INSTALL</item>
-      <item>USES_TERMINAL_PATCH</item>
-      <item>USES_TERMINAL_TEST</item>
-      <item>USES_TERMINAL_UPDATE</item>
-    </list>
-    <list name="ExternalProject_Add_sargs">
-      <item>CHECKOUT</item>
-      <item>IGNORED</item>
-      <item>OPTIONAL</item>
-      <item>REBASE</item>
-      <item>REBASE_CHECKOUT</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="ExternalProject_Add_Step_nargs">
-      <item>ALWAYS</item>
-      <item>BYPRODUCTS</item>
-      <item>COMMAND</item>
-      <item>COMMENT</item>
-      <item>DEPENDEES</item>
-      <item>DEPENDERS</item>
-      <item>DEPENDS</item>
-      <item>EXCLUDE_FROM_MAIN</item>
-      <item>INDEPENDENT</item>
-      <item>LOG</item>
-      <item>USES_TERMINAL</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="ExternalProject_Add_StepTargets_nargs">
-      <item>NO_DEPENDS</item>
-    </list>
-    <list name="feature_summary_nargs">
-      <item>ALL</item>
-      <item>APPEND</item>
-      <item>DEFAULT_DESCRIPTION</item>
-      <item>DESCRIPTION</item>
-      <item>DISABLED_FEATURES</item>
-      <item>ENABLED_FEATURES</item>
-      <item>FATAL_ON_MISSING_REQUIRED_PACKAGES</item>
-      <item>FILENAME</item>
-      <item>INCLUDE_QUIET_PACKAGES</item>
-      <item>PACKAGES_FOUND</item>
-      <item>PACKAGES_NOT_FOUND</item>
-      <item>QUIET_ON_EMPTY</item>
-      <item>VAR</item>
-      <item>WHAT</item>
-    </list>
-    <list name="set_package_properties_nargs">
-      <item>DESCRIPTION</item>
-      <item>OPTIONAL</item>
-      <item>PROPERTIES</item>
-      <item>PURPOSE</item>
-      <item>RECOMMENDED</item>
-      <item>REQUIRED</item>
-      <item>RUNTIME</item>
-      <item>TYPE</item>
-      <item>URL</item>
-    </list>
-    <list name="FetchContent_Declare_nargs">
-      <item>CVS_MODULE</item>
-      <item>CVS_REPOSITORY</item>
-      <item>CVS_TAG</item>
-      <item>DOWNLOAD_COMMAND</item>
-      <item>DOWNLOAD_NAME</item>
-      <item>DOWNLOAD_NO_EXTRACT</item>
-      <item>DOWNLOAD_NO_PROGRESS</item>
-      <item>GIT_CONFIG</item>
-      <item>GIT_PROGRESS</item>
-      <item>GIT_REMOTE_NAME</item>
-      <item>GIT_REMOTE_UPDATE_STRATEGY</item>
-      <item>GIT_REPOSITORY</item>
-      <item>GIT_SHALLOW</item>
-      <item>GIT_SUBMODULES</item>
-      <item>GIT_SUBMODULES_RECURSE</item>
-      <item>GIT_TAG</item>
-      <item>HG_REPOSITORY</item>
-      <item>HG_TAG</item>
-      <item>HTTP_HEADER</item>
-      <item>HTTP_PASSWORD</item>
-      <item>HTTP_USERNAME</item>
-      <item>INACTIVITY_TIMEOUT</item>
-      <item>NETRC</item>
-      <item>NETRC_FILE</item>
-      <item>PATCH_COMMAND</item>
-      <item>SOURCE_SUBDIR</item>
-      <item>SVN_PASSWORD</item>
-      <item>SVN_REPOSITORY</item>
-      <item>SVN_REVISION</item>
-      <item>SVN_TRUST_CERT</item>
-      <item>SVN_USERNAME</item>
-      <item>TIMEOUT</item>
-      <item>TLS_CAINFO</item>
-      <item>TLS_VERIFY</item>
-      <item>UPDATE_COMMAND</item>
-      <item>UPDATE_DISCONNECTED</item>
-      <item>URL</item>
-      <item>URL_HASH</item>
-      <item>URL_MD5</item>
-    </list>
-    <list name="FetchContent_Populate_nargs">
-      <item>BINARY_DIR</item>
-      <item>CVS_MODULE</item>
-      <item>CVS_REPOSITORY</item>
-      <item>CVS_TAG</item>
-      <item>DOWNLOAD_COMMAND</item>
-      <item>DOWNLOAD_NAME</item>
-      <item>DOWNLOAD_NO_EXTRACT</item>
-      <item>DOWNLOAD_NO_PROGRESS</item>
-      <item>GIT_CONFIG</item>
-      <item>GIT_PROGRESS</item>
-      <item>GIT_REMOTE_NAME</item>
-      <item>GIT_REMOTE_UPDATE_STRATEGY</item>
-      <item>GIT_REPOSITORY</item>
-      <item>GIT_SHALLOW</item>
-      <item>GIT_SUBMODULES</item>
-      <item>GIT_SUBMODULES_RECURSE</item>
-      <item>GIT_TAG</item>
-      <item>HG_REPOSITORY</item>
-      <item>HG_TAG</item>
-      <item>HTTP_HEADER</item>
-      <item>HTTP_PASSWORD</item>
-      <item>HTTP_USERNAME</item>
-      <item>INACTIVITY_TIMEOUT</item>
-      <item>NETRC</item>
-      <item>NETRC_FILE</item>
-      <item>PATCH_COMMAND</item>
-      <item>QUIET</item>
-      <item>SOURCE_DIR</item>
-      <item>SOURCE_SUBDIR</item>
-      <item>SUBBUILD_DIR</item>
-      <item>SVN_PASSWORD</item>
-      <item>SVN_REPOSITORY</item>
-      <item>SVN_REVISION</item>
-      <item>SVN_TRUST_CERT</item>
-      <item>SVN_USERNAME</item>
-      <item>TIMEOUT</item>
-      <item>TLS_CAINFO</item>
-      <item>TLS_VERIFY</item>
-      <item>UPDATE_COMMAND</item>
-      <item>UPDATE_DISCONNECTED</item>
-      <item>URL</item>
-      <item>URL_HASH</item>
-      <item>URL_MD5</item>
-    </list>
-    <list name="FetchContent_GetProperties_nargs">
-      <item>BINARY_DIR</item>
-      <item>POPULATED</item>
-      <item>SOURCE_DIR</item>
-    </list>
-    <list name="find_package_handle_standard_args_nargs">
-      <item>CONFIG_MODE</item>
-      <item>DEFAULT_MSG</item>
-      <item>FAIL_MESSAGE</item>
-      <item>FOUND_VAR</item>
-      <item>HANDLE_COMPONENTS</item>
-      <item>HANDLE_VERSION_RANGE</item>
-      <item>NAME_MISMATCHED</item>
-      <item>REASON_FAILURE_MESSAGE</item>
-      <item>REQUIRED_VARS</item>
-      <item>VERSION_VAR</item>
-    </list>
-    <list name="find_package_check_version_nargs">
-      <item>HANDLE_VERSION_RANGE</item>
-      <item>RESULT_MESSAGE_VARIABLE</item>
-    </list>
-    <list name="FortranCInterface_HEADER_nargs">
-      <item>MACRO_NAMESPACE</item>
-      <item>SYMBOLS</item>
-      <item>SYMBOL_NAMESPACE</item>
-    </list>
-    <list name="FortranCInterface_VERIFY_nargs">
-      <item>CXX</item>
-      <item>QUIET</item>
-    </list>
-    <list name="generate_export_header_nargs">
-      <item>BASE_NAME</item>
-      <item>CUSTOM_CONTENT_FROM_VARIABLE</item>
-      <item>DEFINE_NO_DEPRECATED</item>
-      <item>DEPRECATED_MACRO_NAME</item>
-      <item>EXPORT_FILE_NAME</item>
-      <item>EXPORT_MACRO_NAME</item>
-      <item>INCLUDE_GUARD_NAME</item>
-      <item>NO_DEPRECATED_MACRO_NAME</item>
-      <item>NO_EXPORT_MACRO_NAME</item>
-      <item>PREFIX_NAME</item>
-      <item>STATIC_DEFINE</item>
-    </list>
-    <list name="gtest_add_tests_nargs">
-      <item>EXTRA_ARGS</item>
-      <item>SKIP_DEPENDENCY</item>
-      <item>SOURCES</item>
-      <item>TARGET</item>
-      <item>TEST_LIST</item>
-      <item>TEST_PREFIX</item>
-      <item>TEST_SUFFIX</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="gtest_discover_tests_nargs">
-      <item>DISCOVERY_MODE</item>
-      <item>DISCOVERY_TIMEOUT</item>
-      <item>EXTRA_ARGS</item>
-      <item>NO_PRETTY_TYPES</item>
-      <item>NO_PRETTY_VALUES</item>
-      <item>PROPERTIES</item>
-      <item>TEST_FILTER</item>
-      <item>TEST_LIST</item>
-      <item>TEST_PREFIX</item>
-      <item>TEST_SUFFIX</item>
-      <item>WORKING_DIRECTORY</item>
-      <item>XML_OUTPUT_DIR</item>
-    </list>
-    <list name="gtest_discover_tests_sargs">
-      <item>POST_BUILD</item>
-      <item>PRE_TEST</item>
-    </list>
-    <list name="add_jar_nargs">
-      <item>BUILD</item>
-      <item>DESTINATION</item>
-      <item>ENTRY_POINT</item>
-      <item>GENERATE_NATIVE_HEADERS</item>
-      <item>INCLUDE_JARS</item>
-      <item>INSTALL</item>
-      <item>MANIFEST</item>
-      <item>NAMESPACE</item>
-      <item>OUTPUT_DIR</item>
-      <item>OUTPUT_NAME</item>
-      <item>RESOURCES</item>
-      <item>SOURCES</item>
-      <item>VERSION</item>
-    </list>
-    <list name="install_jar_nargs">
-      <item>COMPONENT</item>
-      <item>DESTINATION</item>
-    </list>
-    <list name="install_jni_symlink_nargs">
-      <item>COMPONENT</item>
-      <item>DESTINATION</item>
-    </list>
-    <list name="create_javah_nargs">
-      <item>CLASSES</item>
-      <item>CLASSPATH</item>
-      <item>DEPENDS</item>
-      <item>GENERATED_FILES</item>
-      <item>OUTPUT_DIR</item>
-      <item>OUTPUT_NAME</item>
-      <item>TARGET</item>
-    </list>
-    <list name="install_jar_exports_nargs">
-      <item>COMPONENT</item>
-      <item>DESTINATION</item>
-      <item>FILE</item>
-      <item>NAMESPACE</item>
-      <item>TARGETS</item>
-    </list>
-    <list name="export_jars_nargs">
-      <item>FILE</item>
-      <item>NAMESPACE</item>
-      <item>TARGETS</item>
-    </list>
-    <list name="find_jar_nargs">
-      <item>DOC</item>
-      <item>ENV</item>
-      <item>NAMES</item>
-      <item>PATHS</item>
-      <item>VERSIONS</item>
-    </list>
-    <list name="create_javadoc_nargs">
-      <item>AUTHOR</item>
-      <item>CLASSPATH</item>
-      <item>DOCTITLE</item>
-      <item>FILES</item>
-      <item>INSTALLPATH</item>
-      <item>PACKAGES</item>
-      <item>SOURCEPATH</item>
-      <item>USE</item>
-      <item>VERSION</item>
-      <item>WINDOWTITLE</item>
-    </list>
-    <list name="swig_add_library_nargs">
-      <item>LANGUAGE</item>
-      <item>MODULE</item>
-      <item>NO_PROXY</item>
-      <item>OUTFILE_DIR</item>
-      <item>OUTPUT_DIR</item>
-      <item>SHARED</item>
-      <item>SOURCES</item>
-      <item>STATIC</item>
-      <item>TYPE</item>
-      <item>USE_BUILD_SHARED_LIBS</item>
-    </list>
-    <list name="squish_add_test_nargs">
-      <item>AUT</item>
-      <item>POST_COMMAND</item>
-      <item>PRE_COMMAND</item>
-      <item>SETTINGSGROUP</item>
-      <item>SUITE</item>
-      <item>TEST</item>
-    </list>
-    <list name="bison_target_nargs">
-      <item>COMPILE_FLAGS</item>
-      <item>DEFINES_FILE</item>
-      <item>REPORT_FILE</item>
-      <item>VERBOSE</item>
-    </list>
-    <list name="doxygen_add_docs_nargs">
-      <item>ALL</item>
-      <item>COMMENT</item>
-      <item>USE_STAMP_FILE</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="env_module_nargs">
-      <item>COMMAND</item>
-      <item>OUTPUT_VARIABLE</item>
-      <item>RESULT_VARIABLE</item>
-    </list>
-    <list name="env_module_swap_nargs">
-      <item>OUTPUT_VARIABLE</item>
-      <item>RESULT_VARIABLE</item>
-    </list>
-    <list name="flex_target_nargs">
-      <item>COMPILE_FLAGS</item>
-      <item>DEFINES_FILE</item>
-    </list>
-    <list name="gettext_create_translations_nargs">
-      <item>ALL</item>
-    </list>
-    <list name="gettext_process_pot_file_nargs">
-      <item>ALL</item>
-      <item>INSTALL_DESTINATION</item>
-      <item>LANGUAGES</item>
-    </list>
-    <list name="gettext_process_po_files_nargs">
-      <item>ALL</item>
-      <item>INSTALL_DESTINATION</item>
-      <item>PO_FILES</item>
-    </list>
-    <list name="matlab_add_unit_test_nargs">
-      <item>ADDITIONAL_PATH</item>
-      <item>CUSTOM_TEST_COMMAND</item>
-      <item>MATLAB_ADDITIONAL_STARTUP_OPTIONS</item>
-      <item>NAME</item>
-      <item>NO_UNITTEST_FRAMEWORK</item>
-      <item>TEST_ARGS</item>
-      <item>TIMEOUT</item>
-      <item>UNITTEST_FILE</item>
-      <item>UNITTEST_PRECOMMAND</item>
-    </list>
-    <list name="matlab_add_mex_nargs">
-      <item>DOCUMENTATION</item>
-      <item>EXCLUDE_FROM_ALL</item>
-      <item>EXECUTABLE</item>
-      <item>LINK_TO</item>
-      <item>MODULE</item>
-      <item>NAME</item>
-      <item>OUTPUT_NAME</item>
-      <item>SHARED</item>
-      <item>SRC</item>
-    </list>
-    <list name="matlab_add_mex_sargs">
-      <item>R2017b</item>
-      <item>R2018a</item>
-    </list>
-    <list name="pkg_check_modules_nargs">
-      <item>GLOBAL</item>
-      <item>IMPORTED_TARGET</item>
-      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
-      <item>NO_CMAKE_PATH</item>
-      <item>QUIET</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="pkg_search_module_nargs">
-      <item>GLOBAL</item>
-      <item>IMPORTED_TARGET</item>
-      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
-      <item>NO_CMAKE_PATH</item>
-      <item>QUIET</item>
-      <item>REQUIRED</item>
-    </list>
-    <list name="protobuf_generate_cpp_nargs">
-      <item>DESCRIPTORS</item>
-      <item>EXPORT_MACRO</item>
-    </list>
-    <list name="Python_add_library_nargs">
-      <item>MODULE</item>
-      <item>SHARED</item>
-      <item>STATIC</item>
-      <item>WITH_SOABI</item>
-    </list>
-    <list name="Subversion_WC_INFO_nargs">
-      <item>IGNORE_SVN_FAILURE</item>
-    </list>
-
-    <list name="variables">
-      <item>ALSA_LIBRARY</item>
-      <item>ANDROID</item>
-      <item>APPLE</item>
-      <item>ARGC</item>
-      <item>ARGN</item>
-      <item>ARGV</item>
-      <item>ASPELL_DEFINITIONS</item>
-      <item>ASPELL_EXECUTABLE</item>
-      <item>AVIFILE_DEFINITIONS</item>
-      <item>BIBER_COMPILER</item>
-      <item>BIBTEX_COMPILER</item>
-      <item>BISON_EXECUTABLE</item>
-      <item>BLAS_LINKER_FLAGS</item>
-      <item>BLA_F95</item>
-      <item>BLA_PREFER_PKGCONFIG</item>
-      <item>BLA_SIZEOF_INTEGER</item>
-      <item>BLA_STATIC</item>
-      <item>BLA_VENDOR</item>
-      <item>BOOSTROOT</item>
-      <item>BOOST_INCLUDEDIR</item>
-      <item>BOOST_LIBRARYDIR</item>
-      <item>BORLAND</item>
-      <item>BUILD_SHARED_LIBS</item>
-      <item>BUILD_TESTING</item>
-      <item>BU_CHMOD_BUNDLE_ITEMS</item>
-      <item>BZIP2_INCLUDE_DIR</item>
-      <item>BZIP2_NEED_PREFIX</item>
-      <item>Backtrace_HEADER</item>
-      <item>Backtrace_LIBRARY</item>
-      <item>Boost_ADDITIONAL_VERSIONS</item>
-      <item>Boost_ARCHITECTURE</item>
-      <item>Boost_COMPILER</item>
-      <item>Boost_DEBUG</item>
-      <item>Boost_INCLUDE_DIR</item>
-      <item>Boost_LIBRARY_DIR_DEBUG</item>
-      <item>Boost_LIBRARY_DIR_RELEASE</item>
-      <item>Boost_LIB_PREFIX</item>
-      <item>Boost_NAMESPACE</item>
-      <item>Boost_NO_SYSTEM_PATHS</item>
-      <item>Boost_NO_WARN_NEW_VERSIONS</item>
-      <item>Boost_REALPATH</item>
-      <item>Boost_THREADAPI</item>
-      <item>Boost_USE_DEBUG_LIBS</item>
-      <item>Boost_USE_DEBUG_PYTHON</item>
-      <item>Boost_USE_DEBUG_RUNTIME</item>
-      <item>Boost_USE_MULTITHREADED</item>
-      <item>Boost_USE_RELEASE_LIBS</item>
-      <item>Boost_USE_STATIC_LIBS</item>
-      <item>Boost_USE_STLPORT</item>
-      <item>Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS</item>
-      <item>Boost_VERSION_COUNT</item>
-      <item>Boost_VERSION_MACRO</item>
-      <item>CABLE</item>
-      <item>CABLE_INCLUDE_DIR</item>
-      <item>CABLE_TCL_LIBRARY</item>
-      <item>CMAKE_ABSOLUTE_DESTINATION_FILES</item>
-      <item>CMAKE_AIX_EXPORT_ALL_SYMBOLS</item>
-      <item>CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS</item>
-      <item>CMAKE_ANDROID_API</item>
-      <item>CMAKE_ANDROID_API_MIN</item>
-      <item>CMAKE_ANDROID_ARCH</item>
-      <item>CMAKE_ANDROID_ARCH_ABI</item>
-      <item>CMAKE_ANDROID_ARM_MODE</item>
-      <item>CMAKE_ANDROID_ARM_NEON</item>
-      <item>CMAKE_ANDROID_ASSETS_DIRECTORIES</item>
-      <item>CMAKE_ANDROID_GUI</item>
-      <item>CMAKE_ANDROID_JAR_DEPENDENCIES</item>
-      <item>CMAKE_ANDROID_JAR_DIRECTORIES</item>
-      <item>CMAKE_ANDROID_JAVA_SOURCE_DIR</item>
-      <item>CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES</item>
-      <item>CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES</item>
-      <item>CMAKE_ANDROID_NDK</item>
-      <item>CMAKE_ANDROID_NDK_DEPRECATED_HEADERS</item>
-      <item>CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG</item>
-      <item>CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION</item>
-      <item>CMAKE_ANDROID_NDK_VERSION</item>
-      <item>CMAKE_ANDROID_PROCESS_MAX</item>
-      <item>CMAKE_ANDROID_PROGUARD</item>
-      <item>CMAKE_ANDROID_PROGUARD_CONFIG_PATH</item>
-      <item>CMAKE_ANDROID_SECURE_PROPS_PATH</item>
-      <item>CMAKE_ANDROID_SKIP_ANT_STEP</item>
-      <item>CMAKE_ANDROID_STANDALONE_TOOLCHAIN</item>
-      <item>CMAKE_ANDROID_STL_TYPE</item>
-      <item>CMAKE_ANSI_CXXFLAGS</item>
-      <item>CMAKE_APPBUNDLE_PATH</item>
-      <item>CMAKE_APPLE_SILICON_PROCESSOR</item>
-      <item>CMAKE_AR</item>
-      <item>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</item>
-      <item>CMAKE_ARGC</item>
-      <item>CMAKE_AUTOGEN_ORIGIN_DEPENDS</item>
-      <item>CMAKE_AUTOGEN_PARALLEL</item>
-      <item>CMAKE_AUTOGEN_VERBOSE</item>
-      <item>CMAKE_AUTOMOC</item>
-      <item>CMAKE_AUTOMOC_DEPEND_FILTERS</item>
-      <item>CMAKE_AUTOMOC_MOC_OPTIONS</item>
-      <item>CMAKE_AUTOMOC_PATH_PREFIX</item>
-      <item>CMAKE_AUTOMOC_RELAXED_MODE</item>
-      <item>CMAKE_AUTORCC</item>
-      <item>CMAKE_AUTORCC_OPTIONS</item>
-      <item>CMAKE_AUTOUIC</item>
-      <item>CMAKE_AUTOUIC_OPTIONS</item>
-      <item>CMAKE_AUTOUIC_SEARCH_PATHS</item>
-      <item>CMAKE_BACKWARDS_COMPATIBILITY</item>
-      <item>CMAKE_BINARY_DIR</item>
-      <item>CMAKE_BUILD_RPATH</item>
-      <item>CMAKE_BUILD_RPATH_USE_ORIGIN</item>
-      <item>CMAKE_BUILD_TOOL</item>
-      <item>CMAKE_BUILD_TYPE</item>
-      <item>CMAKE_BUILD_WITH_INSTALL_NAME_DIR</item>
-      <item>CMAKE_BUILD_WITH_INSTALL_RPATH</item>
-      <item>CMAKE_CACHEFILE_DIR</item>
-      <item>CMAKE_CACHE_MAJOR_VERSION</item>
-      <item>CMAKE_CACHE_MINOR_VERSION</item>
-      <item>CMAKE_CACHE_PATCH_VERSION</item>
-      <item>CMAKE_CFG_INTDIR</item>
-      <item>CMAKE_CLANG_VFS_OVERLAY</item>
-      <item>CMAKE_CL_64</item>
-      <item>CMAKE_CODEBLOCKS_COMPILER_ID</item>
-      <item>CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES</item>
-      <item>CMAKE_CODELITE_USE_TARGETS</item>
-      <item>CMAKE_COLOR_MAKEFILE</item>
-      <item>CMAKE_COMMAND</item>
-      <item>CMAKE_COMPILER_2005</item>
-      <item>CMAKE_COMPILER_IS_GNUCC</item>
-      <item>CMAKE_COMPILER_IS_GNUCXX</item>
-      <item>CMAKE_COMPILER_IS_GNUG77</item>
-      <item>CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY</item>
-      <item>CMAKE_CONFIGURATION_TYPES</item>
-      <item>CMAKE_CROSSCOMPILING</item>
-      <item>CMAKE_CROSSCOMPILING_EMULATOR</item>
-      <item>CMAKE_CROSS_CONFIGS</item>
-      <item>CMAKE_CTEST_ARGUMENTS</item>
-      <item>CMAKE_CTEST_COMMAND</item>
-      <item>CMAKE_CUDA_ARCHITECTURES</item>
-      <item>CMAKE_CUDA_COMPILE_FEATURES</item>
-      <item>CMAKE_CUDA_EXTENSIONS</item>
-      <item>CMAKE_CUDA_HOST_COMPILER</item>
-      <item>CMAKE_CUDA_LINK_NO_PIE_SUPPORTED</item>
-      <item>CMAKE_CUDA_LINK_PIE_SUPPORTED</item>
-      <item>CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</item>
-      <item>CMAKE_CUDA_RUNTIME_LIBRARY</item>
-      <item>CMAKE_CUDA_SEPARABLE_COMPILATION</item>
-      <item>CMAKE_CUDA_STANDARD</item>
-      <item>CMAKE_CUDA_STANDARD_REQUIRED</item>
-      <item>CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES</item>
-      <item>CMAKE_CURRENT_BINARY_DIR</item>
-      <item>CMAKE_CURRENT_FUNCTION</item>
-      <item>CMAKE_CURRENT_FUNCTION_LIST_DIR</item>
-      <item>CMAKE_CURRENT_FUNCTION_LIST_FILE</item>
-      <item>CMAKE_CURRENT_FUNCTION_LIST_LINE</item>
-      <item>CMAKE_CURRENT_LIST_DIR</item>
-      <item>CMAKE_CURRENT_LIST_FILE</item>
-      <item>CMAKE_CURRENT_LIST_LINE</item>
-      <item>CMAKE_CURRENT_SOURCE_DIR</item>
-      <item>CMAKE_CXX_COMPILE_FEATURES</item>
-      <item>CMAKE_CXX_EXTENSIONS</item>
-      <item>CMAKE_CXX_LINK_NO_PIE_SUPPORTED</item>
-      <item>CMAKE_CXX_LINK_PIE_SUPPORTED</item>
-      <item>CMAKE_CXX_STANDARD</item>
-      <item>CMAKE_CXX_STANDARD_REQUIRED</item>
-      <item>CMAKE_C_COMPILE_FEATURES</item>
-      <item>CMAKE_C_EXTENSIONS</item>
-      <item>CMAKE_C_LINK_NO_PIE_SUPPORTED</item>
-      <item>CMAKE_C_LINK_PIE_SUPPORTED</item>
-      <item>CMAKE_C_STANDARD</item>
-      <item>CMAKE_C_STANDARD_REQUIRED</item>
-      <item>CMAKE_DEBUG_POSTFIX</item>
-      <item>CMAKE_DEBUG_TARGET_PROPERTIES</item>
-      <item>CMAKE_DEFAULT_BUILD_TYPE</item>
-      <item>CMAKE_DEFAULT_CONFIGS</item>
-      <item>CMAKE_DEPENDS_IN_PROJECT_ONLY</item>
-      <item>CMAKE_DIRECTORY_LABELS</item>
-      <item>CMAKE_DISABLE_PRECOMPILE_HEADERS</item>
-      <item>CMAKE_DL_LIBS</item>
-      <item>CMAKE_DOTNET_SDK</item>
-      <item>CMAKE_DOTNET_TARGET_FRAMEWORK</item>
-      <item>CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION</item>
-      <item>CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES</item>
-      <item>CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT</item>
-      <item>CMAKE_ECLIPSE_MAKE_ARGUMENTS</item>
-      <item>CMAKE_ECLIPSE_RESOURCE_ENCODING</item>
-      <item>CMAKE_ECLIPSE_VERSION</item>
-      <item>CMAKE_EDIT_COMMAND</item>
-      <item>CMAKE_ENABLE_EXPORTS</item>
-      <item>CMAKE_ERROR_DEPRECATED</item>
-      <item>CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>
-      <item>CMAKE_EXECUTABLE_SUFFIX</item>
-      <item>CMAKE_EXECUTE_PROCESS_COMMAND_ECHO</item>
-      <item>CMAKE_EXE_LINKER_FLAGS</item>
-      <item>CMAKE_EXE_LINKER_FLAGS_INIT</item>
-      <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>
-      <item>CMAKE_EXPORT_NO_PACKAGE_REGISTRY</item>
-      <item>CMAKE_EXPORT_PACKAGE_REGISTRY</item>
-      <item>CMAKE_EXTRA_GENERATOR</item>
-      <item>CMAKE_EXTRA_INCLUDE_FILES</item>
-      <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item>
-      <item>CMAKE_FIND_APPBUNDLE</item>
-      <item>CMAKE_FIND_DEBUG_MODE</item>
-      <item>CMAKE_FIND_FRAMEWORK</item>
-      <item>CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS</item>
-      <item>CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX</item>
-      <item>CMAKE_FIND_LIBRARY_PREFIXES</item>
-      <item>CMAKE_FIND_LIBRARY_SUFFIXES</item>
-      <item>CMAKE_FIND_NO_INSTALL_PREFIX</item>
-      <item>CMAKE_FIND_PACKAGE_NAME</item>
-      <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item>
-      <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item>
-      <item>CMAKE_FIND_PACKAGE_PREFER_CONFIG</item>
-      <item>CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS</item>
-      <item>CMAKE_FIND_PACKAGE_SORT_DIRECTION</item>
-      <item>CMAKE_FIND_PACKAGE_SORT_ORDER</item>
-      <item>CMAKE_FIND_PACKAGE_WARN_NO_MODULE</item>
-      <item>CMAKE_FIND_ROOT_PATH</item>
-      <item>CMAKE_FIND_ROOT_PATH_MODE_INCLUDE</item>
-      <item>CMAKE_FIND_ROOT_PATH_MODE_LIBRARY</item>
-      <item>CMAKE_FIND_ROOT_PATH_MODE_PACKAGE</item>
-      <item>CMAKE_FIND_ROOT_PATH_MODE_PROGRAM</item>
-      <item>CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH</item>
-      <item>CMAKE_FIND_USE_CMAKE_PATH</item>
-      <item>CMAKE_FIND_USE_CMAKE_SYSTEM_PATH</item>
-      <item>CMAKE_FIND_USE_PACKAGE_REGISTRY</item>
-      <item>CMAKE_FIND_USE_PACKAGE_ROOT_PATH</item>
-      <item>CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH</item>
-      <item>CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY</item>
-      <item>CMAKE_FOLDER</item>
-      <item>CMAKE_FRAMEWORK</item>
-      <item>CMAKE_FRAMEWORK_PATH</item>
-      <item>CMAKE_Fortran_FORMAT</item>
-      <item>CMAKE_Fortran_LINK_NO_PIE_SUPPORTED</item>
-      <item>CMAKE_Fortran_LINK_PIE_SUPPORTED</item>
-      <item>CMAKE_Fortran_MODDIR_DEFAULT</item>
-      <item>CMAKE_Fortran_MODDIR_FLAG</item>
-      <item>CMAKE_Fortran_MODOUT_FLAG</item>
-      <item>CMAKE_Fortran_MODULE_DIRECTORY</item>
-      <item>CMAKE_Fortran_PREPROCESS</item>
-      <item>CMAKE_GENERATOR</item>
-      <item>CMAKE_GENERATOR_INSTANCE</item>
-      <item>CMAKE_GENERATOR_NO_COMPILER_ENV</item>
-      <item>CMAKE_GENERATOR_PLATFORM</item>
-      <item>CMAKE_GENERATOR_TOOLSET</item>
-      <item>CMAKE_GET_OS_RELEASE_FALLBACK_RESULT</item>
-      <item>CMAKE_GET_OS_RELEASE_FALLBACK_SCRIPTS</item>
-      <item>CMAKE_GET_RUNTIME_DEPENDENCIES_COMMAND</item>
-      <item>CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM</item>
-      <item>CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL</item>
-      <item>CMAKE_GLOBAL_AUTOGEN_TARGET</item>
-      <item>CMAKE_GLOBAL_AUTOGEN_TARGET_NAME</item>
-      <item>CMAKE_GLOBAL_AUTORCC_TARGET</item>
-      <item>CMAKE_GLOBAL_AUTORCC_TARGET_NAME</item>
-      <item>CMAKE_GNUtoMS</item>
-      <item>CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE</item>
-      <item>CMAKE_HAS_ANSI_STRING_STREAM</item>
-      <item>CMAKE_HIP_ARCHITECTURES</item>
-      <item>CMAKE_HIP_EXTENSIONS</item>
-      <item>CMAKE_HIP_LINK_NO_PIE_SUPPORTED</item>
-      <item>CMAKE_HIP_LINK_PIE_SUPPORTED</item>
-      <item>CMAKE_HIP_STANDARD</item>
-      <item>CMAKE_HIP_STANDARD_REQUIRED</item>
-      <item>CMAKE_HOST_APPLE</item>
-      <item>CMAKE_HOST_SOLARIS</item>
-      <item>CMAKE_HOST_SYSTEM</item>
-      <item>CMAKE_HOST_SYSTEM_NAME</item>
-      <item>CMAKE_HOST_SYSTEM_PROCESSOR</item>
-      <item>CMAKE_HOST_SYSTEM_VERSION</item>
-      <item>CMAKE_HOST_UNIX</item>
-      <item>CMAKE_HOST_WIN32</item>
-      <item>CMAKE_HP_PTHREADS_INIT</item>
-      <item>CMAKE_IGNORE_PATH</item>
-      <item>CMAKE_IGNORE_PREFIX_PATH</item>
-      <item>CMAKE_IMPORT_LIBRARY_PREFIX</item>
-      <item>CMAKE_IMPORT_LIBRARY_SUFFIX</item>
-      <item>CMAKE_INCLUDE_CURRENT_DIR</item>
-      <item>CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE</item>
-      <item>CMAKE_INCLUDE_DIRECTORIES_BEFORE</item>
-      <item>CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE</item>
-      <item>CMAKE_INCLUDE_PATH</item>
-      <item>CMAKE_INSTALL_BINDIR</item>
-      <item>CMAKE_INSTALL_DATADIR</item>
-      <item>CMAKE_INSTALL_DATAROOTDIR</item>
-      <item>CMAKE_INSTALL_DEBUG_LIBRARIES</item>
-      <item>CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY</item>
-      <item>CMAKE_INSTALL_DEFAULT_COMPONENT_NAME</item>
-      <item>CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>
-      <item>CMAKE_INSTALL_DOCDIR</item>
-      <item>CMAKE_INSTALL_FULL_BINDIR</item>
-      <item>CMAKE_INSTALL_FULL_DATADIR</item>
-      <item>CMAKE_INSTALL_FULL_DATAROOTDIR</item>
-      <item>CMAKE_INSTALL_FULL_DOCDIR</item>
-      <item>CMAKE_INSTALL_FULL_INCLUDEDIR</item>
-      <item>CMAKE_INSTALL_FULL_INFODIR</item>
-      <item>CMAKE_INSTALL_FULL_LIBDIR</item>
-      <item>CMAKE_INSTALL_FULL_LIBEXECDIR</item>
-      <item>CMAKE_INSTALL_FULL_LOCALEDIR</item>
-      <item>CMAKE_INSTALL_FULL_LOCALSTATEDIR</item>
-      <item>CMAKE_INSTALL_FULL_MANDIR</item>
-      <item>CMAKE_INSTALL_FULL_OLDINCLUDEDIR</item>
-      <item>CMAKE_INSTALL_FULL_RUNSTATEDIR</item>
-      <item>CMAKE_INSTALL_FULL_SBINDIR</item>
-      <item>CMAKE_INSTALL_FULL_SHAREDSTATEDIR</item>
-      <item>CMAKE_INSTALL_FULL_SYSCONFDIR</item>
-      <item>CMAKE_INSTALL_INCLUDEDIR</item>
-      <item>CMAKE_INSTALL_INFODIR</item>
-      <item>CMAKE_INSTALL_LIBDIR</item>
-      <item>CMAKE_INSTALL_LIBEXECDIR</item>
-      <item>CMAKE_INSTALL_LOCALEDIR</item>
-      <item>CMAKE_INSTALL_LOCALSTATEDIR</item>
-      <item>CMAKE_INSTALL_MANDIR</item>
-      <item>CMAKE_INSTALL_MESSAGE</item>
-      <item>CMAKE_INSTALL_MFC_LIBRARIES</item>
-      <item>CMAKE_INSTALL_NAME_DIR</item>
-      <item>CMAKE_INSTALL_OLDINCLUDEDIR</item>
-      <item>CMAKE_INSTALL_OPENMP_LIBRARIES</item>
-      <item>CMAKE_INSTALL_PREFIX</item>
-      <item>CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT</item>
-      <item>CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
-      <item>CMAKE_INSTALL_RPATH</item>
-      <item>CMAKE_INSTALL_RPATH_USE_LINK_PATH</item>
-      <item>CMAKE_INSTALL_RUNSTATEDIR</item>
-      <item>CMAKE_INSTALL_SBINDIR</item>
-      <item>CMAKE_INSTALL_SHAREDSTATEDIR</item>
-      <item>CMAKE_INSTALL_SYSCONFDIR</item>
-      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT</item>
-      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION</item>
-      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS</item>
-      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS</item>
-      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP</item>
-      <item>CMAKE_INSTALL_UCRT_LIBRARIES</item>
-      <item>CMAKE_INTERPROCEDURAL_OPTIMIZATION</item>
-      <item>CMAKE_IOS_INSTALL_COMBINED</item>
-      <item>CMAKE_ISPC_HEADER_DIRECTORY</item>
-      <item>CMAKE_ISPC_HEADER_SUFFIX</item>
-      <item>CMAKE_ISPC_INSTRUCTION_SETS</item>
-      <item>CMAKE_JAR_CLASSES_PREFIX</item>
-      <item>CMAKE_JAVA_COMPILE_FLAGS</item>
-      <item>CMAKE_JAVA_INCLUDE_PATH</item>
-      <item>CMAKE_JNI_TARGET</item>
-      <item>CMAKE_JOB_POOLS</item>
-      <item>CMAKE_JOB_POOL_COMPILE</item>
-      <item>CMAKE_JOB_POOL_LINK</item>
-      <item>CMAKE_LIBRARY_ARCHITECTURE</item>
-      <item>CMAKE_LIBRARY_ARCHITECTURE_REGEX</item>
-      <item>CMAKE_LIBRARY_OUTPUT_DIRECTORY</item>
-      <item>CMAKE_LIBRARY_PATH</item>
-      <item>CMAKE_LIBRARY_PATH_FLAG</item>
-      <item>CMAKE_LINK_DEF_FILE_FLAG</item>
-      <item>CMAKE_LINK_DEPENDS_NO_SHARED</item>
-      <item>CMAKE_LINK_DIRECTORIES_BEFORE</item>
-      <item>CMAKE_LINK_INTERFACE_LIBRARIES</item>
-      <item>CMAKE_LINK_LIBRARIES_ONLY_TARGETS</item>
-      <item>CMAKE_LINK_LIBRARY_FILE_FLAG</item>
-      <item>CMAKE_LINK_LIBRARY_FLAG</item>
-      <item>CMAKE_LINK_LIBRARY_SUFFIX</item>
-      <item>CMAKE_LINK_SEARCH_END_STATIC</item>
-      <item>CMAKE_LINK_SEARCH_START_STATIC</item>
-      <item>CMAKE_LINK_WHAT_YOU_USE</item>
-      <item>CMAKE_LINK_WHAT_YOU_USE_CHECK</item>
-      <item>CMAKE_MACOSX_BUNDLE</item>
-      <item>CMAKE_MACOSX_RPATH</item>
-      <item>CMAKE_MAJOR_VERSION</item>
-      <item>CMAKE_MAKE_PROGRAM</item>
-      <item>CMAKE_MATCH_COUNT</item>
-      <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item>
-      <item>CMAKE_MESSAGE_CONTEXT</item>
-      <item>CMAKE_MESSAGE_CONTEXT_SHOW</item>
-      <item>CMAKE_MESSAGE_INDENT</item>
-      <item>CMAKE_MESSAGE_LOG_LEVEL</item>
-      <item>CMAKE_MFC_FLAG</item>
-      <item>CMAKE_MINIMUM_REQUIRED_VERSION</item>
-      <item>CMAKE_MINOR_VERSION</item>
-      <item>CMAKE_MODULE_LINKER_FLAGS</item>
-      <item>CMAKE_MODULE_LINKER_FLAGS_INIT</item>
-      <item>CMAKE_MODULE_PATH</item>
-      <item>CMAKE_MSVCIDE_RUN_PATH</item>
-      <item>CMAKE_MSVC_RUNTIME_LIBRARY</item>
-      <item>CMAKE_NETRC</item>
-      <item>CMAKE_NETRC_FILE</item>
-      <item>CMAKE_NINJA_OUTPUT_PATH_PREFIX</item>
-      <item>CMAKE_NO_ANSI_FOR_SCOPE</item>
-      <item>CMAKE_NO_ANSI_STREAM_HEADERS</item>
-      <item>CMAKE_NO_ANSI_STRING_STREAM</item>
-      <item>CMAKE_NO_BUILTIN_CHRPATH</item>
-      <item>CMAKE_NO_STD_NAMESPACE</item>
-      <item>CMAKE_NO_SYSTEM_FROM_IMPORTED</item>
-      <item>CMAKE_OBJCXX_EXTENSIONS</item>
-      <item>CMAKE_OBJCXX_LINK_NO_PIE_SUPPORTED</item>
-      <item>CMAKE_OBJCXX_LINK_PIE_SUPPORTED</item>
-      <item>CMAKE_OBJCXX_STANDARD</item>
-      <item>CMAKE_OBJCXX_STANDARD_REQUIRED</item>
-      <item>CMAKE_OBJC_EXTENSIONS</item>
-      <item>CMAKE_OBJC_LINK_NO_PIE_SUPPORTED</item>
-      <item>CMAKE_OBJC_LINK_PIE_SUPPORTED</item>
-      <item>CMAKE_OBJC_STANDARD</item>
-      <item>CMAKE_OBJC_STANDARD_REQUIRED</item>
-      <item>CMAKE_OBJECT_PATH_MAX</item>
-      <item>CMAKE_OPTIMIZE_DEPENDENCIES</item>
-      <item>CMAKE_OSX_ARCHITECTURES</item>
-      <item>CMAKE_OSX_DEPLOYMENT_TARGET</item>
-      <item>CMAKE_OSX_SYSROOT</item>
-      <item>CMAKE_PARENT_LIST_FILE</item>
-      <item>CMAKE_PATCH_VERSION</item>
-      <item>CMAKE_PCH_INSTANTIATE_TEMPLATES</item>
-      <item>CMAKE_PCH_WARN_INVALID</item>
-      <item>CMAKE_PDB_OUTPUT_DIRECTORY</item>
-      <item>CMAKE_POSITION_INDEPENDENT_CODE</item>
-      <item>CMAKE_PREFIX_PATH</item>
-      <item>CMAKE_PROGRAM_PATH</item>
-      <item>CMAKE_PROJECT_DESCRIPTION</item>
-      <item>CMAKE_PROJECT_HOMEPAGE_URL</item>
-      <item>CMAKE_PROJECT_INCLUDE</item>
-      <item>CMAKE_PROJECT_INCLUDE_BEFORE</item>
-      <item>CMAKE_PROJECT_NAME</item>
-      <item>CMAKE_PROJECT_VERSION</item>
-      <item>CMAKE_PROJECT_VERSION_MAJOR</item>
-      <item>CMAKE_PROJECT_VERSION_MINOR</item>
-      <item>CMAKE_PROJECT_VERSION_PATCH</item>
-      <item>CMAKE_PROJECT_VERSION_TWEAK</item>
-      <item>CMAKE_RANLIB</item>
-      <item>CMAKE_REQUIRED_DEFINITIONS</item>
-      <item>CMAKE_REQUIRED_FLAGS</item>
-      <item>CMAKE_REQUIRED_INCLUDES</item>
-      <item>CMAKE_REQUIRED_LIBRARIES</item>
-      <item>CMAKE_REQUIRED_LINK_OPTIONS</item>
-      <item>CMAKE_REQUIRED_QUIET</item>
-      <item>CMAKE_ROOT</item>
-      <item>CMAKE_RUNTIME_OUTPUT_DIRECTORY</item>
-      <item>CMAKE_SCRIPT_MODE_FILE</item>
-      <item>CMAKE_SHARED_LIBRARY_PREFIX</item>
-      <item>CMAKE_SHARED_LIBRARY_SUFFIX</item>
-      <item>CMAKE_SHARED_LINKER_FLAGS</item>
-      <item>CMAKE_SHARED_LINKER_FLAGS_INIT</item>
-      <item>CMAKE_SHARED_MODULE_PREFIX</item>
-      <item>CMAKE_SHARED_MODULE_SUFFIX</item>
-      <item>CMAKE_SIZEOF_VOID_P</item>
-      <item>CMAKE_SKIP_BUILD_RPATH</item>
-      <item>CMAKE_SKIP_INSTALL_ALL_DEPENDENCY</item>
-      <item>CMAKE_SKIP_INSTALL_RPATH</item>
-      <item>CMAKE_SKIP_INSTALL_RULES</item>
-      <item>CMAKE_SKIP_RPATH</item>
-      <item>CMAKE_SOURCE_DIR</item>
-      <item>CMAKE_STAGING_PREFIX</item>
-      <item>CMAKE_STATIC_LIBRARY_PREFIX</item>
-      <item>CMAKE_STATIC_LIBRARY_SUFFIX</item>
-      <item>CMAKE_STATIC_LINKER_FLAGS</item>
-      <item>CMAKE_STATIC_LINKER_FLAGS_INIT</item>
-      <item>CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS</item>
-      <item>CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE</item>
-      <item>CMAKE_SUPPRESS_REGENERATION</item>
-      <item>CMAKE_SWIG_FLAGS</item>
-      <item>CMAKE_SWIG_OUTDIR</item>
-      <item>CMAKE_SYSROOT</item>
-      <item>CMAKE_SYSROOT_COMPILE</item>
-      <item>CMAKE_SYSROOT_LINK</item>
-      <item>CMAKE_SYSTEM</item>
-      <item>CMAKE_SYSTEM_APPBUNDLE_PATH</item>
-      <item>CMAKE_SYSTEM_FRAMEWORK_PATH</item>
-      <item>CMAKE_SYSTEM_IGNORE_PATH</item>
-      <item>CMAKE_SYSTEM_IGNORE_PREFIX_PATH</item>
-      <item>CMAKE_SYSTEM_INCLUDE_PATH</item>
-      <item>CMAKE_SYSTEM_LIBRARY_PATH</item>
-      <item>CMAKE_SYSTEM_NAME</item>
-      <item>CMAKE_SYSTEM_PREFIX_PATH</item>
-      <item>CMAKE_SYSTEM_PROCESSOR</item>
-      <item>CMAKE_SYSTEM_PROGRAM_PATH</item>
-      <item>CMAKE_SYSTEM_VERSION</item>
-      <item>CMAKE_Swift_LANGUAGE_VERSION</item>
-      <item>CMAKE_Swift_MODULE_DIRECTORY</item>
-      <item>CMAKE_THREAD_LIBS_INIT</item>
-      <item>CMAKE_THREAD_PREFER_PTHREAD</item>
-      <item>CMAKE_TOOLCHAIN_FILE</item>
-      <item>CMAKE_TRY_COMPILE_CONFIGURATION</item>
-      <item>CMAKE_TRY_COMPILE_PLATFORM_VARIABLES</item>
-      <item>CMAKE_TRY_COMPILE_TARGET_TYPE</item>
-      <item>CMAKE_TWEAK_VERSION</item>
-      <item>CMAKE_UNITY_BUILD</item>
-      <item>CMAKE_UNITY_BUILD_BATCH_SIZE</item>
-      <item>CMAKE_USER_MAKE_RULES_OVERRIDE</item>
-      <item>CMAKE_USE_PTHREADS_INIT</item>
-      <item>CMAKE_USE_RELATIVE_PATHS</item>
-      <item>CMAKE_USE_SPROC_INIT</item>
-      <item>CMAKE_USE_WIN32_THREADS_INIT</item>
-      <item>CMAKE_VERBOSE_MAKEFILE</item>
-      <item>CMAKE_VERSION</item>
-      <item>CMAKE_VISIBILITY_INLINES_HIDDEN</item>
-      <item>CMAKE_VS_DEVENV_COMMAND</item>
-      <item>CMAKE_VS_GLOBALS</item>
-      <item>CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD</item>
-      <item>CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD</item>
-      <item>CMAKE_VS_JUST_MY_CODE_DEBUGGING</item>
-      <item>CMAKE_VS_MSBUILD_COMMAND</item>
-      <item>CMAKE_VS_NUGET_PACKAGE_RESTORE</item>
-      <item>CMAKE_VS_NsightTegra_VERSION</item>
-      <item>CMAKE_VS_PLATFORM_NAME</item>
-      <item>CMAKE_VS_PLATFORM_TOOLSET</item>
-      <item>CMAKE_VS_PLATFORM_TOOLSET_CUDA</item>
-      <item>CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE</item>
-      <item>CMAKE_VS_SDK_EXCLUDE_DIRECTORIES</item>
-      <item>CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES</item>
-      <item>CMAKE_VS_SDK_INCLUDE_DIRECTORIES</item>
-      <item>CMAKE_VS_SDK_LIBRARY_DIRECTORIES</item>
-      <item>CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES</item>
-      <item>CMAKE_VS_SDK_REFERENCE_DIRECTORIES</item>
-      <item>CMAKE_VS_SDK_SOURCE_DIRECTORIES</item>
-      <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION</item>
-      <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM</item>
-      <item>CMAKE_WARN_DEPRECATED</item>
-      <item>CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item>
-      <item>CMAKE_WIN32_EXECUTABLE</item>
-      <item>CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS</item>
-      <item>CMAKE_XCODE_BUILD_SYSTEM</item>
-      <item>CMAKE_XCODE_GENERATE_SCHEME</item>
-      <item>CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY</item>
-      <item>CMAKE_XCODE_LINK_BUILD_PHASE_MODE</item>
-      <item>CMAKE_XCODE_PLATFORM_TOOLSET</item>
-      <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER</item>
-      <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
-      <item>CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
-      <item>CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
-      <item>CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
-      <item>CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
-      <item>CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE</item>
-      <item>CMAKE_XCODE_SCHEME_ENVIRONMENT</item>
-      <item>CMAKE_XCODE_SCHEME_GUARD_MALLOC</item>
-      <item>CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</item>
-      <item>CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES</item>
-      <item>CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE</item>
-      <item>CMAKE_XCODE_SCHEME_MALLOC_STACK</item>
-      <item>CMAKE_XCODE_SCHEME_THREAD_SANITIZER</item>
-      <item>CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP</item>
-      <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item>
-      <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item>
-      <item>CMAKE_XCODE_SCHEME_WORKING_DIRECTORY</item>
-      <item>CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS</item>
-      <item>CPACK_ABSOLUTE_DESTINATION_FILES</item>
-      <item>CPACK_ARCHIVE_COMPONENT_INSTALL</item>
-      <item>CPACK_ARCHIVE_FILE_NAME</item>
-      <item>CPACK_ARCHIVE_THREADS</item>
-      <item>CPACK_BUILD_SOURCE_DIRS</item>
-      <item>CPACK_BUNDLE_APPLE_CERT_APP</item>
-      <item>CPACK_BUNDLE_APPLE_CODESIGN_FILES</item>
-      <item>CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER</item>
-      <item>CPACK_BUNDLE_APPLE_ENTITLEMENTS</item>
-      <item>CPACK_BUNDLE_ICON</item>
-      <item>CPACK_BUNDLE_NAME</item>
-      <item>CPACK_BUNDLE_PLIST</item>
-      <item>CPACK_BUNDLE_STARTUP_COMMAND</item>
-      <item>CPACK_CMAKE_GENERATOR</item>
-      <item>CPACK_COMMAND_CODESIGN</item>
-      <item>CPACK_COMMAND_HDIUTIL</item>
-      <item>CPACK_COMMAND_PKGBUILD</item>
-      <item>CPACK_COMMAND_PRODUCTBUILD</item>
-      <item>CPACK_COMMAND_REZ</item>
-      <item>CPACK_COMMAND_SETFILE</item>
-      <item>CPACK_COMPONENTS_ALL</item>
-      <item>CPACK_COMPONENTS_GROUPING</item>
-      <item>CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY</item>
-      <item>CPACK_CREATE_DESKTOP_LINKS</item>
-      <item>CPACK_CUSTOM_INSTALL_VARIABLES</item>
-      <item>CPACK_CYGWIN_BUILD_SCRIPT</item>
-      <item>CPACK_CYGWIN_PATCH_FILE</item>
-      <item>CPACK_CYGWIN_PATCH_NUMBER</item>
-      <item>CPACK_DEBIAN_ARCHIVE_TYPE</item>
-      <item>CPACK_DEBIAN_COMPRESSION_TYPE</item>
-      <item>CPACK_DEBIAN_DEBUGINFO_PACKAGE</item>
-      <item>CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS</item>
-      <item>CPACK_DEBIAN_FILE_NAME</item>
-      <item>CPACK_DEBIAN_PACKAGE_ARCHITECTURE</item>
-      <item>CPACK_DEBIAN_PACKAGE_BREAKS</item>
-      <item>CPACK_DEBIAN_PACKAGE_CONFLICTS</item>
-      <item>CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA</item>
-      <item>CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION</item>
-      <item>CPACK_DEBIAN_PACKAGE_DEBUG</item>
-      <item>CPACK_DEBIAN_PACKAGE_DEPENDS</item>
-      <item>CPACK_DEBIAN_PACKAGE_DESCRIPTION</item>
-      <item>CPACK_DEBIAN_PACKAGE_ENHANCES</item>
-      <item>CPACK_DEBIAN_PACKAGE_EPOCH</item>
-      <item>CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS</item>
-      <item>CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY</item>
-      <item>CPACK_DEBIAN_PACKAGE_HOMEPAGE</item>
-      <item>CPACK_DEBIAN_PACKAGE_MAINTAINER</item>
-      <item>CPACK_DEBIAN_PACKAGE_NAME</item>
-      <item>CPACK_DEBIAN_PACKAGE_PREDEPENDS</item>
-      <item>CPACK_DEBIAN_PACKAGE_PRIORITY</item>
-      <item>CPACK_DEBIAN_PACKAGE_PROVIDES</item>
-      <item>CPACK_DEBIAN_PACKAGE_RECOMMENDS</item>
-      <item>CPACK_DEBIAN_PACKAGE_RELEASE</item>
-      <item>CPACK_DEBIAN_PACKAGE_REPLACES</item>
-      <item>CPACK_DEBIAN_PACKAGE_SECTION</item>
-      <item>CPACK_DEBIAN_PACKAGE_SHLIBDEPS</item>
-      <item>CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS</item>
-      <item>CPACK_DEBIAN_PACKAGE_SOURCE</item>
-      <item>CPACK_DEBIAN_PACKAGE_SUGGESTS</item>
-      <item>CPACK_DEBIAN_PACKAGE_VERSION</item>
-      <item>CPACK_DEB_COMPONENT_INSTALL</item>
-      <item>CPACK_DMG_BACKGROUND_IMAGE</item>
-      <item>CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK</item>
-      <item>CPACK_DMG_DS_STORE</item>
-      <item>CPACK_DMG_DS_STORE_SETUP_SCRIPT</item>
-      <item>CPACK_DMG_FILESYSTEM</item>
-      <item>CPACK_DMG_FORMAT</item>
-      <item>CPACK_DMG_SLA_DIR</item>
-      <item>CPACK_DMG_SLA_LANGUAGES</item>
-      <item>CPACK_DMG_VOLUME_NAME</item>
-      <item>CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>
-      <item>CPACK_EXTERNAL_BUILT_PACKAGES</item>
-      <item>CPACK_EXTERNAL_ENABLE_STAGING</item>
-      <item>CPACK_EXTERNAL_PACKAGE_SCRIPT</item>
-      <item>CPACK_EXTERNAL_REQUESTED_VERSIONS</item>
-      <item>CPACK_GENERATOR</item>
-      <item>CPACK_IFW_ADMIN_TARGET_DIRECTORY</item>
-      <item>CPACK_IFW_ARCHIVE_COMPRESSION</item>
-      <item>CPACK_IFW_ARCHIVE_FORMAT</item>
-      <item>CPACK_IFW_BINARYCREATOR_EXECUTABLE</item>
-      <item>CPACK_IFW_DEVTOOL_EXECUTABLE</item>
-      <item>CPACK_IFW_DOWNLOAD_ALL</item>
-      <item>CPACK_IFW_FRAMEWORK_VERSION</item>
-      <item>CPACK_IFW_INSTALLERBASE_EXECUTABLE</item>
-      <item>CPACK_IFW_PACKAGES_DIRECTORIES</item>
-      <item>CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS</item>
-      <item>CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH</item>
-      <item>CPACK_IFW_PACKAGE_BACKGROUND</item>
-      <item>CPACK_IFW_PACKAGE_BANNER</item>
-      <item>CPACK_IFW_PACKAGE_CONTROL_SCRIPT</item>
-      <item>CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE</item>
-      <item>CPACK_IFW_PACKAGE_GROUP</item>
-      <item>CPACK_IFW_PACKAGE_ICON</item>
-      <item>CPACK_IFW_PACKAGE_LOGO</item>
-      <item>CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE</item>
-      <item>CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME</item>
-      <item>CPACK_IFW_PACKAGE_NAME</item>
-      <item>CPACK_IFW_PACKAGE_PRODUCT_IMAGES</item>
-      <item>CPACK_IFW_PACKAGE_PUBLISHER</item>
-      <item>CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR</item>
-      <item>CPACK_IFW_PACKAGE_RESOURCES</item>
-      <item>CPACK_IFW_PACKAGE_RUN_PROGRAM</item>
-      <item>CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS</item>
-      <item>CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION</item>
-      <item>CPACK_IFW_PACKAGE_SIGNING_IDENTITY</item>
-      <item>CPACK_IFW_PACKAGE_START_MENU_DIRECTORY</item>
-      <item>CPACK_IFW_PACKAGE_STYLE_SHEET</item>
-      <item>CPACK_IFW_PACKAGE_TITLE</item>
-      <item>CPACK_IFW_PACKAGE_TITLE_COLOR</item>
-      <item>CPACK_IFW_PACKAGE_WATERMARK</item>
-      <item>CPACK_IFW_PACKAGE_WINDOW_ICON</item>
-      <item>CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT</item>
-      <item>CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH</item>
-      <item>CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST</item>
-      <item>CPACK_IFW_PACKAGE_WIZARD_STYLE</item>
-      <item>CPACK_IFW_PRODUCT_URL</item>
-      <item>CPACK_IFW_REPOGEN_EXECUTABLE</item>
-      <item>CPACK_IFW_REPOSITORIES_ALL</item>
-      <item>CPACK_IFW_RESOLVE_DUPLICATE_NAMES</item>
-      <item>CPACK_IFW_ROOT</item>
-      <item>CPACK_IFW_TARGET_DIRECTORY</item>
-      <item>CPACK_IFW_VERBOSE</item>
-      <item>CPACK_INCLUDE_TOPLEVEL_DIRECTORY</item>
-      <item>CPACK_INSTALLED_DIRECTORIES</item>
-      <item>CPACK_INSTALL_CMAKE_PROJECTS</item>
-      <item>CPACK_INSTALL_COMMANDS</item>
-      <item>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>
-      <item>CPACK_INSTALL_SCRIPTS</item>
-      <item>CPACK_MONOLITHIC_INSTALL</item>
-      <item>CPACK_NSIS_BRANDING_TEXT</item>
-      <item>CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION</item>
-      <item>CPACK_NSIS_COMPRESSOR</item>
-      <item>CPACK_NSIS_CONTACT</item>
-      <item>CPACK_NSIS_CREATE_ICONS_EXTRA</item>
-      <item>CPACK_NSIS_DELETE_ICONS_EXTRA</item>
-      <item>CPACK_NSIS_DISPLAY_NAME</item>
-      <item>CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL</item>
-      <item>CPACK_NSIS_EXECUTABLE</item>
-      <item>CPACK_NSIS_EXECUTABLES_DIRECTORY</item>
-      <item>CPACK_NSIS_EXTRA_INSTALL_COMMANDS</item>
-      <item>CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS</item>
-      <item>CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS</item>
-      <item>CPACK_NSIS_FINISH_TITLE</item>
-      <item>CPACK_NSIS_FINISH_TITLE_3LINES</item>
-      <item>CPACK_NSIS_HELP_LINK</item>
-      <item>CPACK_NSIS_IGNORE_LICENSE_PAGE</item>
-      <item>CPACK_NSIS_INSTALLED_ICON_NAME</item>
-      <item>CPACK_NSIS_INSTALLER_MUI_ICON_CODE</item>
-      <item>CPACK_NSIS_INSTALL_ROOT</item>
-      <item>CPACK_NSIS_MANIFEST_DPI_AWARE</item>
-      <item>CPACK_NSIS_MENU_LINKS</item>
-      <item>CPACK_NSIS_MODIFY_PATH</item>
-      <item>CPACK_NSIS_MUI_FINISHPAGE_RUN</item>
-      <item>CPACK_NSIS_MUI_HEADERIMAGE</item>
-      <item>CPACK_NSIS_MUI_ICON</item>
-      <item>CPACK_NSIS_MUI_UNIICON</item>
-      <item>CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP</item>
-      <item>CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP</item>
-      <item>CPACK_NSIS_PACKAGE_NAME</item>
-      <item>CPACK_NSIS_UNINSTALL_NAME</item>
-      <item>CPACK_NSIS_URL_INFO_ABOUT</item>
-      <item>CPACK_NSIS_WELCOME_TITLE</item>
-      <item>CPACK_NSIS_WELCOME_TITLE_3LINES</item>
-      <item>CPACK_NUGET_COMPONENT_INSTALL</item>
-      <item>CPACK_NUGET_PACKAGE_AUTHORS</item>
-      <item>CPACK_NUGET_PACKAGE_COPYRIGHT</item>
-      <item>CPACK_NUGET_PACKAGE_DEBUG</item>
-      <item>CPACK_NUGET_PACKAGE_DEPENDENCIES</item>
-      <item>CPACK_NUGET_PACKAGE_DESCRIPTION</item>
-      <item>CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY</item>
-      <item>CPACK_NUGET_PACKAGE_HOMEPAGE_URL</item>
-      <item>CPACK_NUGET_PACKAGE_ICON</item>
-      <item>CPACK_NUGET_PACKAGE_ICONURL</item>
-      <item>CPACK_NUGET_PACKAGE_LANGUAGE</item>
-      <item>CPACK_NUGET_PACKAGE_LICENSEURL</item>
-      <item>CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION</item>
-      <item>CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME</item>
-      <item>CPACK_NUGET_PACKAGE_NAME</item>
-      <item>CPACK_NUGET_PACKAGE_OWNERS</item>
-      <item>CPACK_NUGET_PACKAGE_RELEASE_NOTES</item>
-      <item>CPACK_NUGET_PACKAGE_TAGS</item>
-      <item>CPACK_NUGET_PACKAGE_TITLE</item>
-      <item>CPACK_NUGET_PACKAGE_VERSION</item>
-      <item>CPACK_OUTPUT_CONFIG_FILE</item>
-      <item>CPACK_PACKAGE_CHECKSUM</item>
-      <item>CPACK_PACKAGE_DESCRIPTION</item>
-      <item>CPACK_PACKAGE_DESCRIPTION_FILE</item>
-      <item>CPACK_PACKAGE_DESCRIPTION_SUMMARY</item>
-      <item>CPACK_PACKAGE_DIRECTORY</item>
-      <item>CPACK_PACKAGE_EXECUTABLES</item>
-      <item>CPACK_PACKAGE_FILES</item>
-      <item>CPACK_PACKAGE_FILE_NAME</item>
-      <item>CPACK_PACKAGE_HOMEPAGE_URL</item>
-      <item>CPACK_PACKAGE_ICON</item>
-      <item>CPACK_PACKAGE_INSTALL_DIRECTORY</item>
-      <item>CPACK_PACKAGE_INSTALL_REGISTRY_KEY</item>
-      <item>CPACK_PACKAGE_NAME</item>
-      <item>CPACK_PACKAGE_VENDOR</item>
-      <item>CPACK_PACKAGE_VERSION</item>
-      <item>CPACK_PACKAGE_VERSION_MAJOR</item>
-      <item>CPACK_PACKAGE_VERSION_MINOR</item>
-      <item>CPACK_PACKAGE_VERSION_PATCH</item>
-      <item>CPACK_PACKAGING_INSTALL_PREFIX</item>
-      <item>CPACK_PKGBUILD_IDENTITY_NAME</item>
-      <item>CPACK_PKGBUILD_KEYCHAIN_PATH</item>
-      <item>CPACK_POST_BUILD_SCRIPTS</item>
-      <item>CPACK_PRE_BUILD_SCRIPTS</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_MIME_TYPE</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_SCALING</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_UTI</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_SCALING</item>
-      <item>CPACK_PRODUCTBUILD_BACKGROUND_UTI</item>
-      <item>CPACK_PRODUCTBUILD_DOMAINS</item>
-      <item>CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE</item>
-      <item>CPACK_PRODUCTBUILD_DOMAINS_ROOT</item>
-      <item>CPACK_PRODUCTBUILD_DOMAINS_USER</item>
-      <item>CPACK_PRODUCTBUILD_IDENTIFIER</item>
-      <item>CPACK_PRODUCTBUILD_IDENTITY_NAME</item>
-      <item>CPACK_PRODUCTBUILD_KEYCHAIN_PATH</item>
-      <item>CPACK_PRODUCTBUILD_RESOURCES_DIR</item>
-      <item>CPACK_PROJECT_CONFIG_FILE</item>
-      <item>CPACK_RESOURCE_FILE_LICENSE</item>
-      <item>CPACK_RESOURCE_FILE_README</item>
-      <item>CPACK_RESOURCE_FILE_WELCOME</item>
-      <item>CPACK_RPM_ADDITIONAL_MAN_DIRS</item>
-      <item>CPACK_RPM_BUILDREQUIRES</item>
-      <item>CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX</item>
-      <item>CPACK_RPM_CHANGELOG_FILE</item>
-      <item>CPACK_RPM_COMPONENT_INSTALL</item>
-      <item>CPACK_RPM_COMPRESSION_TYPE</item>
-      <item>CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS</item>
-      <item>CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION</item>
-      <item>CPACK_RPM_DEBUGINFO_FILE_NAME</item>
-      <item>CPACK_RPM_DEBUGINFO_PACKAGE</item>
-      <item>CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE</item>
-      <item>CPACK_RPM_DEFAULT_DIR_PERMISSIONS</item>
-      <item>CPACK_RPM_DEFAULT_FILE_PERMISSIONS</item>
-      <item>CPACK_RPM_DEFAULT_GROUP</item>
-      <item>CPACK_RPM_DEFAULT_USER</item>
-      <item>CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST</item>
-      <item>CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION</item>
-      <item>CPACK_RPM_FILE_NAME</item>
-      <item>CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE</item>
-      <item>CPACK_RPM_INSTALL_WITH_EXEC</item>
-      <item>CPACK_RPM_MAIN_COMPONENT</item>
-      <item>CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION</item>
-      <item>CPACK_RPM_PACKAGE_ARCHITECTURE</item>
-      <item>CPACK_RPM_PACKAGE_AUTOPROV</item>
-      <item>CPACK_RPM_PACKAGE_AUTOREQ</item>
-      <item>CPACK_RPM_PACKAGE_AUTOREQPROV</item>
-      <item>CPACK_RPM_PACKAGE_CONFLICTS</item>
-      <item>CPACK_RPM_PACKAGE_DEBUG</item>
-      <item>CPACK_RPM_PACKAGE_DESCRIPTION</item>
-      <item>CPACK_RPM_PACKAGE_EPOCH</item>
-      <item>CPACK_RPM_PACKAGE_GROUP</item>
-      <item>CPACK_RPM_PACKAGE_LICENSE</item>
-      <item>CPACK_RPM_PACKAGE_NAME</item>
-      <item>CPACK_RPM_PACKAGE_OBSOLETES</item>
-      <item>CPACK_RPM_PACKAGE_PROVIDES</item>
-      <item>CPACK_RPM_PACKAGE_RELEASE</item>
-      <item>CPACK_RPM_PACKAGE_RELEASE_DIST</item>
-      <item>CPACK_RPM_PACKAGE_RELOCATABLE</item>
-      <item>CPACK_RPM_PACKAGE_REQUIRES</item>
-      <item>CPACK_RPM_PACKAGE_REQUIRES_POST</item>
-      <item>CPACK_RPM_PACKAGE_REQUIRES_POSTUN</item>
-      <item>CPACK_RPM_PACKAGE_REQUIRES_PRE</item>
-      <item>CPACK_RPM_PACKAGE_REQUIRES_PREUN</item>
-      <item>CPACK_RPM_PACKAGE_SOURCES</item>
-      <item>CPACK_RPM_PACKAGE_SUGGESTS</item>
-      <item>CPACK_RPM_PACKAGE_SUMMARY</item>
-      <item>CPACK_RPM_PACKAGE_URL</item>
-      <item>CPACK_RPM_PACKAGE_VENDOR</item>
-      <item>CPACK_RPM_PACKAGE_VERSION</item>
-      <item>CPACK_RPM_POST_INSTALL_SCRIPT_FILE</item>
-      <item>CPACK_RPM_POST_TRANS_SCRIPT_FILE</item>
-      <item>CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE</item>
-      <item>CPACK_RPM_PRE_INSTALL_SCRIPT_FILE</item>
-      <item>CPACK_RPM_PRE_TRANS_SCRIPT_FILE</item>
-      <item>CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE</item>
-      <item>CPACK_RPM_RELOCATION_PATHS</item>
-      <item>CPACK_RPM_REQUIRES_EXCLUDE_FROM</item>
-      <item>CPACK_RPM_SOURCE_PKG_BUILD_PARAMS</item>
-      <item>CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX</item>
-      <item>CPACK_RPM_SPEC_INSTALL_POST</item>
-      <item>CPACK_RPM_SPEC_MORE_DEFINE</item>
-      <item>CPACK_RPM_USER_BINARY_SPECFILE</item>
-      <item>CPACK_RPM_USER_FILELIST</item>
-      <item>CPACK_SET_DESTDIR</item>
-      <item>CPACK_SOURCE_GENERATOR</item>
-      <item>CPACK_SOURCE_IGNORE_FILES</item>
-      <item>CPACK_SOURCE_OUTPUT_CONFIG_FILE</item>
-      <item>CPACK_SOURCE_PACKAGE_FILE_NAME</item>
-      <item>CPACK_SOURCE_STRIP_FILES</item>
-      <item>CPACK_STRIP_FILES</item>
-      <item>CPACK_SYSTEM_NAME</item>
-      <item>CPACK_THREADS</item>
-      <item>CPACK_TOPLEVEL_TAG</item>
-      <item>CPACK_VERBATIM_VARIABLES</item>
-      <item>CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item>
-      <item>CPACK_WIX_CMAKE_PACKAGE_REGISTRY</item>
-      <item>CPACK_WIX_CULTURES</item>
-      <item>CPACK_WIX_CUSTOM_XMLNS</item>
-      <item>CPACK_WIX_EXTENSIONS</item>
-      <item>CPACK_WIX_EXTRA_OBJECTS</item>
-      <item>CPACK_WIX_EXTRA_SOURCES</item>
-      <item>CPACK_WIX_LICENSE_RTF</item>
-      <item>CPACK_WIX_PATCH_FILE</item>
-      <item>CPACK_WIX_PRODUCT_GUID</item>
-      <item>CPACK_WIX_PRODUCT_ICON</item>
-      <item>CPACK_WIX_PROGRAM_MENU_FOLDER</item>
-      <item>CPACK_WIX_ROOT</item>
-      <item>CPACK_WIX_ROOT_FEATURE_DESCRIPTION</item>
-      <item>CPACK_WIX_ROOT_FEATURE_TITLE</item>
-      <item>CPACK_WIX_ROOT_FOLDER_ID</item>
-      <item>CPACK_WIX_SKIP_PROGRAM_FOLDER</item>
-      <item>CPACK_WIX_SKIP_WIX_UI_EXTENSION</item>
-      <item>CPACK_WIX_TEMPLATE</item>
-      <item>CPACK_WIX_UI_BANNER</item>
-      <item>CPACK_WIX_UI_DIALOG</item>
-      <item>CPACK_WIX_UI_REF</item>
-      <item>CPACK_WIX_UPGRADE_GUID</item>
-      <item>CTEST_BINARY_DIRECTORY</item>
-      <item>CTEST_BUILD_COMMAND</item>
-      <item>CTEST_BUILD_NAME</item>
-      <item>CTEST_BZR_COMMAND</item>
-      <item>CTEST_BZR_UPDATE_OPTIONS</item>
-      <item>CTEST_CHANGE_ID</item>
-      <item>CTEST_CHECKOUT_COMMAND</item>
-      <item>CTEST_CONFIGURATION_TYPE</item>
-      <item>CTEST_CONFIGURE_COMMAND</item>
-      <item>CTEST_COVERAGE_COMMAND</item>
-      <item>CTEST_COVERAGE_EXTRA_FLAGS</item>
-      <item>CTEST_CURL_OPTIONS</item>
-      <item>CTEST_CUSTOM_COVERAGE_EXCLUDE</item>
-      <item>CTEST_CUSTOM_ERROR_EXCEPTION</item>
-      <item>CTEST_CUSTOM_ERROR_MATCH</item>
-      <item>CTEST_CUSTOM_ERROR_POST_CONTEXT</item>
-      <item>CTEST_CUSTOM_ERROR_PRE_CONTEXT</item>
-      <item>CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE</item>
-      <item>CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS</item>
-      <item>CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS</item>
-      <item>CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE</item>
-      <item>CTEST_CUSTOM_MEMCHECK_IGNORE</item>
-      <item>CTEST_CUSTOM_POST_MEMCHECK</item>
-      <item>CTEST_CUSTOM_POST_TEST</item>
-      <item>CTEST_CUSTOM_PRE_MEMCHECK</item>
-      <item>CTEST_CUSTOM_PRE_TEST</item>
-      <item>CTEST_CUSTOM_TEST_IGNORE</item>
-      <item>CTEST_CUSTOM_WARNING_EXCEPTION</item>
-      <item>CTEST_CUSTOM_WARNING_MATCH</item>
-      <item>CTEST_CVS_CHECKOUT</item>
-      <item>CTEST_CVS_COMMAND</item>
-      <item>CTEST_CVS_UPDATE_OPTIONS</item>
-      <item>CTEST_DROP_LOCATION</item>
-      <item>CTEST_DROP_METHOD</item>
-      <item>CTEST_DROP_SITE</item>
-      <item>CTEST_DROP_SITE_CDASH</item>
-      <item>CTEST_DROP_SITE_PASSWORD</item>
-      <item>CTEST_DROP_SITE_USER</item>
-      <item>CTEST_EXTRA_COVERAGE_GLOB</item>
-      <item>CTEST_GIT_COMMAND</item>
-      <item>CTEST_GIT_INIT_SUBMODULES</item>
-      <item>CTEST_GIT_UPDATE_CUSTOM</item>
-      <item>CTEST_GIT_UPDATE_OPTIONS</item>
-      <item>CTEST_HG_COMMAND</item>
-      <item>CTEST_HG_UPDATE_OPTIONS</item>
-      <item>CTEST_LABELS_FOR_SUBPROJECTS</item>
-      <item>CTEST_MEMORYCHECK_COMMAND</item>
-      <item>CTEST_MEMORYCHECK_COMMAND_OPTIONS</item>
-      <item>CTEST_MEMORYCHECK_SANITIZER_OPTIONS</item>
-      <item>CTEST_MEMORYCHECK_SUPPRESSIONS_FILE</item>
-      <item>CTEST_MEMORYCHECK_TYPE</item>
-      <item>CTEST_NIGHTLY_START_TIME</item>
-      <item>CTEST_P4_CLIENT</item>
-      <item>CTEST_P4_COMMAND</item>
-      <item>CTEST_P4_OPTIONS</item>
-      <item>CTEST_P4_UPDATE_OPTIONS</item>
-      <item>CTEST_RESOURCE_SPEC_FILE</item>
-      <item>CTEST_RUN_CURRENT_SCRIPT</item>
-      <item>CTEST_SCP_COMMAND</item>
-      <item>CTEST_SITE</item>
-      <item>CTEST_SOURCE_DIRECTORY</item>
-      <item>CTEST_SUBMIT_INACTIVITY_TIMEOUT</item>
-      <item>CTEST_SUBMIT_URL</item>
-      <item>CTEST_SVN_COMMAND</item>
-      <item>CTEST_SVN_OPTIONS</item>
-      <item>CTEST_SVN_UPDATE_OPTIONS</item>
-      <item>CTEST_TEST_LOAD</item>
-      <item>CTEST_TEST_TIMEOUT</item>
-      <item>CTEST_TRIGGER_SITE</item>
-      <item>CTEST_UPDATE_COMMAND</item>
-      <item>CTEST_UPDATE_OPTIONS</item>
-      <item>CTEST_UPDATE_VERSION_ONLY</item>
-      <item>CTEST_UPDATE_VERSION_OVERRIDE</item>
-      <item>CTEST_USE_LAUNCHERS</item>
-      <item>CUDAToolkit_NVCC_EXECUTABLE</item>
-      <item>CUPS_INCLUDE_DIR</item>
-      <item>CURL_NO_CURL_CMAKE</item>
-      <item>CURSES_CFLAGS</item>
-      <item>CURSES_HAVE_CURSES_H</item>
-      <item>CURSES_HAVE_NCURSES_CURSES_H</item>
-      <item>CURSES_HAVE_NCURSES_H</item>
-      <item>CURSES_HAVE_NCURSES_NCURSES_H</item>
-      <item>CURSES_NEED_NCURSES</item>
-      <item>CURSES_NEED_WIDE</item>
-      <item>CVS_EXECUTABLE</item>
-      <item>CXXTEST_PERL_TESTGEN_EXECUTABLE</item>
-      <item>CXXTEST_PYTHON_TESTGEN_EXECUTABLE</item>
-      <item>CXXTEST_TESTGEN_ARGS</item>
-      <item>CXXTEST_TESTGEN_EXECUTABLE</item>
-      <item>CXXTEST_TESTGEN_INTERPRETER</item>
-      <item>CXXTEST_USE_PYTHON</item>
-      <item>CYGWIN</item>
-      <item>DVIPDF_CONVERTER</item>
-      <item>DVIPS_CONVERTER</item>
-      <item>EXECUTABLE_OUTPUT_PATH</item>
-      <item>EnvModules_COMMAND</item>
-      <item>ExternalData_BINARY_ROOT</item>
-      <item>ExternalData_CUSTOM_ERROR</item>
-      <item>ExternalData_CUSTOM_FILE</item>
-      <item>ExternalData_CUSTOM_LOCATION</item>
-      <item>ExternalData_LINK_CONTENT</item>
-      <item>ExternalData_NO_SYMLINKS</item>
-      <item>ExternalData_OBJECT_STORES</item>
-      <item>ExternalData_SERIES_MATCH</item>
-      <item>ExternalData_SERIES_PARSE</item>
-      <item>ExternalData_SERIES_PARSE_NUMBER</item>
-      <item>ExternalData_SERIES_PARSE_PREFIX</item>
-      <item>ExternalData_SERIES_PARSE_SUFFIX</item>
-      <item>ExternalData_SOURCE_ROOT</item>
-      <item>ExternalData_TIMEOUT_ABSOLUTE</item>
-      <item>ExternalData_TIMEOUT_INACTIVITY</item>
-      <item>ExternalData_URL_TEMPLATES</item>
-      <item>FETCHCONTENT_FULLY_DISCONNECTED</item>
-      <item>FETCHCONTENT_QUIET</item>
-      <item>FETCHCONTENT_UPDATES_DISCONNECTED</item>
-      <item>FLEX_EXECUTABLE</item>
-      <item>FLTK2_BASE_LIBRARY</item>
-      <item>FLTK2_FLUID_EXECUTABLE</item>
-      <item>FLTK2_GL_LIBRARY</item>
-      <item>FLTK2_IMAGES_LIBRARY</item>
-      <item>FLTK2_WRAP_UI</item>
-      <item>FLTK_BASE_LIBRARY_DEBUG</item>
-      <item>FLTK_BASE_LIBRARY_RELEASE</item>
-      <item>FLTK_FLUID_EXECUTABLE</item>
-      <item>FLTK_FORMS_LIBRARY_DEBUG</item>
-      <item>FLTK_FORMS_LIBRARY_RELEASE</item>
-      <item>FLTK_GL_LIBRARY_DEBUG</item>
-      <item>FLTK_GL_LIBRARY_RELEASE</item>
-      <item>FLTK_IMAGES_LIBRARY_DEBUG</item>
-      <item>FLTK_IMAGES_LIBRARY_RELEASE</item>
-      <item>FLTK_SKIP_FLUID</item>
-      <item>FLTK_SKIP_FORMS</item>
-      <item>FLTK_SKIP_IMAGES</item>
-      <item>FLTK_SKIP_OPENGL</item>
-      <item>FLTK_WRAP_UI</item>
-      <item>FREETYPE_INCLUDE_DIR_freetype2</item>
-      <item>FREETYPE_INCLUDE_DIR_ft2build</item>
-      <item>FindGDAL_SKIP_GDAL_CONFIG</item>
-      <item>Fontconfig_COMPILE_OPTIONS</item>
-      <item>FortranCInterface_GLOBAL_CASE</item>
-      <item>FortranCInterface_GLOBAL_PREFIX</item>
-      <item>FortranCInterface_GLOBAL_SUFFIX</item>
-      <item>FortranCInterface_GLOBAL_SYMBOLS</item>
-      <item>FortranCInterface_GLOBAL__CASE</item>
-      <item>FortranCInterface_GLOBAL__PREFIX</item>
-      <item>FortranCInterface_GLOBAL__SUFFIX</item>
-      <item>FortranCInterface_MODULE_CASE</item>
-      <item>FortranCInterface_MODULE_MIDDLE</item>
-      <item>FortranCInterface_MODULE_PREFIX</item>
-      <item>FortranCInterface_MODULE_SUFFIX</item>
-      <item>FortranCInterface_MODULE_SYMBOLS</item>
-      <item>FortranCInterface_MODULE__CASE</item>
-      <item>FortranCInterface_MODULE__MIDDLE</item>
-      <item>FortranCInterface_MODULE__PREFIX</item>
-      <item>FortranCInterface_MODULE__SUFFIX</item>
-      <item>FortranCInterface_VERIFIED_C</item>
-      <item>FortranCInterface_VERIFIED_CXX</item>
-      <item>GCCXML</item>
-      <item>GDAL_ADDITIONAL_LIBRARY_VERSIONS</item>
-      <item>GDAL_LIBRARY</item>
-      <item>GETTEXT_MSGFMT_EXECUTABLE</item>
-      <item>GETTEXT_MSGMERGE_EXECUTABLE</item>
-      <item>GHS-MULTI</item>
-      <item>GIF_LIBRARY</item>
-      <item>GIT_EXECUTABLE</item>
-      <item>GLEW_USE_STATIC_LIBS</item>
-      <item>GLEW_VERBOSE</item>
-      <item>GLUT_Xi_LIBRARY</item>
-      <item>GLUT_Xmu_LIBRARY</item>
-      <item>GLUT_glut_LIBRARY</item>
-      <item>GNUPLOT_EXECUTABLE</item>
-      <item>GNUTLS_DEFINITIONS</item>
-      <item>GRAPHVIZ_EXECUTABLES</item>
-      <item>GRAPHVIZ_EXTERNAL_LIBS</item>
-      <item>GRAPHVIZ_GENERATE_PER_TARGET</item>
-      <item>GRAPHVIZ_GRAPH_HEADER</item>
-      <item>GRAPHVIZ_GRAPH_NAME</item>
-      <item>GRAPHVIZ_GRAPH_TYPE</item>
-      <item>GRAPHVIZ_IGNORE_TARGETS</item>
-      <item>GRAPHVIZ_MODULE_LIBS</item>
-      <item>GRAPHVIZ_NODE_PREFIX</item>
-      <item>GRAPHVIZ_SHARED_LIBS</item>
-      <item>GRAPHVIZ_STATIC_LIBS</item>
-      <item>GSL_CBLAS_LIBRARY</item>
-      <item>GSL_CBLAS_LIBRARY_DEBUG</item>
-      <item>GSL_CONFIG_EXECUTABLE</item>
-      <item>GSL_LIBRARY</item>
-      <item>GSL_LIBRARY_DEBUG</item>
-      <item>GTEST_MSVC_SEARCH</item>
-      <item>GTK2_ADDITIONAL_SUFFIXES</item>
-      <item>GTK2_DEBUG</item>
-      <item>GTK2_DEFINITIONS</item>
-      <item>GTK2_TARGETS</item>
-      <item>GTK2_USE_IMPORTED_TARGETS</item>
-      <item>HDF5_CXX_COMPILER_EXECUTABLE</item>
-      <item>HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE</item>
-      <item>HDF5_CXX_DEFINITIONS</item>
-      <item>HDF5_C_COMPILER_EXECUTABLE</item>
-      <item>HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE</item>
-      <item>HDF5_C_DEFINITIONS</item>
-      <item>HDF5_DEFINITIONS</item>
-      <item>HDF5_DIFF_EXECUTABLE</item>
-      <item>HDF5_FIND_DEBUG</item>
-      <item>HDF5_Fortran_COMPILER_EXECUTABLE</item>
-      <item>HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE</item>
-      <item>HDF5_Fortran_DEFINITIONS</item>
-      <item>HDF5_IS_PARALLEL</item>
-      <item>HDF5_NO_FIND_PACKAGE_CONFIG_FILE</item>
-      <item>HDF5_PREFER_PARALLEL</item>
-      <item>HG_EXECUTABLE</item>
-      <item>HTLATEX_COMPILER</item>
-      <item>HTML_HELP_COMPILER</item>
-      <item>HTML_HELP_LIBRARY</item>
-      <item>ICOTOOL_EXECUTABLE</item>
-      <item>ICU_DEBUG</item>
-      <item>ICU_MAKEFILE_INC</item>
-      <item>ICU_PKGDATA_INC</item>
-      <item>Iconv_IS_BUILT_IN</item>
-      <item>Iconv_LIBRARY</item>
-      <item>Intl_IS_BUILT_IN</item>
-      <item>Intl_LIBRARY</item>
-      <item>JASPER_LIBARRY_DEBUG</item>
-      <item>JASPER_LIBRARY_RELEASE</item>
-      <item>JAVA_AWT_INCLUDE_PATH</item>
-      <item>JAVA_AWT_LIBRARY</item>
-      <item>JAVA_INCLUDE_PATH</item>
-      <item>JAVA_INCLUDE_PATH2</item>
-      <item>JAVA_JVM_LIBRARY</item>
-      <item>JPEG_LIBRARY</item>
-      <item>JPEG_LIBRARY_DEBUG</item>
-      <item>JPEG_LIBRARY_RELEASE</item>
-      <item>Java_IDLJ_EXECUTABLE</item>
-      <item>Java_JARSIGNER_EXECUTABLE</item>
-      <item>Java_JAR_EXECUTABLE</item>
-      <item>Java_JAVAC_EXECUTABLE</item>
-      <item>Java_JAVADOC_EXECUTABLE</item>
-      <item>Java_JAVAH_EXECUTABLE</item>
-      <item>Java_JAVA_EXECUTABLE</item>
-      <item>LAPACK_LINKER_FLAGS</item>
-      <item>LATEX2HTML_CONVERTER</item>
-      <item>LATEX_COMPILER</item>
-      <item>LIBLZMA_HAS_AUTO_DECODER</item>
-      <item>LIBLZMA_HAS_EASY_ENCODER</item>
-      <item>LIBLZMA_HAS_LZMA_PRESET</item>
-      <item>LIBRARY_OUTPUT_PATH</item>
-      <item>LIBXML2_DEFINITIONS</item>
-      <item>LIBXML2_LIBRARY</item>
-      <item>LIBXML2_XMLLINT_EXECUTABLE</item>
-      <item>LIBXSLT_DEFINITIONS</item>
-      <item>LIBXSLT_XSLTPROC_EXECUTABLE</item>
-      <item>LTTNGUST_HAS_TRACEF</item>
-      <item>LTTNGUST_HAS_TRACELOG</item>
-      <item>LUALATEX_COMPILER</item>
-      <item>Libinput_COMPILE_OPTIONS</item>
-      <item>MAKEINDEX_COMPILER</item>
-      <item>MATLAB_ADDITIONAL_VERSIONS</item>
-      <item>MATLAB_FIND_DEBUG</item>
-      <item>MINGW</item>
-      <item>MPEG2_mpeg2_LIBRARY</item>
-      <item>MPEG2_vo_LIBRARY</item>
-      <item>MPEG_mpeg2_LIBRARY</item>
-      <item>MPEG_vo_LIBRARY</item>
-      <item>MPIEXEC_EXECUTABLE</item>
-      <item>MPIEXEC_MAX_NUMPROCS</item>
-      <item>MPIEXEC_NUMPROC_FLAG</item>
-      <item>MPIEXEC_POSTFLAGS</item>
-      <item>MPIEXEC_PREFLAGS</item>
-      <item>MPI_ASSUME_NO_BUILTIN_MPI</item>
-      <item>MPI_ASYNC_PROTECTS_NONBLOCKING</item>
-      <item>MPI_COMPILER_FLAGS</item>
-      <item>MPI_CXX_SKIP_MPICXX</item>
-      <item>MPI_DETERMINE_Fortran_CAPABILITIES</item>
-      <item>MPI_EXECUTABLE_SUFFIX</item>
-      <item>MPI_Fortran_F08_MODULE_ASYNCPROT</item>
-      <item>MPI_Fortran_F08_MODULE_SUBARRAYS</item>
-      <item>MPI_Fortran_F77_HEADER_ASYNCPROT</item>
-      <item>MPI_Fortran_F77_HEADER_SUBARRAYS</item>
-      <item>MPI_Fortran_F90_MODULE_ASYNCPROT</item>
-      <item>MPI_Fortran_F90_MODULE_SUBARRAYS</item>
-      <item>MPI_Fortran_HAVE_F08_MODULE</item>
-      <item>MPI_Fortran_HAVE_F77_HEADER</item>
-      <item>MPI_Fortran_HAVE_F90_MODULE</item>
-      <item>MPI_GUESS_LIBRARY_NAME</item>
-      <item>MPI_HOME</item>
-      <item>MPI_SKIP_COMPILER_WRAPPER</item>
-      <item>MPI_SKIP_GUESSING</item>
-      <item>MPI_SUBARRAYS_SUPPORTED</item>
-      <item>MSVC</item>
-      <item>MSVC10</item>
-      <item>MSVC11</item>
-      <item>MSVC12</item>
-      <item>MSVC14</item>
-      <item>MSVC60</item>
-      <item>MSVC70</item>
-      <item>MSVC71</item>
-      <item>MSVC80</item>
-      <item>MSVC90</item>
-      <item>MSVC_IDE</item>
-      <item>MSVC_TOOLSET_VERSION</item>
-      <item>MSVC_VERSION</item>
-      <item>Matlab_DATAARRAY_LIBRARY</item>
-      <item>Matlab_ENGINE_LIBRARY</item>
-      <item>Matlab_ENG_LIBRARY</item>
-      <item>Matlab_MAIN_PROGRAM</item>
-      <item>Matlab_MAT_LIBRARY</item>
-      <item>Matlab_MCC_COMPILER</item>
-      <item>Matlab_MEX_COMPILER</item>
-      <item>Matlab_MEX_EXTENSION</item>
-      <item>Matlab_MEX_LIBRARY</item>
-      <item>Matlab_MX_LIBRARY</item>
-      <item>ODBC_CONFIG</item>
-      <item>ODBC_LIBRARY</item>
-      <item>OPENAL_LIBRARY</item>
-      <item>OPENGL_egl_LIBRARY</item>
-      <item>OPENGL_gl_LIBRARY</item>
-      <item>OPENGL_glu_LIBRARY</item>
-      <item>OPENGL_glx_LIBRARY</item>
-      <item>OPENGL_opengl_LIBRARY</item>
-      <item>OPENSSL_APPLINK_SOURCE</item>
-      <item>OPENSSL_CRYPTO_LIBRARY</item>
-      <item>OPENSSL_MSVC_STATIC_RT</item>
-      <item>OPENSSL_SSL_LIBRARY</item>
-      <item>OPENSSL_USE_STATIC_LIBS</item>
-      <item>OpenACC_ACCEL_TARGET</item>
-      <item>OpenCL_LIBRARY</item>
-      <item>OpenGL_GL_PREFERENCE</item>
-      <item>OpenMP_Fortran_HAVE_OMPLIB_HEADER</item>
-      <item>OpenMP_Fortran_HAVE_OMPLIB_MODULE</item>
-      <item>PACKAGE_FIND_NAME</item>
-      <item>PACKAGE_FIND_VERSION_COMPLETE</item>
-      <item>PACKAGE_FIND_VERSION_COUNT</item>
-      <item>PACKAGE_FIND_VERSION_MAX</item>
-      <item>PACKAGE_FIND_VERSION_MAX_COUNT</item>
-      <item>PACKAGE_FIND_VERSION_MAX_MAJOR</item>
-      <item>PACKAGE_FIND_VERSION_MAX_MINOR</item>
-      <item>PACKAGE_FIND_VERSION_MAX_PATCH</item>
-      <item>PACKAGE_FIND_VERSION_MAX_TWEAK</item>
-      <item>PACKAGE_FIND_VERSION_MIN</item>
-      <item>PACKAGE_FIND_VERSION_MIN_COUNT</item>
-      <item>PACKAGE_FIND_VERSION_MIN_MAJOR</item>
-      <item>PACKAGE_FIND_VERSION_MIN_MINOR</item>
-      <item>PACKAGE_FIND_VERSION_MIN_PATCH</item>
-      <item>PACKAGE_FIND_VERSION_MIN_TWEAK</item>
-      <item>PACKAGE_FIND_VERSION_RANGE</item>
-      <item>PACKAGE_FIND_VERSION_RANGE_MAX</item>
-      <item>PACKAGE_FIND_VERSION_RANGE_MIN</item>
-      <item>PACKAGE_VERSION</item>
-      <item>PACKAGE_VERSION_COMPATIBLE</item>
-      <item>PACKAGE_VERSION_EXACT</item>
-      <item>PACKAGE_VERSION_UNSUITABLE</item>
-      <item>PDFLATEX_COMPILER</item>
-      <item>PDFTOPS_CONVERTER</item>
-      <item>PERL_ARCHLIB</item>
-      <item>PERL_EXECUTABLE</item>
-      <item>PERL_EXTRA_C_FLAGS</item>
-      <item>PERL_PRIVLIB</item>
-      <item>PERL_SITEARCH</item>
-      <item>PERL_SITELIB</item>
-      <item>PERL_SITESEARCH</item>
-      <item>PERL_UPDATE_ARCHLIB</item>
-      <item>PERL_UPDATE_PRIVLIB</item>
-      <item>PERL_VENDORARCH</item>
-      <item>PERL_VENDORLIB</item>
-      <item>PHP4_EXECUTABLE</item>
-      <item>PHP4_INCLUDE_PATH</item>
-      <item>PHYSFS_LIBRARY</item>
-      <item>PIKE_EXECUTABLE</item>
-      <item>PIKE_INCLUDE_PATH</item>
-      <item>PKG_CONFIG_EXECUTABLE</item>
-      <item>PKG_CONFIG_USE_CMAKE_PREFIX_PATH</item>
-      <item>PKG_CONFIG_VERSION_STRING</item>
-      <item>PNG_DEFINITIONS</item>
-      <item>PNG_LIBRARY</item>
-      <item>PROJECT_BINARY_DIR</item>
-      <item>PROJECT_DESCRIPTION</item>
-      <item>PROJECT_HOMEPAGE_URL</item>
-      <item>PROJECT_IS_TOP_LEVEL</item>
-      <item>PROJECT_NAME</item>
-      <item>PROJECT_SOURCE_DIR</item>
-      <item>PROJECT_VERSION</item>
-      <item>PROJECT_VERSION_MAJOR</item>
-      <item>PROJECT_VERSION_MINOR</item>
-      <item>PROJECT_VERSION_PATCH</item>
-      <item>PROJECT_VERSION_TWEAK</item>
-      <item>PS2PDF_CONVERTER</item>
-      <item>Patch_EXECUTABLE</item>
-      <item>Protobuf_DEBUG</item>
-      <item>Protobuf_IMPORT_DIRS</item>
-      <item>Protobuf_LIBRARY</item>
-      <item>Protobuf_LIBRARY_DEBUG</item>
-      <item>Protobuf_LITE_LIBRARY</item>
-      <item>Protobuf_LITE_LIBRARY_DEBUG</item>
-      <item>Protobuf_PROTOC_EXECUTABLE</item>
-      <item>Protobuf_PROTOC_LIBRARY</item>
-      <item>Protobuf_PROTOC_LIBRARY_DEBUG</item>
-      <item>Protobuf_SRC_ROOT_FOLDER</item>
-      <item>Protobuf_USE_STATIC_LIBS</item>
-      <item>Python2_ARTIFACTS_INTERACTIVE</item>
-      <item>Python2_COMPILER</item>
-      <item>Python2_COMPILER_ID</item>
-      <item>Python2_DOTNET_LAUNCHER</item>
-      <item>Python2_EXECUTABLE</item>
-      <item>Python2_FIND_ABI</item>
-      <item>Python2_FIND_FRAMEWORK</item>
-      <item>Python2_FIND_IMPLEMENTATIONS</item>
-      <item>Python2_FIND_REGISTRY</item>
-      <item>Python2_FIND_STRATEGY</item>
-      <item>Python2_FIND_UNVERSIONED_NAMES</item>
-      <item>Python2_FIND_VIRTUALENV</item>
-      <item>Python2_INTERPRETER_ID</item>
-      <item>Python2_LINK_OPTIONS</item>
-      <item>Python2_SITEARCH</item>
-      <item>Python2_SITELIB</item>
-      <item>Python2_SOABI</item>
-      <item>Python2_STDARCH</item>
-      <item>Python2_STDLIB</item>
-      <item>Python2_USE_STATIC_LIBS</item>
-      <item>Python3_ARTIFACTS_INTERACTIVE</item>
-      <item>Python3_COMPILER</item>
-      <item>Python3_COMPILER_ID</item>
-      <item>Python3_DOTNET_LAUNCHER</item>
-      <item>Python3_EXECUTABLE</item>
-      <item>Python3_FIND_ABI</item>
-      <item>Python3_FIND_FRAMEWORK</item>
-      <item>Python3_FIND_IMPLEMENTATIONS</item>
-      <item>Python3_FIND_REGISTRY</item>
-      <item>Python3_FIND_STRATEGY</item>
-      <item>Python3_FIND_UNVERSIONED_NAMES</item>
-      <item>Python3_FIND_VIRTUALENV</item>
-      <item>Python3_INTERPRETER_ID</item>
-      <item>Python3_LINK_OPTIONS</item>
-      <item>Python3_SITEARCH</item>
-      <item>Python3_SITELIB</item>
-      <item>Python3_SOABI</item>
-      <item>Python3_STDARCH</item>
-      <item>Python3_STDLIB</item>
-      <item>Python3_USE_STATIC_LIBS</item>
-      <item>Python_ARTIFACTS_INTERACTIVE</item>
-      <item>Python_COMPILER</item>
-      <item>Python_COMPILER_ID</item>
-      <item>Python_DOTNET_LAUNCHER</item>
-      <item>Python_EXECUTABLE</item>
-      <item>Python_FIND_ABI</item>
-      <item>Python_FIND_FRAMEWORK</item>
-      <item>Python_FIND_IMPLEMENTATIONS</item>
-      <item>Python_FIND_REGISTRY</item>
-      <item>Python_FIND_STRATEGY</item>
-      <item>Python_FIND_UNVERSIONED_NAMES</item>
-      <item>Python_FIND_VIRTUALENV</item>
-      <item>Python_INTERPRETER_ID</item>
-      <item>Python_LINK_OPTIONS</item>
-      <item>Python_SITEARCH</item>
-      <item>Python_SITELIB</item>
-      <item>Python_SOABI</item>
-      <item>Python_STDARCH</item>
-      <item>Python_STDLIB</item>
-      <item>Python_USE_STATIC_LIBS</item>
-      <item>QTIFWDIR</item>
-      <item>RTI_DEFINITIONS</item>
-      <item>Ruby_EXECUTABLE</item>
-      <item>Ruby_FIND_VIRTUALENV</item>
-      <item>SDLIMAGE_LIBRARY</item>
-      <item>SDLMIXER_LIBRARY</item>
-      <item>SDLNET_LIBRARY</item>
-      <item>SDLTTF_LIBRARY</item>
-      <item>SDL_BUILDING_LIBRARY</item>
-      <item>SDL_LIBRARY</item>
-      <item>SDL_SOUND_LIBRARY</item>
-      <item>SQUISH_CLIENT_EXECUTABLE</item>
-      <item>SQUISH_SERVER_EXECUTABLE</item>
-      <item>SWIG_EXECUTABLE</item>
-      <item>SWIG_OUTFILE_DIR</item>
-      <item>SWIG_SOURCE_FILE_EXTENSIONS</item>
-      <item>SWIG_USE_SWIG_DEPENDENCIES</item>
-      <item>Subversion_SVN_EXECUTABLE</item>
-      <item>Subversion_VERSION_SVN</item>
-      <item>TCL_INCLUDE_PATH</item>
-      <item>TCL_STUB_LIBRARY</item>
-      <item>TCL_TCLSH</item>
-      <item>THREADS_PREFER_PTHREAD_FLAG</item>
-      <item>TIFFXX_LIBRARY_DEBUG</item>
-      <item>TIFFXX_LIBRARY_RELEASE</item>
-      <item>TIFF_LIBRARY_DEBUG</item>
-      <item>TIFF_LIBRARY_RELEASE</item>
-      <item>TK_INCLUDE_PATH</item>
-      <item>TK_LIBRARY</item>
-      <item>TK_STUB_LIBRARY</item>
-      <item>TK_WISH</item>
-      <item>TTK_STUB_LIBRARY</item>
-      <item>UNIX</item>
-      <item>UseSWIG_MODULE_VERSION</item>
-      <item>Vulkan_GLSLANG_VALIDATOR_EXECUTABLE</item>
-      <item>Vulkan_GLSLC_EXECUTABLE</item>
-      <item>Vulkan_LIBRARY</item>
-      <item>WGET_EXECUTABLE</item>
-      <item>WIN32</item>
-      <item>WINCE</item>
-      <item>WINDOWS_PHONE</item>
-      <item>WINDOWS_STORE</item>
-      <item>XCODE</item>
-      <item>XCODE_VERSION</item>
-      <item>XCTest_EXECUTABLE</item>
-      <item>XELATEX_COMPILER</item>
-      <item>XINDY_COMPILER</item>
-      <item>XalanC_LIBRARY</item>
-      <item>XercesC_LIBRARY</item>
-      <item>wxWidgets_CONFIGURATION</item>
-      <item>wxWidgets_CXX_FLAGS</item>
-      <item>wxWidgets_DEFINITIONS</item>
-      <item>wxWidgets_DEFINITIONS_DEBUG</item>
-      <item>wxWidgets_EXCLUDE_COMMON_LIBRARIES</item>
-      <item>wxWidgets_USE_DEBUG</item>
-      <item>wxWidgets_USE_FILE</item>
-      <item>wxWidgets_USE_STATIC</item>
-      <item>wxWidgets_USE_UNICODE</item>
-      <item>wxWidgets_USE_UNIVERSAL</item>
-    </list>
-
-    <list name="deprecated-or-internal-variables">
-      <item>CMAKE_HOME_DIRECTORY</item>
-      <item>CMAKE_INTERNAL_PLATFORM_ABI</item>
-      <item>CMAKE_NOT_USING_CONFIG_FLAGS</item>
-      <item>CMAKE_OBJDUMP</item>
-      <item>CMAKE_SUPPRESS_DEVELOPER_ERRORS</item>
-      <item>CMAKE_SUPPRESS_DEVELOPER_WARNINGS</item>
-      <item>CMAKE_SYSTEM_ARCH</item>
-      <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item>
-      <item>CPACK_INSTALL_PREFIX</item>
-      <item>CPACK_INSTALL_SCRIPT</item>
-      <item>CPACK_PACKAGE_CONTACT</item>
-      <item>CPACK_PACKAGE_RELOCATABLE</item>
-      <item>CPACK_TEMPORARY_DIRECTORY</item>
-      <item>CPACK_TOPLEVEL_DIRECTORY</item>
-    </list>
-
-    <list name="environment-variables">
-      <item>CC</item>
-      <item>CFLAGS</item>
-      <item>CMAKE_APPBUNDLE_PATH</item>
-      <item>CMAKE_APPLE_SILICON_PROCESSOR</item>
-      <item>CMAKE_BUILD_PARALLEL_LEVEL</item>
-      <item>CMAKE_BUILD_TYPE</item>
-      <item>CMAKE_CONFIGURATION_TYPES</item>
-      <item>CMAKE_CONFIG_TYPE</item>
-      <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>
-      <item>CMAKE_FRAMEWORK_PATH</item>
-      <item>CMAKE_GENERATOR</item>
-      <item>CMAKE_GENERATOR_INSTANCE</item>
-      <item>CMAKE_GENERATOR_PLATFORM</item>
-      <item>CMAKE_GENERATOR_TOOLSET</item>
-      <item>CMAKE_INSTALL_MODE</item>
-      <item>CMAKE_MSVCIDE_RUN_PATH</item>
-      <item>CMAKE_NO_VERBOSE</item>
-      <item>CMAKE_OSX_ARCHITECTURES</item>
-      <item>CMAKE_PREFIX_PATH</item>
-      <item>CMAKE_TOOLCHAIN_FILE</item>
-      <item>CSFLAGS</item>
-      <item>CTEST_INTERACTIVE_DEBUG_MODE</item>
-      <item>CTEST_OUTPUT_ON_FAILURE</item>
-      <item>CTEST_PARALLEL_LEVEL</item>
-      <item>CTEST_PROGRESS_OUTPUT</item>
-      <item>CTEST_USE_LAUNCHERS_DEFAULT</item>
-      <item>CUDAARCHS</item>
-      <item>CUDACXX</item>
-      <item>CUDAFLAGS</item>
-      <item>CUDAHOSTCXX</item>
-      <item>CXX</item>
-      <item>CXXFLAGS</item>
-      <item>DASHBOARD_TEST_FROM_CTEST</item>
-      <item>DESTDIR</item>
-      <item>FC</item>
-      <item>FFLAGS</item>
-      <item>LDFLAGS</item>
-      <item>MACOSX_DEPLOYMENT_TARGET</item>
-      <item>PATH</item>
-      <item>QTIFWDIR</item>
-      <item>RC</item>
-      <item>RCFLAGS</item>
-      <item>SWIFTC</item>
-      <item>VERBOSE</item>
-    </list>
-    <list name="global-properties">
-      <item>ALLOW_DUPLICATE_CUSTOM_TARGETS</item>
-      <item>AUTOGEN_SOURCE_GROUP</item>
-      <item>AUTOGEN_TARGETS_FOLDER</item>
-      <item>AUTOMOC_SOURCE_GROUP</item>
-      <item>AUTOMOC_TARGETS_FOLDER</item>
-      <item>AUTORCC_SOURCE_GROUP</item>
-      <item>CMAKE_CUDA_KNOWN_FEATURES</item>
-      <item>CMAKE_CXX_KNOWN_FEATURES</item>
-      <item>CMAKE_C_KNOWN_FEATURES</item>
-      <item>CMAKE_ROLE</item>
-      <item>DEBUG_CONFIGURATIONS</item>
-      <item>DISABLED_FEATURES</item>
-      <item>ECLIPSE_EXTRA_NATURES</item>
-      <item>ENABLED_FEATURES</item>
-      <item>ENABLED_LANGUAGES</item>
-      <item>FIND_LIBRARY_USE_LIB32_PATHS</item>
-      <item>FIND_LIBRARY_USE_LIB64_PATHS</item>
-      <item>FIND_LIBRARY_USE_LIBX32_PATHS</item>
-      <item>FIND_LIBRARY_USE_OPENBSD_VERSIONING</item>
-      <item>FeatureSummary_DEFAULT_PKG_TYPE</item>
-      <item>FeatureSummary_PKG_TYPES</item>
-      <item>FeatureSummary_REQUIRED_PKG_TYPES</item>
-      <item>GENERATOR_IS_MULTI_CONFIG</item>
-      <item>GLOBAL_DEPENDS_DEBUG_MODE</item>
-      <item>GLOBAL_DEPENDS_NO_CYCLES</item>
-      <item>IN_TRY_COMPILE</item>
-      <item>JOB_POOLS</item>
-      <item>PACKAGES_FOUND</item>
-      <item>PACKAGES_NOT_FOUND</item>
-      <item>PREDEFINED_TARGETS_FOLDER</item>
-      <item>REPORT_UNDEFINED_PROPERTIES</item>
-      <item>RULE_LAUNCH_COMPILE</item>
-      <item>RULE_LAUNCH_CUSTOM</item>
-      <item>RULE_LAUNCH_LINK</item>
-      <item>RULE_MESSAGES</item>
-      <item>TARGET_ARCHIVES_MAY_BE_SHARED_LIBS</item>
-      <item>TARGET_MESSAGES</item>
-      <item>TARGET_SUPPORTS_SHARED_LIBS</item>
-      <item>USE_FOLDERS</item>
-      <item>XCODE_EMIT_EFFECTIVE_PLATFORM_NAME</item>
-    </list>
-    <list name="directory-properties">
-      <item>ADDITIONAL_CLEAN_FILES</item>
-      <item>ADDITIONAL_MAKE_CLEAN_FILES</item>
-      <item>BINARY_DIR</item>
-      <item>BUILDSYSTEM_TARGETS</item>
-      <item>CACHE_VARIABLES</item>
-      <item>CLEAN_NO_CUSTOM</item>
-      <item>CMAKE_CONFIGURE_DEPENDS</item>
-      <item>COMPILE_DEFINITIONS</item>
-      <item>COMPILE_OPTIONS</item>
-      <item>DEFINITIONS</item>
-      <item>EXCLUDE_FROM_ALL</item>
-      <item>IMPLICIT_DEPENDS_INCLUDE_TRANSFORM</item>
-      <item>IMPORTED_TARGETS</item>
-      <item>INCLUDE_DIRECTORIES</item>
-      <item>INCLUDE_REGULAR_EXPRESSION</item>
-      <item>INTERPROCEDURAL_OPTIMIZATION</item>
-      <item>LABELS</item>
-      <item>LINK_DIRECTORIES</item>
-      <item>LINK_OPTIONS</item>
-      <item>LISTFILE_STACK</item>
-      <item>MACROS</item>
-      <item>PARENT_DIRECTORY</item>
-      <item>RULE_LAUNCH_COMPILE</item>
-      <item>RULE_LAUNCH_CUSTOM</item>
-      <item>RULE_LAUNCH_LINK</item>
-      <item>SOURCE_DIR</item>
-      <item>SUBDIRECTORIES</item>
-      <item>TESTS</item>
-      <item>TEST_INCLUDE_FILE</item>
-      <item>TEST_INCLUDE_FILES</item>
-      <item>VARIABLES</item>
-      <item>VS_STARTUP_PROJECT</item>
-    </list>
-    <list name="target-properties">
-      <item>ADDITIONAL_CLEAN_FILES</item>
-      <item>AIX_EXPORT_ALL_SYMBOLS</item>
-      <item>ALIASED_TARGET</item>
-      <item>ANDROID_ANT_ADDITIONAL_OPTIONS</item>
-      <item>ANDROID_API</item>
-      <item>ANDROID_API_MIN</item>
-      <item>ANDROID_ARCH</item>
-      <item>ANDROID_ASSETS_DIRECTORIES</item>
-      <item>ANDROID_GUI</item>
-      <item>ANDROID_JAR_DEPENDENCIES</item>
-      <item>ANDROID_JAR_DIRECTORIES</item>
-      <item>ANDROID_JAVA_SOURCE_DIR</item>
-      <item>ANDROID_NATIVE_LIB_DEPENDENCIES</item>
-      <item>ANDROID_NATIVE_LIB_DIRECTORIES</item>
-      <item>ANDROID_PROCESS_MAX</item>
-      <item>ANDROID_PROGUARD</item>
-      <item>ANDROID_PROGUARD_CONFIG_PATH</item>
-      <item>ANDROID_SECURE_PROPS_PATH</item>
-      <item>ANDROID_SKIP_ANT_STEP</item>
-      <item>ANDROID_STL_TYPE</item>
-      <item>ARCHIVE_OUTPUT_DIRECTORY</item>
-      <item>ARCHIVE_OUTPUT_NAME</item>
-      <item>AUTOGEN_BUILD_DIR</item>
-      <item>AUTOGEN_ORIGIN_DEPENDS</item>
-      <item>AUTOGEN_TARGET_DEPENDS</item>
-      <item>AUTOMOC</item>
-      <item>AUTOMOC_COMPILER_PREDEFINES</item>
-      <item>AUTOMOC_DEPEND_FILTERS</item>
-      <item>AUTOMOC_EXECUTABLE</item>
-      <item>AUTOMOC_MACRO_NAMES</item>
-      <item>AUTOMOC_MOC_OPTIONS</item>
-      <item>AUTOMOC_PATH_PREFIX</item>
-      <item>AUTORCC</item>
-      <item>AUTORCC_EXECUTABLE</item>
-      <item>AUTORCC_OPTIONS</item>
-      <item>AUTOUIC</item>
-      <item>AUTOUIC_EXECUTABLE</item>
-      <item>AUTOUIC_OPTIONS</item>
-      <item>AUTOUIC_SEARCH_PATHS</item>
-      <item>BINARY_DIR</item>
-      <item>BUILD_RPATH</item>
-      <item>BUILD_RPATH_USE_ORIGIN</item>
-      <item>BUILD_WITH_INSTALL_NAME_DIR</item>
-      <item>BUILD_WITH_INSTALL_RPATH</item>
-      <item>BUNDLE</item>
-      <item>BUNDLE_EXTENSION</item>
-      <item>COMMON_LANGUAGE_RUNTIME</item>
-      <item>COMPATIBLE_INTERFACE_BOOL</item>
-      <item>COMPATIBLE_INTERFACE_NUMBER_MAX</item>
-      <item>COMPATIBLE_INTERFACE_NUMBER_MIN</item>
-      <item>COMPATIBLE_INTERFACE_STRING</item>
-      <item>COMPILE_DEFINITIONS</item>
-      <item>COMPILE_FEATURES</item>
-      <item>COMPILE_FLAGS</item>
-      <item>COMPILE_OPTIONS</item>
-      <item>COMPILE_PDB_NAME</item>
-      <item>COMPILE_PDB_OUTPUT_DIRECTORY</item>
-      <item>CROSSCOMPILING_EMULATOR</item>
-      <item>CUDA_ARCHITECTURES</item>
-      <item>CUDA_EXTENSIONS</item>
-      <item>CUDA_PTX_COMPILATION</item>
-      <item>CUDA_RESOLVE_DEVICE_SYMBOLS</item>
-      <item>CUDA_RUNTIME_LIBRARY</item>
-      <item>CUDA_SEPARABLE_COMPILATION</item>
-      <item>CUDA_STANDARD</item>
-      <item>CUDA_STANDARD_REQUIRED</item>
-      <item>CXX_EXTENSIONS</item>
-      <item>CXX_STANDARD</item>
-      <item>CXX_STANDARD_REQUIRED</item>
-      <item>C_EXTENSIONS</item>
-      <item>C_STANDARD</item>
-      <item>C_STANDARD_REQUIRED</item>
-      <item>DEFINE_SYMBOL</item>
-      <item>DEPLOYMENT_ADDITIONAL_FILES</item>
-      <item>DEPLOYMENT_REMOTE_DIRECTORY</item>
-      <item>DEPRECATION</item>
-      <item>DISABLE_PRECOMPILE_HEADERS</item>
-      <item>DOTNET_SDK</item>
-      <item>DOTNET_TARGET_FRAMEWORK</item>
-      <item>DOTNET_TARGET_FRAMEWORK_VERSION</item>
-      <item>ENABLE_EXPORTS</item>
-      <item>EXCLUDE_FROM_ALL</item>
-      <item>EXCLUDE_FROM_DEFAULT_BUILD</item>
-      <item>EXPORT_COMPILE_COMMANDS</item>
-      <item>EXPORT_NAME</item>
-      <item>EXPORT_PROPERTIES</item>
-      <item>EchoString</item>
-      <item>FOLDER</item>
-      <item>FRAMEWORK</item>
-      <item>FRAMEWORK_VERSION</item>
-      <item>Fortran_FORMAT</item>
-      <item>Fortran_MODULE_DIRECTORY</item>
-      <item>Fortran_PREPROCESS</item>
-      <item>GENERATOR_FILE_NAME</item>
-      <item>GNUtoMS</item>
-      <item>HAS_CXX</item>
-      <item>HEADER_DIRS</item>
-      <item>HEADER_SET</item>
-      <item>HEADER_SETS</item>
-      <item>HIP_ARCHITECTURES</item>
-      <item>HIP_EXTENSIONS</item>
-      <item>HIP_STANDARD</item>
-      <item>HIP_STANDARD_REQUIRED</item>
-      <item>IMPLICIT_DEPENDS_INCLUDE_TRANSFORM</item>
-      <item>IMPORTED</item>
-      <item>IMPORTED_COMMON_LANGUAGE_RUNTIME</item>
-      <item>IMPORTED_CONFIGURATIONS</item>
-      <item>IMPORTED_GLOBAL</item>
-      <item>IMPORTED_IMPLIB</item>
-      <item>IMPORTED_LIBNAME</item>
-      <item>IMPORTED_LINK_DEPENDENT_LIBRARIES</item>
-      <item>IMPORTED_LINK_INTERFACE_LANGUAGES</item>
-      <item>IMPORTED_LINK_INTERFACE_LIBRARIES</item>
-      <item>IMPORTED_LINK_INTERFACE_MULTIPLICITY</item>
-      <item>IMPORTED_LOCATION</item>
-      <item>IMPORTED_NO_SONAME</item>
-      <item>IMPORTED_NO_SYSTEM</item>
-      <item>IMPORTED_OBJECTS</item>
-      <item>IMPORTED_SONAME</item>
-      <item>IMPORT_PREFIX</item>
-      <item>IMPORT_SUFFIX</item>
-      <item>INCLUDE_DIRECTORIES</item>
-      <item>INSTALL_NAME_DIR</item>
-      <item>INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
-      <item>INSTALL_RPATH</item>
-      <item>INSTALL_RPATH_USE_LINK_PATH</item>
-      <item>INTERFACE_AUTOUIC_OPTIONS</item>
-      <item>INTERFACE_COMPILE_DEFINITIONS</item>
-      <item>INTERFACE_COMPILE_FEATURES</item>
-      <item>INTERFACE_COMPILE_OPTIONS</item>
-      <item>INTERFACE_HEADER_SETS</item>
-      <item>INTERFACE_INCLUDE_DIRECTORIES</item>
-      <item>INTERFACE_LINK_DEPENDS</item>
-      <item>INTERFACE_LINK_DIRECTORIES</item>
-      <item>INTERFACE_LINK_LIBRARIES</item>
-      <item>INTERFACE_LINK_OPTIONS</item>
-      <item>INTERFACE_POSITION_INDEPENDENT_CODE</item>
-      <item>INTERFACE_PRECOMPILE_HEADERS</item>
-      <item>INTERFACE_SOURCES</item>
-      <item>INTERFACE_SYSTEM_INCLUDE_DIRECTORIES</item>
-      <item>INTERPROCEDURAL_OPTIMIZATION</item>
-      <item>IOS_INSTALL_COMBINED</item>
-      <item>ISPC_HEADER_DIRECTORY</item>
-      <item>ISPC_HEADER_SUFFIX</item>
-      <item>ISPC_INSTRUCTION_SETS</item>
-      <item>JOB_POOL_COMPILE</item>
-      <item>JOB_POOL_LINK</item>
-      <item>LABELS</item>
-      <item>LIBRARY_OUTPUT_DIRECTORY</item>
-      <item>LIBRARY_OUTPUT_NAME</item>
-      <item>LINKER_LANGUAGE</item>
-      <item>LINK_DEPENDS</item>
-      <item>LINK_DEPENDS_NO_SHARED</item>
-      <item>LINK_DIRECTORIES</item>
-      <item>LINK_FLAGS</item>
-      <item>LINK_INTERFACE_LIBRARIES</item>
-      <item>LINK_INTERFACE_MULTIPLICITY</item>
-      <item>LINK_LIBRARIES</item>
-      <item>LINK_LIBRARIES_ONLY_TARGETS</item>
-      <item>LINK_OPTIONS</item>
-      <item>LINK_SEARCH_END_STATIC</item>
-      <item>LINK_SEARCH_START_STATIC</item>
-      <item>LINK_WHAT_YOU_USE</item>
-      <item>LOCATION</item>
-      <item>MACHO_COMPATIBILITY_VERSION</item>
-      <item>MACHO_CURRENT_VERSION</item>
-      <item>MACOSX_BUNDLE</item>
-      <item>MACOSX_BUNDLE_INFO_PLIST</item>
-      <item>MACOSX_FRAMEWORK_INFO_PLIST</item>
-      <item>MACOSX_RPATH</item>
-      <item>MANUALLY_ADDED_DEPENDENCIES</item>
-      <item>MSVC_RUNTIME_LIBRARY</item>
-      <item>NAME</item>
-      <item>NO_SONAME</item>
-      <item>NO_SYSTEM_FROM_IMPORTED</item>
-      <item>OBJCXX_EXTENSIONS</item>
-      <item>OBJCXX_STANDARD</item>
-      <item>OBJCXX_STANDARD_REQUIRED</item>
-      <item>OBJC_EXTENSIONS</item>
-      <item>OBJC_STANDARD</item>
-      <item>OBJC_STANDARD_REQUIRED</item>
-      <item>OPTIMIZE_DEPENDENCIES</item>
-      <item>OSX_ARCHITECTURES</item>
-      <item>OSX_COMPATIBILITY_VERSION</item>
-      <item>OSX_CURRENT_VERSION</item>
-      <item>OUTPUT_NAME</item>
-      <item>PCH_INSTANTIATE_TEMPLATES</item>
-      <item>PCH_WARN_INVALID</item>
-      <item>PDB_NAME</item>
-      <item>PDB_OUTPUT_DIRECTORY</item>
-      <item>POSITION_INDEPENDENT_CODE</item>
-      <item>PRECOMPILE_HEADERS</item>
-      <item>PRECOMPILE_HEADERS_REUSE_FROM</item>
-      <item>PREFIX</item>
-      <item>PRIVATE_HEADER</item>
-      <item>PROJECT_LABEL</item>
-      <item>PUBLIC_HEADER</item>
-      <item>RESOURCE</item>
-      <item>RULE_LAUNCH_COMPILE</item>
-      <item>RULE_LAUNCH_CUSTOM</item>
-      <item>RULE_LAUNCH_LINK</item>
-      <item>RUNTIME_OUTPUT_DIRECTORY</item>
-      <item>RUNTIME_OUTPUT_NAME</item>
-      <item>SKIP_BUILD_RPATH</item>
-      <item>SOURCES</item>
-      <item>SOURCE_DIR</item>
-      <item>SOVERSION</item>
-      <item>STATIC_LIBRARY_FLAGS</item>
-      <item>STATIC_LIBRARY_OPTIONS</item>
-      <item>SUFFIX</item>
-      <item>Swift_DEPENDENCIES_FILE</item>
-      <item>Swift_MODULE_DIRECTORY</item>
-      <item>Swift_MODULE_NAME</item>
-      <item>TYPE</item>
-      <item>UNITY_BUILD</item>
-      <item>UNITY_BUILD_BATCH_SIZE</item>
-      <item>UNITY_BUILD_CODE_AFTER_INCLUDE</item>
-      <item>UNITY_BUILD_CODE_BEFORE_INCLUDE</item>
-      <item>UNITY_BUILD_MODE</item>
-      <item>UNITY_BUILD_UNIQUE_ID</item>
-      <item>VERSION</item>
-      <item>VISIBILITY_INLINES_HIDDEN</item>
-      <item>VS_CONFIGURATION_TYPE</item>
-      <item>VS_DEBUGGER_COMMAND</item>
-      <item>VS_DEBUGGER_COMMAND_ARGUMENTS</item>
-      <item>VS_DEBUGGER_ENVIRONMENT</item>
-      <item>VS_DEBUGGER_WORKING_DIRECTORY</item>
-      <item>VS_DESKTOP_EXTENSIONS_VERSION</item>
-      <item>VS_DOTNET_DOCUMENTATION_FILE</item>
-      <item>VS_DOTNET_REFERENCES</item>
-      <item>VS_DOTNET_REFERENCES_COPY_LOCAL</item>
-      <item>VS_DOTNET_TARGET_FRAMEWORK_VERSION</item>
-      <item>VS_DPI_AWARE</item>
-      <item>VS_GLOBAL_KEYWORD</item>
-      <item>VS_GLOBAL_PROJECT_TYPES</item>
-      <item>VS_GLOBAL_ROOTNAMESPACE</item>
-      <item>VS_IOT_EXTENSIONS_VERSION</item>
-      <item>VS_IOT_STARTUP_TASK</item>
-      <item>VS_JUST_MY_CODE_DEBUGGING</item>
-      <item>VS_KEYWORD</item>
-      <item>VS_MOBILE_EXTENSIONS_VERSION</item>
-      <item>VS_NO_SOLUTION_DEPLOY</item>
-      <item>VS_PACKAGE_REFERENCES</item>
-      <item>VS_PLATFORM_TOOLSET</item>
-      <item>VS_PROJECT_IMPORT</item>
-      <item>VS_SCC_AUXPATH</item>
-      <item>VS_SCC_LOCALPATH</item>
-      <item>VS_SCC_PROJECTNAME</item>
-      <item>VS_SCC_PROVIDER</item>
-      <item>VS_SDK_REFERENCES</item>
-      <item>VS_SOLUTION_DEPLOY</item>
-      <item>VS_USER_PROPS</item>
-      <item>VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION</item>
-      <item>VS_WINRT_COMPONENT</item>
-      <item>VS_WINRT_EXTENSIONS</item>
-      <item>VS_WINRT_REFERENCES</item>
-      <item>WIN32_EXECUTABLE</item>
-      <item>WINDOWS_EXPORT_ALL_SYMBOLS</item>
-      <item>XCODE_EXPLICIT_FILE_TYPE</item>
-      <item>XCODE_GENERATE_SCHEME</item>
-      <item>XCODE_LINK_BUILD_PHASE_MODE</item>
-      <item>XCODE_PRODUCT_TYPE</item>
-      <item>XCODE_SCHEME_ADDRESS_SANITIZER</item>
-      <item>XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
-      <item>XCODE_SCHEME_ARGUMENTS</item>
-      <item>XCODE_SCHEME_DEBUG_AS_ROOT</item>
-      <item>XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
-      <item>XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
-      <item>XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
-      <item>XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
-      <item>XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE</item>
-      <item>XCODE_SCHEME_ENVIRONMENT</item>
-      <item>XCODE_SCHEME_EXECUTABLE</item>
-      <item>XCODE_SCHEME_GUARD_MALLOC</item>
-      <item>XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</item>
-      <item>XCODE_SCHEME_MALLOC_GUARD_EDGES</item>
-      <item>XCODE_SCHEME_MALLOC_SCRIBBLE</item>
-      <item>XCODE_SCHEME_MALLOC_STACK</item>
-      <item>XCODE_SCHEME_THREAD_SANITIZER</item>
-      <item>XCODE_SCHEME_THREAD_SANITIZER_STOP</item>
-      <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item>
-      <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item>
-      <item>XCODE_SCHEME_WORKING_DIRECTORY</item>
-      <item>XCODE_SCHEME_ZOMBIE_OBJECTS</item>
-      <item>XCTEST</item>
-    </list>
-    <list name="source-properties">
-      <item>ABSTRACT</item>
-      <item>AUTORCC_OPTIONS</item>
-      <item>AUTOUIC_OPTIONS</item>
-      <item>COMPILE_DEFINITIONS</item>
-      <item>COMPILE_FLAGS</item>
-      <item>COMPILE_OPTIONS</item>
-      <item>EXTERNAL_OBJECT</item>
-      <item>Fortran_FORMAT</item>
-      <item>Fortran_PREPROCESS</item>
-      <item>GENERATED</item>
-      <item>HEADER_FILE_ONLY</item>
-      <item>INCLUDE_DIRECTORIES</item>
-      <item>KEEP_EXTENSION</item>
-      <item>LABELS</item>
-      <item>LANGUAGE</item>
-      <item>LOCATION</item>
-      <item>MACOSX_PACKAGE_LOCATION</item>
-      <item>OBJECT_DEPENDS</item>
-      <item>OBJECT_OUTPUTS</item>
-      <item>SKIP_AUTOGEN</item>
-      <item>SKIP_AUTOMOC</item>
-      <item>SKIP_AUTORCC</item>
-      <item>SKIP_AUTOUIC</item>
-      <item>SKIP_PRECOMPILE_HEADERS</item>
-      <item>SKIP_UNITY_BUILD_INCLUSION</item>
-      <item>SYMBOLIC</item>
-      <item>Swift_DEPENDENCIES_FILE</item>
-      <item>Swift_DIAGNOSTICS_FILE</item>
-      <item>VS_COPY_TO_OUT_DIR</item>
-      <item>VS_DEPLOYMENT_CONTENT</item>
-      <item>VS_DEPLOYMENT_LOCATION</item>
-      <item>VS_INCLUDE_IN_VSIX</item>
-      <item>VS_RESOURCE_GENERATOR</item>
-      <item>VS_SETTINGS</item>
-      <item>VS_SHADER_DISABLE_OPTIMIZATIONS</item>
-      <item>VS_SHADER_ENABLE_DEBUG</item>
-      <item>VS_SHADER_ENTRYPOINT</item>
-      <item>VS_SHADER_FLAGS</item>
-      <item>VS_SHADER_MODEL</item>
-      <item>VS_SHADER_OBJECT_FILE_NAME</item>
-      <item>VS_SHADER_OUTPUT_HEADER_FILE</item>
-      <item>VS_SHADER_TYPE</item>
-      <item>VS_SHADER_VARIABLE_NAME</item>
-      <item>VS_TOOL_OVERRIDE</item>
-      <item>VS_XAML_TYPE</item>
-      <item>WRAP_EXCLUDE</item>
-      <item>XCODE_EXPLICIT_FILE_TYPE</item>
-      <item>XCODE_FILE_ATTRIBUTES</item>
-      <item>XCODE_LAST_KNOWN_FILE_TYPE</item>
-    </list>
-    <list name="test-properties">
-      <item>ATTACHED_FILES</item>
-      <item>ATTACHED_FILES_ON_FAIL</item>
-      <item>COST</item>
-      <item>DEPENDS</item>
-      <item>DISABLED</item>
-      <item>ENVIRONMENT</item>
-      <item>ENVIRONMENT_MODIFICATION</item>
-      <item>FAIL_REGULAR_EXPRESSION</item>
-      <item>FIXTURES_CLEANUP</item>
-      <item>FIXTURES_REQUIRED</item>
-      <item>FIXTURES_SETUP</item>
-      <item>LABELS</item>
-      <item>MEASUREMENT</item>
-      <item>PASS_REGULAR_EXPRESSION</item>
-      <item>PROCESSORS</item>
-      <item>PROCESSOR_AFFINITY</item>
-      <item>REQUIRED_FILES</item>
-      <item>RESOURCE_LOCK</item>
-      <item>RUN_SERIAL</item>
-      <item>SKIP_REGULAR_EXPRESSION</item>
-      <item>SKIP_RETURN_CODE</item>
-      <item>TIMEOUT</item>
-      <item>TIMEOUT_AFTER_MATCH</item>
-      <item>WILL_FAIL</item>
-      <item>WORKING_DIRECTORY</item>
-    </list>
-    <list name="cache-properties">
-      <item>ADVANCED</item>
-      <item>HELPSTRING</item>
-      <item>MODIFIED</item>
-      <item>STRINGS</item>
-      <item>TYPE</item>
-      <item>VALUE</item>
-    </list>
-    <list name="install-properties">
-      <item>CPACK_DESKTOP_SHORTCUTS</item>
-      <item>CPACK_NEVER_OVERWRITE</item>
-      <item>CPACK_PERMANENT</item>
-      <item>CPACK_STARTUP_SHORTCUTS</item>
-      <item>CPACK_START_MENU_SHORTCUTS</item>
-      <item>CPACK_WIX_ACL</item>
-    </list>
-
-    <list name="generator-expressions">
-      <item>0</item>
-      <item>1</item>
-      <item>BOOL</item>
-      <item>AND</item>
-      <item>OR</item>
-      <item>NOT</item>
-      <item>STREQUAL</item>
-      <item>EQUAL</item>
-      <item>IN_LIST</item>
-      <item>VERSION_LESS</item>
-      <item>VERSION_GREATER</item>
-      <item>VERSION_EQUAL</item>
-      <item>VERSION_LESS_EQUAL</item>
-      <item>VERSION_GREATER_EQUAL</item>
-      <item>TARGET_EXISTS</item>
-      <item>CONFIG</item>
-      <item>PLATFORM_ID</item>
-      <item>C_COMPILER_ID</item>
-      <item>CXX_COMPILER_ID</item>
-      <item>CUDA_COMPILER_ID</item>
-      <item>Fortran_COMPILER_ID</item>
-      <item>C_COMPILER_VERSION</item>
-      <item>CXX_COMPILER_VERSION</item>
-      <item>CUDA_COMPILER_VERSION</item>
-      <item>Fortran_COMPILER_VERSION</item>
-      <item>TARGET_POLICY</item>
-      <item>COMPILE_FEATURES</item>
-      <item>COMPILE_LANG_AND_ID</item>
-      <item>COMPILE_LANGUAGE</item>
-      <item>LINK_LANG_AND_ID</item>
-      <item>LINK_LANGUAGE</item>
-      <item>DEVICE_LINK</item>
-      <item>HOST_LINK</item>
-      <item>ANGLE-R</item>
-      <item>COMMA</item>
-      <item>SEMICOLON</item>
-      <item>IF</item>
-      <item>JOIN</item>
-      <item>REMOVE_DUPLICATES</item>
-      <item>FILTER</item>
-      <item>LOWER_CASE</item>
-      <item>UPPER_CASE</item>
-      <item>GENEX_EVAL</item>
-      <item>TARGET_GENEX_EVAL</item>
-      <item>TARGET_NAME_IF_EXISTS</item>
-      <item>TARGET_FILE</item>
-      <item>TARGET_FILE_BASE_NAME</item>
-      <item>TARGET_FILE_PREFIX</item>
-      <item>TARGET_FILE_SUFFIX</item>
-      <item>TARGET_FILE_NAME</item>
-      <item>TARGET_FILE_DIR</item>
-      <item>TARGET_LINKER_FILE</item>
-      <item>TARGET_LINKER_FILE_BASE_NAME</item>
-      <item>TARGET_LINKER_FILE_PREFIX</item>
-      <item>TARGET_LINKER_FILE_SUFFIX</item>
-      <item>TARGET_LINKER_FILE_NAME</item>
-      <item>TARGET_LINKER_FILE_DIR</item>
-      <item>TARGET_SONAME_FILE</item>
-      <item>TARGET_SONAME_FILE</item>
-      <item>TARGET_SONAME_FILE_NAME</item>
-      <item>TARGET_SONAME_FILE_DIR</item>
-      <item>TARGET_PDB_FILE</item>
-      <item>TARGET_PDB_FILE_BASE_NAME</item>
-      <item>TARGET_PDB_FILE_NAME</item>
-      <item>TARGET_PDB_FILE_DIR</item>
-      <item>TARGET_BUNDLE_DIR</item>
-      <item>TARGET_BUNDLE_CONTENT_DIR</item>
-      <item>TARGET_PROPERTY</item>
-      <item>TARGET_RUNTIME_DLLS</item>
-      <item>INSTALL_PREFIX</item>
-      <item>TARGET_NAME</item>
-      <item>LINK_ONLY</item>
-      <item>INSTALL_INTERFACE</item>
-      <item>BUILD_INTERFACE</item>
-      <item>MAKE_C_IDENTIFIER</item>
-      <item>TARGET_OBJECTS</item>
-      <item>SHELL_PATH</item>
-      <item>OUTPUT_CONFIG</item>
-      <item>COMMAND_CONFIG</item>
-    </list>
-
-    <list name="standard-modules">
-      <item>AndroidTestUtilities</item>
-      <item>BundleUtilities</item>
-      <item>CheckCCompilerFlag</item>
-      <item>CheckCompilerFlag</item>
-      <item>CheckCSourceCompiles</item>
-      <item>CheckCSourceRuns</item>
-      <item>CheckCXXCompilerFlag</item>
-      <item>CheckCXXSourceCompiles</item>
-      <item>CheckCXXSourceRuns</item>
-      <item>CheckCXXSymbolExists</item>
-      <item>CheckFortranCompilerFlag</item>
-      <item>CheckFortranFunctionExists</item>
-      <item>CheckFortranSourceCompiles</item>
-      <item>CheckFortranSourceRuns</item>
-      <item>CheckFunctionExists</item>
-      <item>CheckIncludeFileCXX</item>
-      <item>CheckIncludeFile</item>
-      <item>CheckIncludeFiles</item>
-      <item>CheckIPOSupported</item>
-      <item>CheckLanguage</item>
-      <item>CheckLibraryExists</item>
-      <item>CheckLinkerFlag</item>
-      <item>CheckOBJCCompilerFlag</item>
-      <item>CheckOBJCSourceCompiles</item>
-      <item>CheckOBJCSourceRuns</item>
-      <item>CheckOBJCXXCompilerFlag</item>
-      <item>CheckOBJCXXSourceCompiles</item>
-      <item>CheckOBJCXXSourceRuns</item>
-      <item>CheckPIESupported</item>
-      <item>CheckPrototypeDefinition</item>
-      <item>CheckSourceCompiles</item>
-      <item>CheckSourceRuns</item>
-      <item>CheckStructHasMember</item>
-      <item>CheckSymbolExists</item>
-      <item>CheckTypeSize</item>
-      <item>CheckVariableExists</item>
-      <item>CMakeAddFortranSubdirectory</item>
-      <item>CMakeBackwardCompatibilityCXX</item>
-      <item>CMakeDependentOption</item>
-      <item>CMakeFindDependencyMacro</item>
-      <item>CMakeFindFrameworks</item>
-      <item>CMakePackageConfigHelpers</item>
-      <item>CMakePrintHelpers</item>
-      <item>CMakePrintSystemInformation</item>
-      <item>CMakePushCheckState</item>
-      <item>CPack</item>
-      <item>CPackComponent</item>
-      <item>CPackIFW</item>
-      <item>CPackIFWConfigureFile</item>
-      <item>CSharpUtilities</item>
-      <item>CTest</item>
-      <item>CTestCoverageCollectGCOV</item>
-      <item>CTestScriptMode</item>
-      <item>CTestUseLaunchers</item>
-      <item>Dart</item>
-      <item>DeployQt4</item>
-      <item>ExternalData</item>
-      <item>ExternalProject</item>
-      <item>FeatureSummary</item>
-      <item>FetchContent</item>
-      <item>FindPackageHandleStandardArgs</item>
-      <item>FindPackageMessage</item>
-      <item>FortranCInterface</item>
-      <item>GenerateExportHeader</item>
-      <item>GNUInstallDirs</item>
-      <item>GoogleTest</item>
-      <item>InstallRequiredSystemLibraries</item>
-      <item>ProcessorCount</item>
-      <item>SelectLibraryConfigurations</item>
-      <item>TestForANSIForScope</item>
-      <item>TestForANSIStreamHeaders</item>
-      <item>TestForSSTREAM</item>
-      <item>TestForSTDNamespace</item>
-      <item>UseEcos</item>
-      <item>UseJava</item>
-      <item>UseSWIG</item>
-      <item>UsewxWidgets</item>
-    </list>
-
-    <list name="standard-finder-modules">
-      <item>ALSA</item>
-      <item>Armadillo</item>
-      <item>ASPELL</item>
-      <item>AVIFile</item>
-      <item>Backtrace</item>
-      <item>BISON</item>
-      <item>BLAS</item>
-      <item>Boost</item>
-      <item>Bullet</item>
-      <item>BZip2</item>
-      <item>CABLE</item>
-      <item>Coin3D</item>
-      <item>CUDAToolkit</item>
-      <item>Cups</item>
-      <item>CURL</item>
-      <item>Curses</item>
-      <item>CVS</item>
-      <item>CxxTest</item>
-      <item>Cygwin</item>
-      <item>Dart</item>
-      <item>DCMTK</item>
-      <item>DevIL</item>
-      <item>Doxygen</item>
-      <item>EnvModules</item>
-      <item>EXPAT</item>
-      <item>FLEX</item>
-      <item>FLTK</item>
-      <item>FLTK2</item>
-      <item>Fontconfig</item>
-      <item>Freetype</item>
-      <item>GCCXML</item>
-      <item>GDAL</item>
-      <item>Gettext</item>
-      <item>GIF</item>
-      <item>Git</item>
-      <item>GLEW</item>
-      <item>GLUT</item>
-      <item>Gnuplot</item>
-      <item>GnuTLS</item>
-      <item>GSL</item>
-      <item>GTest</item>
-      <item>GTK</item>
-      <item>GTK2</item>
-      <item>HDF5</item>
-      <item>Hg</item>
-      <item>HSPELL</item>
-      <item>HTMLHelp</item>
-      <item>Ice</item>
-      <item>Iconv</item>
-      <item>Icotool</item>
-      <item>ICU</item>
-      <item>ImageMagick</item>
-      <item>Intl</item>
-      <item>ITK</item>
-      <item>Jasper</item>
-      <item>Java</item>
-      <item>JNI</item>
-      <item>JPEG</item>
-      <item>KDE3</item>
-      <item>KDE4</item>
-      <item>LAPACK</item>
-      <item>LATEX</item>
-      <item>LibArchive</item>
-      <item>Libinput</item>
-      <item>LibLZMA</item>
-      <item>LibXml2</item>
-      <item>LibXslt</item>
-      <item>LTTngUST</item>
-      <item>Lua</item>
-      <item>Lua50</item>
-      <item>Lua51</item>
-      <item>Matlab</item>
-      <item>MFC</item>
-      <item>Motif</item>
-      <item>MPEG</item>
-      <item>MPEG2</item>
-      <item>MPI</item>
-      <item>Msys</item>
-      <item>ODBC</item>
-      <item>OpenACC</item>
-      <item>OpenAL</item>
-      <item>OpenCL</item>
-      <item>OpenGL</item>
-      <item>OpenMP</item>
-      <item>OpenSceneGraph</item>
-      <item>OpenSSL</item>
-      <item>OpenThreads</item>
-      <item>osg</item>
-      <item>osg_functions</item>
-      <item>osgAnimation</item>
-      <item>osgDB</item>
-      <item>osgFX</item>
-      <item>osgGA</item>
-      <item>osgIntrospection</item>
-      <item>osgManipulator</item>
-      <item>osgParticle</item>
-      <item>osgPresentation</item>
-      <item>osgProducer</item>
-      <item>osgQt</item>
-      <item>osgShadow</item>
-      <item>osgSim</item>
-      <item>osgTerrain</item>
-      <item>osgText</item>
-      <item>osgUtil</item>
-      <item>osgViewer</item>
-      <item>osgVolume</item>
-      <item>osgWidget</item>
-      <item>Patch</item>
-      <item>Perl</item>
-      <item>PerlLibs</item>
-      <item>PHP4</item>
-      <item>PhysFS</item>
-      <item>Pike</item>
-      <item>PkgConfig</item>
-      <item>PNG</item>
-      <item>PostgreSQL</item>
-      <item>Producer</item>
-      <item>Protobuf</item>
-      <item>Python</item>
-      <item>Python2</item>
-      <item>Python3</item>
-      <item>Qt3</item>
-      <item>Qt4</item>
-      <item>QuickTime</item>
-      <item>RTI</item>
-      <item>Ruby</item>
-      <item>SDL</item>
-      <item>SDL_image</item>
-      <item>SDL_mixer</item>
-      <item>SDL_net</item>
-      <item>SDL_sound</item>
-      <item>SDL_ttf</item>
-      <item>SelfPackers</item>
-      <item>Squish</item>
-      <item>SQLite3</item>
-      <item>Subversion</item>
-      <item>SWIG</item>
-      <item>TCL</item>
-      <item>Tclsh</item>
-      <item>TclStub</item>
-      <item>Threads</item>
-      <item>TIFF</item>
-      <item>UnixCommands</item>
-      <item>VTK</item>
-      <item>Vulkan</item>
-      <item>Wget</item>
-      <item>Wish</item>
-      <item>wxWidgets</item>
-      <item>X11</item>
-      <item>XalanC</item>
-      <item>XCTest</item>
-      <item>XercesC</item>
-      <item>XMLRPC</item>
-      <item>ZLIB</item>
-    </list>
-
-    <list name="deprecated-modules">
-      <item>AddFileDependencies</item>
-      <item>CMakeDetermineVSServicePack</item>
-      <item>CMakeExpandImportedTargets</item>
-      <item>CMakeForceCompiler</item>
-      <item>CMakeParseArguments</item>
-      <item>Documentation</item>
-      <item>MacroAddFileDependencies</item>
-      <item>TestCXXAcceptsFlag</item>
-      <item>UseJavaClassFilelist</item>
-      <item>UseJavaSymlinks</item>
-      <item>UsePkgConfig</item>
-      <item>Use_wxWindows</item>
-      <item>WriteBasicConfigVersionFile</item>
-      <item>WriteCompilerDetectionHeader</item>
-      <item>FindCUDA</item>
-      <item>FindPythonInterp</item>
-      <item>FindPythonLibs</item>
-      <item>FindQt</item>
-      <item>FindwxWindows</item>
-      <item>CPackArchive</item>
-      <item>CPackBundle</item>
-      <item>CPackCygwin</item>
-      <item>CPackDeb</item>
-      <item>CPackDMG</item>
-      <item>CPackFreeBSD</item>
-      <item>CPackNSIS</item>
-      <item>CPackNuGet</item>
-      <item>CPackPackageMaker</item>
-      <item>CPackProductBuild</item>
-      <item>CPackRPM</item>
-      <item>CPackWIX</item>
-      <item>GetPrerequisites</item>
-      <item>TestBigEndian</item>
-    </list>
-
-    <contexts>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
-        <DetectSpaces/>
-        <WordDetect String="break" insensitive="true" attribute="Command" context="break_ctx" />
-        <WordDetect String="cmake_host_system_information" insensitive="true" attribute="Command" context="cmake_host_system_information_ctx" />
-        <WordDetect String="cmake_language" insensitive="true" attribute="Command" context="cmake_language_ctx" />
-        <WordDetect String="cmake_minimum_required" insensitive="true" attribute="Command" context="cmake_minimum_required_ctx" />
-        <WordDetect String="cmake_parse_arguments" insensitive="true" attribute="Command" context="cmake_parse_arguments_ctx" />
-        <WordDetect String="cmake_path" insensitive="true" attribute="Command" context="cmake_path_ctx" />
-        <WordDetect String="cmake_policy" insensitive="true" attribute="Command" context="cmake_policy_ctx" />
-        <WordDetect String="configure_file" insensitive="true" attribute="Command" context="configure_file_ctx" />
-        <WordDetect String="continue" insensitive="true" attribute="Command" context="continue_ctx" />
-        <WordDetect String="elseif" insensitive="true" attribute="Command" context="elseif_ctx" />
-        <WordDetect String="else" insensitive="true" attribute="Command" context="else_ctx" />
-        <WordDetect String="endforeach" insensitive="true" attribute="Command" context="endforeach_ctx" endRegion="foreach" />
-        <WordDetect String="endfunction" insensitive="true" attribute="Command" context="endfunction_ctx" endRegion="function" />
-        <WordDetect String="endif" insensitive="true" attribute="Command" context="endif_ctx" endRegion="if" />
-        <WordDetect String="endmacro" insensitive="true" attribute="Command" context="endmacro_ctx" endRegion="macro" />
-        <WordDetect String="endwhile" insensitive="true" attribute="Command" context="endwhile_ctx" endRegion="while" />
-        <WordDetect String="execute_process" insensitive="true" attribute="Command" context="execute_process_ctx" />
-        <WordDetect String="file" insensitive="true" attribute="Command" context="file_ctx" />
-        <WordDetect String="find_file" insensitive="true" attribute="Command" context="find_file_ctx" />
-        <WordDetect String="find_library" insensitive="true" attribute="Command" context="find_library_ctx" />
-        <WordDetect String="find_package" insensitive="true" attribute="Command" context="find_package_ctx" />
-        <WordDetect String="find_path" insensitive="true" attribute="Command" context="find_path_ctx" />
-        <WordDetect String="find_program" insensitive="true" attribute="Command" context="find_program_ctx" />
-        <WordDetect String="foreach" insensitive="true" attribute="Command" context="foreach_ctx" beginRegion="foreach" />
-        <WordDetect String="function" insensitive="true" attribute="Command" context="function_ctx" beginRegion="function" />
-        <WordDetect String="get_cmake_property" insensitive="true" attribute="Command" context="get_cmake_property_ctx" />
-        <WordDetect String="get_directory_property" insensitive="true" attribute="Command" context="get_directory_property_ctx" />
-        <WordDetect String="get_filename_component" insensitive="true" attribute="Command" context="get_filename_component_ctx" />
-        <WordDetect String="get_property" insensitive="true" attribute="Command" context="get_property_ctx" />
-        <WordDetect String="if" insensitive="true" attribute="Command" context="if_ctx" beginRegion="if" />
-        <WordDetect String="include" insensitive="true" attribute="Command" context="include_ctx" />
-        <WordDetect String="include_guard" insensitive="true" attribute="Command" context="include_guard_ctx" />
-        <WordDetect String="list" insensitive="true" attribute="Command" context="list_ctx" />
-        <WordDetect String="macro" insensitive="true" attribute="Command" context="macro_ctx" beginRegion="macro" />
-        <WordDetect String="mark_as_advanced" insensitive="true" attribute="Command" context="mark_as_advanced_ctx" />
-        <WordDetect String="math" insensitive="true" attribute="Command" context="math_ctx" />
-        <WordDetect String="message" insensitive="true" attribute="Command" context="message_ctx" />
-        <WordDetect String="option" insensitive="true" attribute="Command" context="option_ctx" />
-        <WordDetect String="return" insensitive="true" attribute="Command" context="return_ctx" />
-        <WordDetect String="separate_arguments" insensitive="true" attribute="Command" context="separate_arguments_ctx" />
-        <WordDetect String="set_directory_properties" insensitive="true" attribute="Command" context="set_directory_properties_ctx" />
-        <WordDetect String="set_property" insensitive="true" attribute="Command" context="set_property_ctx" />
-        <WordDetect String="set" insensitive="true" attribute="Command" context="set_ctx" />
-        <WordDetect String="site_name" insensitive="true" attribute="Command" context="site_name_ctx" />
-        <WordDetect String="string" insensitive="true" attribute="Command" context="string_ctx" />
-        <WordDetect String="unset" insensitive="true" attribute="Command" context="unset_ctx" />
-        <WordDetect String="variable_watch" insensitive="true" attribute="Command" context="variable_watch_ctx" />
-        <WordDetect String="while" insensitive="true" attribute="Command" context="while_ctx" beginRegion="while" />
-        <WordDetect String="add_compile_definitions" insensitive="true" attribute="Command" context="add_compile_definitions_ctx" />
-        <WordDetect String="add_compile_options" insensitive="true" attribute="Command" context="add_compile_options_ctx" />
-        <WordDetect String="add_custom_command" insensitive="true" attribute="Command" context="add_custom_command_ctx" />
-        <WordDetect String="add_custom_target" insensitive="true" attribute="Command" context="add_custom_target_ctx" />
-        <WordDetect String="add_definitions" insensitive="true" attribute="Command" context="add_definitions_ctx" />
-        <WordDetect String="add_dependencies" insensitive="true" attribute="Command" context="add_dependencies_ctx" />
-        <WordDetect String="add_executable" insensitive="true" attribute="Command" context="add_executable_ctx" />
-        <WordDetect String="add_library" insensitive="true" attribute="Command" context="add_library_ctx" />
-        <WordDetect String="add_link_options" insensitive="true" attribute="Command" context="add_link_options_ctx" />
-        <WordDetect String="add_subdirectory" insensitive="true" attribute="Command" context="add_subdirectory_ctx" />
-        <WordDetect String="add_test" insensitive="true" attribute="Command" context="add_test_ctx" />
-        <WordDetect String="aux_source_directory" insensitive="true" attribute="Command" context="aux_source_directory_ctx" />
-        <WordDetect String="build_command" insensitive="true" attribute="Command" context="build_command_ctx" />
-        <WordDetect String="create_test_sourcelist" insensitive="true" attribute="Command" context="create_test_sourcelist_ctx" />
-        <WordDetect String="define_property" insensitive="true" attribute="Command" context="define_property_ctx" />
-        <WordDetect String="enable_language" insensitive="true" attribute="Command" context="enable_language_ctx" />
-        <WordDetect String="enable_testing" insensitive="true" attribute="Command" context="enable_testing_ctx" />
-        <WordDetect String="export" insensitive="true" attribute="Command" context="export_ctx" />
-        <WordDetect String="fltk_wrap_ui" insensitive="true" attribute="Command" context="fltk_wrap_ui_ctx" />
-        <WordDetect String="get_source_file_property" insensitive="true" attribute="Command" context="get_source_file_property_ctx" />
-        <WordDetect String="get_target_property" insensitive="true" attribute="Command" context="get_target_property_ctx" />
-        <WordDetect String="get_test_property" insensitive="true" attribute="Command" context="get_test_property_ctx" />
-        <WordDetect String="include_directories" insensitive="true" attribute="Command" context="include_directories_ctx" />
-        <WordDetect String="include_external_msproject" insensitive="true" attribute="Command" context="include_external_msproject_ctx" />
-        <WordDetect String="include_regular_expression" insensitive="true" attribute="Command" context="include_regular_expression_ctx" />
-        <WordDetect String="install" insensitive="true" attribute="Command" context="install_ctx" />
-        <WordDetect String="link_directories" insensitive="true" attribute="Command" context="link_directories_ctx" />
-        <WordDetect String="link_libraries" insensitive="true" attribute="Command" context="link_libraries_ctx" />
-        <WordDetect String="load_cache" insensitive="true" attribute="Command" context="load_cache_ctx" />
-        <WordDetect String="project" insensitive="true" attribute="Command" context="project_ctx" />
-        <WordDetect String="qt_wrap_cpp" insensitive="true" attribute="Command" context="qt_wrap_cpp_ctx" />
-        <WordDetect String="qt_wrap_ui" insensitive="true" attribute="Command" context="qt_wrap_ui_ctx" />
-        <WordDetect String="remove_definitions" insensitive="true" attribute="Command" context="remove_definitions_ctx" />
-        <WordDetect String="set_source_files_properties" insensitive="true" attribute="Command" context="set_source_files_properties_ctx" />
-        <WordDetect String="set_target_properties" insensitive="true" attribute="Command" context="set_target_properties_ctx" />
-        <WordDetect String="set_tests_properties" insensitive="true" attribute="Command" context="set_tests_properties_ctx" />
-        <WordDetect String="source_group" insensitive="true" attribute="Command" context="source_group_ctx" />
-        <WordDetect String="target_compile_definitions" insensitive="true" attribute="Command" context="target_compile_definitions_ctx" />
-        <WordDetect String="target_compile_features" insensitive="true" attribute="Command" context="target_compile_features_ctx" />
-        <WordDetect String="target_compile_options" insensitive="true" attribute="Command" context="target_compile_options_ctx" />
-        <WordDetect String="target_include_directories" insensitive="true" attribute="Command" context="target_include_directories_ctx" />
-        <WordDetect String="target_link_directories" insensitive="true" attribute="Command" context="target_link_directories_ctx" />
-        <WordDetect String="target_link_libraries" insensitive="true" attribute="Command" context="target_link_libraries_ctx" />
-        <WordDetect String="target_link_options" insensitive="true" attribute="Command" context="target_link_options_ctx" />
-        <WordDetect String="target_precompile_headers" insensitive="true" attribute="Command" context="target_precompile_headers_ctx" />
-        <WordDetect String="target_sources" insensitive="true" attribute="Command" context="target_sources_ctx" />
-        <WordDetect String="try_compile" insensitive="true" attribute="Command" context="try_compile_ctx" />
-        <WordDetect String="try_run" insensitive="true" attribute="Command" context="try_run_ctx" />
-        <WordDetect String="ctest_build" insensitive="true" attribute="Command" context="ctest_build_ctx" />
-        <WordDetect String="ctest_configure" insensitive="true" attribute="Command" context="ctest_configure_ctx" />
-        <WordDetect String="ctest_coverage" insensitive="true" attribute="Command" context="ctest_coverage_ctx" />
-        <WordDetect String="ctest_empty_binary_directory" insensitive="true" attribute="Command" context="ctest_empty_binary_directory_ctx" />
-        <WordDetect String="ctest_memcheck" insensitive="true" attribute="Command" context="ctest_memcheck_ctx" />
-        <WordDetect String="ctest_read_custom_files" insensitive="true" attribute="Command" context="ctest_read_custom_files_ctx" />
-        <WordDetect String="ctest_run_script" insensitive="true" attribute="Command" context="ctest_run_script_ctx" />
-        <WordDetect String="ctest_sleep" insensitive="true" attribute="Command" context="ctest_sleep_ctx" />
-        <WordDetect String="ctest_start" insensitive="true" attribute="Command" context="ctest_start_ctx" />
-        <WordDetect String="ctest_submit" insensitive="true" attribute="Command" context="ctest_submit_ctx" />
-        <WordDetect String="ctest_test" insensitive="true" attribute="Command" context="ctest_test_ctx" />
-        <WordDetect String="ctest_update" insensitive="true" attribute="Command" context="ctest_update_ctx" />
-        <WordDetect String="ctest_upload" insensitive="true" attribute="Command" context="ctest_upload_ctx" />
-        <WordDetect String="android_add_test_data" insensitive="true" attribute="CMake Provided Function/Macro" context="android_add_test_data_ctx" />
-        <WordDetect String="fixup_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="fixup_bundle_ctx" />
-        <WordDetect String="copy_and_fixup_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="copy_and_fixup_bundle_ctx" />
-        <WordDetect String="verify_app" insensitive="true" attribute="CMake Provided Function/Macro" context="verify_app_ctx" />
-        <WordDetect String="get_bundle_main_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="get_bundle_main_executable_ctx" />
-        <WordDetect String="get_dotapp_dir" insensitive="true" attribute="CMake Provided Function/Macro" context="get_dotapp_dir_ctx" />
-        <WordDetect String="get_bundle_and_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="get_bundle_and_executable_ctx" />
-        <WordDetect String="get_bundle_all_executables" insensitive="true" attribute="CMake Provided Function/Macro" context="get_bundle_all_executables_ctx" />
-        <WordDetect String="get_item_key" insensitive="true" attribute="CMake Provided Function/Macro" context="get_item_key_ctx" />
-        <WordDetect String="get_item_rpaths" insensitive="true" attribute="CMake Provided Function/Macro" context="get_item_rpaths_ctx" />
-        <WordDetect String="clear_bundle_keys" insensitive="true" attribute="CMake Provided Function/Macro" context="clear_bundle_keys_ctx" />
-        <WordDetect String="set_bundle_key_values" insensitive="true" attribute="CMake Provided Function/Macro" context="set_bundle_key_values_ctx" />
-        <WordDetect String="get_bundle_keys" insensitive="true" attribute="CMake Provided Function/Macro" context="get_bundle_keys_ctx" />
-        <WordDetect String="copy_resolved_item_into_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="copy_resolved_item_into_bundle_ctx" />
-        <WordDetect String="copy_resolved_framework_into_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="copy_resolved_framework_into_bundle_ctx" />
-        <WordDetect String="fixup_bundle_item" insensitive="true" attribute="CMake Provided Function/Macro" context="fixup_bundle_item_ctx" />
-        <WordDetect String="verify_bundle_prerequisites" insensitive="true" attribute="CMake Provided Function/Macro" context="verify_bundle_prerequisites_ctx" />
-        <WordDetect String="verify_bundle_symlinks" insensitive="true" attribute="CMake Provided Function/Macro" context="verify_bundle_symlinks_ctx" />
-        <WordDetect String="check_c_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="check_c_compiler_flag_ctx" />
-        <WordDetect String="check_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="check_compiler_flag_ctx" />
-        <WordDetect String="check_c_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_c_source_compiles_ctx" />
-        <WordDetect String="check_c_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_c_source_runs_ctx" />
-        <WordDetect String="check_cxx_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="check_cxx_compiler_flag_ctx" />
-        <WordDetect String="check_cxx_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_cxx_source_compiles_ctx" />
-        <WordDetect String="check_cxx_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_cxx_source_runs_ctx" />
-        <WordDetect String="check_cxx_symbol_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="check_cxx_symbol_exists_ctx" />
-        <WordDetect String="check_fortran_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_compiler_flag_ctx" />
-        <WordDetect String="check_fortran_function_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_function_exists_ctx" />
-        <WordDetect String="check_fortran_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_source_compiles_ctx" />
-        <WordDetect String="check_fortran_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_source_runs_ctx" />
-        <WordDetect String="check_function_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="check_function_exists_ctx" />
-        <WordDetect String="check_include_file_cxx" insensitive="true" attribute="CMake Provided Function/Macro" context="check_include_file_cxx_ctx" />
-        <WordDetect String="check_include_file" insensitive="true" attribute="CMake Provided Function/Macro" context="check_include_file_ctx" />
-        <WordDetect String="check_include_files" insensitive="true" attribute="CMake Provided Function/Macro" context="check_include_files_ctx" />
-        <WordDetect String="check_ipo_supported" insensitive="true" attribute="CMake Provided Function/Macro" context="check_ipo_supported_ctx" />
-        <WordDetect String="check_language" insensitive="true" attribute="CMake Provided Function/Macro" context="check_language_ctx" />
-        <WordDetect String="check_library_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="check_library_exists_ctx" />
-        <WordDetect String="check_linker_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="check_linker_flag_ctx" />
-        <WordDetect String="check_objc_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="check_objc_compiler_flag_ctx" />
-        <WordDetect String="check_objc_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_objc_source_compiles_ctx" />
-        <WordDetect String="check_objc_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_objc_source_runs_ctx" />
-        <WordDetect String="check_objcxx_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="check_objcxx_compiler_flag_ctx" />
-        <WordDetect String="check_objcxx_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_objcxx_source_compiles_ctx" />
-        <WordDetect String="check_objcxx_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_objcxx_source_runs_ctx" />
-        <WordDetect String="check_pie_supported" insensitive="true" attribute="CMake Provided Function/Macro" context="check_pie_supported_ctx" />
-        <WordDetect String="check_prototype_definition" insensitive="true" attribute="CMake Provided Function/Macro" context="check_prototype_definition_ctx" />
-        <WordDetect String="check_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_source_compiles_ctx" />
-        <WordDetect String="check_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_source_runs_ctx" />
-        <WordDetect String="check_struct_has_member" insensitive="true" attribute="CMake Provided Function/Macro" context="check_struct_has_member_ctx" />
-        <WordDetect String="check_symbol_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="check_symbol_exists_ctx" />
-        <WordDetect String="check_type_size" insensitive="true" attribute="CMake Provided Function/Macro" context="check_type_size_ctx" />
-        <WordDetect String="check_variable_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="check_variable_exists_ctx" />
-        <WordDetect String="cmake_add_fortran_subdirectory" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_add_fortran_subdirectory_ctx" />
-        <WordDetect String="cmake_dependent_option" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_dependent_option_ctx" />
-        <WordDetect String="find_dependency" insensitive="true" attribute="CMake Provided Function/Macro" context="find_dependency_ctx" />
-        <WordDetect String="configure_package_config_file" insensitive="true" attribute="CMake Provided Function/Macro" context="configure_package_config_file_ctx" />
-        <WordDetect String="write_basic_package_version_file" insensitive="true" attribute="CMake Provided Function/Macro" context="write_basic_package_version_file_ctx" />
-        <WordDetect String="cmake_print_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_print_properties_ctx" />
-        <WordDetect String="cmake_push_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_push_check_state_ctx" />
-        <WordDetect String="cmake_pop_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_pop_check_state_ctx" />
-        <WordDetect String="cmake_reset_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_reset_check_state_ctx" />
-        <WordDetect String="cpack_add_component" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_add_component_ctx" />
-        <WordDetect String="cpack_add_component_group" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_add_component_group_ctx" />
-        <WordDetect String="cpack_add_install_type" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_add_install_type_ctx" />
-        <WordDetect String="cpack_configure_downloads" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_configure_downloads_ctx" />
-        <WordDetect String="cpack_ifw_configure_component" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_configure_component_ctx" />
-        <WordDetect String="cpack_ifw_configure_component_group" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_configure_component_group_ctx" />
-        <WordDetect String="cpack_ifw_add_repository" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_add_repository_ctx" />
-        <WordDetect String="cpack_ifw_update_repository" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_update_repository_ctx" />
-        <WordDetect String="cpack_ifw_add_package_resources" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_add_package_resources_ctx" />
-        <WordDetect String="cpack_ifw_configure_file" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_configure_file_ctx" />
-        <WordDetect String="csharp_set_windows_forms_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="csharp_set_windows_forms_properties_ctx" />
-        <WordDetect String="csharp_set_designer_cs_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="csharp_set_designer_cs_properties_ctx" />
-        <WordDetect String="csharp_set_xaml_cs_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="csharp_set_xaml_cs_properties_ctx" />
-        <WordDetect String="csharp_get_filename_keys" insensitive="true" attribute="CMake Provided Function/Macro" context="csharp_get_filename_keys_ctx" />
-        <WordDetect String="csharp_get_filename_key_base" insensitive="true" attribute="CMake Provided Function/Macro" context="csharp_get_filename_key_base_ctx" />
-        <WordDetect String="csharp_get_dependentupon_name" insensitive="true" attribute="CMake Provided Function/Macro" context="csharp_get_dependentupon_name_ctx" />
-        <WordDetect String="ctest_coverage_collect_gcov" insensitive="true" attribute="CMake Provided Function/Macro" context="ctest_coverage_collect_gcov_ctx" />
-        <WordDetect String="write_qt4_conf" insensitive="true" attribute="CMake Provided Function/Macro" context="write_qt4_conf_ctx" />
-        <WordDetect String="resolve_qt4_paths" insensitive="true" attribute="CMake Provided Function/Macro" context="resolve_qt4_paths_ctx" />
-        <WordDetect String="fixup_qt4_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="fixup_qt4_executable_ctx" />
-        <WordDetect String="install_qt4_plugin_path" insensitive="true" attribute="CMake Provided Function/Macro" context="install_qt4_plugin_path_ctx" />
-        <WordDetect String="install_qt4_plugin" insensitive="true" attribute="CMake Provided Function/Macro" context="install_qt4_plugin_ctx" />
-        <WordDetect String="install_qt4_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="install_qt4_executable_ctx" />
-        <WordDetect String="ExternalData_Expand_Arguments" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalData_Expand_Arguments_ctx" />
-        <WordDetect String="ExternalData_Add_Test" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalData_Add_Test_ctx" />
-        <WordDetect String="ExternalData_Add_Target" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalData_Add_Target_ctx" />
-        <WordDetect String="ExternalProject_Add" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Add_ctx" />
-        <WordDetect String="ExternalProject_Get_Property" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Get_Property_ctx" />
-        <WordDetect String="ExternalProject_Add_Step" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Add_Step_ctx" />
-        <WordDetect String="ExternalProject_Add_StepTargets" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Add_StepTargets_ctx" />
-        <WordDetect String="ExternalProject_Add_StepDependencies" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Add_StepDependencies_ctx" />
-        <WordDetect String="feature_summary" insensitive="true" attribute="CMake Provided Function/Macro" context="feature_summary_ctx" />
-        <WordDetect String="set_package_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="set_package_properties_ctx" />
-        <WordDetect String="add_feature_info" insensitive="true" attribute="CMake Provided Function/Macro" context="add_feature_info_ctx" />
-        <WordDetect String="set_package_info" insensitive="true" attribute="CMake Provided Function/Macro" context="set_package_info_ctx" />
-        <WordDetect String="set_feature_info" insensitive="true" attribute="CMake Provided Function/Macro" context="set_feature_info_ctx" />
-        <WordDetect String="print_enabled_features" insensitive="true" attribute="CMake Provided Function/Macro" context="print_enabled_features_ctx" />
-        <WordDetect String="print_disabled_features" insensitive="true" attribute="CMake Provided Function/Macro" context="print_disabled_features_ctx" />
-        <WordDetect String="FetchContent_Declare" insensitive="true" attribute="CMake Provided Function/Macro" context="FetchContent_Declare_ctx" />
-        <WordDetect String="FetchContent_Populate" insensitive="true" attribute="CMake Provided Function/Macro" context="FetchContent_Populate_ctx" />
-        <WordDetect String="FetchContent_GetProperties" insensitive="true" attribute="CMake Provided Function/Macro" context="FetchContent_GetProperties_ctx" />
-        <WordDetect String="FetchContent_MakeAvailable" insensitive="true" attribute="CMake Provided Function/Macro" context="FetchContent_MakeAvailable_ctx" />
-        <WordDetect String="find_package_handle_standard_args" insensitive="true" attribute="CMake Provided Function/Macro" context="find_package_handle_standard_args_ctx" />
-        <WordDetect String="find_package_check_version" insensitive="true" attribute="CMake Provided Function/Macro" context="find_package_check_version_ctx" />
-        <WordDetect String="find_package_message" insensitive="true" attribute="CMake Provided Function/Macro" context="find_package_message_ctx" />
-        <WordDetect String="FortranCInterface_HEADER" insensitive="true" attribute="CMake Provided Function/Macro" context="FortranCInterface_HEADER_ctx" />
-        <WordDetect String="FortranCInterface_VERIFY" insensitive="true" attribute="CMake Provided Function/Macro" context="FortranCInterface_VERIFY_ctx" />
-        <WordDetect String="generate_export_header" insensitive="true" attribute="CMake Provided Function/Macro" context="generate_export_header_ctx" />
-        <WordDetect String="GNUInstallDirs_get_absolute_install_dir" insensitive="true" attribute="CMake Provided Function/Macro" context="GNUInstallDirs_get_absolute_install_dir_ctx" />
-        <WordDetect String="gtest_add_tests" insensitive="true" attribute="CMake Provided Function/Macro" context="gtest_add_tests_ctx" />
-        <WordDetect String="gtest_discover_tests" insensitive="true" attribute="CMake Provided Function/Macro" context="gtest_discover_tests_ctx" />
-        <WordDetect String="processorcount" insensitive="true" attribute="CMake Provided Function/Macro" context="processorcount_ctx" />
-        <WordDetect String="select_library_configurations" insensitive="true" attribute="CMake Provided Function/Macro" context="select_library_configurations_ctx" />
-        <WordDetect String="test_big_endian" insensitive="true" attribute="CMake Provided Function/Macro" context="test_big_endian_ctx" />
-        <WordDetect String="ecos_add_include_directories" insensitive="true" attribute="CMake Provided Function/Macro" context="ecos_add_include_directories_ctx" />
-        <WordDetect String="ecos_add_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="ecos_add_executable_ctx" />
-        <WordDetect String="ecos_add_target_lib" insensitive="true" attribute="CMake Provided Function/Macro" context="ecos_add_target_lib_ctx" />
-        <WordDetect String="ecos_adjust_directory" insensitive="true" attribute="CMake Provided Function/Macro" context="ecos_adjust_directory_ctx" />
-        <WordDetect String="ecos_use_arm_elf_tools" insensitive="true" attribute="CMake Provided Function/Macro" context="ecos_use_arm_elf_tools_ctx" />
-        <WordDetect String="ecos_use_i386_elf_tools" insensitive="true" attribute="CMake Provided Function/Macro" context="ecos_use_i386_elf_tools_ctx" />
-        <WordDetect String="ecos_use_ppc_eabi_tools" insensitive="true" attribute="CMake Provided Function/Macro" context="ecos_use_ppc_eabi_tools_ctx" />
-        <WordDetect String="add_jar" insensitive="true" attribute="CMake Provided Function/Macro" context="add_jar_ctx" />
-        <WordDetect String="install_jar" insensitive="true" attribute="CMake Provided Function/Macro" context="install_jar_ctx" />
-        <WordDetect String="install_jni_symlink" insensitive="true" attribute="CMake Provided Function/Macro" context="install_jni_symlink_ctx" />
-        <WordDetect String="create_javah" insensitive="true" attribute="CMake Provided Function/Macro" context="create_javah_ctx" />
-        <WordDetect String="install_jar_exports" insensitive="true" attribute="CMake Provided Function/Macro" context="install_jar_exports_ctx" />
-        <WordDetect String="export_jars" insensitive="true" attribute="CMake Provided Function/Macro" context="export_jars_ctx" />
-        <WordDetect String="find_jar" insensitive="true" attribute="CMake Provided Function/Macro" context="find_jar_ctx" />
-        <WordDetect String="create_javadoc" insensitive="true" attribute="CMake Provided Function/Macro" context="create_javadoc_ctx" />
-        <WordDetect String="swig_add_library" insensitive="true" attribute="CMake Provided Function/Macro" context="swig_add_library_ctx" />
-        <WordDetect String="swig_link_libraries" insensitive="true" attribute="CMake Provided Function/Macro" context="swig_link_libraries_ctx" />
-        <WordDetect String="squish_add_test" insensitive="true" attribute="CMake Provided Function/Macro" context="squish_add_test_ctx" />
-        <WordDetect String="bison_target" insensitive="true" attribute="CMake Provided Function/Macro" context="bison_target_ctx" />
-        <WordDetect String="cxxtest_add_test" insensitive="true" attribute="CMake Provided Function/Macro" context="cxxtest_add_test_ctx" />
-        <WordDetect String="doxygen_add_docs" insensitive="true" attribute="CMake Provided Function/Macro" context="doxygen_add_docs_ctx" />
-        <WordDetect String="env_module" insensitive="true" attribute="CMake Provided Function/Macro" context="env_module_ctx" />
-        <WordDetect String="env_module_swap" insensitive="true" attribute="CMake Provided Function/Macro" context="env_module_swap_ctx" />
-        <WordDetect String="env_module_list" insensitive="true" attribute="CMake Provided Function/Macro" context="env_module_list_ctx" />
-        <WordDetect String="env_module_avail" insensitive="true" attribute="CMake Provided Function/Macro" context="env_module_avail_ctx" />
-        <WordDetect String="flex_target" insensitive="true" attribute="CMake Provided Function/Macro" context="flex_target_ctx" />
-        <WordDetect String="add_flex_bison_dependency" insensitive="true" attribute="CMake Provided Function/Macro" context="add_flex_bison_dependency_ctx" />
-        <WordDetect String="gettext_create_translations" insensitive="true" attribute="CMake Provided Function/Macro" context="gettext_create_translations_ctx" />
-        <WordDetect String="gettext_process_pot_file" insensitive="true" attribute="CMake Provided Function/Macro" context="gettext_process_pot_file_ctx" />
-        <WordDetect String="gettext_process_po_files" insensitive="true" attribute="CMake Provided Function/Macro" context="gettext_process_po_files_ctx" />
-        <WordDetect String="hg_wc_info" insensitive="true" attribute="CMake Provided Function/Macro" context="hg_wc_info_ctx" />
-        <WordDetect String="matlab_get_version_from_release_name" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_get_version_from_release_name_ctx" />
-        <WordDetect String="matlab_get_release_name_from_version" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_get_release_name_from_version_ctx" />
-        <WordDetect String="matlab_extract_all_installed_versions_from_registry" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_extract_all_installed_versions_from_registry_ctx" />
-        <WordDetect String="matlab_get_all_valid_matlab_roots_from_registry" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_get_all_valid_matlab_roots_from_registry_ctx" />
-        <WordDetect String="matlab_get_mex_suffix" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_get_mex_suffix_ctx" />
-        <WordDetect String="matlab_get_version_from_matlab_run" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_get_version_from_matlab_run_ctx" />
-        <WordDetect String="matlab_add_unit_test" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_add_unit_test_ctx" />
-        <WordDetect String="matlab_add_mex" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_add_mex_ctx" />
-        <WordDetect String="pkg_check_modules" insensitive="true" attribute="CMake Provided Function/Macro" context="pkg_check_modules_ctx" />
-        <WordDetect String="pkg_search_module" insensitive="true" attribute="CMake Provided Function/Macro" context="pkg_search_module_ctx" />
-        <WordDetect String="pkg_get_variable" insensitive="true" attribute="CMake Provided Function/Macro" context="pkg_get_variable_ctx" />
-        <WordDetect String="protobuf_generate_cpp" insensitive="true" attribute="CMake Provided Function/Macro" context="protobuf_generate_cpp_ctx" />
-        <WordDetect String="protobuf_generate_python" insensitive="true" attribute="CMake Provided Function/Macro" context="protobuf_generate_python_ctx" />
-        <WordDetect String="Python_add_library" insensitive="true" attribute="CMake Provided Function/Macro" context="Python_add_library_ctx" />
-        <WordDetect String="Subversion_WC_INFO" insensitive="true" attribute="CMake Provided Function/Macro" context="Subversion_WC_INFO_ctx" />
-        <WordDetect String="Subversion_WC_LOG" insensitive="true" attribute="CMake Provided Function/Macro" context="Subversion_WC_LOG_ctx" />
-        <WordDetect String="xctest_add_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="xctest_add_bundle_ctx" />
-        <WordDetect String="xctest_add_test" insensitive="true" attribute="CMake Provided Function/Macro" context="xctest_add_test_ctx" />
-        <DetectChar attribute="Comment" context="Match Comments and Docs" char="#" lookAhead="true" />
-        <DetectIdentifier attribute="User Function/Macro" context="User Function" />
-        <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&var_ref_re;@" lookAhead="true" />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="break_ctx">
-        <DetectChar attribute="Normal Text" context="break_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="break_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_host_system_information_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_host_system_information_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_host_system_information_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_host_system_information_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="cmake_host_system_information_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_language_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_language_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_language_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_language_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_minimum_required_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_minimum_required_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_minimum_required_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_minimum_required_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_parse_arguments_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_parse_arguments_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_parse_arguments_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_parse_arguments_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_path_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_path_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_path_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_path_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_policy_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_policy_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_policy_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_policy_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="cmake_policy_sargs" />
-        <IncludeRules context="User Function Args" />
-        <!-- NOTE Handle CMP<NNN> as a special arg of `cmake_policy` command -->
-        <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9]+\b" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="configure_file_ctx">
-        <DetectChar attribute="Normal Text" context="configure_file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="configure_file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="configure_file_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="configure_file_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="continue_ctx">
-        <DetectChar attribute="Normal Text" context="continue_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="continue_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx">
-        <DetectChar attribute="Normal Text" context="elseif_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx_op">
-        <DetectChar attribute="Normal Text" context="elseif_ctx_op_nested" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGET" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="elseif_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx_op_nested">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <keyword attribute="Named Args" context="#stay" String="elseif_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="else_ctx">
-        <DetectChar attribute="Normal Text" context="else_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="else_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endforeach_ctx">
-        <DetectChar attribute="Normal Text" context="endforeach_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endforeach_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endfunction_ctx">
-        <DetectChar attribute="Normal Text" context="endfunction_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endfunction_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endif_ctx">
-        <DetectChar attribute="Normal Text" context="endif_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endif_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endmacro_ctx">
-        <DetectChar attribute="Normal Text" context="endmacro_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endmacro_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endwhile_ctx">
-        <DetectChar attribute="Normal Text" context="endwhile_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="endwhile_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx">
-        <DetectChar attribute="Normal Text" context="execute_process_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op">
-        <DetectChar attribute="Normal Text" context="execute_process_ctx_op_nested" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="execute_process_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="execute_process_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op_nested">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <keyword attribute="Named Args" context="#stay" String="execute_process_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="execute_process_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx">
-        <DetectChar attribute="Normal Text" context="file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="file_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="file_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_file_ctx">
-        <DetectChar attribute="Normal Text" context="find_file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_file_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_library_ctx">
-        <DetectChar attribute="Normal Text" context="find_library_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_library_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_library_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_ctx">
-        <DetectChar attribute="Normal Text" context="find_package_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_package_nargs" />
-        <keyword attribute="Standard Module" context="#stay" String="standard-finder-modules" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_path_ctx">
-        <DetectChar attribute="Normal Text" context="find_path_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_path_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_path_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_program_ctx">
-        <DetectChar attribute="Normal Text" context="find_program_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_program_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_program_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="foreach_ctx">
-        <DetectChar attribute="Normal Text" context="foreach_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="foreach_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="foreach_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="function_ctx">
-        <DetectChar attribute="Normal Text" context="function_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="function_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx">
-        <DetectChar attribute="Normal Text" context="get_cmake_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Special Args" context="#stay" String="get_cmake_property_sargs" />
-        <keyword attribute="Property" context="#stay" String="global-properties" />
-        <IncludeRules context="Detect More global-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_directory_property_ctx">
-        <DetectChar attribute="Normal Text" context="get_directory_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_directory_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="get_directory_property_nargs" />
-        <keyword attribute="Property" context="#stay" String="directory-properties" />
-        <IncludeRules context="Detect More directory-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_filename_component_ctx">
-        <DetectChar attribute="Normal Text" context="get_filename_component_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_filename_component_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="get_filename_component_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_property_ctx">
-        <DetectChar attribute="Normal Text" context="get_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="get_property_nargs" />
-        <keyword attribute="Property" context="#stay" String="cache-properties" />
-        <keyword attribute="Property" context="#stay" String="directory-properties" />
-        <IncludeRules context="Detect More directory-properties" />
-        <keyword attribute="Property" context="#stay" String="global-properties" />
-        <IncludeRules context="Detect More global-properties" />
-        <keyword attribute="Property" context="#stay" String="install-properties" />
-        <keyword attribute="Property" context="#stay" String="source-properties" />
-        <IncludeRules context="Detect More source-properties" />
-        <keyword attribute="Property" context="#stay" String="target-properties" />
-        <IncludeRules context="Detect More target-properties" />
-        <keyword attribute="Property" context="#stay" String="test-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx">
-        <DetectChar attribute="Normal Text" context="if_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx_op">
-        <DetectChar attribute="Normal Text" context="if_ctx_op_nested" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGET" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="if_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx_op_nested">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <keyword attribute="Named Args" context="#stay" String="if_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_ctx">
-        <DetectChar attribute="Normal Text" context="include_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="include_nargs" />
-        <keyword attribute="Standard Module" context="#stay" String="standard-modules" />
-        <keyword attribute="Deprecated Module" context="#stay" String="deprecated-modules" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_guard_ctx">
-        <DetectChar attribute="Normal Text" context="include_guard_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_guard_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="include_guard_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="list_ctx">
-        <DetectChar attribute="Normal Text" context="list_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="list_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="list_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="list_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="macro_ctx">
-        <DetectChar attribute="Normal Text" context="macro_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="macro_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="mark_as_advanced_ctx">
-        <DetectChar attribute="Normal Text" context="mark_as_advanced_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="mark_as_advanced_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="mark_as_advanced_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="math_ctx">
-        <DetectChar attribute="Normal Text" context="math_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="math_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="math_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="math_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="message_ctx">
-        <DetectChar attribute="Normal Text" context="message_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="message_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="message_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="option_ctx">
-        <DetectChar attribute="Normal Text" context="option_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="option_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="return_ctx">
-        <DetectChar attribute="Normal Text" context="return_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="return_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="separate_arguments_ctx">
-        <DetectChar attribute="Normal Text" context="separate_arguments_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="separate_arguments_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="separate_arguments_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_directory_properties_ctx">
-        <DetectChar attribute="Normal Text" context="set_directory_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_directory_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="set_directory_properties_nargs" />
-        <keyword attribute="Property" context="#stay" String="cache-properties" />
-        <keyword attribute="Property" context="#stay" String="directory-properties" />
-        <IncludeRules context="Detect More directory-properties" />
-        <keyword attribute="Property" context="#stay" String="global-properties" />
-        <IncludeRules context="Detect More global-properties" />
-        <keyword attribute="Property" context="#stay" String="install-properties" />
-        <keyword attribute="Property" context="#stay" String="source-properties" />
-        <IncludeRules context="Detect More source-properties" />
-        <keyword attribute="Property" context="#stay" String="target-properties" />
-        <IncludeRules context="Detect More target-properties" />
-        <keyword attribute="Property" context="#stay" String="test-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_property_ctx">
-        <DetectChar attribute="Normal Text" context="set_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="set_property_nargs" />
-        <keyword attribute="Property" context="#stay" String="cache-properties" />
-        <keyword attribute="Property" context="#stay" String="directory-properties" />
-        <IncludeRules context="Detect More directory-properties" />
-        <keyword attribute="Property" context="#stay" String="global-properties" />
-        <IncludeRules context="Detect More global-properties" />
-        <keyword attribute="Property" context="#stay" String="install-properties" />
-        <keyword attribute="Property" context="#stay" String="source-properties" />
-        <IncludeRules context="Detect More source-properties" />
-        <keyword attribute="Property" context="#stay" String="target-properties" />
-        <IncludeRules context="Detect More target-properties" />
-        <keyword attribute="Property" context="#stay" String="test-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx">
-        <DetectChar attribute="Normal Text" context="set_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="set_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="set_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="site_name_ctx">
-        <DetectChar attribute="Normal Text" context="site_name_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="site_name_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="string_ctx">
-        <DetectChar attribute="Normal Text" context="string_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="string_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="string_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="unset_ctx">
-        <DetectChar attribute="Normal Text" context="unset_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="unset_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="unset_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="variable_watch_ctx">
-        <DetectChar attribute="Normal Text" context="variable_watch_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="variable_watch_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx">
-        <DetectChar attribute="Normal Text" context="while_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx_op">
-        <DetectChar attribute="Normal Text" context="while_ctx_op_nested" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGET" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="while_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx_op_nested">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <keyword attribute="Named Args" context="#stay" String="while_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_definitions_ctx">
-        <DetectChar attribute="Normal Text" context="add_compile_definitions_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_definitions_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_options_ctx">
-        <DetectChar attribute="Normal Text" context="add_compile_options_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_compile_options_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx">
-        <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op">
-        <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op_nested" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGET" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op_nested">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx">
-        <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="add_custom_target_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="add_custom_target_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op">
-        <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_nested" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_nested">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_definitions_ctx">
-        <DetectChar attribute="Normal Text" context="add_definitions_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_definitions_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_dependencies_ctx">
-        <DetectChar attribute="Normal Text" context="add_dependencies_ctx_op_tgts_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_dependencies_ctx_op_tgts_first">
-        <IncludeRules context="Detect Aliased Targets" />
-        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx">
-        <DetectChar attribute="Normal Text" context="add_executable_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="add_executable_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="add_executable_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="add_executable_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx">
-        <DetectChar attribute="Normal Text" context="add_library_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="add_library_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="add_library_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="ALIAS" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="add_library_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_link_options_ctx">
-        <DetectChar attribute="Normal Text" context="add_link_options_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_link_options_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_subdirectory_ctx">
-        <DetectChar attribute="Normal Text" context="add_subdirectory_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_subdirectory_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="add_subdirectory_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx">
-        <DetectChar attribute="Normal Text" context="add_test_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op">
-        <DetectChar attribute="Normal Text" context="add_test_ctx_op_nested" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="add_test_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op_nested">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-        <keyword attribute="Named Args" context="#stay" String="add_test_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="aux_source_directory_ctx">
-        <DetectChar attribute="Normal Text" context="aux_source_directory_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="aux_source_directory_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="build_command_ctx">
-        <DetectChar attribute="Normal Text" context="build_command_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="build_command_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGET" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="build_command_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="create_test_sourcelist_ctx">
-        <DetectChar attribute="Normal Text" context="create_test_sourcelist_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="create_test_sourcelist_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="create_test_sourcelist_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="define_property_ctx">
-        <DetectChar attribute="Normal Text" context="define_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="define_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="define_property_nargs" />
-        <keyword attribute="Property" context="#stay" String="cache-properties" />
-        <keyword attribute="Property" context="#stay" String="directory-properties" />
-        <IncludeRules context="Detect More directory-properties" />
-        <keyword attribute="Property" context="#stay" String="global-properties" />
-        <IncludeRules context="Detect More global-properties" />
-        <keyword attribute="Property" context="#stay" String="install-properties" />
-        <keyword attribute="Property" context="#stay" String="source-properties" />
-        <IncludeRules context="Detect More source-properties" />
-        <keyword attribute="Property" context="#stay" String="target-properties" />
-        <IncludeRules context="Detect More target-properties" />
-        <keyword attribute="Property" context="#stay" String="test-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="enable_language_ctx">
-        <DetectChar attribute="Normal Text" context="enable_language_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="enable_language_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="enable_language_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="enable_language_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="enable_testing_ctx">
-        <DetectChar attribute="Normal Text" context="enable_testing_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="enable_testing_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="export_ctx">
-        <DetectChar attribute="Normal Text" context="export_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="export_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGETS" attribute="Named Args" context="export_tgts" />
-        <keyword attribute="Named Args" context="#stay" String="export_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="export_tgts">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#pop" String="export_nargs" />
-        <RegExpr attribute="Aliased Targets" context="#stay" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fltk_wrap_ui_ctx">
-        <DetectChar attribute="Normal Text" context="fltk_wrap_ui_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fltk_wrap_ui_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx">
-        <DetectChar attribute="Normal Text" context="get_source_file_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="get_source_file_property_nargs" />
-        <keyword attribute="Property" context="#stay" String="source-properties" />
-        <IncludeRules context="Detect More source-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_target_property_ctx">
-        <DetectChar attribute="Normal Text" context="get_target_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_target_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Property" context="#stay" String="target-properties" />
-        <IncludeRules context="Detect More target-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_test_property_ctx">
-        <DetectChar attribute="Normal Text" context="get_test_property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_test_property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Property" context="#stay" String="test-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_directories_ctx">
-        <DetectChar attribute="Normal Text" context="include_directories_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_directories_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="include_directories_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_external_msproject_ctx">
-        <DetectChar attribute="Normal Text" context="include_external_msproject_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_external_msproject_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="include_external_msproject_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_regular_expression_ctx">
-        <DetectChar attribute="Normal Text" context="include_regular_expression_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="include_regular_expression_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_ctx">
-        <DetectChar attribute="Normal Text" context="install_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGETS" attribute="Named Args" context="install_tgts" />
-        <keyword attribute="Named Args" context="#stay" String="install_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="install_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_tgts">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#pop" String="install_nargs" />
-        <RegExpr attribute="Aliased Targets" context="#stay" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="link_directories_ctx">
-        <DetectChar attribute="Normal Text" context="link_directories_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="link_directories_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="link_directories_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="link_libraries_ctx">
-        <DetectChar attribute="Normal Text" context="link_libraries_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="link_libraries_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="link_libraries_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="load_cache_ctx">
-        <DetectChar attribute="Normal Text" context="load_cache_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="load_cache_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="load_cache_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="project_ctx">
-        <DetectChar attribute="Normal Text" context="project_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="project_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="project_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="project_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_cpp_ctx">
-        <DetectChar attribute="Normal Text" context="qt_wrap_cpp_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_cpp_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_ui_ctx">
-        <DetectChar attribute="Normal Text" context="qt_wrap_ui_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="qt_wrap_ui_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="remove_definitions_ctx">
-        <DetectChar attribute="Normal Text" context="remove_definitions_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="remove_definitions_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_source_files_properties_ctx">
-        <DetectChar attribute="Normal Text" context="set_source_files_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_source_files_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="set_source_files_properties_nargs" />
-        <keyword attribute="Property" context="#stay" String="source-properties" />
-        <IncludeRules context="Detect More source-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx">
-        <DetectChar attribute="Normal Text" context="set_target_properties_ctx_op_tgts_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx_op_tgts_first">
-          <!-- NOTE Handle the only case in CMake nowadays:
-              1. `set_target_properties` have a named keyword (`PROPERTIES`) after targets list
-          -->
-        <keyword context="set_target_properties_ctx_op" String="set_target_properties_nargs" lookAhead="true" />
-        <IncludeRules context="Detect Aliased Targets" />
-        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="set_target_properties_nargs" />
-        <keyword attribute="Property" context="#stay" String="target-properties" />
-        <IncludeRules context="Detect More target-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_tests_properties_ctx">
-        <DetectChar attribute="Normal Text" context="set_tests_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_tests_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="set_tests_properties_nargs" />
-        <keyword attribute="Property" context="#stay" String="test-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="source_group_ctx">
-        <DetectChar attribute="Normal Text" context="source_group_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="source_group_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="source_group_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx">
-        <DetectChar attribute="Normal Text" context="target_compile_definitions_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_compile_definitions_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_compile_definitions_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_compile_definitions_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx">
-        <DetectChar attribute="Normal Text" context="target_compile_features_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_compile_features_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_compile_features_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_compile_features_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="target_compile_features_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx">
-        <DetectChar attribute="Normal Text" context="target_compile_options_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_compile_options_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_compile_options_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_compile_options_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx">
-        <DetectChar attribute="Normal Text" context="target_include_directories_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_include_directories_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_include_directories_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_include_directories_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_directories_ctx">
-        <DetectChar attribute="Normal Text" context="target_link_directories_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_directories_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_link_directories_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_link_directories_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_directories_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_link_directories_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx">
-        <DetectChar attribute="Normal Text" context="target_link_libraries_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_link_libraries_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_link_libraries_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_link_libraries_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_options_ctx">
-        <DetectChar attribute="Normal Text" context="target_link_options_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_options_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_link_options_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_link_options_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_options_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_link_options_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx">
-        <DetectChar attribute="Normal Text" context="target_precompile_headers_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_precompile_headers_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_precompile_headers_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_precompile_headers_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx">
-        <DetectChar attribute="Normal Text" context="target_sources_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="target_sources_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="target_sources_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="target_sources_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="try_compile_ctx">
-        <DetectChar attribute="Normal Text" context="try_compile_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="try_compile_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="try_compile_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="try_run_ctx">
-        <DetectChar attribute="Normal Text" context="try_run_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="try_run_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="try_run_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_build_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_build_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_build_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_build_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_configure_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_configure_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_configure_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_configure_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_coverage_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_coverage_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_empty_binary_directory_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_empty_binary_directory_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_empty_binary_directory_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_memcheck_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_memcheck_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_memcheck_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_memcheck_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_read_custom_files_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_read_custom_files_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_read_custom_files_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_run_script_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_run_script_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_run_script_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_run_script_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_sleep_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_sleep_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_sleep_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_start_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_start_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_start_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_start_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_submit_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_submit_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_submit_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_submit_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_test_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_test_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_test_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_test_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="ctest_test_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_update_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_update_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_update_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_update_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_upload_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_upload_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_upload_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_upload_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      
-      <context attribute="Normal Text" lineEndContext="#stay" name="android_add_test_data_ctx">
-        <DetectChar attribute="Normal Text" context="android_add_test_data_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="android_add_test_data_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="android_add_test_data_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fixup_bundle_ctx">
-        <DetectChar attribute="Normal Text" context="fixup_bundle_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fixup_bundle_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="copy_and_fixup_bundle_ctx">
-        <DetectChar attribute="Normal Text" context="copy_and_fixup_bundle_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="copy_and_fixup_bundle_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="verify_app_ctx">
-        <DetectChar attribute="Normal Text" context="verify_app_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="verify_app_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_main_executable_ctx">
-        <DetectChar attribute="Normal Text" context="get_bundle_main_executable_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_main_executable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_dotapp_dir_ctx">
-        <DetectChar attribute="Normal Text" context="get_dotapp_dir_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_dotapp_dir_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_and_executable_ctx">
-        <DetectChar attribute="Normal Text" context="get_bundle_and_executable_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_and_executable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_all_executables_ctx">
-        <DetectChar attribute="Normal Text" context="get_bundle_all_executables_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_all_executables_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_item_key_ctx">
-        <DetectChar attribute="Normal Text" context="get_item_key_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_item_key_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_item_rpaths_ctx">
-        <DetectChar attribute="Normal Text" context="get_item_rpaths_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_item_rpaths_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="clear_bundle_keys_ctx">
-        <DetectChar attribute="Normal Text" context="clear_bundle_keys_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="clear_bundle_keys_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_bundle_key_values_ctx">
-        <DetectChar attribute="Normal Text" context="set_bundle_key_values_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_bundle_key_values_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_keys_ctx">
-        <DetectChar attribute="Normal Text" context="get_bundle_keys_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="get_bundle_keys_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="copy_resolved_item_into_bundle_ctx">
-        <DetectChar attribute="Normal Text" context="copy_resolved_item_into_bundle_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="copy_resolved_item_into_bundle_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="copy_resolved_framework_into_bundle_ctx">
-        <DetectChar attribute="Normal Text" context="copy_resolved_framework_into_bundle_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="copy_resolved_framework_into_bundle_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fixup_bundle_item_ctx">
-        <DetectChar attribute="Normal Text" context="fixup_bundle_item_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fixup_bundle_item_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="verify_bundle_prerequisites_ctx">
-        <DetectChar attribute="Normal Text" context="verify_bundle_prerequisites_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="verify_bundle_prerequisites_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="verify_bundle_symlinks_ctx">
-        <DetectChar attribute="Normal Text" context="verify_bundle_symlinks_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="verify_bundle_symlinks_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_compiler_flag_ctx">
-        <DetectChar attribute="Normal Text" context="check_c_compiler_flag_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_compiler_flag_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_compiler_flag_ctx">
-        <DetectChar attribute="Normal Text" context="check_compiler_flag_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_compiler_flag_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_source_compiles_ctx">
-        <DetectChar attribute="Normal Text" context="check_c_source_compiles_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_source_compiles_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_c_source_compiles_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_source_runs_ctx">
-        <DetectChar attribute="Normal Text" context="check_c_source_runs_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_source_runs_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_compiler_flag_ctx">
-        <DetectChar attribute="Normal Text" context="check_cxx_compiler_flag_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_compiler_flag_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_source_compiles_ctx">
-        <DetectChar attribute="Normal Text" context="check_cxx_source_compiles_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_source_compiles_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_cxx_source_compiles_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_source_runs_ctx">
-        <DetectChar attribute="Normal Text" context="check_cxx_source_runs_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_source_runs_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_symbol_exists_ctx">
-        <DetectChar attribute="Normal Text" context="check_cxx_symbol_exists_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_cxx_symbol_exists_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_compiler_flag_ctx">
-        <DetectChar attribute="Normal Text" context="check_fortran_compiler_flag_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_compiler_flag_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_function_exists_ctx">
-        <DetectChar attribute="Normal Text" context="check_fortran_function_exists_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_function_exists_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_compiles_ctx">
-        <DetectChar attribute="Normal Text" context="check_fortran_source_compiles_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_compiles_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_fortran_source_compiles_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_runs_ctx">
-        <DetectChar attribute="Normal Text" context="check_fortran_source_runs_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_runs_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_fortran_source_runs_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_function_exists_ctx">
-        <DetectChar attribute="Normal Text" context="check_function_exists_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_function_exists_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_file_cxx_ctx">
-        <DetectChar attribute="Normal Text" context="check_include_file_cxx_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_file_cxx_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_file_ctx">
-        <DetectChar attribute="Normal Text" context="check_include_file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_files_ctx">
-        <DetectChar attribute="Normal Text" context="check_include_files_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_files_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_include_files_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="check_include_files_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_ipo_supported_ctx">
-        <DetectChar attribute="Normal Text" context="check_ipo_supported_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_ipo_supported_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_ipo_supported_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="check_ipo_supported_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_language_ctx">
-        <DetectChar attribute="Normal Text" context="check_language_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_language_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Special Args" context="#stay" String="check_language_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_library_exists_ctx">
-        <DetectChar attribute="Normal Text" context="check_library_exists_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_library_exists_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_linker_flag_ctx">
-        <DetectChar attribute="Normal Text" context="check_linker_flag_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_linker_flag_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objc_compiler_flag_ctx">
-        <DetectChar attribute="Normal Text" context="check_objc_compiler_flag_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objc_compiler_flag_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objc_source_compiles_ctx">
-        <DetectChar attribute="Normal Text" context="check_objc_source_compiles_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objc_source_compiles_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_objc_source_compiles_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objc_source_runs_ctx">
-        <DetectChar attribute="Normal Text" context="check_objc_source_runs_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objc_source_runs_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objcxx_compiler_flag_ctx">
-        <DetectChar attribute="Normal Text" context="check_objcxx_compiler_flag_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objcxx_compiler_flag_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objcxx_source_compiles_ctx">
-        <DetectChar attribute="Normal Text" context="check_objcxx_source_compiles_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objcxx_source_compiles_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_objcxx_source_compiles_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objcxx_source_runs_ctx">
-        <DetectChar attribute="Normal Text" context="check_objcxx_source_runs_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_objcxx_source_runs_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_pie_supported_ctx">
-        <DetectChar attribute="Normal Text" context="check_pie_supported_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_pie_supported_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_pie_supported_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="check_pie_supported_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_prototype_definition_ctx">
-        <DetectChar attribute="Normal Text" context="check_prototype_definition_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_prototype_definition_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_source_compiles_ctx">
-        <DetectChar attribute="Normal Text" context="check_source_compiles_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_source_compiles_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_source_compiles_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_source_runs_ctx">
-        <DetectChar attribute="Normal Text" context="check_source_runs_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_source_runs_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_source_runs_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_struct_has_member_ctx">
-        <DetectChar attribute="Normal Text" context="check_struct_has_member_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_struct_has_member_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_struct_has_member_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="check_struct_has_member_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_symbol_exists_ctx">
-        <DetectChar attribute="Normal Text" context="check_symbol_exists_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_symbol_exists_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_type_size_ctx">
-        <DetectChar attribute="Normal Text" context="check_type_size_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_type_size_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="check_type_size_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="check_type_size_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_variable_exists_ctx">
-        <DetectChar attribute="Normal Text" context="check_variable_exists_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="check_variable_exists_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_add_fortran_subdirectory_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_add_fortran_subdirectory_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_add_fortran_subdirectory_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_add_fortran_subdirectory_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_dependent_option_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_dependent_option_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_dependent_option_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_dependency_ctx">
-        <DetectChar attribute="Normal Text" context="find_dependency_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_dependency_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="configure_package_config_file_ctx">
-        <DetectChar attribute="Normal Text" context="configure_package_config_file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="configure_package_config_file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="configure_package_config_file_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="write_basic_package_version_file_ctx">
-        <DetectChar attribute="Normal Text" context="write_basic_package_version_file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="write_basic_package_version_file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="write_basic_package_version_file_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="write_basic_package_version_file_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_print_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGETS" attribute="Named Args" context="cmake_print_properties_tgts" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_print_properties_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_tgts">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#pop" String="cmake_print_properties_nargs" />
-        <RegExpr attribute="Aliased Targets" context="#stay" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_push_check_state_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_push_check_state_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_push_check_state_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cmake_push_check_state_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_pop_check_state_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_pop_check_state_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_pop_check_state_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_reset_check_state_ctx">
-        <DetectChar attribute="Normal Text" context="cmake_reset_check_state_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_reset_check_state_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_add_component_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_add_component_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_group_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_add_component_group_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_group_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_add_component_group_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_install_type_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_add_install_type_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_install_type_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_add_install_type_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_configure_downloads_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_configure_downloads_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_configure_downloads_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_configure_downloads_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_ifw_configure_component_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_configure_component_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_group_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_ifw_configure_component_group_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_group_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_configure_component_group_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_add_repository_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_ifw_add_repository_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_add_repository_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_add_repository_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_update_repository_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_ifw_update_repository_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_update_repository_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_update_repository_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_add_package_resources_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_ifw_add_package_resources_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_add_package_resources_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_file_ctx">
-        <DetectChar attribute="Normal Text" context="cpack_ifw_configure_file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_set_windows_forms_properties_ctx">
-        <DetectChar attribute="Normal Text" context="csharp_set_windows_forms_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_set_windows_forms_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_set_designer_cs_properties_ctx">
-        <DetectChar attribute="Normal Text" context="csharp_set_designer_cs_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_set_designer_cs_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_set_xaml_cs_properties_ctx">
-        <DetectChar attribute="Normal Text" context="csharp_set_xaml_cs_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_set_xaml_cs_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_get_filename_keys_ctx">
-        <DetectChar attribute="Normal Text" context="csharp_get_filename_keys_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_get_filename_keys_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_get_filename_key_base_ctx">
-        <DetectChar attribute="Normal Text" context="csharp_get_filename_key_base_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_get_filename_key_base_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_get_dependentupon_name_ctx">
-        <DetectChar attribute="Normal Text" context="csharp_get_dependentupon_name_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="csharp_get_dependentupon_name_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_collect_gcov_ctx">
-        <DetectChar attribute="Normal Text" context="ctest_coverage_collect_gcov_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_collect_gcov_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ctest_coverage_collect_gcov_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="write_qt4_conf_ctx">
-        <DetectChar attribute="Normal Text" context="write_qt4_conf_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="write_qt4_conf_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="resolve_qt4_paths_ctx">
-        <DetectChar attribute="Normal Text" context="resolve_qt4_paths_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="resolve_qt4_paths_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fixup_qt4_executable_ctx">
-        <DetectChar attribute="Normal Text" context="fixup_qt4_executable_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="fixup_qt4_executable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_qt4_plugin_path_ctx">
-        <DetectChar attribute="Normal Text" context="install_qt4_plugin_path_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_qt4_plugin_path_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_qt4_plugin_ctx">
-        <DetectChar attribute="Normal Text" context="install_qt4_plugin_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_qt4_plugin_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_qt4_executable_ctx">
-        <DetectChar attribute="Normal Text" context="install_qt4_executable_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_qt4_executable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Expand_Arguments_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalData_Expand_Arguments_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Expand_Arguments_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Add_Test_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalData_Add_Test_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Add_Test_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Add_Target_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalData_Add_Target_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Add_Target_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ExternalData_Add_Target_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalProject_Add_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ExternalProject_Add_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="ExternalProject_Add_sargs" />
-        <keyword attribute="Property" context="#stay" String="target-properties" />
-        <IncludeRules context="Detect More target-properties" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Get_Property_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalProject_Get_Property_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Get_Property_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_Step_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalProject_Add_Step_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_Step_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ExternalProject_Add_Step_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_StepTargets_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalProject_Add_StepTargets_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_StepTargets_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="ExternalProject_Add_StepTargets_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_StepDependencies_ctx">
-        <DetectChar attribute="Normal Text" context="ExternalProject_Add_StepDependencies_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_StepDependencies_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="feature_summary_ctx">
-        <DetectChar attribute="Normal Text" context="feature_summary_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="feature_summary_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="feature_summary_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_package_properties_ctx">
-        <DetectChar attribute="Normal Text" context="set_package_properties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_package_properties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="set_package_properties_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_feature_info_ctx">
-        <DetectChar attribute="Normal Text" context="add_feature_info_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_feature_info_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_package_info_ctx">
-        <DetectChar attribute="Normal Text" context="set_package_info_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_package_info_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_feature_info_ctx">
-        <DetectChar attribute="Normal Text" context="set_feature_info_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="set_feature_info_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="print_enabled_features_ctx">
-        <DetectChar attribute="Normal Text" context="print_enabled_features_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="print_enabled_features_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="print_disabled_features_ctx">
-        <DetectChar attribute="Normal Text" context="print_disabled_features_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="print_disabled_features_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Declare_ctx">
-        <DetectChar attribute="Normal Text" context="FetchContent_Declare_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Declare_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="FetchContent_Declare_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Populate_ctx">
-        <DetectChar attribute="Normal Text" context="FetchContent_Populate_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Populate_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="FetchContent_Populate_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_GetProperties_ctx">
-        <DetectChar attribute="Normal Text" context="FetchContent_GetProperties_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_GetProperties_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="FetchContent_GetProperties_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_MakeAvailable_ctx">
-        <DetectChar attribute="Normal Text" context="FetchContent_MakeAvailable_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_MakeAvailable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_handle_standard_args_ctx">
-        <DetectChar attribute="Normal Text" context="find_package_handle_standard_args_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_handle_standard_args_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_package_handle_standard_args_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_check_version_ctx">
-        <DetectChar attribute="Normal Text" context="find_package_check_version_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_check_version_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_package_check_version_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_message_ctx">
-        <DetectChar attribute="Normal Text" context="find_package_message_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_message_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_HEADER_ctx">
-        <DetectChar attribute="Normal Text" context="FortranCInterface_HEADER_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_HEADER_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="FortranCInterface_HEADER_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_VERIFY_ctx">
-        <DetectChar attribute="Normal Text" context="FortranCInterface_VERIFY_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_VERIFY_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="FortranCInterface_VERIFY_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx">
-        <DetectChar attribute="Normal Text" context="generate_export_header_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="generate_export_header_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="generate_export_header_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="generate_export_header_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GNUInstallDirs_get_absolute_install_dir_ctx">
-        <DetectChar attribute="Normal Text" context="GNUInstallDirs_get_absolute_install_dir_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GNUInstallDirs_get_absolute_install_dir_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_add_tests_ctx">
-        <DetectChar attribute="Normal Text" context="gtest_add_tests_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_add_tests_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGET" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="gtest_add_tests_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx">
-        <DetectChar attribute="Normal Text" context="gtest_discover_tests_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="gtest_discover_tests_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="gtest_discover_tests_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="gtest_discover_tests_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="gtest_discover_tests_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="processorcount_ctx">
-        <DetectChar attribute="Normal Text" context="processorcount_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="processorcount_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="select_library_configurations_ctx">
-        <DetectChar attribute="Normal Text" context="select_library_configurations_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="select_library_configurations_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="test_big_endian_ctx">
-        <DetectChar attribute="Normal Text" context="test_big_endian_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="test_big_endian_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_add_include_directories_ctx">
-        <DetectChar attribute="Normal Text" context="ecos_add_include_directories_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_add_include_directories_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_add_executable_ctx">
-        <DetectChar attribute="Normal Text" context="ecos_add_executable_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_add_executable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_add_target_lib_ctx">
-        <DetectChar attribute="Normal Text" context="ecos_add_target_lib_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_add_target_lib_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_adjust_directory_ctx">
-        <DetectChar attribute="Normal Text" context="ecos_adjust_directory_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_adjust_directory_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_use_arm_elf_tools_ctx">
-        <DetectChar attribute="Normal Text" context="ecos_use_arm_elf_tools_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_use_arm_elf_tools_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_use_i386_elf_tools_ctx">
-        <DetectChar attribute="Normal Text" context="ecos_use_i386_elf_tools_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_use_i386_elf_tools_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_use_ppc_eabi_tools_ctx">
-        <DetectChar attribute="Normal Text" context="ecos_use_ppc_eabi_tools_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ecos_use_ppc_eabi_tools_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx">
-        <DetectChar attribute="Normal Text" context="add_jar_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="add_jar_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="add_jar_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="add_jar_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx">
-        <DetectChar attribute="Normal Text" context="install_jar_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="install_jar_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="install_jar_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="install_jar_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jni_symlink_ctx">
-        <DetectChar attribute="Normal Text" context="install_jni_symlink_ctx_op_tgt_first" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jni_symlink_ctx_op_tgt_first">
-        <RegExpr attribute="Aliased Targets" context="install_jni_symlink_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="install_jni_symlink_ctx_op" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jni_symlink_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="install_jni_symlink_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="create_javah_ctx">
-        <DetectChar attribute="Normal Text" context="create_javah_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="create_javah_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGET" attribute="Named Args" context="Target Name" />
-        <keyword attribute="Named Args" context="#stay" String="create_javah_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_ctx">
-        <DetectChar attribute="Normal Text" context="install_jar_exports_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGETS" attribute="Named Args" context="install_jar_exports_tgts" />
-        <keyword attribute="Named Args" context="#stay" String="install_jar_exports_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_tgts">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#pop" String="install_jar_exports_nargs" />
-        <RegExpr attribute="Aliased Targets" context="#stay" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_ctx">
-        <DetectChar attribute="Normal Text" context="export_jars_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <WordDetect String="TARGETS" attribute="Named Args" context="export_jars_tgts" />
-        <keyword attribute="Named Args" context="#stay" String="export_jars_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_tgts">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#pop" String="export_jars_nargs" />
-        <RegExpr attribute="Aliased Targets" context="#stay" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_jar_ctx">
-        <DetectChar attribute="Normal Text" context="find_jar_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="find_jar_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="find_jar_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="create_javadoc_ctx">
-        <DetectChar attribute="Normal Text" context="create_javadoc_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="create_javadoc_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="create_javadoc_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="swig_add_library_ctx">
-        <DetectChar attribute="Normal Text" context="swig_add_library_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="swig_add_library_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="swig_add_library_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="swig_link_libraries_ctx">
-        <DetectChar attribute="Normal Text" context="swig_link_libraries_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="swig_link_libraries_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="squish_add_test_ctx">
-        <DetectChar attribute="Normal Text" context="squish_add_test_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="squish_add_test_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="squish_add_test_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="bison_target_ctx">
-        <DetectChar attribute="Normal Text" context="bison_target_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="bison_target_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="bison_target_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cxxtest_add_test_ctx">
-        <DetectChar attribute="Normal Text" context="cxxtest_add_test_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="cxxtest_add_test_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="doxygen_add_docs_ctx">
-        <DetectChar attribute="Normal Text" context="doxygen_add_docs_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="doxygen_add_docs_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="doxygen_add_docs_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_ctx">
-        <DetectChar attribute="Normal Text" context="env_module_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="env_module_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_swap_ctx">
-        <DetectChar attribute="Normal Text" context="env_module_swap_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_swap_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="env_module_swap_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_list_ctx">
-        <DetectChar attribute="Normal Text" context="env_module_list_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_list_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_avail_ctx">
-        <DetectChar attribute="Normal Text" context="env_module_avail_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_avail_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="flex_target_ctx">
-        <DetectChar attribute="Normal Text" context="flex_target_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="flex_target_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="flex_target_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_flex_bison_dependency_ctx">
-        <DetectChar attribute="Normal Text" context="add_flex_bison_dependency_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="add_flex_bison_dependency_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_create_translations_ctx">
-        <DetectChar attribute="Normal Text" context="gettext_create_translations_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_create_translations_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="gettext_create_translations_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_pot_file_ctx">
-        <DetectChar attribute="Normal Text" context="gettext_process_pot_file_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_pot_file_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="gettext_process_pot_file_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_po_files_ctx">
-        <DetectChar attribute="Normal Text" context="gettext_process_po_files_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_po_files_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="gettext_process_po_files_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="hg_wc_info_ctx">
-        <DetectChar attribute="Normal Text" context="hg_wc_info_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="hg_wc_info_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_version_from_release_name_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_get_version_from_release_name_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_version_from_release_name_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_release_name_from_version_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_get_release_name_from_version_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_release_name_from_version_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_extract_all_installed_versions_from_registry_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_extract_all_installed_versions_from_registry_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_extract_all_installed_versions_from_registry_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_all_valid_matlab_roots_from_registry_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_get_all_valid_matlab_roots_from_registry_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_all_valid_matlab_roots_from_registry_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_mex_suffix_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_get_mex_suffix_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_mex_suffix_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_version_from_matlab_run_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_get_version_from_matlab_run_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_get_version_from_matlab_run_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_unit_test_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_add_unit_test_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_unit_test_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="matlab_add_unit_test_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_mex_ctx">
-        <DetectChar attribute="Normal Text" context="matlab_add_mex_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_mex_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="matlab_add_mex_nargs" />
-        <keyword attribute="Special Args" context="#stay" String="matlab_add_mex_sargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_check_modules_ctx">
-        <DetectChar attribute="Normal Text" context="pkg_check_modules_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_check_modules_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="pkg_check_modules_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_search_module_ctx">
-        <DetectChar attribute="Normal Text" context="pkg_search_module_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_search_module_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="pkg_search_module_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_get_variable_ctx">
-        <DetectChar attribute="Normal Text" context="pkg_get_variable_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_get_variable_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_cpp_ctx">
-        <DetectChar attribute="Normal Text" context="protobuf_generate_cpp_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_cpp_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="protobuf_generate_cpp_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_python_ctx">
-        <DetectChar attribute="Normal Text" context="protobuf_generate_python_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_python_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Python_add_library_ctx">
-        <DetectChar attribute="Normal Text" context="Python_add_library_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Python_add_library_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="Python_add_library_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Subversion_WC_INFO_ctx">
-        <DetectChar attribute="Normal Text" context="Subversion_WC_INFO_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Subversion_WC_INFO_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <keyword attribute="Named Args" context="#stay" String="Subversion_WC_INFO_nargs" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Subversion_WC_LOG_ctx">
-        <DetectChar attribute="Normal Text" context="Subversion_WC_LOG_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Subversion_WC_LOG_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="xctest_add_bundle_ctx">
-        <DetectChar attribute="Normal Text" context="xctest_add_bundle_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="xctest_add_bundle_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="xctest_add_test_ctx">
-        <DetectChar attribute="Normal Text" context="xctest_add_test_ctx_op" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="xctest_add_test_ctx_op">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More global-properties">
-        <RegExpr attribute="Property" context="#stay" String="\b(?:FeatureSummary_&var_ref_re;_DESCRIPTION)\b" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More directory-properties">
-        <RegExpr attribute="Property" context="#stay" String="\b(?:VS_GLOBAL_SECTION_PRE_&var_ref_re;|VS_GLOBAL_SECTION_POST_&var_ref_re;|INTERPROCEDURAL_OPTIMIZATION_&var_ref_re;)\b" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More target-properties">
-        <RegExpr attribute="Property" context="#stay" String="\b(?:XCODE_EMBED_&var_ref_re;_REMOVE_HEADERS_ON_COPY|XCODE_EMBED_&var_ref_re;_PATH|XCODE_EMBED_&var_ref_re;_CODE_SIGN_ON_COPY|XCODE_EMBED_&var_ref_re;|XCODE_ATTRIBUTE_&var_ref_re;|VS_SOURCE_SETTINGS_&var_ref_re;|VS_GLOBAL_&var_ref_re;|VS_DOTNET_REFERENCE_&var_ref_re;|VS_DOTNET_REFERENCEPROP_&var_ref_re;_TAG_&var_ref_re;|STATIC_LIBRARY_FLAGS_&var_ref_re;|RUNTIME_OUTPUT_NAME_&var_ref_re;|RUNTIME_OUTPUT_DIRECTORY_&var_ref_re;|PDB_OUTPUT_DIRECTORY_&var_ref_re;|PDB_NAME_&var_ref_re;|OUTPUT_NAME_&var_ref_re;|OSX_ARCHITECTURES_&var_ref_re;|MAP_IMPORTED_CONFIG_&var_ref_re;|LOCATION_&var_ref_re;|LINK_INTERFACE_MULTIPLICITY_&var_ref_re;|LINK_INTERFACE_LIBRARIES_&var_ref_re;|LINK_FLAGS_&var_ref_re;|LIBRARY_OUTPUT_NAME_&var_ref_re;|LIBRARY_OUTPUT_DIRECTORY_&var_ref_re;|INTERPROCEDURAL_OPTIMIZATION_&var_ref_re;|IMPORTED_SONAME_&var_ref_re;|IMPORTED_OBJECTS_&var_ref_re;|IMPORTED_NO_SONAME_&var_ref_re;|IMPORTED_LOCATION_&var_ref_re;|IMPORTED_LINK_INTERFACE_MULTIPLICITY_&var_ref_re;|IMPORTED_LINK_INTERFACE_LIBRARIES_&var_ref_re;|IMPORTED_LINK_INTERFACE_LANGUAGES_&var_ref_re;|IMPORTED_LINK_DEPENDENT_LIBRARIES_&var_ref_re;|IMPORTED_LIBNAME_&var_ref_re;|IMPORTED_IMPLIB_&var_ref_re;|HEADER_SET_&var_ref_re;|HEADER_DIRS_&var_ref_re;|FRAMEWORK_MULTI_CONFIG_POSTFIX_&var_ref_re;|EXCLUDE_FROM_DEFAULT_BUILD_&var_ref_re;|COMPILE_PDB_OUTPUT_DIRECTORY_&var_ref_re;|COMPILE_PDB_NAME_&var_ref_re;|ARCHIVE_OUTPUT_NAME_&var_ref_re;|ARCHIVE_OUTPUT_DIRECTORY_&var_ref_re;|&var_ref_re;_VISIBILITY_PRESET|&var_ref_re;_POSTFIX|&var_ref_re;_OUTPUT_NAME|&var_ref_re;_LINKER_LAUNCHER|&var_ref_re;_INCLUDE_WHAT_YOU_USE|&var_ref_re;_CPPLINT|&var_ref_re;_CPPCHECK|&var_ref_re;_COMPILER_LAUNCHER|&var_ref_re;_CLANG_TIDY)\b" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More source-properties">
-        <RegExpr attribute="Property" context="#stay" String="\b(?:VS_CSHARP_&var_ref_re;)\b" />
-      </context>
-
-      <context attribute="User Function/Macro" lineEndContext="#stay" name="User Function">
-        <DetectChar attribute="Normal Text" context="User Function Opened" char="(" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="User Function Opened">
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Builtin Variables">
-        <RegExpr attribute="Internal Name" context="#stay" String="\b_&var_ref_re;\b" />
-        <keyword attribute="CMake Internal Variable" context="#stay" String="deprecated-or-internal-variables" insensitive="false" />
-        <keyword attribute="Builtin Variable" context="#stay" String="variables" insensitive="false" />
-        <IncludeRules context="Detect More Builtin Variables" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables">
-        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\b(?:CMAKE_&var_ref_re;_PLATFORM_ID|CMAKE_&var_ref_re;_COMPILER_VERSION_INTERNAL|CMAKE_&var_ref_re;_COMPILER_ARCHITECTURE_ID|CMAKE_&var_ref_re;_COMPILER_ABI)\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:SWIG_MODULE_&var_ref_re;_EXTRA_DEPS|OpenMP_&var_ref_re;_SPEC_DATE|OpenMP_&var_ref_re;_LIB_NAMES|OpenMP_&var_ref_re;_LIBRARY|OpenMP_&var_ref_re;_FLAGS|OpenACC_&var_ref_re;_SPEC_DATE|OpenACC_&var_ref_re;_OPTIONS|OpenACC_&var_ref_re;_FLAGS|MPI_&var_ref_re;_LIB_NAMES|MPI_&var_ref_re;_LIBRARY|MPI_&var_ref_re;_COMPILE_OPTIONS|MPI_&var_ref_re;_COMPILE_DEFINITIONS|MPI_&var_ref_re;_COMPILER|MPI_&var_ref_re;_ADDITIONAL_INCLUDE_VARS|ICU_&var_ref_re;_LIBRARY|ICU_&var_ref_re;_EXECUTABLE|FETCHCONTENT_UPDATES_DISCONNECTED_&var_ref_re;|FETCHCONTENT_SOURCE_DIR_&var_ref_re;|ExternalData_URL_ALGO_&var_ref_re;_&var_ref_re;|ExternalData_CUSTOM_SCRIPT_&var_ref_re;|DOXYGEN_&var_ref_re;|CPACK_WIX_PROPERTY_&var_ref_re;|CPACK_WIX_&var_ref_re;_EXTRA_FLAGS|CPACK_WIX_&var_ref_re;_EXTENSIONS|CPACK_RPM_NO_&var_ref_re;_INSTALL_PREFIX_RELOCATION|CPACK_RPM_&var_ref_re;_USER_FILELIST|CPACK_RPM_&var_ref_re;_USER_BINARY_SPECFILE|CPACK_RPM_&var_ref_re;_PACKAGE_URL|CPACK_RPM_&var_ref_re;_PACKAGE_SUMMARY|CPACK_RPM_&var_ref_re;_PACKAGE_SUGGESTS|CPACK_RPM_&var_ref_re;_PACKAGE_REQUIRES_PREUN|CPACK_RPM_&var_ref_re;_PACKAGE_REQUIRES_PRE|CPACK_RPM_&var_ref_re;_PACKAGE_REQUIRES_POSTUN|CPACK_RPM_&var_ref_re;_PACKAGE_REQUIRES_POST|CPACK_RPM_&var_ref_re;_PACKAGE_REQUIRES|CPACK_RPM_&var_ref_re;_PACKAGE_PROVIDES|CPACK_RPM_&var_ref_re;_PACKAGE_PREFIX|CPACK_RPM_&var_ref_re;_PACKAGE_OBSOLETES|CPACK_RPM_&var_ref_re;_PACKAGE_NAME|CPACK_RPM_&var_ref_re;_PACKAGE_GROUP|CPACK_RPM_&var_ref_re;_PACKAGE_DESCRIPTION|CPACK_RPM_&var_ref_re;_PACKAGE_CONFLICTS|CPACK_RPM_&var_ref_re;_PACKAGE_AUTOREQPROV|CPACK_RPM_&var_ref_re;_PACKAGE_AUTOREQ|CPACK_RPM_&var_ref_re;_PACKAGE_AUTOPROV|CPACK_RPM_&var_ref_re;_PACKAGE_ARCHITECTURE|CPACK_RPM_&var_ref_re;_FILE_NAME|CPACK_RPM_&var_ref_re;_DEFAULT_USER|CPACK_RPM_&var_ref_re;_DEFAULT_GROUP|CPACK_RPM_&var_ref_re;_DEFAULT_FILE_PERMISSIONS|CPACK_RPM_&var_ref_re;_DEFAULT_DIR_PERMISSIONS|CPACK_RPM_&var_ref_re;_DEBUGINFO_PACKAGE|CPACK_RPM_&var_ref_re;_DEBUGINFO_FILE_NAME|CPACK_RPM_&var_ref_re;_BUILD_SOURCE_DIRS_PREFIX|CPACK_PREFLIGHT_&var_ref_re;_SCRIPT|CPACK_POSTFLIGHT_&var_ref_re;_SCRIPT|CPACK_NUGET_PACKAGE_DEPENDENCIES_&var_ref_re;_VERSION|CPACK_NUGET_&var_ref_re;_PACKAGE_VERSION|CPACK_NUGET_&var_ref_re;_PACKAGE_TITLE|CPACK_NUGET_&var_ref_re;_PACKAGE_TAGS|CPACK_NUGET_&var_ref_re;_PACKAGE_RELEASE_NOTES|CPACK_NUGET_&var_ref_re;_PACKAGE_OWNERS|CPACK_NUGET_&var_ref_re;_PACKAGE_NAME|CPACK_NUGET_&var_ref_re;_PACKAGE_LICENSE_FILE_NAME|CPACK_NUGET_&var_ref_re;_PACKAGE_LICENSE_EXPRESSION|CPACK_NUGET_&var_ref_re;_PACKAGE_LICENSEURL|CPACK_NUGET_&var_ref_re;_PACKAGE_LANGUAGE|CPACK_NUGET_&var_ref_re;_PACKAGE_ICONURL|CPACK_NUGET_&var_ref_re;_PACKAGE_ICON|CPACK_NUGET_&var_ref_re;_PACKAGE_HOMEPAGE_URL|CPACK_NUGET_&var_ref_re;_PACKAGE_DESCRIPTION_SUMMARY|CPACK_NUGET_&var_ref_re;_PACKAGE_DESCRIPTION|CPACK_NUGET_&var_ref_re;_PACKAGE_DEPENDENCIES_&var_ref_re;_VERSION|CPACK_NUGET_&var_ref_re;_PACKAGE_DEPENDENCIES|CPACK_NUGET_&var_ref_re;_PACKAGE_COPYRIGHT|CPACK_NUGET_&var_ref_re;_PACKAGE_AUTHORS|CPACK_NSIS_&var_ref_re;_INSTALL_DIRECTORY|CPACK_DMG_&var_ref_re;_FILE_NAME|CPACK_DEBIAN_&var_ref_re;_PACKAGE_SUGGESTS|CPACK_DEBIAN_&var_ref_re;_PACKAGE_SOURCE|CPACK_DEBIAN_&var_ref_re;_PACKAGE_SHLIBDEPS|CPACK_DEBIAN_&var_ref_re;_PACKAGE_SECTION|CPACK_DEBIAN_&var_ref_re;_PACKAGE_REPLACES|CPACK_DEBIAN_&var_ref_re;_PACKAGE_RECOMMENDS|CPACK_DEBIAN_&var_ref_re;_PACKAGE_PROVIDES|CPACK_DEBIAN_&var_ref_re;_PACKAGE_PRIORITY|CPACK_DEBIAN_&var_ref_re;_PACKAGE_PREDEPENDS|CPACK_DEBIAN_&var_ref_re;_PACKAGE_NAME|CPACK_DEBIAN_&var_ref_re;_PACKAGE_ENHANCES|CPACK_DEBIAN_&var_ref_re;_PACKAGE_DEPENDS|CPACK_DEBIAN_&var_ref_re;_PACKAGE_CONTROL_STRICT_PERMISSION|CPACK_DEBIAN_&var_ref_re;_PACKAGE_CONTROL_EXTRA|CPACK_DEBIAN_&var_ref_re;_PACKAGE_CONFLICTS|CPACK_DEBIAN_&var_ref_re;_PACKAGE_BREAKS|CPACK_DEBIAN_&var_ref_re;_PACKAGE_ARCHITECTURE|CPACK_DEBIAN_&var_ref_re;_FILE_NAME|CPACK_DEBIAN_&var_ref_re;_DESCRIPTION|CPACK_DEBIAN_&var_ref_re;_DEBUGINFO_PACKAGE|CPACK_COMPONENT_&var_ref_re;_REQUIRED|CPACK_COMPONENT_&var_ref_re;_HIDDEN|CPACK_COMPONENT_&var_ref_re;_GROUP|CPACK_COMPONENT_&var_ref_re;_DISPLAY_NAME|CPACK_COMPONENT_&var_ref_re;_DISABLED|CPACK_COMPONENT_&var_ref_re;_DESCRIPTION|CPACK_COMPONENT_&var_ref_re;_DEPENDS|CPACK_BINARY_&var_ref_re;|CPACK_ARCHIVE_&var_ref_re;_FILE_NAME|CPACK_&var_ref_re;_COMPONENT_INSTALL|CMAKE_XCODE_ATTRIBUTE_&var_ref_re;|CMAKE_USER_MAKE_RULES_OVERRIDE_&var_ref_re;|CMAKE_STATIC_LINKER_FLAGS_&var_ref_re;_INIT|CMAKE_STATIC_LINKER_FLAGS_&var_ref_re;|CMAKE_SHARED_LINKER_FLAGS_&var_ref_re;_INIT|CMAKE_SHARED_LINKER_FLAGS_&var_ref_re;|CMAKE_RUNTIME_OUTPUT_DIRECTORY_&var_ref_re;|CMAKE_REQUIRE_FIND_PACKAGE_&var_ref_re;|CMAKE_PROJECT_&var_ref_re;_INCLUDE|CMAKE_POLICY_WARNING_CMP[0-9]{4}|CMAKE_POLICY_DEFAULT_CMP[0-9]{4}|CMAKE_PDB_OUTPUT_DIRECTORY_&var_ref_re;|CMAKE_MODULE_LINKER_FLAGS_&var_ref_re;_INIT|CMAKE_MODULE_LINKER_FLAGS_&var_ref_re;|CMAKE_MATCH_[0-9]+|CMAKE_MAP_IMPORTED_CONFIG_&var_ref_re;|CMAKE_LIBRARY_OUTPUT_DIRECTORY_&var_ref_re;|CMAKE_INTERPROCEDURAL_OPTIMIZATION_&var_ref_re;|CMAKE_GET_OS_RELEASE_FALLBACK_RESULT_&var_ref_re;|CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&var_ref_re;|CMAKE_EXE_LINKER_FLAGS_&var_ref_re;_INIT|CMAKE_EXE_LINKER_FLAGS_&var_ref_re;|CMAKE_DISABLE_FIND_PACKAGE_&var_ref_re;|CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&var_ref_re;|CMAKE_ARGV[0-9]+|CMAKE_ARCHIVE_OUTPUT_DIRECTORY_&var_ref_re;|CMAKE_&var_ref_re;_VISIBILITY_PRESET|CMAKE_&var_ref_re;_STANDARD_LIBRARIES|CMAKE_&var_ref_re;_STANDARD_INCLUDE_DIRECTORIES|CMAKE_&var_ref_re;_SOURCE_FILE_EXTENSIONS|CMAKE_&var_ref_re;_SIZEOF_DATA_PTR|CMAKE_&var_ref_re;_SIMULATE_VERSION|CMAKE_&var_ref_re;_SIMULATE_ID|CMAKE_&var_ref_re;_POSTFIX|CMAKE_&var_ref_re;_OUTPUT_EXTENSION|CMAKE_&var_ref_re;_LINK_WHAT_YOU_USE_FLAG|CMAKE_&var_ref_re;_LINK_LIBRARY_FLAG|CMAKE_&var_ref_re;_LINK_LIBRARY_FILE_FLAG|CMAKE_&var_ref_re;_LINK_EXECUTABLE|CMAKE_&var_ref_re;_LINKER_WRAPPER_FLAG_SEP|CMAKE_&var_ref_re;_LINKER_WRAPPER_FLAG|CMAKE_&var_ref_re;_LINKER_PREFERENCE_PROPAGATES|CMAKE_&var_ref_re;_LINKER_PREFERENCE|CMAKE_&var_ref_re;_LINKER_LAUNCHER|CMAKE_&var_ref_re;_LIBRARY_ARCHITECTURE|CMAKE_&var_ref_re;_INCLUDE_WHAT_YOU_USE|CMAKE_&var_ref_re;_IMPLICIT_LINK_LIBRARIES|CMAKE_&var_ref_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES|CMAKE_&var_ref_re;_IMPLICIT_LINK_DIRECTORIES|CMAKE_&var_ref_re;_IMPLICIT_INCLUDE_DIRECTORIES|CMAKE_&var_ref_re;_IGNORE_EXTENSIONS|CMAKE_&var_ref_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO|CMAKE_&var_ref_re;_GHS_KERNEL_FLAGS_RELEASE|CMAKE_&var_ref_re;_GHS_KERNEL_FLAGS_MINSIZEREL|CMAKE_&var_ref_re;_GHS_KERNEL_FLAGS_DEBUG|CMAKE_&var_ref_re;_FLAGS_RELWITHDEBINFO_INIT|CMAKE_&var_ref_re;_FLAGS_RELWITHDEBINFO|CMAKE_&var_ref_re;_FLAGS_RELEASE_INIT|CMAKE_&var_ref_re;_FLAGS_RELEASE|CMAKE_&var_ref_re;_FLAGS_MINSIZEREL_INIT|CMAKE_&var_ref_re;_FLAGS_MINSIZEREL|CMAKE_&var_ref_re;_FLAGS_INIT|CMAKE_&var_ref_re;_FLAGS_DEBUG_INIT|CMAKE_&var_ref_re;_FLAGS_DEBUG|CMAKE_&var_ref_re;_FLAGS|CMAKE_&var_ref_re;_EXTENSIONS_DEFAULT|CMAKE_&var_ref_re;_EXTENSIONS|CMAKE_&var_ref_re;_CREATE_STATIC_LIBRARY|CMAKE_&var_ref_re;_CREATE_SHARED_MODULE|CMAKE_&var_ref_re;_CREATE_SHARED_LIBRARY|CMAKE_&var_ref_re;_CPPLINT|CMAKE_&var_ref_re;_CPPCHECK|CMAKE_&var_ref_re;_COMPILE_OBJECT|CMAKE_&var_ref_re;_COMPILER_VERSION|CMAKE_&var_ref_re;_COMPILER_TARGET|CMAKE_&var_ref_re;_COMPILER_RANLIB|CMAKE_&var_ref_re;_COMPILER_LOADED|CMAKE_&var_ref_re;_COMPILER_LAUNCHER|CMAKE_&var_ref_re;_COMPILER_ID|CMAKE_&var_ref_re;_COMPILER_EXTERNAL_TOOLCHAIN|CMAKE_&var_ref_re;_COMPILER_AR|CMAKE_&var_ref_re;_COMPILER|CMAKE_&var_ref_re;_CLANG_TIDY|CMAKE_&var_ref_re;_BYTE_ORDER|CMAKE_&var_ref_re;_ARCHIVE_FINISH|CMAKE_&var_ref_re;_ARCHIVE_CREATE|CMAKE_&var_ref_re;_ARCHIVE_APPEND|CMAKE_&var_ref_re;_ANDROID_TOOLCHAIN_SUFFIX|CMAKE_&var_ref_re;_ANDROID_TOOLCHAIN_PREFIX|CMAKE_&var_ref_re;_ANDROID_TOOLCHAIN_MACHINE|Boost_&var_ref_re;_LIBRARY_RELEASE|Boost_&var_ref_re;_LIBRARY_DEBUG|Boost_&var_ref_re;_LIBRARY|BISON_&var_ref_re;_OUTPUT_SOURCE|BISON_&var_ref_re;_OUTPUT_HEADER|BISON_&var_ref_re;_OUTPUTS|BISON_&var_ref_re;_INPUT|BISON_&var_ref_re;_DEFINED|BISON_&var_ref_re;_COMPILE_FLAGS|ARGV[0-9]+|&var_ref_re;__TRYRUN_OUTPUT|&var_ref_re;_VERSION_TWEAK|&var_ref_re;_VERSION_STRING|&var_ref_re;_VERSION_PATCH|&var_ref_re;_VERSION_MINOR|&var_ref_re;_VERSION_MAJOR|&var_ref_re;_VERSION_COUNT|&var_ref_re;_VERSION|&var_ref_re;_UNPARSED_ARGUMENTS|&var_ref_re;_SOURCE_DIR|&var_ref_re;_ROOT|&var_ref_re;_MODULE_NAME|&var_ref_re;_LIBRARY_DIRS|&var_ref_re;_LIBRARIES|&var_ref_re;_KEYWORDS_MISSING_VALUES|&var_ref_re;_IS_TOP_LEVEL|&var_ref_re;_INCLUDE_DIRS|&var_ref_re;_HOMEPAGE_URL|&var_ref_re;_FOUND|&var_ref_re;_FIND_VERSION_RANGE_MIN|&var_ref_re;_FIND_VERSION_RANGE_MAX|&var_ref_re;_FIND_VERSION_RANGE|&var_ref_re;_FIND_VERSION_MIN_TWEAK|&var_ref_re;_FIND_VERSION_MIN_PATCH|&var_ref_re;_FIND_VERSION_MIN_MINOR|&var_ref_re;_FIND_VERSION_MIN_MAJOR|&var_ref_re;_FIND_VERSION_MIN_COUNT|&var_ref_re;_FIND_VERSION_MIN|&var_ref_re;_FIND_VERSION_MAX_TWEAK|&var_ref_re;_FIND_VERSION_MAX_PATCH|&var_ref_re;_FIND_VERSION_MAX_MINOR|&var_ref_re;_FIND_VERSION_MAX_MAJOR|&var_ref_re;_FIND_VERSION_MAX_COUNT|&var_ref_re;_FIND_VERSION_MAX|&var_ref_re;_FIND_VERSION_EXACT|&var_ref_re;_FIND_VERSION_COUNT|&var_ref_re;_FIND_VERSION_COMPLETE|&var_ref_re;_FIND_REQUIRED_&var_ref_re;|&var_ref_re;_FIND_REQUIRED|&var_ref_re;_FIND_QUIETLY|&var_ref_re;_FIND_COMPONENTS|&var_ref_re;_DESCRIPTION|&var_ref_re;_CONSIDERED_VERSIONS|&var_ref_re;_CONSIDERED_CONFIGS|&var_ref_re;_CONFIG|&var_ref_re;_BINARY_DIR)\b" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
-        <RegExpr attribute="Cache Variable Substitution" context="#stay" String="\$CACHE\{\s*[\w-]+\s*\}" />
-        <RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$?ENV\{" />
-        <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{" />
-        <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&var_ref_re;@" lookAhead="true" />
-      </context>
-
-      <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst">
-        <keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false" />
-        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b(?:CMAKE_&var_ref_re;_COMPILER_LAUNCHER|ASM&var_ref_re;FLAGS|ASM&var_ref_re;|&var_ref_re;_ROOT|&var_ref_re;_DIR)\b" />
-        <DetectIdentifier />
-        <IncludeRules context="Detect Variable Substitutions" />
-        <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}" />
-      </context>
-
-      <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst">
-        <IncludeRules context="Detect Builtin Variables" />
-        <DetectIdentifier />
-        <DetectChar attribute="Variable Substitution" context="#pop" char="}" />
-        <IncludeRules context="Detect Variable Substitutions" />
-      </context>
-
-      <context attribute="@Variable Substitution" lineEndContext="#pop" name="@VarSubst">
-        <IncludeRules context="Detect Builtin Variables" />
-        <DetectChar attribute="@Variable Substitution" context="VarSubst@" char="@" />
-      </context>
-
-      <context attribute="@Variable Substitution" lineEndContext="#pop#pop" name="VarSubst@">
-        <IncludeRules context="Detect Builtin Variables" />
-        <DetectIdentifier />
-        <DetectChar attribute="@Variable Substitution" context="#pop#pop" char="@" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Target Name">
-        <RegExpr attribute="Aliased Targets" context="#pop" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-        <RegExpr attribute="Targets" context="#pop" String="&tgt_name_re;" />
-        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true" />
-        <IncludeRules context="User Function Args" />
-        <DetectSpaces />
-        <RegExpr attribute="Error" context="#stay" String=".*" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="User Function Args">
-        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="(" />
-        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />
-        <DetectChar attribute="Strings" context="String" char="&quot;" />
-        <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" beginRegion="BracketedString" />
-        <DetectChar attribute="Comment" context="Match Comments" char="#" lookAhead="true" />
-        <IncludeRules context="Detect Builtin Variables" />
-        <IncludeRules context="Detect Variable Substitutions" />
-        <IncludeRules context="Detect Special Values" />
-        <IncludeRules context="Detect Aliased Targets" />
-        <IncludeRules context="Detect Generator Expressions" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values">
-        <RegExpr attribute="Version Arg" context="#stay" String="\b[0-9]+(.[0-9]+)+\b" />
-        <!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
-        <WordDetect attribute="True Special Arg" context="#stay" String="TRUE" insensitive="true" />
-        <WordDetect attribute="True Special Arg" context="#stay" String="ON" insensitive="true" />
-        <WordDetect attribute="True Special Arg" context="#stay" String="YES" insensitive="true" />
-        <WordDetect attribute="True Special Arg" context="#stay" String="Y" insensitive="true" />
-        <WordDetect attribute="True Special Arg" context="#stay" String="1" />
-        <!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
-        <WordDetect attribute="False Special Arg" context="#stay" String="FALSE" insensitive="true" />
-        <WordDetect attribute="False Special Arg" context="#stay" String="OFF" insensitive="true" />
-        <WordDetect attribute="False Special Arg" context="#stay" String="NO" insensitive="true" />
-        <WordDetect attribute="False Special Arg" context="#stay" String="N" insensitive="true" />
-        <WordDetect attribute="False Special Arg" context="#stay" String="IGNORE" insensitive="true" />
-        <WordDetect attribute="False Special Arg" context="#stay" String="0" />
-        <RegExpr attribute="False Special Arg" context="#stay" String="\b(?:&var_ref_re;-)?NOTFOUND\b" />
-        <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][0-9][0-9][0-9]\b" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Aliased Targets">
-        <RegExpr attribute="Aliased Targets" context="#stay" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*" />
-      </context>
-
-      <context attribute="Comment" lineEndContext="#pop" name="Match Comments">
-        <RegExpr attribute="Comment" context="#pop!Bracketed Comment" String="#\[(=*)\[" beginRegion="BracketedComment" />
-        <DetectChar attribute="Comment" context="#pop!Comment" char="#" />
-      </context>
-
-      <context attribute="Comment" lineEndContext="#pop" name="Match Comments and Docs">
-        <RegExpr attribute="Region Marker" context="#pop!RST Documentation" String="^#\[(=*)\[\.rst:" column="0" beginRegion="RSTDocumentation" />
-        <IncludeRules context="Match Comments" />
-      </context>
-
-      <context attribute="Comment" lineEndContext="#pop" name="Comment">
-        <LineContinue attribute="Comment" context="#pop" />
-        <DetectSpaces />
-        <IncludeRules context="##Comments" />
-      </context>
-
-      <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true">
-        <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" endRegion="RSTDocumentation" />
-        <IncludeRules context="##reStructuredText" />
-      </context>
-
-      <context attribute="Comment" lineEndContext="#stay" name="Bracketed Comment" dynamic="true">
-        <LineContinue attribute="Comment" context="#stay" />
-        <DetectSpaces />
-        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedComment" />
-        <IncludeRules context="##Comments" />
-      </context>
-
-      <context attribute="Strings" lineEndContext="#stay" name="String">
-        <RegExpr attribute="Strings" context="#pop" String="&quot;(?=[ );]|$)" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="r" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="t" />
-        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\" />
-        <IncludeRules context="Detect Variable Substitutions" />
-        <IncludeRules context="Detect Generator Expressions" />
-      </context>
-
-      <context attribute="Strings" lineEndContext="#stay" name="Bracketed String" dynamic="true">
-        <StringDetect attribute="Strings" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedString" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Generator Expressions">
-        <Detect2Chars attribute="Generator Expression" context="Generator Expression" char="$" char1="&lt;" />
-      </context>
-
-      <context attribute="Generator Expression" lineEndContext="#stay" name="Generator Expression">
-        <IncludeRules context="Detect Generator Expressions" />
-        <DetectChar attribute="Comment" context="Comment" char="#" />
-        <DetectChar attribute="Generator Expression" context="#pop" char="&gt;" />
-        <keyword attribute="Generator Expression Keyword" context="#stay" String="generator-expressions" insensitive="false" />
-        <IncludeRules context="Detect Aliased Targets" />
-        <IncludeRules context="Detect Variable Substitutions" />
-      </context>
-
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false" />
-      <itemData name="Comment" defStyleNum="dsComment" spellChecking="true" />
-      <itemData name="Command" defStyleNum="dsKeyword" spellChecking="false" />
-      <itemData name="CMake Provided Function/Macro" defStyleNum="dsFunction" bold="true" spellChecking="false" />
-      <itemData name="User Function/Macro"  defStyleNum="dsFunction" spellChecking="false" />
-      <itemData name="Property" defStyleNum="dsOthers" spellChecking="false" />
-      <itemData name="Targets" defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Aliased Targets" defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Named Args" defStyleNum="dsOthers" spellChecking="false" />
-      <itemData name="Special Args" defStyleNum="dsOthers" spellChecking="false" />
-      <itemData name="True Special Arg" defStyleNum="dsOthers" color="#30a030" selColor="#30a030" spellChecking="false" />
-      <itemData name="False Special Arg" defStyleNum="dsOthers" color="#e05050" selColor="#e05050" spellChecking="false" />
-      <itemData name="Version Arg" defStyleNum="dsDataType" spellChecking="false" />
-      <itemData name="Strings" defStyleNum="dsString" spellChecking="true" />
-      <itemData name="Escapes" defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false" />
-      <itemData name="CMake Internal Variable" defStyleNum="dsVariable" spellChecking="false" />
-      <itemData name="Internal Name" defStyleNum="dsVariable" spellChecking="false" />
-      <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false" />
-      <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false" />
-      <itemData name="Cache Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
-      <itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false" />
-      <itemData name="Standard Environment Variable" defStyleNum="dsFloat" spellChecking="false" />
-      <itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false" />
-      <itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false" />
-      <itemData name="Standard Module" defStyleNum="dsImport" spellChecking="false" />
-      <itemData name="Deprecated Module" defStyleNum="dsImport" spellChecking="false" />
-      <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false" />
-      <itemData name="Error" defStyleNum="dsError" spellChecking="false" />
-    </itemDatas>
-
-  </highlighting>
-
-  <general>
-    <comments>
-      <comment name="singleLine" start="#" position="afterwhitespace" />
-      <comment name="multiLine" start="#[[" end="]]" region="BracketedComment" />
-    </comments>
-    <keywords casesensitive="1" weakDeliminator="." />
-  </general>
-</language>
-
-<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->
-
+<!DOCTYPE language
+[
+  <!-- NOTE See https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#variable-references -->
+  <!ENTITY var_ref_re "[/\.\+\-_0-9A-Za-z]+">
+  <!-- NOTE See `cmGeneratorExpression::IsValidTargetName` -->
+  <!ENTITY tgt_name_re "[A-Za-z0-9_\.\+\-]+">
+]>
+<!--
+  This file is part of KDE's kate project.
+
+  SPDX-FileCopyrightText: 2004 Alexander Neundorf <neundorf@kde.org>
+  SPDX-FileCopyrightText: 2005 Dominik Haumann <dhdev@gmx.de>
+  SPDX-FileCopyrightText: 2007, 2008, 2013, 2014 Matthew Woehlke <mw_triad@users.sourceforge.net>
+  SPDX-FileCopyrightText: 2013-2015, 2017-2025 Alex Turbov <i.zaufi@gmail.com>
+
+  SPDX-License-Identifier: LGPL-2.0-or-later
+-->
+
+<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
+  $ cd data/generators
+  $ ./generate-cmake-syntax.py cmake.yaml > ../syntax/cmake.xml
+-->
+
+<language
+    name="CMake"
+    version="61"
+    kateversion="5.62"
+    section="Other"
+    extensions="CMakeLists.txt;*.cmake;*.cmake.in"
+    style="CMake"
+    mimetype="text/x-cmake"
+    author="Alex Turbov (i.zaufi@gmail.com)"
+    license="LGPLv2+"
+  >
+  <highlighting>
+
+    <list name="commands">
+        <item>block</item>
+        <item>break</item>
+        <item>cmake_diagnostic</item>
+        <item>cmake_host_system_information</item>
+        <item>cmake_language</item>
+        <item>cmake_minimum_required</item>
+        <item>cmake_parse_arguments</item>
+        <item>cmake_path</item>
+        <item>cmake_pkg_config</item>
+        <item>cmake_policy</item>
+        <item>configure_file</item>
+        <item>continue</item>
+        <item>elseif</item>
+        <item>else</item>
+        <item>endblock</item>
+        <item>endforeach</item>
+        <item>endfunction</item>
+        <item>endif</item>
+        <item>endmacro</item>
+        <item>endwhile</item>
+        <item>execute_process</item>
+        <item>file</item>
+        <item>find_file</item>
+        <item>find_library</item>
+        <item>find_package</item>
+        <item>find_path</item>
+        <item>find_program</item>
+        <item>foreach</item>
+        <item>function</item>
+        <item>get_cmake_property</item>
+        <item>get_directory_property</item>
+        <item>get_filename_component</item>
+        <item>get_property</item>
+        <item>if</item>
+        <item>include</item>
+        <item>include_guard</item>
+        <item>list</item>
+        <item>macro</item>
+        <item>mark_as_advanced</item>
+        <item>math</item>
+        <item>message</item>
+        <item>option</item>
+        <item>return</item>
+        <item>separate_arguments</item>
+        <item>set_directory_properties</item>
+        <item>set_property</item>
+        <item>set</item>
+        <item>site_name</item>
+        <item>string</item>
+        <item>unset</item>
+        <item>variable_watch</item>
+        <item>while</item>
+        <item>add_compile_definitions</item>
+        <item>add_compile_options</item>
+        <item>add_custom_command</item>
+        <item>add_custom_target</item>
+        <item>add_definitions</item>
+        <item>add_dependencies</item>
+        <item>add_executable</item>
+        <item>add_library</item>
+        <item>add_link_options</item>
+        <item>add_subdirectory</item>
+        <item>add_test</item>
+        <item>aux_source_directory</item>
+        <item>build_command</item>
+        <item>cmake_file_api</item>
+        <item>cmake_instrumentation</item>
+        <item>create_test_sourcelist</item>
+        <item>define_property</item>
+        <item>discover_tests</item>
+        <item>enable_language</item>
+        <item>enable_testing</item>
+        <item>export</item>
+        <item>fltk_wrap_ui</item>
+        <item>get_source_file_property</item>
+        <item>get_target_property</item>
+        <item>get_test_property</item>
+        <item>include_directories</item>
+        <item>include_external_msproject</item>
+        <item>include_regular_expression</item>
+        <item>install</item>
+        <item>link_directories</item>
+        <item>link_libraries</item>
+        <item>load_cache</item>
+        <item>project</item>
+        <item>qt_wrap_cpp</item>
+        <item>qt_wrap_ui</item>
+        <item>remove_definitions</item>
+        <item>set_source_files_properties</item>
+        <item>set_target_properties</item>
+        <item>set_tests_properties</item>
+        <item>source_group</item>
+        <item>target_compile_definitions</item>
+        <item>target_compile_features</item>
+        <item>target_compile_options</item>
+        <item>target_include_directories</item>
+        <item>target_link_directories</item>
+        <item>target_link_libraries</item>
+        <item>target_link_options</item>
+        <item>target_precompile_headers</item>
+        <item>target_sources</item>
+        <item>try_compile</item>
+        <item>try_run</item>
+        <item>ctest_build</item>
+        <item>ctest_configure</item>
+        <item>ctest_coverage</item>
+        <item>ctest_empty_binary_directory</item>
+        <item>ctest_memcheck</item>
+        <item>ctest_read_custom_files</item>
+        <item>ctest_run_script</item>
+        <item>ctest_sleep</item>
+        <item>ctest_start</item>
+        <item>ctest_submit</item>
+        <item>ctest_test</item>
+        <item>ctest_update</item>
+        <item>ctest_upload</item>
+    </list>
+    <list name="block_nargs">
+      <item>PROPAGATE</item>
+      <item>SCOPE_FOR</item>
+    </list>
+    <list name="block_sargs">
+      <item>DIAGNOSTICS</item>
+      <item>POLICIES</item>
+      <item>VARIABLES</item>
+    </list>
+    <list name="cmake_diagnostic_nargs">
+      <item>DEMOTE</item>
+      <item>GET</item>
+      <item>NO_RECURSE</item>
+      <item>POP</item>
+      <item>PROMOTE</item>
+      <item>PUSH</item>
+      <item>RECURSE</item>
+      <item>SET</item>
+    </list>
+    <list name="cmake_diagnostic_sargs">
+      <item>CMD_AUTHOR</item>
+      <item>CMD_DEPRECATED</item>
+      <item>CMD_EXPERIMENTAL</item>
+      <item>CMD_INSTALL_ABSOLUTE_DESTINATION</item>
+      <item>CMD_POLICY</item>
+      <item>CMD_UNINITIALIZED</item>
+      <item>CMD_UNUSED_CLI</item>
+      <item>FATAL_ERROR</item>
+      <item>IGNORE</item>
+      <item>SEND_ERROR</item>
+      <item>WARN</item>
+    </list>
+    <list name="cmake_host_system_information_nargs">
+      <item>ERROR_VARIABLE</item>
+      <item>QUERY</item>
+      <item>RESULT</item>
+      <item>SEPARATOR</item>
+      <item>SUBKEYS</item>
+      <item>VALUE</item>
+      <item>VALUE_NAMES</item>
+      <item>VIEW</item>
+      <item>WINDOWS_REGISTRY</item>
+    </list>
+    <list name="cmake_host_system_information_sargs">
+      <item>32</item>
+      <item>32_64</item>
+      <item>64</item>
+      <item>64_32</item>
+      <item>AVAILABLE_PHYSICAL_MEMORY</item>
+      <item>AVAILABLE_VIRTUAL_MEMORY</item>
+      <item>BOTH</item>
+      <item>DISTRIB_INFO</item>
+      <item>FQDN</item>
+      <item>HAS_AMD_3DNOW</item>
+      <item>HAS_AMD_3DNOW_PLUS</item>
+      <item>HAS_FPU</item>
+      <item>HAS_IA64</item>
+      <item>HAS_MMX</item>
+      <item>HAS_MMX_PLUS</item>
+      <item>HAS_SERIAL_NUMBER</item>
+      <item>HAS_SSE</item>
+      <item>HAS_SSE2</item>
+      <item>HAS_SSE_FP</item>
+      <item>HAS_SSE_MMX</item>
+      <item>HOST</item>
+      <item>HOSTNAME</item>
+      <item>IS_64BIT</item>
+      <item>LOCALE_CHARSET</item>
+      <item>MSYSTEM_PREFIX</item>
+      <item>NUMBER_OF_LOGICAL_CORES</item>
+      <item>NUMBER_OF_PHYSICAL_CORES</item>
+      <item>OS_NAME</item>
+      <item>OS_PLATFORM</item>
+      <item>OS_RELEASE</item>
+      <item>OS_VERSION</item>
+      <item>PROCESSOR_DESCRIPTION</item>
+      <item>PROCESSOR_NAME</item>
+      <item>PROCESSOR_SERIAL_NUMBER</item>
+      <item>TARGET</item>
+      <item>TOTAL_PHYSICAL_MEMORY</item>
+      <item>TOTAL_VIRTUAL_MEMORY</item>
+    </list>
+    <list name="cmake_language_nargs">
+      <item>CALL</item>
+      <item>CANCEL_CALL</item>
+      <item>CODE</item>
+      <item>DEFER</item>
+      <item>DIRECTORY</item>
+      <item>EVAL</item>
+      <item>EXIT</item>
+      <item>EXPAND</item>
+      <item>GET_CALL</item>
+      <item>GET_CALL_IDS</item>
+      <item>GET_MESSAGE_LOG_LEVEL</item>
+      <item>ID</item>
+      <item>ID_VAR</item>
+      <item>SET_DEPENDENCY_PROVIDER</item>
+      <item>SUPPORTED_METHODS</item>
+      <item>TRACE</item>
+    </list>
+    <list name="cmake_language_sargs">
+      <item>FETCHCONTENT_MAKEAVAILABLE_SERIAL</item>
+      <item>FIND_PACKAGE</item>
+    </list>
+    <list name="cmake_minimum_required_nargs">
+      <item>FATAL_ERROR</item>
+      <item>VERSION</item>
+    </list>
+    <list name="cmake_parse_arguments_nargs">
+      <item>PARSE_ARGN</item>
+      <item>PARSE_ARGV</item>
+    </list>
+    <list name="cmake_path_nargs">
+      <item>ABSOLUTE_PATH</item>
+      <item>APPEND</item>
+      <item>APPEND_STRING</item>
+      <item>BASE_DIRECTORY</item>
+      <item>COMPARE</item>
+      <item>CONVERT</item>
+      <item>EQUAL</item>
+      <item>EXTENSION</item>
+      <item>FILENAME</item>
+      <item>GET</item>
+      <item>HASH</item>
+      <item>HAS_EXTENSION</item>
+      <item>HAS_FILENAME</item>
+      <item>HAS_PARENT_PATH</item>
+      <item>HAS_RELATIVE_PART</item>
+      <item>HAS_ROOT_DIRECTORY</item>
+      <item>HAS_ROOT_NAME</item>
+      <item>HAS_ROOT_PATH</item>
+      <item>HAS_STEM</item>
+      <item>IS_ABSOLUTE</item>
+      <item>IS_PREFIX</item>
+      <item>IS_RELATIVE</item>
+      <item>LAST_ONLY</item>
+      <item>NATIVE_PATH</item>
+      <item>NORMALIZE</item>
+      <item>NORMAL_PATH</item>
+      <item>NOT_EQUAL</item>
+      <item>OUTPUT_VARIABLE</item>
+      <item>PARENT_PATH</item>
+      <item>RELATIVE_PART</item>
+      <item>RELATIVE_PATH</item>
+      <item>REMOVE_EXTENSION</item>
+      <item>REMOVE_FILENAME</item>
+      <item>REPLACE_EXTENSION</item>
+      <item>REPLACE_FILENAME</item>
+      <item>ROOT_DIRECTORY</item>
+      <item>ROOT_NAME</item>
+      <item>ROOT_PATH</item>
+      <item>SET</item>
+      <item>STEM</item>
+      <item>TO_CMAKE_PATH_LIST</item>
+      <item>TO_NATIVE_PATH_LIST</item>
+    </list>
+    <list name="cmake_pkg_config_nargs">
+      <item>ALLOW_SYSTEM_INCLUDES</item>
+      <item>ALLOW_SYSTEM_LIBS</item>
+      <item>BIND_PC_REQUIRES</item>
+      <item>DISABLE_UNINSTALLED</item>
+      <item>ENV_MODE</item>
+      <item>EXACT</item>
+      <item>EXTRACT</item>
+      <item>IMPORT</item>
+      <item>NAME</item>
+      <item>PC_LIBDIR</item>
+      <item>PC_PATH</item>
+      <item>PC_SYSROOT_DIR</item>
+      <item>POPULATE</item>
+      <item>PREFIX</item>
+      <item>QUIET</item>
+      <item>REQUIRED</item>
+      <item>STRICTNESS</item>
+      <item>SYSTEM_INCLUDE_DIRS</item>
+      <item>SYSTEM_LIBRARY_DIRS</item>
+      <item>TOP_BUILD_DIR</item>
+    </list>
+    <list name="cmake_pkg_config_sargs">
+      <item>BEST_EFFORT</item>
+      <item>FDO</item>
+      <item>IGNORE</item>
+      <item>PERMISSIVE</item>
+      <item>PKGCONF</item>
+      <item>STRICT</item>
+    </list>
+    <list name="cmake_policy_nargs">
+      <item>GET</item>
+      <item>POP</item>
+      <item>PUSH</item>
+      <item>SET</item>
+      <item>VERSION</item>
+    </list>
+    <list name="cmake_policy_sargs">
+      <item>NEW</item>
+      <item>OLD</item>
+    </list>
+    <list name="configure_file_nargs">
+      <item>@ONLY</item>
+      <item>COPYONLY</item>
+      <item>ESCAPE_QUOTES</item>
+      <item>FILE_PERMISSIONS</item>
+      <item>NEWLINE_STYLE</item>
+      <item>NO_SOURCE_PERMISSIONS</item>
+      <item>USE_SOURCE_PERMISSIONS</item>
+    </list>
+    <list name="configure_file_sargs">
+      <item>CRLF</item>
+      <item>DOS</item>
+      <item>LF</item>
+      <item>UNIX</item>
+      <item>WIN32</item>
+    </list>
+    <list name="elseif_nargs">
+      <item>AND</item>
+      <item>COMMAND</item>
+      <item>DEFINED</item>
+      <item>DIAGNOSTIC</item>
+      <item>EQUAL</item>
+      <item>EXISTS</item>
+      <item>GREATER</item>
+      <item>GREATER_EQUAL</item>
+      <item>IN_LIST</item>
+      <item>IS_ABSOLUTE</item>
+      <item>IS_DIRECTORY</item>
+      <item>IS_EXECUTABLE</item>
+      <item>IS_NEWER_THAN</item>
+      <item>IS_READABLE</item>
+      <item>IS_SYMLINK</item>
+      <item>IS_WRITABLE</item>
+      <item>LESS</item>
+      <item>LESS_EQUAL</item>
+      <item>MATCHES</item>
+      <item>NOT</item>
+      <item>OR</item>
+      <item>PATH_EQUAL</item>
+      <item>POLICY</item>
+      <item>STREQUAL</item>
+      <item>STRGREATER</item>
+      <item>STRGREATER_EQUAL</item>
+      <item>STRLESS</item>
+      <item>STRLESS_EQUAL</item>
+      <item>TARGET</item>
+      <item>TEST</item>
+      <item>VERSION_EQUAL</item>
+      <item>VERSION_GREATER</item>
+      <item>VERSION_GREATER_EQUAL</item>
+      <item>VERSION_LESS</item>
+      <item>VERSION_LESS_EQUAL</item>
+    </list>
+    <list name="execute_process_nargs">
+      <item>COMMAND</item>
+      <item>COMMAND_ECHO</item>
+      <item>COMMAND_ERROR_IS_FATAL</item>
+      <item>ECHO_ERROR_VARIABLE</item>
+      <item>ECHO_OUTPUT_VARIABLE</item>
+      <item>ENCODING</item>
+      <item>ENVIRONMENT</item>
+      <item>ENVIRONMENT_MODIFICATION</item>
+      <item>ERROR_FILE</item>
+      <item>ERROR_QUIET</item>
+      <item>ERROR_STRIP_TRAILING_WHITESPACE</item>
+      <item>ERROR_VARIABLE</item>
+      <item>INPUT_FILE</item>
+      <item>OUTPUT_FILE</item>
+      <item>OUTPUT_QUIET</item>
+      <item>OUTPUT_STRIP_TRAILING_WHITESPACE</item>
+      <item>OUTPUT_VARIABLE</item>
+      <item>RESULTS_VARIABLE</item>
+      <item>RESULT_VARIABLE</item>
+      <item>TIMEOUT</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="execute_process_sargs">
+      <item>ANSI</item>
+      <item>ANY</item>
+      <item>AUTO</item>
+      <item>LAST</item>
+      <item>NONE</item>
+      <item>OEM</item>
+      <item>STDERR</item>
+      <item>STDOUT</item>
+      <item>UTF8</item>
+    </list>
+    <list name="file_nargs">
+      <item>@ONLY</item>
+      <item>APPEND</item>
+      <item>ARCHIVE_CREATE</item>
+      <item>ARCHIVE_EXTRACT</item>
+      <item>BASE_DIRECTORY</item>
+      <item>BUNDLE_EXECUTABLE</item>
+      <item>CHMOD</item>
+      <item>CHMOD_RECURSE</item>
+      <item>COMPRESSION</item>
+      <item>COMPRESSION_LEVEL</item>
+      <item>CONDITION</item>
+      <item>CONFIGURE</item>
+      <item>CONFIGURE_DEPENDS</item>
+      <item>CONTENT</item>
+      <item>COPY</item>
+      <item>COPY_FILE</item>
+      <item>DESTINATION</item>
+      <item>DIRECTORIES</item>
+      <item>DIRECTORY</item>
+      <item>DIRECTORY_PERMISSIONS</item>
+      <item>DOWNLOAD</item>
+      <item>ENCODING</item>
+      <item>ESCAPE_QUOTES</item>
+      <item>EXCLUDE</item>
+      <item>EXECUTABLES</item>
+      <item>EXPAND_TILDE</item>
+      <item>EXPECTED_HASH</item>
+      <item>EXPECTED_MD5</item>
+      <item>FILES</item>
+      <item>FILES_MATCHING</item>
+      <item>FILE_PERMISSIONS</item>
+      <item>FOLLOW_SYMLINKS</item>
+      <item>FOLLOW_SYMLINK_CHAIN</item>
+      <item>FORMAT</item>
+      <item>GENERATE</item>
+      <item>GET_RUNTIME_DEPENDENCIES</item>
+      <item>GLOB</item>
+      <item>GLOB_RECURSE</item>
+      <item>GUARD</item>
+      <item>HEX</item>
+      <item>HTTPHEADER</item>
+      <item>INACTIVITY_TIMEOUT</item>
+      <item>INPUT</item>
+      <item>INSTALL</item>
+      <item>LENGTH_MAXIMUM</item>
+      <item>LENGTH_MINIMUM</item>
+      <item>LIBRARIES</item>
+      <item>LIMIT</item>
+      <item>LIMIT_COUNT</item>
+      <item>LIMIT_INPUT</item>
+      <item>LIMIT_OUTPUT</item>
+      <item>LIST_DIRECTORIES</item>
+      <item>LIST_ONLY</item>
+      <item>LOCK</item>
+      <item>LOG</item>
+      <item>MAKE_DIRECTORY</item>
+      <item>MD5</item>
+      <item>MODULES</item>
+      <item>MTIME</item>
+      <item>NETRC</item>
+      <item>NETRC_FILE</item>
+      <item>NEWLINE_CONSUME</item>
+      <item>NEWLINE_STYLE</item>
+      <item>NO_HEX_CONVERSION</item>
+      <item>NO_REPLACE</item>
+      <item>NO_SOURCE_PERMISSIONS</item>
+      <item>OFFSET</item>
+      <item>ONLY_IF_DIFFERENT</item>
+      <item>OUTPUT</item>
+      <item>PATTERN</item>
+      <item>PERMISSIONS</item>
+      <item>POST_EXCLUDE_FILES</item>
+      <item>POST_EXCLUDE_REGEXES</item>
+      <item>POST_INCLUDE_FILES</item>
+      <item>POST_INCLUDE_REGEXES</item>
+      <item>PRE_EXCLUDE_REGEXES</item>
+      <item>PRE_INCLUDE_REGEXES</item>
+      <item>RANGE_END</item>
+      <item>RANGE_START</item>
+      <item>READ</item>
+      <item>READ_SYMLINK</item>
+      <item>REAL_PATH</item>
+      <item>REGEX</item>
+      <item>RELATIVE</item>
+      <item>RELATIVE_PATH</item>
+      <item>RELEASE</item>
+      <item>REMOVE</item>
+      <item>REMOVE_RECURSE</item>
+      <item>RENAME</item>
+      <item>RESOLVED_DEPENDENCIES_VAR</item>
+      <item>RESULT</item>
+      <item>RESULT_VARIABLE</item>
+      <item>SHA1</item>
+      <item>SHA224</item>
+      <item>SHA256</item>
+      <item>SHA384</item>
+      <item>SHA3_224</item>
+      <item>SHA3_256</item>
+      <item>SHA3_384</item>
+      <item>SHA3_512</item>
+      <item>SHA512</item>
+      <item>SHOW_PROGRESS</item>
+      <item>SIZE</item>
+      <item>STATUS</item>
+      <item>STRINGS</item>
+      <item>TARGET</item>
+      <item>THREADS</item>
+      <item>TIMEOUT</item>
+      <item>TIMESTAMP</item>
+      <item>TLS_CAINFO</item>
+      <item>TLS_VERIFY</item>
+      <item>TLS_VERSION</item>
+      <item>TOUCH</item>
+      <item>TOUCH_NOCREATE</item>
+      <item>TO_CMAKE_PATH</item>
+      <item>TO_NATIVE_PATH</item>
+      <item>UNRESOLVED_DEPENDENCIES_VAR</item>
+      <item>UPLOAD</item>
+      <item>USERPWD</item>
+      <item>USE_SOURCE_PERMISSIONS</item>
+      <item>UTC</item>
+      <item>VERBOSE</item>
+      <item>WORKING_DIRECTORY</item>
+      <item>WRITE</item>
+    </list>
+    <list name="file_sargs">
+      <item>7zip</item>
+      <item>BZip2</item>
+      <item>CRLF</item>
+      <item>DOS</item>
+      <item>Deflate</item>
+      <item>FILE</item>
+      <item>FUNCTION</item>
+      <item>GROUP_EXECUTE</item>
+      <item>GROUP_READ</item>
+      <item>GROUP_WRITE</item>
+      <item>GZip</item>
+      <item>IGNORED</item>
+      <item>LF</item>
+      <item>LZMA</item>
+      <item>LZMA2</item>
+      <item>None</item>
+      <item>OPTIONAL</item>
+      <item>OWNER_EXECUTE</item>
+      <item>OWNER_READ</item>
+      <item>OWNER_WRITE</item>
+      <item>PPMd</item>
+      <item>PROCESS</item>
+      <item>REQUIRED</item>
+      <item>SETGID</item>
+      <item>SETUID</item>
+      <item>UNIX</item>
+      <item>UTF-16BE</item>
+      <item>UTF-16LE</item>
+      <item>UTF-32B</item>
+      <item>UTF-32LE</item>
+      <item>UTF-8</item>
+      <item>WIN32</item>
+      <item>WORLD_EXECUTE</item>
+      <item>WORLD_READ</item>
+      <item>WORLD_WRITE</item>
+      <item>XZ</item>
+      <item>Zstd</item>
+      <item>gnutar</item>
+      <item>pax</item>
+      <item>paxr</item>
+      <item>raw</item>
+      <item>zip</item>
+    </list>
+    <list name="find_file_nargs">
+      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
+      <item>DOC</item>
+      <item>HINTS</item>
+      <item>NAMES</item>
+      <item>NO_CACHE</item>
+      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
+      <item>NO_CMAKE_FIND_ROOT_PATH</item>
+      <item>NO_CMAKE_INSTALL_PREFIX</item>
+      <item>NO_CMAKE_PATH</item>
+      <item>NO_CMAKE_SYSTEM_PATH</item>
+      <item>NO_DEFAULT_PATH</item>
+      <item>NO_PACKAGE_ROOT_PATH</item>
+      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
+      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
+      <item>PATHS</item>
+      <item>PATH_SUFFIXES</item>
+      <item>REGISTRY_VIEW</item>
+      <item>REQUIRED</item>
+      <item>VALIDATOR</item>
+    </list>
+    <list name="find_file_sargs">
+      <item>32</item>
+      <item>32_64</item>
+      <item>64</item>
+      <item>64_32</item>
+      <item>BOTH</item>
+      <item>HOST</item>
+      <item>TARGET</item>
+    </list>
+    <list name="find_library_nargs">
+      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
+      <item>DOC</item>
+      <item>HINTS</item>
+      <item>NAMES</item>
+      <item>NAMES_PER_DIR</item>
+      <item>NO_CACHE</item>
+      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
+      <item>NO_CMAKE_FIND_ROOT_PATH</item>
+      <item>NO_CMAKE_INSTALL_PREFIX</item>
+      <item>NO_CMAKE_PATH</item>
+      <item>NO_CMAKE_SYSTEM_PATH</item>
+      <item>NO_DEFAULT_PATH</item>
+      <item>NO_PACKAGE_ROOT_PATH</item>
+      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
+      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
+      <item>PATHS</item>
+      <item>PATH_SUFFIXES</item>
+      <item>REGISTRY_VIEW</item>
+      <item>REQUIRED</item>
+      <item>VALIDATOR</item>
+    </list>
+    <list name="find_package_nargs">
+      <item>BYPASS_PROVIDER</item>
+      <item>CMAKE_FIND_ROOT_PATH_BOTH</item>
+      <item>COMPONENTS</item>
+      <item>CONFIG</item>
+      <item>CONFIGS</item>
+      <item>EXACT</item>
+      <item>GLOBAL</item>
+      <item>HINTS</item>
+      <item>MODULE</item>
+      <item>NAMES</item>
+      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
+      <item>NO_CMAKE_FIND_ROOT_PATH</item>
+      <item>NO_CMAKE_INSTALL_PREFIX</item>
+      <item>NO_CMAKE_PACKAGE_REGISTRY</item>
+      <item>NO_CMAKE_PATH</item>
+      <item>NO_CMAKE_SYSTEM_PACKAGE_REGISTRY</item>
+      <item>NO_CMAKE_SYSTEM_PATH</item>
+      <item>NO_DEFAULT_PATH</item>
+      <item>NO_MODULE</item>
+      <item>NO_PACAKGE_ROOT_PATH</item>
+      <item>NO_POLICY_SCOPE</item>
+      <item>NO_SYSTEM_ENVIRONMENT_PATH</item>
+      <item>ONLY_CMAKE_FIND_ROOT_PATH</item>
+      <item>OPTIONAL_COMPONENTS</item>
+      <item>PATHS</item>
+      <item>PATH_SUFFIXES</item>
+      <item>QUIET</item>
+      <item>REGISTRY_VIEW</item>
+      <item>REQUIRED</item>
+    </list>
+    <list name="foreach_nargs">
+      <item>IN</item>
+      <item>ITEMS</item>
+      <item>LISTS</item>
+      <item>RANGE</item>
+      <item>ZIP_LISTS</item>
+    </list>
+    <list name="get_cmake_property_sargs">
+      <item>CACHE_VARIABLES</item>
+      <item>COMMANDS</item>
+      <item>COMPONENTS</item>
+      <item>MACROS</item>
+      <item>VARIABLES</item>
+    </list>
+    <list name="get_directory_property_nargs">
+      <item>DEFINITION</item>
+      <item>DIRECTORY</item>
+    </list>
+    <list name="get_filename_component_nargs">
+      <item>ABSOLUTE</item>
+      <item>BASE_DIR</item>
+      <item>CACHE</item>
+      <item>DIRECTORY</item>
+      <item>EXT</item>
+      <item>LAST_EXT</item>
+      <item>NAME</item>
+      <item>NAME_WE</item>
+      <item>NAME_WLE</item>
+      <item>PATH</item>
+      <item>PROGRAM</item>
+      <item>PROGRAM_ARGS</item>
+      <item>REALPATH</item>
+    </list>
+    <list name="get_property_nargs">
+      <item>BRIEF_DOCS</item>
+      <item>CACHE</item>
+      <item>DEFINED</item>
+      <item>DIRECTORY</item>
+      <item>FILE_SET</item>
+      <item>FULL_DOCS</item>
+      <item>GLOBAL</item>
+      <item>INSTALL</item>
+      <item>PROPERTY</item>
+      <item>SET</item>
+      <item>SOURCE</item>
+      <item>TARGET</item>
+      <item>TARGET_DIRECTORY</item>
+      <item>TEST</item>
+      <item>VARIABLE</item>
+    </list>
+    <list name="include_nargs">
+      <item>NO_DIAGNOSTIC_SCOPE</item>
+      <item>NO_POLICY_SCOPE</item>
+      <item>OPTIONAL</item>
+      <item>RESULT_VARIABLE</item>
+    </list>
+    <list name="include_guard_nargs">
+      <item>DIRECTORY</item>
+      <item>GLOBAL</item>
+    </list>
+    <list name="list_nargs">
+      <item>APPEND</item>
+      <item>APPLY</item>
+      <item>AT</item>
+      <item>CASE</item>
+      <item>COMPARATOR</item>
+      <item>COMPARE</item>
+      <item>EXCLUDE</item>
+      <item>FILTER</item>
+      <item>FIND</item>
+      <item>FOR</item>
+      <item>GENEX_STRIP</item>
+      <item>GET</item>
+      <item>INCLUDE</item>
+      <item>INSERT</item>
+      <item>JOIN</item>
+      <item>LENGTH</item>
+      <item>ORDER</item>
+      <item>OUTPUT_VARIABLE</item>
+      <item>POP_BACK</item>
+      <item>POP_FRONT</item>
+      <item>PREDICATE</item>
+      <item>PREPEND</item>
+      <item>REGEX</item>
+      <item>REMOVE_AT</item>
+      <item>REMOVE_DUPLICATES</item>
+      <item>REMOVE_ITEM</item>
+      <item>REPLACE</item>
+      <item>REVERSE</item>
+      <item>SORT</item>
+      <item>STRIP</item>
+      <item>SUBLIST</item>
+      <item>TOLOWER</item>
+      <item>TRANSFORM</item>
+    </list>
+    <list name="list_sargs">
+      <item>ASCENDING</item>
+      <item>DESCENDING</item>
+      <item>FILE_BASENAME</item>
+      <item>INSENSITIVE</item>
+      <item>NATURAL</item>
+      <item>SENSITIVE</item>
+      <item>STRING</item>
+    </list>
+    <list name="mark_as_advanced_nargs">
+      <item>CLEAR</item>
+      <item>FORCE</item>
+    </list>
+    <list name="math_nargs">
+      <item>EXPR</item>
+      <item>OUTPUT_FORMAT</item>
+    </list>
+    <list name="math_sargs">
+      <item>DECIMAL</item>
+      <item>HEXADECIMAL</item>
+    </list>
+    <list name="message_nargs">
+      <item>AUTHOR_WARNING</item>
+      <item>CHECK_FAIL</item>
+      <item>CHECK_PASS</item>
+      <item>CHECK_START</item>
+      <item>CONFIGURE_LOG</item>
+      <item>DEBUG</item>
+      <item>DEPRECATION</item>
+      <item>FATAL_ERROR</item>
+      <item>NOTICE</item>
+      <item>SEND_ERROR</item>
+      <item>STATUS</item>
+      <item>TRACE</item>
+      <item>VERBOSE</item>
+      <item>WARNING</item>
+    </list>
+    <list name="return_nargs">
+      <item>PROPAGATE</item>
+    </list>
+    <list name="separate_arguments_nargs">
+      <item>NATIVE_COMMAND</item>
+      <item>PROGRAM</item>
+      <item>SEPARATE_ARGS</item>
+      <item>UNIX_COMMAND</item>
+      <item>WINDOWS_COMMAND</item>
+    </list>
+    <list name="set_directory_properties_nargs">
+      <item>PROPERTIES</item>
+    </list>
+    <list name="set_property_nargs">
+      <item>APPEND</item>
+      <item>APPEND_STRING</item>
+      <item>CACHE</item>
+      <item>DIRECTORY</item>
+      <item>FILE_SET</item>
+      <item>GLOBAL</item>
+      <item>INSTALL</item>
+      <item>PROPERTY</item>
+      <item>SOURCE</item>
+      <item>TARGET</item>
+      <item>TARGET_DIRECTORY</item>
+      <item>TEST</item>
+      <item>VARIABLE</item>
+    </list>
+    <list name="set_nargs">
+      <item>CACHE</item>
+      <item>FORCE</item>
+      <item>PARENT_SCOPE</item>
+    </list>
+    <list name="set_sargs">
+      <item>BOOL</item>
+      <item>FILEPATH</item>
+      <item>INTERNAL</item>
+      <item>PATH</item>
+      <item>STATIC</item>
+      <item>STRING</item>
+    </list>
+    <list name="string_nargs">
+      <item>@ONLY</item>
+      <item>ALPHABET</item>
+      <item>APPEND</item>
+      <item>ASCII</item>
+      <item>COMPARE</item>
+      <item>CONCAT</item>
+      <item>CONFIGURE</item>
+      <item>EQUAL</item>
+      <item>ERROR_VARIABLE</item>
+      <item>ESCAPE_QUOTES</item>
+      <item>FIND</item>
+      <item>GENEX_STRIP</item>
+      <item>GET</item>
+      <item>GET_RAW</item>
+      <item>GREATER</item>
+      <item>GREATER_EQUAL</item>
+      <item>HEX</item>
+      <item>JOIN</item>
+      <item>JSON</item>
+      <item>LENGTH</item>
+      <item>LESS</item>
+      <item>LESS_EQUAL</item>
+      <item>MAKE_C_IDENTIFIER</item>
+      <item>MATCH</item>
+      <item>MATCHALL</item>
+      <item>MD5</item>
+      <item>MEMBER</item>
+      <item>NAME</item>
+      <item>NAMESPACE</item>
+      <item>NOTEQUAL</item>
+      <item>PARTIAL_EQUAL</item>
+      <item>PREPEND</item>
+      <item>QUOTE</item>
+      <item>RANDOM</item>
+      <item>RANDOM_SEED</item>
+      <item>REGEX</item>
+      <item>REMOVE</item>
+      <item>REPEAT</item>
+      <item>REPLACE</item>
+      <item>REVERSE</item>
+      <item>SET</item>
+      <item>SHA1</item>
+      <item>SHA224</item>
+      <item>SHA256</item>
+      <item>SHA384</item>
+      <item>SHA3_224</item>
+      <item>SHA3_256</item>
+      <item>SHA3_384</item>
+      <item>SHA3_512</item>
+      <item>SHA512</item>
+      <item>STRING_ENCODE</item>
+      <item>STRIP</item>
+      <item>SUBSTRING</item>
+      <item>TIMESTAMP</item>
+      <item>TOLOWER</item>
+      <item>TOUPPER</item>
+      <item>TYPE</item>
+      <item>UPPER</item>
+      <item>UTC</item>
+      <item>UUID</item>
+    </list>
+    <list name="unset_nargs">
+      <item>CACHE</item>
+      <item>PARENT_SCOPE</item>
+    </list>
+    <list name="add_custom_command_nargs">
+      <item>APPEND</item>
+      <item>ARGS</item>
+      <item>BYPRODUCTS</item>
+      <item>CODEGEN</item>
+      <item>COMMAND</item>
+      <item>COMMAND_EXPAND_LISTS</item>
+      <item>COMMENT</item>
+      <item>DEPENDS</item>
+      <item>DEPENDS_EXPLICIT_ONLY</item>
+      <item>DEPFILE</item>
+      <item>IMPLICIT_DEPENDS</item>
+      <item>JOB_POOL</item>
+      <item>JOB_SERVER_AWARE</item>
+      <item>MAIN_DEPENDENCY</item>
+      <item>OUTPUT</item>
+      <item>POST_BUILD</item>
+      <item>PRE_BUILD</item>
+      <item>PRE_LINK</item>
+      <item>TARGET</item>
+      <item>USES_TERMINAL</item>
+      <item>VERBATIM</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="add_custom_target_nargs">
+      <item>ALL</item>
+      <item>APPEND</item>
+      <item>BYPRODUCTS</item>
+      <item>COMMAND</item>
+      <item>COMMAND_EXPAND_LISTS</item>
+      <item>COMMENT</item>
+      <item>DEPENDS</item>
+      <item>DEPFILE</item>
+      <item>IMPLICIT_DEPENDS</item>
+      <item>JOB_POOL</item>
+      <item>JOB_SERVER_AWARE</item>
+      <item>SOURCES</item>
+      <item>USES_TERMINAL</item>
+      <item>VERBATIM</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="add_executable_nargs">
+      <item>ALIAS</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>GLOBAL</item>
+      <item>IMPORTED</item>
+      <item>MACOSX_BUNDLE</item>
+      <item>WIN32</item>
+    </list>
+    <list name="add_library_nargs">
+      <item>ALIAS</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>GLOBAL</item>
+      <item>IMPORTED</item>
+      <item>INTERFACE</item>
+      <item>MODULE</item>
+      <item>OBJECT</item>
+      <item>SHARED</item>
+      <item>STATIC</item>
+      <item>UNKNOWN</item>
+    </list>
+    <list name="add_subdirectory_nargs">
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>SYSTEM</item>
+    </list>
+    <list name="add_test_nargs">
+      <item>COMMAND</item>
+      <item>COMMAND_EXPAND_LISTS</item>
+      <item>CONFIGURATIONS</item>
+      <item>NAME</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="build_command_nargs">
+      <item>CONFIGURATION</item>
+      <item>PARALLEL_LEVEL</item>
+      <item>TARGET</item>
+    </list>
+    <list name="cmake_file_api_nargs">
+      <item>API_VERSION</item>
+      <item>CACHE</item>
+      <item>CMAKEFILES</item>
+      <item>CODEMODEL</item>
+      <item>QUERY</item>
+      <item>TOOLCHAINS</item>
+    </list>
+    <list name="cmake_instrumentation_nargs">
+      <item>API_VERSION</item>
+      <item>CALLBACK</item>
+      <item>CUSTOM_CONTENT</item>
+      <item>DATA_VERSION</item>
+      <item>HOOKS</item>
+      <item>OPTIONS</item>
+    </list>
+    <list name="cmake_instrumentation_sargs">
+      <item>BOOL</item>
+      <item>JSON</item>
+      <item>LIST</item>
+      <item>STRING</item>
+    </list>
+    <list name="create_test_sourcelist_nargs">
+      <item>EXTRA_INCLUDE</item>
+      <item>FUNCTION</item>
+    </list>
+    <list name="define_property_nargs">
+      <item>BRIEF_DOCS</item>
+      <item>CACHED_VARIABLE</item>
+      <item>DIRECTORY</item>
+      <item>FULL_DOCS</item>
+      <item>GLOBAL</item>
+      <item>INHERITED</item>
+      <item>INITIALIZE_FROM_VARIABLE</item>
+      <item>PROPERTY</item>
+      <item>SOURCE</item>
+      <item>TEST</item>
+      <item>VARIABLE</item>
+    </list>
+    <list name="discover_tests_nargs">
+      <item>COMMAND</item>
+      <item>COMMAND_EXPAND_LISTS</item>
+      <item>CONFIGURATIONS</item>
+      <item>DISCOVERY_ARGS</item>
+      <item>DISCOVERY_MATCH</item>
+      <item>DISCOVERY_PROPERTIES</item>
+      <item>TEST_ARGS</item>
+      <item>TEST_NAME</item>
+      <item>TEST_PROPERTIES</item>
+    </list>
+    <list name="enable_language_nargs">
+      <item>OPTIONAL</item>
+    </list>
+    <list name="enable_language_sargs">
+      <item>ASM</item>
+      <item>ASM-ATT</item>
+      <item>ASM_MARMASM</item>
+      <item>ASM_MASM</item>
+      <item>ASM_NASM</item>
+      <item>ASM_POASM</item>
+      <item>C</item>
+      <item>CSharp</item>
+      <item>CUDA</item>
+      <item>CXX</item>
+      <item>Fortran</item>
+      <item>HIP</item>
+      <item>ISPC</item>
+      <item>Java</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
+      <item>RC</item>
+      <item>Swift</item>
+    </list>
+    <list name="export_nargs">
+      <item>ANDROID_MK</item>
+      <item>APPEND</item>
+      <item>APPENDIX</item>
+      <item>AUTO</item>
+      <item>COMPAT_VERSION</item>
+      <item>CXX_MODULES_DIRECTORY</item>
+      <item>DEFAULT_CONFIGURATIONS</item>
+      <item>DEFAULT_LICENSE</item>
+      <item>DEFAULT_TARGETS</item>
+      <item>DESCRIPTION</item>
+      <item>ENABLED</item>
+      <item>EXPORT</item>
+      <item>EXPORT_LINK_INTERFACE_LIBRARIES</item>
+      <item>FILE</item>
+      <item>FORMAT</item>
+      <item>HOMEPAGE_URL</item>
+      <item>LICENSE</item>
+      <item>LOWER_CASE_FILE</item>
+      <item>NAMESPACE</item>
+      <item>NO_PROJECT_METADATA</item>
+      <item>PACKAGE_DEPENDENCY</item>
+      <item>PACKAGE_INFO</item>
+      <item>PACKAGE_URL</item>
+      <item>PROJECT</item>
+      <item>SBOM</item>
+      <item>SETUP</item>
+      <item>TARGET</item>
+      <item>TARGETS</item>
+      <item>VERSION</item>
+      <item>VERSION_SCHEMA</item>
+      <item>XCFRAMEWORK_LOCATION</item>
+    </list>
+    <list name="get_source_file_property_nargs">
+      <item>DIRECTORY</item>
+      <item>TARGET_DIRECTORY</item>
+    </list>
+    <list name="get_test_property_nargs">
+      <item>DIRECTORY</item>
+    </list>
+    <list name="include_directories_nargs">
+      <item>AFTER</item>
+      <item>BEFORE</item>
+      <item>SYSTEM</item>
+    </list>
+    <list name="include_external_msproject_nargs">
+      <item>GUID</item>
+      <item>PLATFORM</item>
+      <item>TYPE</item>
+    </list>
+    <list name="install_nargs">
+      <item>APPENDIX</item>
+      <item>ARCHIVE</item>
+      <item>BUNDLE</item>
+      <item>CODE</item>
+      <item>COMPAT_VERSION</item>
+      <item>COMPONENT</item>
+      <item>CONFIGURATIONS</item>
+      <item>CXX_MODULES_DIRECTORY</item>
+      <item>DEFAULT_CONFIGURATIONS</item>
+      <item>DEFAULT_LICENSE</item>
+      <item>DEFAULT_TARGETS</item>
+      <item>DESCRIPTION</item>
+      <item>DESTINATION</item>
+      <item>DIRECTORIES</item>
+      <item>DIRECTORY</item>
+      <item>DIRECTORY_PERMISSIONS</item>
+      <item>EXCLUDE</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>EXPORT</item>
+      <item>EXPORT_ANDROID_MK</item>
+      <item>EXPORT_LINK_INTERFACE_LIBRARIES</item>
+      <item>EXPORT_PACKAGE_DEPENDENCIES</item>
+      <item>FILE</item>
+      <item>FILES</item>
+      <item>FILES_MATCHING</item>
+      <item>FILE_PERMISSIONS</item>
+      <item>FILE_SET</item>
+      <item>FORMAT</item>
+      <item>FRAMEWORK</item>
+      <item>HOMEPAGE_URL</item>
+      <item>IMPORTED_RUNTIME_ARTIFACTS</item>
+      <item>INCLUDES</item>
+      <item>LIBRARY</item>
+      <item>LICENSE</item>
+      <item>LOWER_CASE_FILE</item>
+      <item>MESSAGE_NEVER</item>
+      <item>NAMELINK_COMPONENT</item>
+      <item>NAMELINK_ONLY</item>
+      <item>NAMELINK_SKIP</item>
+      <item>NAMESPACE</item>
+      <item>NO_PROJECT_METADATA</item>
+      <item>OBJECTS</item>
+      <item>OPTIONAL</item>
+      <item>PACKAGE_INFO</item>
+      <item>PACKAGE_URL</item>
+      <item>PATTERN</item>
+      <item>PERMISSIONS</item>
+      <item>POST_EXCLUDE_FILES</item>
+      <item>POST_EXCLUDE_REGEXES</item>
+      <item>POST_INCLUDE_FILES</item>
+      <item>POST_INCLUDE_REGEXES</item>
+      <item>PRE_EXCLUDE_REGEXES</item>
+      <item>PRE_INCLUDE_REGEXES</item>
+      <item>PRIVATE_HEADER</item>
+      <item>PROGRAMS</item>
+      <item>PROJECT</item>
+      <item>PUBLIC_HEADER</item>
+      <item>REGEX</item>
+      <item>RENAME</item>
+      <item>RESOURCE</item>
+      <item>RUNTIME</item>
+      <item>RUNTIME_DEPENDENCIES</item>
+      <item>RUNTIME_DEPENDENCY_SET</item>
+      <item>SBOM</item>
+      <item>SCRIPT</item>
+      <item>TARGETS</item>
+      <item>TYPE</item>
+      <item>USE_SOURCE_PERMISSIONS</item>
+      <item>VERSION</item>
+      <item>VERSION_SCHEMA</item>
+    </list>
+    <list name="install_sargs">
+      <item>BIN</item>
+      <item>DATA</item>
+      <item>DOC</item>
+      <item>GROUP_EXECUTE</item>
+      <item>GROUP_READ</item>
+      <item>GROUP_WRITE</item>
+      <item>INCLUDE</item>
+      <item>INFO</item>
+      <item>LIB</item>
+      <item>LIBEXEC</item>
+      <item>LOCALE</item>
+      <item>LOCALSTATE</item>
+      <item>MAN</item>
+      <item>OWNER_EXECUTE</item>
+      <item>OWNER_READ</item>
+      <item>OWNER_WRITE</item>
+      <item>RUNSTATE</item>
+      <item>SBIN</item>
+      <item>SETGID</item>
+      <item>SETUID</item>
+      <item>SHAREDSTATE</item>
+      <item>SYSCONF</item>
+      <item>WORLD_EXECUTE</item>
+      <item>WORLD_READ</item>
+      <item>WORLD_WRITE</item>
+    </list>
+    <list name="link_directories_nargs">
+      <item>AFTER</item>
+      <item>BEFORE</item>
+    </list>
+    <list name="link_libraries_sargs">
+      <item>debug</item>
+      <item>general</item>
+      <item>optimized</item>
+    </list>
+    <list name="load_cache_nargs">
+      <item>EXCLUDE</item>
+      <item>INCLUDE_INTERNALS</item>
+      <item>READ_WITH_PREFIX</item>
+    </list>
+    <list name="project_nargs">
+      <item>COMPAT_VERSION</item>
+      <item>DESCRIPTION</item>
+      <item>HOMEPAGE_URL</item>
+      <item>LANGUAGES</item>
+      <item>SPDX_LICENSE</item>
+      <item>VERSION</item>
+    </list>
+    <list name="project_sargs">
+      <item>ASM</item>
+      <item>ASM-ATT</item>
+      <item>ASM_MARMASM</item>
+      <item>ASM_MASM</item>
+      <item>ASM_NASM</item>
+      <item>C</item>
+      <item>CSharp</item>
+      <item>CUDA</item>
+      <item>CXX</item>
+      <item>Fortran</item>
+      <item>HIP</item>
+      <item>ISPC</item>
+      <item>Java</item>
+      <item>NONE</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
+      <item>RC</item>
+      <item>Swift</item>
+    </list>
+    <list name="set_source_files_properties_nargs">
+      <item>DIRECTORY</item>
+      <item>PROPERTIES</item>
+      <item>TARGET_DIRECTORY</item>
+    </list>
+    <list name="set_tests_properties_nargs">
+      <item>DIRECTORY</item>
+      <item>PROPERTIES</item>
+    </list>
+    <list name="source_group_nargs">
+      <item>FILES</item>
+      <item>PREFIX</item>
+      <item>REGULAR_EXPRESSION</item>
+      <item>TREE</item>
+    </list>
+    <list name="target_compile_definitions_nargs">
+      <item>INTERFACE</item>
+      <item>PRIVATE</item>
+      <item>PUBLIC</item>
+    </list>
+    <list name="target_compile_features_sargs">
+      <item>c_function_prototypes</item>
+      <item>c_restrict</item>
+      <item>c_static_assert</item>
+      <item>c_std_11</item>
+      <item>c_std_17</item>
+      <item>c_std_23</item>
+      <item>c_std_90</item>
+      <item>c_std_99</item>
+      <item>c_variadic_macros</item>
+      <item>cuda_std_03</item>
+      <item>cuda_std_11</item>
+      <item>cuda_std_14</item>
+      <item>cuda_std_17</item>
+      <item>cuda_std_20</item>
+      <item>cuda_std_23</item>
+      <item>cuda_std_26</item>
+      <item>cxx_aggregate_default_initializers</item>
+      <item>cxx_alias_templates</item>
+      <item>cxx_alignas</item>
+      <item>cxx_alignof</item>
+      <item>cxx_attribute_deprecated</item>
+      <item>cxx_attributes</item>
+      <item>cxx_auto_type</item>
+      <item>cxx_binary_literals</item>
+      <item>cxx_constexpr</item>
+      <item>cxx_contextual_conversions</item>
+      <item>cxx_decltype</item>
+      <item>cxx_decltype_auto</item>
+      <item>cxx_decltype_incomplete_return_types</item>
+      <item>cxx_default_function_template_args</item>
+      <item>cxx_defaulted_functions</item>
+      <item>cxx_defaulted_move_initializers</item>
+      <item>cxx_delegating_constructors</item>
+      <item>cxx_deleted_functions</item>
+      <item>cxx_digit_separators</item>
+      <item>cxx_enum_forward_declarations</item>
+      <item>cxx_explicit_conversions</item>
+      <item>cxx_extended_friend_declarations</item>
+      <item>cxx_extern_templates</item>
+      <item>cxx_final</item>
+      <item>cxx_func_identifier</item>
+      <item>cxx_generalized_initializers</item>
+      <item>cxx_generic_lambdas</item>
+      <item>cxx_inheriting_constructors</item>
+      <item>cxx_inline_namespaces</item>
+      <item>cxx_lambda_init_captures</item>
+      <item>cxx_lambdas</item>
+      <item>cxx_local_type_template_args</item>
+      <item>cxx_long_long_type</item>
+      <item>cxx_noexcept</item>
+      <item>cxx_nonstatic_member_init</item>
+      <item>cxx_nullptr</item>
+      <item>cxx_override</item>
+      <item>cxx_range_for</item>
+      <item>cxx_raw_string_literals</item>
+      <item>cxx_reference_qualified_functions</item>
+      <item>cxx_relaxed_constexpr</item>
+      <item>cxx_return_type_deduction</item>
+      <item>cxx_right_angle_brackets</item>
+      <item>cxx_rvalue_references</item>
+      <item>cxx_sizeof_member</item>
+      <item>cxx_static_assert</item>
+      <item>cxx_std_11</item>
+      <item>cxx_std_14</item>
+      <item>cxx_std_17</item>
+      <item>cxx_std_20</item>
+      <item>cxx_std_23</item>
+      <item>cxx_std_26</item>
+      <item>cxx_std_98</item>
+      <item>cxx_strong_enums</item>
+      <item>cxx_template_template_parameters</item>
+      <item>cxx_thread_local</item>
+      <item>cxx_trailing_return_types</item>
+      <item>cxx_unicode_literals</item>
+      <item>cxx_uniform_initialization</item>
+      <item>cxx_unrestricted_unions</item>
+      <item>cxx_user_literals</item>
+      <item>cxx_variable_templates</item>
+      <item>cxx_variadic_macros</item>
+      <item>cxx_variadic_templates</item>
+    </list>
+    <list name="target_compile_options_nargs">
+      <item>BEFORE</item>
+      <item>INTERFACE</item>
+      <item>PRIVATE</item>
+      <item>PUBLIC</item>
+    </list>
+    <list name="target_include_directories_nargs">
+      <item>AFTER</item>
+      <item>BEFORE</item>
+      <item>INTERFACE</item>
+      <item>PRIVATE</item>
+      <item>PUBLIC</item>
+      <item>SYSTEM</item>
+    </list>
+    <list name="target_precompile_headers_nargs">
+      <item>INTERFACE</item>
+      <item>PRIVATE</item>
+      <item>PUBLIC</item>
+      <item>REUSE_FROM</item>
+    </list>
+    <list name="target_sources_nargs">
+      <item>BASE_DIRS</item>
+      <item>FILES</item>
+      <item>FILE_SET</item>
+      <item>INTERFACE</item>
+      <item>PRIVATE</item>
+      <item>PUBLIC</item>
+      <item>TYPE</item>
+    </list>
+    <list name="target_sources_sargs">
+      <item>CXX_MODULES</item>
+      <item>HEADERS</item>
+      <item>SOURCES</item>
+    </list>
+    <list name="try_compile_nargs">
+      <item>BINARY_DIR</item>
+      <item>CMAKE_FLAGS</item>
+      <item>COMPILE_DEFINITIONS</item>
+      <item>COPY_FILE</item>
+      <item>COPY_FILE_ERROR</item>
+      <item>LINK_LIBRARIES</item>
+      <item>LINK_OPTIONS</item>
+      <item>LOG_DESCRIPTION</item>
+      <item>NO_CACHE</item>
+      <item>NO_LOG</item>
+      <item>OUTPUT_VARIABLE</item>
+      <item>PROJECT</item>
+      <item>SOURCES</item>
+      <item>SOURCE_DIR</item>
+      <item>SOURCE_FROM_CONTENT</item>
+      <item>SOURCE_FROM_FILE</item>
+      <item>SOURCE_FROM_VAR</item>
+      <item>TARGET</item>
+    </list>
+    <list name="try_run_nargs">
+      <item>ARGS</item>
+      <item>CMAKE_FLAGS</item>
+      <item>COMPILE_DEFINITIONS</item>
+      <item>COMPILE_OUTPUT_VARIABLE</item>
+      <item>COMPILE_RESULT_VAR</item>
+      <item>COPY_FILE</item>
+      <item>COPY_FILE_ERROR</item>
+      <item>LINK_LIBRARIES</item>
+      <item>LINK_OPTIONS</item>
+      <item>LOG_DESCRIPTION</item>
+      <item>NO_CACHE</item>
+      <item>NO_LOG</item>
+      <item>OUTPUT_VARIABLE</item>
+      <item>RUN_OUTPUT_STDERR_VARIABLE</item>
+      <item>RUN_OUTPUT_STDOUT_VARIABLE</item>
+      <item>RUN_OUTPUT_VARIABLE</item>
+      <item>RUN_RESULT_VAR</item>
+      <item>SOURCES</item>
+      <item>SOURCE_FROM_CONTENT</item>
+      <item>SOURCE_FROM_FILE</item>
+      <item>SOURCE_FROM_VAR</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="ctest_build_nargs">
+      <item>APPEND</item>
+      <item>BUILD</item>
+      <item>CAPTURE_CMAKE_ERROR</item>
+      <item>CONFIGURATION</item>
+      <item>FLAGS</item>
+      <item>NUMBER_ERRORS</item>
+      <item>NUMBER_WARNINGS</item>
+      <item>PARALLEL_LEVEL</item>
+      <item>PRESET</item>
+      <item>PRESETS_FILE</item>
+      <item>PROJECT_NAME</item>
+      <item>RETURN_VALUE</item>
+      <item>TARGET</item>
+    </list>
+    <list name="ctest_configure_nargs">
+      <item>APPEND</item>
+      <item>BUILD</item>
+      <item>CAPTURE_CMAKE_ERROR</item>
+      <item>OPTIONS</item>
+      <item>PRESET</item>
+      <item>PRESETS_FILE</item>
+      <item>QUIET</item>
+      <item>RETURN_VALUE</item>
+      <item>SOURCE</item>
+    </list>
+    <list name="ctest_coverage_nargs">
+      <item>APPEND</item>
+      <item>BUILD</item>
+      <item>CAPTURE_CMAKE_ERROR</item>
+      <item>LABELS</item>
+      <item>QUIET</item>
+      <item>RETURN_VALUE</item>
+    </list>
+    <list name="ctest_memcheck_nargs">
+      <item>APPEND</item>
+      <item>BUILD</item>
+      <item>CAPTURE_CMAKE_ERROR</item>
+      <item>DEFECT_COUNT</item>
+      <item>END</item>
+      <item>EXCLUDE</item>
+      <item>EXCLUDE_FIXTURE</item>
+      <item>EXCLUDE_FIXTURE_CLEANUP</item>
+      <item>EXCLUDE_FIXTURE_SETUP</item>
+      <item>EXCLUDE_LABEL</item>
+      <item>INCLUDE</item>
+      <item>INCLUDE_LABEL</item>
+      <item>OUTPUT_JUNIT</item>
+      <item>PARALLEL_LEVEL</item>
+      <item>PRESET</item>
+      <item>PRESETS_FILE</item>
+      <item>QUIET</item>
+      <item>REPEAT</item>
+      <item>RESOURCE_SPEC_FILE</item>
+      <item>RETURN_VALUE</item>
+      <item>SCHEDULE_RANDOM</item>
+      <item>START</item>
+      <item>STOP_ON_FAILURE</item>
+      <item>STOP_TIME</item>
+      <item>STRIDE</item>
+      <item>TEST_LOAD</item>
+    </list>
+    <list name="ctest_run_script_nargs">
+      <item>NEW_PROCESS</item>
+      <item>RETURN_VALUE</item>
+    </list>
+    <list name="ctest_start_nargs">
+      <item>APPEND</item>
+      <item>QUIET</item>
+      <item>TRACK</item>
+    </list>
+    <list name="ctest_submit_nargs">
+      <item>BUILD_ID</item>
+      <item>CDASH_UPLOAD</item>
+      <item>CDASH_UPLOAD_TYPE</item>
+      <item>FILES</item>
+      <item>HTTPHEADER</item>
+      <item>PARTS</item>
+      <item>QUIET</item>
+      <item>RETRY_COUNT</item>
+      <item>RETRY_DELAY</item>
+      <item>RETURN_VALUE</item>
+      <item>SUBMIT_URL</item>
+    </list>
+    <list name="ctest_test_nargs">
+      <item>APPEND</item>
+      <item>BUILD</item>
+      <item>CAPTURE_CMAKE_ERROR</item>
+      <item>END</item>
+      <item>EXCLUDE</item>
+      <item>EXCLUDE_FIXTURE</item>
+      <item>EXCLUDE_FIXTURE_CLEANUP</item>
+      <item>EXCLUDE_FIXTURE_SETUP</item>
+      <item>EXCLUDE_FROM_FILE</item>
+      <item>EXCLUDE_LABEL</item>
+      <item>INCLUDE</item>
+      <item>INCLUDE_FROM_FILE</item>
+      <item>INCLUDE_LABEL</item>
+      <item>OUTPUT_JUNIT</item>
+      <item>PARALLEL_LEVEL</item>
+      <item>PRESET</item>
+      <item>PRESETS_FILE</item>
+      <item>QUIET</item>
+      <item>REPEAT</item>
+      <item>RESOURCE_SPEC_FILE</item>
+      <item>RETURN_VALUE</item>
+      <item>SCHEDULE_RANDOM</item>
+      <item>START</item>
+      <item>STOP_ON_FAILURE</item>
+      <item>STOP_TIME</item>
+      <item>STRIDE</item>
+      <item>TEST_LOAD</item>
+    </list>
+    <list name="ctest_test_sargs">
+      <item>AFTER_TIMEOUT</item>
+      <item>UNTIL_FAIL</item>
+      <item>UNTIL_PASS</item>
+    </list>
+    <list name="ctest_update_nargs">
+      <item>CAPTURE_CMAKE_ERROR</item>
+      <item>QUIET</item>
+      <item>RETURN_VALUE</item>
+      <item>SOURCE</item>
+      <item>VERSION_ONLY</item>
+      <item>VERSION_OVERRIDE</item>
+    </list>
+    <list name="ctest_upload_nargs">
+      <item>CAPTURE_CMAKE_ERROR</item>
+      <item>FILES</item>
+      <item>QUIET</item>
+    </list>
+    <list name="android_add_test_data_nargs">
+      <item>DEVICE_OBJECT_STORE</item>
+      <item>DEVICE_TEST_DIR</item>
+      <item>FILES</item>
+      <item>FILES_DEST</item>
+      <item>LIBS</item>
+      <item>LIBS_DEST</item>
+      <item>NO_LINK_REGEX</item>
+    </list>
+    <list name="check_c_source_compiles_nargs">
+      <item>FAIL_REGEX</item>
+    </list>
+    <list name="check_fortran_source_compiles_nargs">
+      <item>FAIL_REGEX</item>
+      <item>SRC_EXT</item>
+    </list>
+    <list name="check_fortran_source_runs_nargs">
+      <item>SRC_EXT</item>
+    </list>
+    <list name="check_include_files_nargs">
+      <item>LANGUAGE</item>
+    </list>
+    <list name="check_include_files_sargs">
+      <item>C</item>
+      <item>CXX</item>
+    </list>
+    <list name="check_ipo_supported_nargs">
+      <item>LANGUAGES</item>
+      <item>OUTPUT</item>
+      <item>RESULT</item>
+    </list>
+    <list name="check_ipo_supported_sargs">
+      <item>C</item>
+      <item>CXX</item>
+      <item>Fortran</item>
+    </list>
+    <list name="check_pie_supported_nargs">
+      <item>LANGUAGES</item>
+      <item>OUTPUT_VARIABLE</item>
+    </list>
+    <list name="check_pie_supported_sargs">
+      <item>C</item>
+      <item>CUDA</item>
+      <item>CXX</item>
+      <item>Fortran</item>
+      <item>HIP</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
+    </list>
+    <list name="check_type_size_nargs">
+      <item>BUILTIN_TYPES_ONLY</item>
+      <item>LANGUAGE</item>
+      <item>RESULT_VARIABLE</item>
+    </list>
+    <list name="cmake_add_fortran_subdirectory_nargs">
+      <item>ARCHIVE_DIR</item>
+      <item>CMAKE_COMMAND_LINE</item>
+      <item>LIBRARIES</item>
+      <item>LINK_LIBRARIES</item>
+      <item>LINK_LIBS</item>
+      <item>NO_EXTERNAL_INSTALL</item>
+      <item>PROJECT</item>
+      <item>RUNTIME_DIR</item>
+    </list>
+    <list name="configure_package_config_file_nargs">
+      <item>INSTALL_DESTINATION</item>
+      <item>INSTALL_PREFIX</item>
+      <item>NO_CHECK_REQUIRED_COMPONENTS_MACRO</item>
+      <item>NO_SET_AND_CHECK_MACRO</item>
+      <item>PATH_VARS</item>
+    </list>
+    <list name="write_basic_package_version_file_nargs">
+      <item>ARCH_INDEPENDENT</item>
+      <item>COMPATIBILITY</item>
+      <item>VERSION</item>
+    </list>
+    <list name="write_basic_package_version_file_sargs">
+      <item>AnyNewerVersion</item>
+      <item>ExactVersion</item>
+      <item>SameFullVersion</item>
+      <item>SameMajorVersion</item>
+      <item>SameMinorVersion</item>
+      <item>SamePatchVersion</item>
+      <item>SemanticVersion</item>
+    </list>
+    <list name="generate_apple_platform_selection_file_nargs">
+      <item>INSTALL_DESTINATION</item>
+      <item>INSTALL_PREFIX</item>
+      <item>IOS_INCLUDE_FILE</item>
+      <item>IOS_SIMULATOR_INCLUDE_FILE</item>
+      <item>MACOS_INCLUDE_FILE</item>
+      <item>TVOS_INCLUDE_FILE</item>
+      <item>TVOS_SIMULATOR_INCLUDE_FILE</item>
+      <item>VISIONOS_INCLUDE_FILE</item>
+      <item>VISIONOS_SIMULATOR_INCLUDE_FILE</item>
+      <item>WATCHOS_INCLUDE_FILE</item>
+      <item>WATCHOS_SIMULATOR_INCLUDE_FILE</item>
+    </list>
+    <list name="generate_apple_architecture_selection_file_nargs">
+      <item>ERROR_VARIABLE</item>
+      <item>INSTALL_DESTINATION</item>
+      <item>INSTALL_PREFIX</item>
+      <item>SINGLE_ARCHITECTURES</item>
+      <item>SINGLE_ARCHITECTURE_INCLUDE_FILES</item>
+      <item>UNIVERSAL_ARCHITECTURES</item>
+      <item>UNIVERSAL_INCLUDE_FILE</item>
+    </list>
+    <list name="cmake_print_properties_nargs">
+      <item>CACHE_ENTRIES</item>
+      <item>DIRECTORIES</item>
+      <item>PROPERTIES</item>
+      <item>SOURCES</item>
+      <item>TARGETS</item>
+      <item>TESTS</item>
+    </list>
+    <list name="cmake_push_check_state_nargs">
+      <item>RESET</item>
+    </list>
+    <list name="cpack_add_component_nargs">
+      <item>ARCHIVE_FILE</item>
+      <item>DEPENDS</item>
+      <item>DESCRIPTION</item>
+      <item>DISABLED</item>
+      <item>DISPLAY_NAME</item>
+      <item>DOWNLOADED</item>
+      <item>GROUP</item>
+      <item>HIDDEN</item>
+      <item>INSTALL_TYPES</item>
+      <item>PLIST</item>
+      <item>REQUIRED</item>
+    </list>
+    <list name="cpack_add_component_group_nargs">
+      <item>BOLD_TITLE</item>
+      <item>DESCRIPTION</item>
+      <item>DISPLAY_NAME</item>
+      <item>EXPANDED</item>
+      <item>PARENT_GROUP</item>
+    </list>
+    <list name="cpack_add_install_type_nargs">
+      <item>DISPLAY_NAME</item>
+    </list>
+    <list name="cpack_configure_downloads_nargs">
+      <item>ADD_REMOVE</item>
+      <item>ALL</item>
+      <item>NO_ADD_REMOVE</item>
+      <item>UPLOAD_DIRECTORY</item>
+    </list>
+    <list name="cpack_ifw_configure_component_nargs">
+      <item>AUTO_DEPEND_ON</item>
+      <item>CHECKABLE</item>
+      <item>COMMON</item>
+      <item>DEFAULT</item>
+      <item>DEPENDENCIES</item>
+      <item>DEPENDS</item>
+      <item>DESCRIPTION</item>
+      <item>DISPLAY_NAME</item>
+      <item>ESSENTIAL</item>
+      <item>FORCED_INSTALLATION</item>
+      <item>LICENSES</item>
+      <item>NAME</item>
+      <item>PRIORITY</item>
+      <item>RELEASE_DATE</item>
+      <item>REPLACES</item>
+      <item>REQUIRES_ADMIN_RIGHTS]</item>
+      <item>SCRIPT</item>
+      <item>SORTING_PRIORITY</item>
+      <item>TRANSLATIONS</item>
+      <item>UPDATE_TEXT</item>
+      <item>USER_INTERFACES</item>
+      <item>VERSION</item>
+      <item>VIRTUAL</item>
+    </list>
+    <list name="cpack_ifw_configure_component_group_nargs">
+      <item>AUTO_DEPEND_ON</item>
+      <item>CHECKABLE</item>
+      <item>DEFAULT</item>
+      <item>DEPENDENCIES</item>
+      <item>DEPENDS</item>
+      <item>DESCRIPTION</item>
+      <item>DISPLAY_NAME</item>
+      <item>FORCED_INSTALLATION</item>
+      <item>LICENSES</item>
+      <item>NAME</item>
+      <item>PRIORITY</item>
+      <item>RELEASE_DATE</item>
+      <item>REPLACES</item>
+      <item>REQUIRES_ADMIN_RIGHTS</item>
+      <item>SCRIPT</item>
+      <item>SORTING_PRIORITY</item>
+      <item>TRANSLATIONS</item>
+      <item>UPDATE_TEXT</item>
+      <item>USER_INTERFACES</item>
+      <item>VERSION</item>
+      <item>VIRTUAL</item>
+    </list>
+    <list name="cpack_ifw_add_repository_nargs">
+      <item>DISABLED</item>
+      <item>DISPLAY_NAME</item>
+      <item>PASSWORD</item>
+      <item>URL</item>
+      <item>USERNAME</item>
+    </list>
+    <list name="cpack_ifw_update_repository_nargs">
+      <item>ADD</item>
+      <item>DISPLAY_NAME</item>
+      <item>NEW_URL</item>
+      <item>OLD_URL</item>
+      <item>PASSWORD</item>
+      <item>REMOVE</item>
+      <item>REPLACE</item>
+      <item>URL</item>
+      <item>USERNAME</item>
+    </list>
+    <list name="ctest_coverage_collect_gcov_nargs">
+      <item>BUILD</item>
+      <item>DELETE</item>
+      <item>GCOV_COMMAND</item>
+      <item>GCOV_OPTIONS</item>
+      <item>GLOB</item>
+      <item>QUIET</item>
+      <item>SOURCE</item>
+      <item>TARBALL</item>
+      <item>TARBALL_COMPRESSION</item>
+    </list>
+    <list name="ctest_coverage_collect_gcov_sargs">
+      <item>BZIP2</item>
+      <item>FROM_EXT</item>
+      <item>GZIP</item>
+      <item>LZMA</item>
+      <item>LZMA2</item>
+      <item>XZ</item>
+      <item>ZSTD</item>
+    </list>
+    <list name="ExternalData_Add_Target_nargs">
+      <item>SHOW_PROGRESS</item>
+    </list>
+    <list name="ExternalProject_Add_nargs">
+      <item>BINARY_DIR</item>
+      <item>BUILD_ALWAYS</item>
+      <item>BUILD_BYPRODUCTS</item>
+      <item>BUILD_COMMAND</item>
+      <item>BUILD_IN_SOURCE</item>
+      <item>BUILD_JOB_SERVER_AWARE</item>
+      <item>CMAKE_ARGS</item>
+      <item>CMAKE_CACHE_ARGS</item>
+      <item>CMAKE_CACHE_DEFAULT_ARGS</item>
+      <item>CMAKE_COMMAND</item>
+      <item>CMAKE_EP_GIT_CLONE_RETRY_COUNT</item>
+      <item>CMAKE_EP_GIT_CLONE_RETRY_DELAY</item>
+      <item>CMAKE_GENERATOR</item>
+      <item>CMAKE_GENERATOR_INSTANCE</item>
+      <item>CMAKE_GENERATOR_PLATFORM</item>
+      <item>CMAKE_GENERATOR_TOOLSET</item>
+      <item>COMMAND</item>
+      <item>CONFIGURE_COMMAND</item>
+      <item>CONFIGURE_HANDLED_BY_BUILD</item>
+      <item>CVS_MODULE</item>
+      <item>CVS_REPOSITORY</item>
+      <item>CVS_TAG</item>
+      <item>DEPENDS</item>
+      <item>DOWNLOAD_COMMAND</item>
+      <item>DOWNLOAD_DIR</item>
+      <item>DOWNLOAD_EXTRACT_TIMESTAMP</item>
+      <item>DOWNLOAD_NAME</item>
+      <item>DOWNLOAD_NO_EXTRACT</item>
+      <item>DOWNLOAD_NO_PROGRESS</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>GIT_CONFIG</item>
+      <item>GIT_PROGRESS</item>
+      <item>GIT_REMOTE_NAME</item>
+      <item>GIT_REMOTE_UPDATE_STRATEGY</item>
+      <item>GIT_REPOSITORY</item>
+      <item>GIT_SHALLOW</item>
+      <item>GIT_SUBMODULES</item>
+      <item>GIT_SUBMODULES_RECURSE</item>
+      <item>GIT_TAG</item>
+      <item>HG_REPOSITORY</item>
+      <item>HG_TAG</item>
+      <item>HTTP_HEADER</item>
+      <item>HTTP_PASSWORD</item>
+      <item>HTTP_USERNAME</item>
+      <item>INACTIVITY_TIMEOUT</item>
+      <item>INDEPENDENT_STEP_TARGETS</item>
+      <item>INSTALL_BYPRODUCTS</item>
+      <item>INSTALL_COMMAND</item>
+      <item>INSTALL_DIR</item>
+      <item>INSTALL_JOB_SERVER_AWARE</item>
+      <item>LIST_SEPARATOR</item>
+      <item>LOG_BUILD</item>
+      <item>LOG_CONFIGURE</item>
+      <item>LOG_DIR</item>
+      <item>LOG_DOWNLOAD</item>
+      <item>LOG_INSTALL</item>
+      <item>LOG_MERGED_STDOUTERR</item>
+      <item>LOG_OUTPUT_ON_FAILURE</item>
+      <item>LOG_PATCH</item>
+      <item>LOG_TEST</item>
+      <item>LOG_UPDATE</item>
+      <item>NETRC</item>
+      <item>NETRC_FILE</item>
+      <item>PATCH_COMMAND</item>
+      <item>PREFIX</item>
+      <item>SOURCE_DIR</item>
+      <item>SOURCE_SUBDIR</item>
+      <item>STAMP_DIR</item>
+      <item>STEP_TARGETS</item>
+      <item>SVN_PASSWORD</item>
+      <item>SVN_REPOSITORY</item>
+      <item>SVN_REVISION</item>
+      <item>SVN_TRUST_CERT</item>
+      <item>SVN_USERNAME</item>
+      <item>TEST_AFTER_INSTALL</item>
+      <item>TEST_BEFORE_INSTALL</item>
+      <item>TEST_COMMAND</item>
+      <item>TEST_EXCLUDE_FROM_MAIN</item>
+      <item>TIMEOUT</item>
+      <item>TLS_CAINFO</item>
+      <item>TLS_VERIFY</item>
+      <item>TLS_VERSION</item>
+      <item>TMP_DIR</item>
+      <item>UPDATE_COMMAND</item>
+      <item>UPDATE_DISCONNECTED</item>
+      <item>URL</item>
+      <item>URL_HASH</item>
+      <item>URL_MD5</item>
+      <item>USES_TERMINAL_BUILD</item>
+      <item>USES_TERMINAL_CONFIGURE</item>
+      <item>USES_TERMINAL_DOWNLOAD</item>
+      <item>USES_TERMINAL_INSTALL</item>
+      <item>USES_TERMINAL_PATCH</item>
+      <item>USES_TERMINAL_TEST</item>
+      <item>USES_TERMINAL_UPDATE</item>
+    </list>
+    <list name="ExternalProject_Add_sargs">
+      <item>CHECKOUT</item>
+      <item>IGNORED</item>
+      <item>OPTIONAL</item>
+      <item>REBASE</item>
+      <item>REBASE_CHECKOUT</item>
+      <item>REQUIRED</item>
+    </list>
+    <list name="ExternalProject_Add_Step_nargs">
+      <item>ALWAYS</item>
+      <item>BYPRODUCTS</item>
+      <item>COMMAND</item>
+      <item>COMMENT</item>
+      <item>DEPENDEES</item>
+      <item>DEPENDERS</item>
+      <item>DEPENDS</item>
+      <item>EXCLUDE_FROM_MAIN</item>
+      <item>INDEPENDENT</item>
+      <item>JOB_SERVER_AWARE</item>
+      <item>LOG</item>
+      <item>USES_TERMINAL</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="ExternalProject_Add_StepTargets_nargs">
+      <item>NO_DEPENDS</item>
+    </list>
+    <list name="feature_summary_nargs">
+      <item>ALL</item>
+      <item>APPEND</item>
+      <item>DEFAULT_DESCRIPTION</item>
+      <item>DESCRIPTION</item>
+      <item>DISABLED_FEATURES</item>
+      <item>ENABLED_FEATURES</item>
+      <item>FATAL_ON_MISSING_REQUIRED_PACKAGES</item>
+      <item>FILENAME</item>
+      <item>INCLUDE_QUIET_PACKAGES</item>
+      <item>PACKAGES_FOUND</item>
+      <item>PACKAGES_NOT_FOUND</item>
+      <item>QUIET_ON_EMPTY</item>
+      <item>VAR</item>
+      <item>WHAT</item>
+    </list>
+    <list name="set_package_properties_nargs">
+      <item>DESCRIPTION</item>
+      <item>OPTIONAL</item>
+      <item>PROPERTIES</item>
+      <item>PURPOSE</item>
+      <item>RECOMMENDED</item>
+      <item>REQUIRED</item>
+      <item>RUNTIME</item>
+      <item>TYPE</item>
+      <item>URL</item>
+    </list>
+    <list name="FetchContent_Declare_nargs">
+      <item>CVS_MODULE</item>
+      <item>CVS_REPOSITORY</item>
+      <item>CVS_TAG</item>
+      <item>DOWNLOAD_COMMAND</item>
+      <item>DOWNLOAD_NAME</item>
+      <item>DOWNLOAD_NO_EXTRACT</item>
+      <item>DOWNLOAD_NO_PROGRESS</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>FIND_PACKAGE_ARGS</item>
+      <item>GIT_CONFIG</item>
+      <item>GIT_PROGRESS</item>
+      <item>GIT_REMOTE_NAME</item>
+      <item>GIT_REMOTE_UPDATE_STRATEGY</item>
+      <item>GIT_REPOSITORY</item>
+      <item>GIT_SHALLOW</item>
+      <item>GIT_SUBMODULES</item>
+      <item>GIT_SUBMODULES_RECURSE</item>
+      <item>GIT_TAG</item>
+      <item>HG_REPOSITORY</item>
+      <item>HG_TAG</item>
+      <item>HTTP_HEADER</item>
+      <item>HTTP_PASSWORD</item>
+      <item>HTTP_USERNAME</item>
+      <item>INACTIVITY_TIMEOUT</item>
+      <item>NETRC</item>
+      <item>NETRC_FILE</item>
+      <item>OVERRIDE_FIND_PACKAGE</item>
+      <item>PATCH_COMMAND</item>
+      <item>SOURCE_SUBDIR</item>
+      <item>SVN_PASSWORD</item>
+      <item>SVN_REPOSITORY</item>
+      <item>SVN_REVISION</item>
+      <item>SVN_TRUST_CERT</item>
+      <item>SVN_USERNAME</item>
+      <item>SYSTEM</item>
+      <item>TIMEOUT</item>
+      <item>TLS_CAINFO</item>
+      <item>TLS_VERIFY</item>
+      <item>UPDATE_COMMAND</item>
+      <item>UPDATE_DISCONNECTED</item>
+      <item>URL</item>
+      <item>URL_HASH</item>
+      <item>URL_MD5</item>
+    </list>
+    <list name="FetchContent_Populate_nargs">
+      <item>BINARY_DIR</item>
+      <item>CVS_MODULE</item>
+      <item>CVS_REPOSITORY</item>
+      <item>CVS_TAG</item>
+      <item>DOWNLOAD_COMMAND</item>
+      <item>DOWNLOAD_NAME</item>
+      <item>DOWNLOAD_NO_EXTRACT</item>
+      <item>DOWNLOAD_NO_PROGRESS</item>
+      <item>GIT_CONFIG</item>
+      <item>GIT_PROGRESS</item>
+      <item>GIT_REMOTE_NAME</item>
+      <item>GIT_REMOTE_UPDATE_STRATEGY</item>
+      <item>GIT_REPOSITORY</item>
+      <item>GIT_SHALLOW</item>
+      <item>GIT_SUBMODULES</item>
+      <item>GIT_SUBMODULES_RECURSE</item>
+      <item>GIT_TAG</item>
+      <item>HG_REPOSITORY</item>
+      <item>HG_TAG</item>
+      <item>HTTP_HEADER</item>
+      <item>HTTP_PASSWORD</item>
+      <item>HTTP_USERNAME</item>
+      <item>INACTIVITY_TIMEOUT</item>
+      <item>NETRC</item>
+      <item>NETRC_FILE</item>
+      <item>PATCH_COMMAND</item>
+      <item>QUIET</item>
+      <item>SOURCE_DIR</item>
+      <item>SOURCE_SUBDIR</item>
+      <item>SUBBUILD_DIR</item>
+      <item>SVN_PASSWORD</item>
+      <item>SVN_REPOSITORY</item>
+      <item>SVN_REVISION</item>
+      <item>SVN_TRUST_CERT</item>
+      <item>SVN_USERNAME</item>
+      <item>TIMEOUT</item>
+      <item>TLS_CAINFO</item>
+      <item>TLS_VERIFY</item>
+      <item>UPDATE_COMMAND</item>
+      <item>UPDATE_DISCONNECTED</item>
+      <item>URL</item>
+      <item>URL_HASH</item>
+      <item>URL_MD5</item>
+    </list>
+    <list name="FetchContent_GetProperties_nargs">
+      <item>BINARY_DIR</item>
+      <item>POPULATED</item>
+      <item>SOURCE_DIR</item>
+    </list>
+    <list name="find_package_handle_standard_args_nargs">
+      <item>CONFIG_MODE</item>
+      <item>DEFAULT_MSG</item>
+      <item>FAIL_MESSAGE</item>
+      <item>FOUND_VAR</item>
+      <item>HANDLE_COMPONENTS</item>
+      <item>HANDLE_VERSION_RANGE</item>
+      <item>NAME_MISMATCHED</item>
+      <item>REASON_FAILURE_MESSAGE</item>
+      <item>REQUIRED_VARS</item>
+      <item>VERSION_VAR</item>
+    </list>
+    <list name="find_package_check_version_nargs">
+      <item>HANDLE_VERSION_RANGE</item>
+      <item>RESULT_MESSAGE_VARIABLE</item>
+    </list>
+    <list name="FortranCInterface_HEADER_nargs">
+      <item>MACRO_NAMESPACE</item>
+      <item>SYMBOLS</item>
+      <item>SYMBOL_NAMESPACE</item>
+    </list>
+    <list name="FortranCInterface_VERIFY_nargs">
+      <item>CXX</item>
+      <item>QUIET</item>
+    </list>
+    <list name="generate_export_header_nargs">
+      <item>BASE_NAME</item>
+      <item>CUSTOM_CONTENT_FROM_VARIABLE</item>
+      <item>DEFINE_NO_DEPRECATED</item>
+      <item>DEPRECATED_MACRO_NAME</item>
+      <item>EXPORT_FILE_NAME</item>
+      <item>EXPORT_MACRO_NAME</item>
+      <item>INCLUDE_GUARD_NAME</item>
+      <item>NO_DEPRECATED_MACRO_NAME</item>
+      <item>NO_EXPORT_MACRO_NAME</item>
+      <item>PREFIX_NAME</item>
+      <item>STATIC_DEFINE</item>
+    </list>
+    <list name="gtest_add_tests_nargs">
+      <item>EXTRA_ARGS</item>
+      <item>SKIP_DEPENDENCY</item>
+      <item>SOURCES</item>
+      <item>TARGET</item>
+      <item>TEST_LIST</item>
+      <item>TEST_PREFIX</item>
+      <item>TEST_SUFFIX</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="gtest_discover_tests_nargs">
+      <item>DISCOVERY_EXTRA_ARGS</item>
+      <item>DISCOVERY_MODE</item>
+      <item>DISCOVERY_TIMEOUT</item>
+      <item>EXTRA_ARGS</item>
+      <item>NO_PRETTY_TYPES</item>
+      <item>NO_PRETTY_VALUES</item>
+      <item>PROPERTIES</item>
+      <item>TEST_FILTER</item>
+      <item>TEST_LIST</item>
+      <item>TEST_PREFIX</item>
+      <item>TEST_SUFFIX</item>
+      <item>WORKING_DIRECTORY</item>
+      <item>XML_OUTPUT_DIR</item>
+    </list>
+    <list name="gtest_discover_tests_sargs">
+      <item>POST_BUILD</item>
+      <item>PRE_TEST</item>
+    </list>
+    <list name="add_jar_nargs">
+      <item>BUILD</item>
+      <item>DESTINATION</item>
+      <item>ENTRY_POINT</item>
+      <item>GENERATE_NATIVE_HEADERS</item>
+      <item>INCLUDE_JARS</item>
+      <item>INCLUDE_MODULES</item>
+      <item>INSTALL</item>
+      <item>MANIFEST</item>
+      <item>NAMESPACE</item>
+      <item>OUTPUT_DIR</item>
+      <item>OUTPUT_NAME</item>
+      <item>RESOURCES</item>
+      <item>SOURCES</item>
+      <item>VERSION</item>
+    </list>
+    <list name="install_jar_nargs">
+      <item>COMPONENT</item>
+      <item>DESTINATION</item>
+    </list>
+    <list name="create_javah_nargs">
+      <item>CLASSES</item>
+      <item>CLASSPATH</item>
+      <item>DEPENDS</item>
+      <item>GENERATED_FILES</item>
+      <item>OUTPUT_DIR</item>
+      <item>OUTPUT_NAME</item>
+      <item>TARGET</item>
+    </list>
+    <list name="install_jar_exports_nargs">
+      <item>COMPONENT</item>
+      <item>DESTINATION</item>
+      <item>FILE</item>
+      <item>NAMESPACE</item>
+      <item>TARGETS</item>
+    </list>
+    <list name="export_jars_nargs">
+      <item>FILE</item>
+      <item>NAMESPACE</item>
+      <item>TARGETS</item>
+    </list>
+    <list name="find_jar_nargs">
+      <item>DOC</item>
+      <item>ENV</item>
+      <item>NAMES</item>
+      <item>PATHS</item>
+      <item>VERSIONS</item>
+    </list>
+    <list name="create_javadoc_nargs">
+      <item>AUTHOR</item>
+      <item>CLASSPATH</item>
+      <item>DOCTITLE</item>
+      <item>FILES</item>
+      <item>INSTALLPATH</item>
+      <item>PACKAGES</item>
+      <item>SOURCEPATH</item>
+      <item>USE</item>
+      <item>VERSION</item>
+      <item>WINDOWTITLE</item>
+    </list>
+    <list name="swig_add_library_nargs">
+      <item>DEBUG_POSTFIX</item>
+      <item>LANGUAGE</item>
+      <item>NO_PROXY</item>
+      <item>OUTFILE_DIR</item>
+      <item>OUTPUT_DIR</item>
+      <item>SOURCES</item>
+      <item>TYPE</item>
+    </list>
+    <list name="swig_add_library_sargs">
+      <item>MODULE</item>
+      <item>SHARED</item>
+      <item>STATIC</item>
+      <item>USE_BUILD_SHARED_LIBS</item>
+    </list>
+    <list name="squish_add_test_nargs">
+      <item>AUT</item>
+      <item>POST_COMMAND</item>
+      <item>PRE_COMMAND</item>
+      <item>SETTINGSGROUP</item>
+      <item>SUITE</item>
+      <item>TEST</item>
+    </list>
+    <list name="bison_target_nargs">
+      <item>COMPILE_FLAGS</item>
+      <item>DEFINES_FILE</item>
+      <item>OPTIONS</item>
+      <item>REPORT_FILE</item>
+      <item>VERBOSE</item>
+    </list>
+    <list name="doxygen_add_docs_nargs">
+      <item>ALL</item>
+      <item>COMMENT</item>
+      <item>CONFIG_FILE</item>
+      <item>USE_STAMP_FILE</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="env_module_nargs">
+      <item>COMMAND</item>
+      <item>OUTPUT_VARIABLE</item>
+      <item>RESULT_VARIABLE</item>
+    </list>
+    <list name="env_module_swap_nargs">
+      <item>OUTPUT_VARIABLE</item>
+      <item>RESULT_VARIABLE</item>
+    </list>
+    <list name="flex_target_nargs">
+      <item>COMPILE_FLAGS</item>
+      <item>DEFINES_FILE</item>
+      <item>OPTIONS</item>
+    </list>
+    <list name="gettext_create_translations_nargs">
+      <item>ALL</item>
+    </list>
+    <list name="gettext_process_pot_file_nargs">
+      <item>ALL</item>
+      <item>INSTALL_DESTINATION</item>
+      <item>LANGUAGES</item>
+    </list>
+    <list name="gettext_process_po_files_nargs">
+      <item>ALL</item>
+      <item>INSTALL_DESTINATION</item>
+      <item>PO_FILES</item>
+    </list>
+    <list name="matlab_add_unit_test_nargs">
+      <item>ADDITIONAL_PATH</item>
+      <item>CUSTOM_TEST_COMMAND</item>
+      <item>MATLAB_ADDITIONAL_STARTUP_OPTIONS</item>
+      <item>NAME</item>
+      <item>NO_UNITTEST_FRAMEWORK</item>
+      <item>TEST_ARGS</item>
+      <item>TIMEOUT</item>
+      <item>UNITTEST_FILE</item>
+      <item>UNITTEST_PRECOMMAND</item>
+    </list>
+    <list name="matlab_add_mex_nargs">
+      <item>DOCUMENTATION</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>EXECUTABLE</item>
+      <item>LINK_TO</item>
+      <item>MODULE</item>
+      <item>NAME</item>
+      <item>NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES</item>
+      <item>OUTPUT_NAME</item>
+      <item>R2017b</item>
+      <item>R2018a</item>
+      <item>SHARED</item>
+      <item>SRC</item>
+    </list>
+    <list name="pkg_check_modules_nargs">
+      <item>GLOBAL</item>
+      <item>IMPORTED_TARGET</item>
+      <item>NO_CMAKE_ENVIRONMENT_PATH</item>
+      <item>NO_CMAKE_PATH</item>
+      <item>QUIET</item>
+      <item>REQUIRED</item>
+      <item>STATIC_TARGET</item>
+    </list>
+    <list name="pkg_get_variable_nargs">
+      <item>DEFINE_VARIABLES</item>
+    </list>
+    <list name="protobuf_generate_cpp_nargs">
+      <item>DESCRIPTORS</item>
+      <item>EXPORT_MACRO</item>
+    </list>
+    <list name="protobuf_generate_nargs">
+      <item>APPEND_PATH</item>
+      <item>DEPENDENCIES</item>
+      <item>EXPORT_MACRO</item>
+      <item>GENERATE_EXTENSIONS</item>
+      <item>IMPORT_DIRS</item>
+      <item>LANGUAGE</item>
+      <item>OUT_VAR</item>
+      <item>PLUGIN</item>
+      <item>PLUGIN_OPTIONS</item>
+      <item>PROTOC_EXE</item>
+      <item>PROTOC_OPTIONS</item>
+      <item>PROTOC_OUT_DIR</item>
+      <item>PROTOS</item>
+      <item>TARGET</item>
+    </list>
+    <list name="Python_add_library_nargs">
+      <item>MODULE</item>
+      <item>SHARED</item>
+      <item>STATIC</item>
+      <item>USE_SABI</item>
+      <item>WITH_SOABI</item>
+    </list>
+    <list name="Subversion_WC_INFO_nargs">
+      <item>IGNORE_SVN_FAILURE</item>
+    </list>
+
+    <list name="variables">
+      <item>AIX</item>
+      <item>ALSA_LIBRARY</item>
+      <item>ANDROID</item>
+      <item>APPLE</item>
+      <item>ARGC</item>
+      <item>ARGN</item>
+      <item>ARGV</item>
+      <item>ASPELL_DEFINITIONS</item>
+      <item>ASPELL_EXECUTABLE</item>
+      <item>AVIFILE_DEFINITIONS</item>
+      <item>BIBER_COMPILER</item>
+      <item>BIBTEX_COMPILER</item>
+      <item>BISON_EXECUTABLE</item>
+      <item>BLAS_LINKER_FLAGS</item>
+      <item>BLA_F95</item>
+      <item>BLA_PREFER_PKGCONFIG</item>
+      <item>BLA_SIZEOF_INTEGER</item>
+      <item>BLA_STATIC</item>
+      <item>BLA_VENDOR</item>
+      <item>BOOSTROOT</item>
+      <item>BOOST_INCLUDEDIR</item>
+      <item>BOOST_LIBRARYDIR</item>
+      <item>BORLAND</item>
+      <item>BSD</item>
+      <item>BUILD_SHARED_LIBS</item>
+      <item>BUILD_TESTING</item>
+      <item>BU_CHMOD_BUNDLE_ITEMS</item>
+      <item>BZIP2_INCLUDE_DIR</item>
+      <item>BZIP2_NEED_PREFIX</item>
+      <item>Backtrace_HEADER</item>
+      <item>Backtrace_LIBRARY</item>
+      <item>Boost_ADDITIONAL_VERSIONS</item>
+      <item>Boost_ARCHITECTURE</item>
+      <item>Boost_COMPILER</item>
+      <item>Boost_DEBUG</item>
+      <item>Boost_INCLUDE_DIR</item>
+      <item>Boost_LIBRARY_DIR_DEBUG</item>
+      <item>Boost_LIBRARY_DIR_RELEASE</item>
+      <item>Boost_LIB_PREFIX</item>
+      <item>Boost_NAMESPACE</item>
+      <item>Boost_NO_SYSTEM_PATHS</item>
+      <item>Boost_NO_WARN_NEW_VERSIONS</item>
+      <item>Boost_REALPATH</item>
+      <item>Boost_THREADAPI</item>
+      <item>Boost_USE_DEBUG_LIBS</item>
+      <item>Boost_USE_DEBUG_PYTHON</item>
+      <item>Boost_USE_DEBUG_RUNTIME</item>
+      <item>Boost_USE_MULTITHREADED</item>
+      <item>Boost_USE_RELEASE_LIBS</item>
+      <item>Boost_USE_STATIC_LIBS</item>
+      <item>Boost_USE_STATIC_RUNTIME</item>
+      <item>Boost_USE_STLPORT</item>
+      <item>Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS</item>
+      <item>Boost_VERSION_COUNT</item>
+      <item>Boost_VERSION_MACRO</item>
+      <item>CABLE</item>
+      <item>CABLE_INCLUDE_DIR</item>
+      <item>CABLE_TCL_LIBRARY</item>
+      <item>CMAKE_ABSOLUTE_DESTINATION_FILES</item>
+      <item>CMAKE_ADD_CUSTOM_COMMAND_DEPENDS_EXPLICIT_ONLY</item>
+      <item>CMAKE_ADSP_ROOT</item>
+      <item>CMAKE_AIX_EXPORT_ALL_SYMBOLS</item>
+      <item>CMAKE_AIX_SHARED_LIBRARY_ARCHIVE</item>
+      <item>CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS</item>
+      <item>CMAKE_ANDROID_API</item>
+      <item>CMAKE_ANDROID_API_MIN</item>
+      <item>CMAKE_ANDROID_ARCH</item>
+      <item>CMAKE_ANDROID_ARCH_ABI</item>
+      <item>CMAKE_ANDROID_ARM_MODE</item>
+      <item>CMAKE_ANDROID_ARM_NEON</item>
+      <item>CMAKE_ANDROID_ASSETS_DIRECTORIES</item>
+      <item>CMAKE_ANDROID_GUI</item>
+      <item>CMAKE_ANDROID_JAR_DEPENDENCIES</item>
+      <item>CMAKE_ANDROID_JAR_DIRECTORIES</item>
+      <item>CMAKE_ANDROID_JAVA_SOURCE_DIR</item>
+      <item>CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES</item>
+      <item>CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES</item>
+      <item>CMAKE_ANDROID_NDK</item>
+      <item>CMAKE_ANDROID_NDK_DEPRECATED_HEADERS</item>
+      <item>CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG</item>
+      <item>CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION</item>
+      <item>CMAKE_ANDROID_NDK_VERSION</item>
+      <item>CMAKE_ANDROID_PROCESS_MAX</item>
+      <item>CMAKE_ANDROID_PROGUARD</item>
+      <item>CMAKE_ANDROID_PROGUARD_CONFIG_PATH</item>
+      <item>CMAKE_ANDROID_SECURE_PROPS_PATH</item>
+      <item>CMAKE_ANDROID_SKIP_ANT_STEP</item>
+      <item>CMAKE_ANDROID_STANDALONE_TOOLCHAIN</item>
+      <item>CMAKE_ANDROID_STL_TYPE</item>
+      <item>CMAKE_ANSI_CXXFLAGS</item>
+      <item>CMAKE_APPBUNDLE_PATH</item>
+      <item>CMAKE_APPLE_SILICON_PROCESSOR</item>
+      <item>CMAKE_AR</item>
+      <item>CMAKE_ARCHIVE_OUTPUT_DIRECTORY</item>
+      <item>CMAKE_ARGC</item>
+      <item>CMAKE_AUTOGEN_BETTER_GRAPH_MULTI_CONFIG</item>
+      <item>CMAKE_AUTOGEN_COMMAND_LINE_LENGTH_MAX</item>
+      <item>CMAKE_AUTOGEN_INTERMEDIATE_DIR_STRATEGY</item>
+      <item>CMAKE_AUTOGEN_ORIGIN_DEPENDS</item>
+      <item>CMAKE_AUTOGEN_PARALLEL</item>
+      <item>CMAKE_AUTOGEN_USE_SYSTEM_INCLUDE</item>
+      <item>CMAKE_AUTOGEN_VERBOSE</item>
+      <item>CMAKE_AUTOMOC</item>
+      <item>CMAKE_AUTOMOC_DEPEND_FILTERS</item>
+      <item>CMAKE_AUTOMOC_EXECUTABLE</item>
+      <item>CMAKE_AUTOMOC_INCLUDE_DIRECTORIES</item>
+      <item>CMAKE_AUTOMOC_MACRO_NAMES</item>
+      <item>CMAKE_AUTOMOC_MOC_OPTIONS</item>
+      <item>CMAKE_AUTOMOC_PATH_PREFIX</item>
+      <item>CMAKE_AUTORCC</item>
+      <item>CMAKE_AUTORCC_EXECUTABLE</item>
+      <item>CMAKE_AUTORCC_OPTIONS</item>
+      <item>CMAKE_AUTOUIC</item>
+      <item>CMAKE_AUTOUIC_EXECUTABLE</item>
+      <item>CMAKE_AUTOUIC_OPTIONS</item>
+      <item>CMAKE_AUTOUIC_SEARCH_PATHS</item>
+      <item>CMAKE_BINARY_DIR</item>
+      <item>CMAKE_BUILD_RPATH</item>
+      <item>CMAKE_BUILD_RPATH_USE_ORIGIN</item>
+      <item>CMAKE_BUILD_TYPE</item>
+      <item>CMAKE_BUILD_WITH_INSTALL_NAME_DIR</item>
+      <item>CMAKE_BUILD_WITH_INSTALL_RPATH</item>
+      <item>CMAKE_CACHEFILE_DIR</item>
+      <item>CMAKE_CACHE_MAJOR_VERSION</item>
+      <item>CMAKE_CACHE_MINOR_VERSION</item>
+      <item>CMAKE_CACHE_PATCH_VERSION</item>
+      <item>CMAKE_CFG_INTDIR</item>
+      <item>CMAKE_CLANG_VFS_OVERLAY</item>
+      <item>CMAKE_CL_64</item>
+      <item>CMAKE_CODEBLOCKS_COMPILER_ID</item>
+      <item>CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES</item>
+      <item>CMAKE_CODELITE_USE_TARGETS</item>
+      <item>CMAKE_COLOR_DIAGNOSTICS</item>
+      <item>CMAKE_COLOR_MAKEFILE</item>
+      <item>CMAKE_COMMAND</item>
+      <item>CMAKE_COMPILER_2005</item>
+      <item>CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY</item>
+      <item>CMAKE_COMPILE_WARNING_AS_ERROR</item>
+      <item>CMAKE_CONFIGURATION_TYPES</item>
+      <item>CMAKE_CROSSCOMPILING</item>
+      <item>CMAKE_CROSSCOMPILING_EMULATOR</item>
+      <item>CMAKE_CROSS_CONFIGS</item>
+      <item>CMAKE_CTEST_ARGUMENTS</item>
+      <item>CMAKE_CTEST_COMMAND</item>
+      <item>CMAKE_CUDA_ARCHITECTURES</item>
+      <item>CMAKE_CUDA_COMPILE_FEATURES</item>
+      <item>CMAKE_CUDA_EXTENSIONS</item>
+      <item>CMAKE_CUDA_LINK_NO_PIE_SUPPORTED</item>
+      <item>CMAKE_CUDA_LINK_PIE_SUPPORTED</item>
+      <item>CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS</item>
+      <item>CMAKE_CUDA_RUNTIME_LIBRARY</item>
+      <item>CMAKE_CUDA_SEPARABLE_COMPILATION</item>
+      <item>CMAKE_CUDA_STANDARD</item>
+      <item>CMAKE_CUDA_STANDARD_REQUIRED</item>
+      <item>CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES</item>
+      <item>CMAKE_CURRENT_BINARY_DIR</item>
+      <item>CMAKE_CURRENT_FUNCTION</item>
+      <item>CMAKE_CURRENT_FUNCTION_LIST_DIR</item>
+      <item>CMAKE_CURRENT_FUNCTION_LIST_FILE</item>
+      <item>CMAKE_CURRENT_FUNCTION_LIST_LINE</item>
+      <item>CMAKE_CURRENT_LIST_DIR</item>
+      <item>CMAKE_CURRENT_LIST_FILE</item>
+      <item>CMAKE_CURRENT_LIST_LINE</item>
+      <item>CMAKE_CURRENT_SOURCE_DIR</item>
+      <item>CMAKE_CXX_COMPILE_BMI</item>
+      <item>CMAKE_CXX_COMPILE_FEATURES</item>
+      <item>CMAKE_CXX_EXTENSIONS</item>
+      <item>CMAKE_CXX_LINK_NO_PIE_SUPPORTED</item>
+      <item>CMAKE_CXX_LINK_PIE_SUPPORTED</item>
+      <item>CMAKE_CXX_MODULE_BMI_ONLY_FLAG</item>
+      <item>CMAKE_CXX_MODULE_MAP_FLAG</item>
+      <item>CMAKE_CXX_MODULE_MAP_FORMAT</item>
+      <item>CMAKE_CXX_SCAN_FOR_MODULES</item>
+      <item>CMAKE_CXX_STANDARD</item>
+      <item>CMAKE_CXX_STANDARD_REQUIRED</item>
+      <item>CMAKE_CXX_STDLIB_MODULES_JSON</item>
+      <item>CMAKE_C_COMPILE_FEATURES</item>
+      <item>CMAKE_C_EXTENSIONS</item>
+      <item>CMAKE_C_LINK_NO_PIE_SUPPORTED</item>
+      <item>CMAKE_C_LINK_PIE_SUPPORTED</item>
+      <item>CMAKE_C_STANDARD</item>
+      <item>CMAKE_C_STANDARD_REQUIRED</item>
+      <item>CMAKE_DEBUGGER_WORKING_DIRECTORY</item>
+      <item>CMAKE_DEBUG_POSTFIX</item>
+      <item>CMAKE_DEBUG_TARGET_PROPERTIES</item>
+      <item>CMAKE_DEFAULT_BUILD_TYPE</item>
+      <item>CMAKE_DEFAULT_CONFIGS</item>
+      <item>CMAKE_DEPENDS_IN_PROJECT_ONLY</item>
+      <item>CMAKE_DIRECTORY_LABELS</item>
+      <item>CMAKE_DISABLE_PRECOMPILE_HEADERS</item>
+      <item>CMAKE_DLL_NAME_WITH_SOVERSION</item>
+      <item>CMAKE_DL_LIBS</item>
+      <item>CMAKE_DOTNET_SDK</item>
+      <item>CMAKE_DOTNET_TARGET_FRAMEWORK</item>
+      <item>CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION</item>
+      <item>CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES</item>
+      <item>CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT</item>
+      <item>CMAKE_ECLIPSE_MAKE_ARGUMENTS</item>
+      <item>CMAKE_ECLIPSE_RESOURCE_ENCODING</item>
+      <item>CMAKE_ECLIPSE_VERSION</item>
+      <item>CMAKE_EDIT_COMMAND</item>
+      <item>CMAKE_ERROR_DEPRECATED</item>
+      <item>CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>
+      <item>CMAKE_EXECUTABLE_ENABLE_EXPORTS</item>
+      <item>CMAKE_EXECUTABLE_SUFFIX</item>
+      <item>CMAKE_EXECUTE_PROCESS_COMMAND_ECHO</item>
+      <item>CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL</item>
+      <item>CMAKE_EXE_LINKER_FLAGS</item>
+      <item>CMAKE_EXE_LINKER_FLAGS_INIT</item>
+      <item>CMAKE_EXPORT_BUILD_DATABASE</item>
+      <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>
+      <item>CMAKE_EXPORT_NO_PACKAGE_REGISTRY</item>
+      <item>CMAKE_EXPORT_PACKAGE_REGISTRY</item>
+      <item>CMAKE_EXTRA_INCLUDE_FILES</item>
+      <item>CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES</item>
+      <item>CMAKE_FIND_APPBUNDLE</item>
+      <item>CMAKE_FIND_DEBUG_MODE</item>
+      <item>CMAKE_FIND_DEBUG_MODE_NO_IMPLICIT_CONFIGURE_LOG</item>
+      <item>CMAKE_FIND_FRAMEWORK</item>
+      <item>CMAKE_FIND_FRAMEWORK_EXTRA_LOCATIONS</item>
+      <item>CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX</item>
+      <item>CMAKE_FIND_LIBRARY_PREFIXES</item>
+      <item>CMAKE_FIND_LIBRARY_SUFFIXES</item>
+      <item>CMAKE_FIND_NO_INSTALL_PREFIX</item>
+      <item>CMAKE_FIND_PACKAGE_NAME</item>
+      <item>CMAKE_FIND_PACKAGE_PREFER_CONFIG</item>
+      <item>CMAKE_FIND_PACKAGE_REDIRECTS_DIR</item>
+      <item>CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS</item>
+      <item>CMAKE_FIND_PACKAGE_SORT_DIRECTION</item>
+      <item>CMAKE_FIND_PACKAGE_SORT_ORDER</item>
+      <item>CMAKE_FIND_PACKAGE_TARGETS_GLOBAL</item>
+      <item>CMAKE_FIND_PACKAGE_WARN_NO_MODULE</item>
+      <item>CMAKE_FIND_REQUIRED</item>
+      <item>CMAKE_FIND_ROOT_PATH</item>
+      <item>CMAKE_FIND_ROOT_PATH_MODE_INCLUDE</item>
+      <item>CMAKE_FIND_ROOT_PATH_MODE_LIBRARY</item>
+      <item>CMAKE_FIND_ROOT_PATH_MODE_PACKAGE</item>
+      <item>CMAKE_FIND_ROOT_PATH_MODE_PROGRAM</item>
+      <item>CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH</item>
+      <item>CMAKE_FIND_USE_CMAKE_PATH</item>
+      <item>CMAKE_FIND_USE_CMAKE_SYSTEM_PATH</item>
+      <item>CMAKE_FIND_USE_INSTALL_PREFIX</item>
+      <item>CMAKE_FIND_USE_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FIND_USE_PACKAGE_ROOT_PATH</item>
+      <item>CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH</item>
+      <item>CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FOLDER</item>
+      <item>CMAKE_FRAMEWORK</item>
+      <item>CMAKE_FRAMEWORK_PATH</item>
+      <item>CMAKE_Fortran_FORMAT</item>
+      <item>CMAKE_Fortran_LINK_NO_PIE_SUPPORTED</item>
+      <item>CMAKE_Fortran_LINK_PIE_SUPPORTED</item>
+      <item>CMAKE_Fortran_MODDIR_DEFAULT</item>
+      <item>CMAKE_Fortran_MODDIR_FLAG</item>
+      <item>CMAKE_Fortran_MODOUT_FLAG</item>
+      <item>CMAKE_Fortran_MODULE_DIRECTORY</item>
+      <item>CMAKE_Fortran_PREPROCESS</item>
+      <item>CMAKE_GENERATOR</item>
+      <item>CMAKE_GENERATOR_INSTANCE</item>
+      <item>CMAKE_GENERATOR_NO_COMPILER_ENV</item>
+      <item>CMAKE_GENERATOR_PLATFORM</item>
+      <item>CMAKE_GENERATOR_TOOLSET</item>
+      <item>CMAKE_GET_OS_RELEASE_FALLBACK_RESULT</item>
+      <item>CMAKE_GET_OS_RELEASE_FALLBACK_SCRIPTS</item>
+      <item>CMAKE_GET_RUNTIME_DEPENDENCIES_COMMAND</item>
+      <item>CMAKE_GET_RUNTIME_DEPENDENCIES_PLATFORM</item>
+      <item>CMAKE_GET_RUNTIME_DEPENDENCIES_TOOL</item>
+      <item>CMAKE_GLOBAL_AUTOGEN_TARGET</item>
+      <item>CMAKE_GLOBAL_AUTOGEN_TARGET_NAME</item>
+      <item>CMAKE_GLOBAL_AUTORCC_TARGET</item>
+      <item>CMAKE_GLOBAL_AUTORCC_TARGET_NAME</item>
+      <item>CMAKE_GNUtoMS</item>
+      <item>CMAKE_GTEST_DISCOVER_TESTS_DISCOVERY_MODE</item>
+      <item>CMAKE_HAS_ANSI_STRING_STREAM</item>
+      <item>CMAKE_HIP_ARCHITECTURES</item>
+      <item>CMAKE_HIP_EXTENSIONS</item>
+      <item>CMAKE_HIP_LINK_NO_PIE_SUPPORTED</item>
+      <item>CMAKE_HIP_LINK_PIE_SUPPORTED</item>
+      <item>CMAKE_HIP_PLATFORM</item>
+      <item>CMAKE_HIP_STANDARD</item>
+      <item>CMAKE_HIP_STANDARD_REQUIRED</item>
+      <item>CMAKE_HOST_AIX</item>
+      <item>CMAKE_HOST_APPLE</item>
+      <item>CMAKE_HOST_BSD</item>
+      <item>CMAKE_HOST_EXECUTABLE_SUFFIX</item>
+      <item>CMAKE_HOST_LINUX</item>
+      <item>CMAKE_HOST_SOLARIS</item>
+      <item>CMAKE_HOST_SYSTEM</item>
+      <item>CMAKE_HOST_SYSTEM_NAME</item>
+      <item>CMAKE_HOST_SYSTEM_PROCESSOR</item>
+      <item>CMAKE_HOST_SYSTEM_VERSION</item>
+      <item>CMAKE_HOST_UNIX</item>
+      <item>CMAKE_HOST_WIN32</item>
+      <item>CMAKE_HP_PTHREADS_INIT</item>
+      <item>CMAKE_IGNORE_PATH</item>
+      <item>CMAKE_IGNORE_PREFIX_PATH</item>
+      <item>CMAKE_IMPORT_LIBRARY_PREFIX</item>
+      <item>CMAKE_IMPORT_LIBRARY_SUFFIX</item>
+      <item>CMAKE_INCLUDE_CURRENT_DIR</item>
+      <item>CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE</item>
+      <item>CMAKE_INCLUDE_DIRECTORIES_BEFORE</item>
+      <item>CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE</item>
+      <item>CMAKE_INCLUDE_PATH</item>
+      <item>CMAKE_INSTALL_BINDIR</item>
+      <item>CMAKE_INSTALL_DATADIR</item>
+      <item>CMAKE_INSTALL_DATAROOTDIR</item>
+      <item>CMAKE_INSTALL_DEBUG_LIBRARIES</item>
+      <item>CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY</item>
+      <item>CMAKE_INSTALL_DEFAULT_COMPONENT_NAME</item>
+      <item>CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>
+      <item>CMAKE_INSTALL_DOCDIR</item>
+      <item>CMAKE_INSTALL_FULL_BINDIR</item>
+      <item>CMAKE_INSTALL_FULL_DATADIR</item>
+      <item>CMAKE_INSTALL_FULL_DATAROOTDIR</item>
+      <item>CMAKE_INSTALL_FULL_DOCDIR</item>
+      <item>CMAKE_INSTALL_FULL_INCLUDEDIR</item>
+      <item>CMAKE_INSTALL_FULL_INFODIR</item>
+      <item>CMAKE_INSTALL_FULL_LIBDIR</item>
+      <item>CMAKE_INSTALL_FULL_LIBEXECDIR</item>
+      <item>CMAKE_INSTALL_FULL_LOCALEDIR</item>
+      <item>CMAKE_INSTALL_FULL_LOCALSTATEDIR</item>
+      <item>CMAKE_INSTALL_FULL_MANDIR</item>
+      <item>CMAKE_INSTALL_FULL_OLDINCLUDEDIR</item>
+      <item>CMAKE_INSTALL_FULL_RUNSTATEDIR</item>
+      <item>CMAKE_INSTALL_FULL_SBINDIR</item>
+      <item>CMAKE_INSTALL_FULL_SHAREDSTATEDIR</item>
+      <item>CMAKE_INSTALL_FULL_SYSCONFDIR</item>
+      <item>CMAKE_INSTALL_INCLUDEDIR</item>
+      <item>CMAKE_INSTALL_INFODIR</item>
+      <item>CMAKE_INSTALL_LIBDIR</item>
+      <item>CMAKE_INSTALL_LIBEXECDIR</item>
+      <item>CMAKE_INSTALL_LOCALEDIR</item>
+      <item>CMAKE_INSTALL_LOCALSTATEDIR</item>
+      <item>CMAKE_INSTALL_MANDIR</item>
+      <item>CMAKE_INSTALL_MESSAGE</item>
+      <item>CMAKE_INSTALL_MFC_LIBRARIES</item>
+      <item>CMAKE_INSTALL_NAME_DIR</item>
+      <item>CMAKE_INSTALL_OLDINCLUDEDIR</item>
+      <item>CMAKE_INSTALL_OPENMP_LIBRARIES</item>
+      <item>CMAKE_INSTALL_PREFIX</item>
+      <item>CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT</item>
+      <item>CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
+      <item>CMAKE_INSTALL_RPATH</item>
+      <item>CMAKE_INSTALL_RPATH_USE_LINK_PATH</item>
+      <item>CMAKE_INSTALL_RUNSTATEDIR</item>
+      <item>CMAKE_INSTALL_SBINDIR</item>
+      <item>CMAKE_INSTALL_SHAREDSTATEDIR</item>
+      <item>CMAKE_INSTALL_SYSCONFDIR</item>
+      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT</item>
+      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION</item>
+      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS</item>
+      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_NO_WARNINGS</item>
+      <item>CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP</item>
+      <item>CMAKE_INSTALL_UCRT_LIBRARIES</item>
+      <item>CMAKE_INTERMEDIATE_DIR_STRATEGY</item>
+      <item>CMAKE_INTERPROCEDURAL_OPTIMIZATION</item>
+      <item>CMAKE_ISPC_HEADER_DIRECTORY</item>
+      <item>CMAKE_ISPC_HEADER_SUFFIX</item>
+      <item>CMAKE_ISPC_INSTRUCTION_SETS</item>
+      <item>CMAKE_JAR_CLASSES_PREFIX</item>
+      <item>CMAKE_JAVA_COMPILE_FLAGS</item>
+      <item>CMAKE_JAVA_INCLUDE_PATH</item>
+      <item>CMAKE_JNI_TARGET</item>
+      <item>CMAKE_JOB_POOLS</item>
+      <item>CMAKE_JOB_POOL_COMPILE</item>
+      <item>CMAKE_JOB_POOL_LINK</item>
+      <item>CMAKE_LIBRARY_ARCHITECTURE</item>
+      <item>CMAKE_LIBRARY_ARCHITECTURE_REGEX</item>
+      <item>CMAKE_LIBRARY_OUTPUT_DIRECTORY</item>
+      <item>CMAKE_LIBRARY_PATH</item>
+      <item>CMAKE_LIBRARY_PATH_FLAG</item>
+      <item>CMAKE_LINKER_TYPE</item>
+      <item>CMAKE_LINK_DEF_FILE_FLAG</item>
+      <item>CMAKE_LINK_DEPENDS_NO_SHARED</item>
+      <item>CMAKE_LINK_DEPENDS_USE_LINKER</item>
+      <item>CMAKE_LINK_DIRECTORIES_BEFORE</item>
+      <item>CMAKE_LINK_INTERFACE_LIBRARIES</item>
+      <item>CMAKE_LINK_LIBRARIES_ONLY_TARGETS</item>
+      <item>CMAKE_LINK_LIBRARIES_STRATEGY</item>
+      <item>CMAKE_LINK_LIBRARY_FILE_FLAG</item>
+      <item>CMAKE_LINK_LIBRARY_FLAG</item>
+      <item>CMAKE_LINK_LIBRARY_SUFFIX</item>
+      <item>CMAKE_LINK_SEARCH_END_STATIC</item>
+      <item>CMAKE_LINK_SEARCH_START_STATIC</item>
+      <item>CMAKE_LINK_WARNING_AS_ERROR</item>
+      <item>CMAKE_LINK_WHAT_YOU_USE</item>
+      <item>CMAKE_LINK_WHAT_YOU_USE_CHECK</item>
+      <item>CMAKE_MACOSX_BUNDLE</item>
+      <item>CMAKE_MACOSX_RPATH</item>
+      <item>CMAKE_MAJOR_VERSION</item>
+      <item>CMAKE_MAKE_PROGRAM</item>
+      <item>CMAKE_MATCH_COUNT</item>
+      <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item>
+      <item>CMAKE_MESSAGE_CONTEXT</item>
+      <item>CMAKE_MESSAGE_CONTEXT_SHOW</item>
+      <item>CMAKE_MESSAGE_INDENT</item>
+      <item>CMAKE_MESSAGE_LOG_LEVEL</item>
+      <item>CMAKE_MFC_FLAG</item>
+      <item>CMAKE_MINIMUM_REQUIRED_VERSION</item>
+      <item>CMAKE_MINOR_VERSION</item>
+      <item>CMAKE_MODULE_LINKER_FLAGS</item>
+      <item>CMAKE_MODULE_LINKER_FLAGS_INIT</item>
+      <item>CMAKE_MODULE_PATH</item>
+      <item>CMAKE_MSVCIDE_RUN_PATH</item>
+      <item>CMAKE_MSVC_DEBUG_INFORMATION_FORMAT</item>
+      <item>CMAKE_MSVC_RUNTIME_CHECKS</item>
+      <item>CMAKE_MSVC_RUNTIME_LIBRARY</item>
+      <item>CMAKE_NETRC</item>
+      <item>CMAKE_NETRC_FILE</item>
+      <item>CMAKE_NINJA_OUTPUT_PATH_PREFIX</item>
+      <item>CMAKE_NO_ANSI_FOR_SCOPE</item>
+      <item>CMAKE_NO_ANSI_STREAM_HEADERS</item>
+      <item>CMAKE_NO_ANSI_STRING_STREAM</item>
+      <item>CMAKE_NO_BUILTIN_CHRPATH</item>
+      <item>CMAKE_NO_STD_NAMESPACE</item>
+      <item>CMAKE_NO_SYSTEM_FROM_IMPORTED</item>
+      <item>CMAKE_OBJCXX_EXTENSIONS</item>
+      <item>CMAKE_OBJCXX_LINK_NO_PIE_SUPPORTED</item>
+      <item>CMAKE_OBJCXX_LINK_PIE_SUPPORTED</item>
+      <item>CMAKE_OBJCXX_STANDARD</item>
+      <item>CMAKE_OBJCXX_STANDARD_REQUIRED</item>
+      <item>CMAKE_OBJC_EXTENSIONS</item>
+      <item>CMAKE_OBJC_LINK_NO_PIE_SUPPORTED</item>
+      <item>CMAKE_OBJC_LINK_PIE_SUPPORTED</item>
+      <item>CMAKE_OBJC_STANDARD</item>
+      <item>CMAKE_OBJC_STANDARD_REQUIRED</item>
+      <item>CMAKE_OBJECT_PATH_MAX</item>
+      <item>CMAKE_OPTIMIZE_DEPENDENCIES</item>
+      <item>CMAKE_OSX_ARCHITECTURES</item>
+      <item>CMAKE_OSX_DEPLOYMENT_TARGET</item>
+      <item>CMAKE_OSX_SYSROOT</item>
+      <item>CMAKE_PARENT_LIST_FILE</item>
+      <item>CMAKE_PATCH_VERSION</item>
+      <item>CMAKE_PCH_INSTANTIATE_TEMPLATES</item>
+      <item>CMAKE_PCH_WARN_INVALID</item>
+      <item>CMAKE_PDB_OUTPUT_DIRECTORY</item>
+      <item>CMAKE_PKG_CONFIG_ALLOW_SYS_INCLUDES</item>
+      <item>CMAKE_PKG_CONFIG_ALLOW_SYS_LIBS</item>
+      <item>CMAKE_PKG_CONFIG_CFLAGS</item>
+      <item>CMAKE_PKG_CONFIG_COMPILE_OPTIONS</item>
+      <item>CMAKE_PKG_CONFIG_CONFLICTS</item>
+      <item>CMAKE_PKG_CONFIG_DESCRIPTION</item>
+      <item>CMAKE_PKG_CONFIG_DISABLE_UNINSTALLED</item>
+      <item>CMAKE_PKG_CONFIG_INCLUDES</item>
+      <item>CMAKE_PKG_CONFIG_LIBDIRS</item>
+      <item>CMAKE_PKG_CONFIG_LIBNAMES</item>
+      <item>CMAKE_PKG_CONFIG_LIBS</item>
+      <item>CMAKE_PKG_CONFIG_LINK_OPTIONS</item>
+      <item>CMAKE_PKG_CONFIG_NAME</item>
+      <item>CMAKE_PKG_CONFIG_PC_LIB_DIRS</item>
+      <item>CMAKE_PKG_CONFIG_PC_PATH</item>
+      <item>CMAKE_PKG_CONFIG_PKGCONF_INCLUDES</item>
+      <item>CMAKE_PKG_CONFIG_PROVIDES</item>
+      <item>CMAKE_PKG_CONFIG_REQUIRES</item>
+      <item>CMAKE_PKG_CONFIG_SYSROOT_DIR</item>
+      <item>CMAKE_PKG_CONFIG_SYS_INCLUDE_DIRS</item>
+      <item>CMAKE_PKG_CONFIG_SYS_LIB_DIRS</item>
+      <item>CMAKE_PKG_CONFIG_TOP_BUILD_DIR</item>
+      <item>CMAKE_PLATFORM_NO_VERSIONED_SONAME</item>
+      <item>CMAKE_POLICY_VERSION_MINIMUM</item>
+      <item>CMAKE_POSITION_INDEPENDENT_CODE</item>
+      <item>CMAKE_PREFIX_PATH</item>
+      <item>CMAKE_PROGRAM_PATH</item>
+      <item>CMAKE_PROJECT_COMPAT_VERSION</item>
+      <item>CMAKE_PROJECT_DESCRIPTION</item>
+      <item>CMAKE_PROJECT_HOMEPAGE_URL</item>
+      <item>CMAKE_PROJECT_INCLUDE</item>
+      <item>CMAKE_PROJECT_INCLUDE_BEFORE</item>
+      <item>CMAKE_PROJECT_NAME</item>
+      <item>CMAKE_PROJECT_SPDX_LICENSE</item>
+      <item>CMAKE_PROJECT_TOP_LEVEL_INCLUDES</item>
+      <item>CMAKE_PROJECT_VERSION</item>
+      <item>CMAKE_PROJECT_VERSION_MAJOR</item>
+      <item>CMAKE_PROJECT_VERSION_MINOR</item>
+      <item>CMAKE_PROJECT_VERSION_PATCH</item>
+      <item>CMAKE_PROJECT_VERSION_TWEAK</item>
+      <item>CMAKE_RANLIB</item>
+      <item>CMAKE_REQUIRED_DEFINITIONS</item>
+      <item>CMAKE_REQUIRED_FLAGS</item>
+      <item>CMAKE_REQUIRED_INCLUDES</item>
+      <item>CMAKE_REQUIRED_LIBRARIES</item>
+      <item>CMAKE_REQUIRED_LINK_DIRECTORIES</item>
+      <item>CMAKE_REQUIRED_LINK_OPTIONS</item>
+      <item>CMAKE_REQUIRED_QUIET</item>
+      <item>CMAKE_ROOT</item>
+      <item>CMAKE_RULE_MESSAGES</item>
+      <item>CMAKE_RUNTIME_OUTPUT_DIRECTORY</item>
+      <item>CMAKE_SCRIPT_MODE_FILE</item>
+      <item>CMAKE_SHARED_LIBRARY_ENABLE_EXPORTS</item>
+      <item>CMAKE_SHARED_LIBRARY_PREFIX</item>
+      <item>CMAKE_SHARED_LIBRARY_SUFFIX</item>
+      <item>CMAKE_SHARED_LINKER_FLAGS</item>
+      <item>CMAKE_SHARED_LINKER_FLAGS_INIT</item>
+      <item>CMAKE_SHARED_MODULE_PREFIX</item>
+      <item>CMAKE_SHARED_MODULE_SUFFIX</item>
+      <item>CMAKE_SIZEOF_VOID_P</item>
+      <item>CMAKE_SKIP_BUILD_RPATH</item>
+      <item>CMAKE_SKIP_INSTALL_ALL_DEPENDENCY</item>
+      <item>CMAKE_SKIP_INSTALL_RPATH</item>
+      <item>CMAKE_SKIP_INSTALL_RULES</item>
+      <item>CMAKE_SKIP_LINTING</item>
+      <item>CMAKE_SKIP_RPATH</item>
+      <item>CMAKE_SKIP_TEST_ALL_DEPENDENCY</item>
+      <item>CMAKE_SOURCE_DIR</item>
+      <item>CMAKE_STAGING_PREFIX</item>
+      <item>CMAKE_STATIC_LIBRARY_PREFIX</item>
+      <item>CMAKE_STATIC_LIBRARY_SUFFIX</item>
+      <item>CMAKE_STATIC_LINKER_FLAGS</item>
+      <item>CMAKE_STATIC_LINKER_FLAGS_INIT</item>
+      <item>CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS</item>
+      <item>CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE</item>
+      <item>CMAKE_SUPPRESS_REGENERATION</item>
+      <item>CMAKE_SWIG_FLAGS</item>
+      <item>CMAKE_SWIG_OUTDIR</item>
+      <item>CMAKE_SYSROOT</item>
+      <item>CMAKE_SYSROOT_COMPILE</item>
+      <item>CMAKE_SYSROOT_LINK</item>
+      <item>CMAKE_SYSTEM</item>
+      <item>CMAKE_SYSTEM_APPBUNDLE_PATH</item>
+      <item>CMAKE_SYSTEM_FRAMEWORK_PATH</item>
+      <item>CMAKE_SYSTEM_IGNORE_PATH</item>
+      <item>CMAKE_SYSTEM_IGNORE_PREFIX_PATH</item>
+      <item>CMAKE_SYSTEM_INCLUDE_PATH</item>
+      <item>CMAKE_SYSTEM_LIBRARY_PATH</item>
+      <item>CMAKE_SYSTEM_NAME</item>
+      <item>CMAKE_SYSTEM_PREFIX_PATH</item>
+      <item>CMAKE_SYSTEM_PROCESSOR</item>
+      <item>CMAKE_SYSTEM_PROGRAM_PATH</item>
+      <item>CMAKE_SYSTEM_VERSION</item>
+      <item>CMAKE_Swift_COMPILATION_MODE</item>
+      <item>CMAKE_Swift_LANGUAGE_VERSION</item>
+      <item>CMAKE_Swift_MODULE_DIRECTORY</item>
+      <item>CMAKE_Swift_NUM_THREADS</item>
+      <item>CMAKE_Swift_SEPARATE_MODULE_EMISSION</item>
+      <item>CMAKE_TARGET_MESSAGES</item>
+      <item>CMAKE_TASKING_TOOLSET</item>
+      <item>CMAKE_TEST_BUILD_DEPENDS</item>
+      <item>CMAKE_TEST_LAUNCHER</item>
+      <item>CMAKE_THREAD_LIBS_INIT</item>
+      <item>CMAKE_THREAD_PREFER_PTHREAD</item>
+      <item>CMAKE_TOOLCHAIN_FILE</item>
+      <item>CMAKE_TRY_COMPILE_CONFIGURATION</item>
+      <item>CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES</item>
+      <item>CMAKE_TRY_COMPILE_PLATFORM_VARIABLES</item>
+      <item>CMAKE_TRY_COMPILE_TARGET_TYPE</item>
+      <item>CMAKE_TWEAK_VERSION</item>
+      <item>CMAKE_UNITY_BUILD</item>
+      <item>CMAKE_UNITY_BUILD_BATCH_SIZE</item>
+      <item>CMAKE_UNITY_BUILD_RELOCATABLE</item>
+      <item>CMAKE_UNITY_BUILD_UNIQUE_ID</item>
+      <item>CMAKE_USER_MAKE_RULES_OVERRIDE</item>
+      <item>CMAKE_USE_PTHREADS_INIT</item>
+      <item>CMAKE_USE_SPROC_INIT</item>
+      <item>CMAKE_USE_WIN32_THREADS_INIT</item>
+      <item>CMAKE_VERBOSE_MAKEFILE</item>
+      <item>CMAKE_VERIFY_INTERFACE_HEADER_SETS</item>
+      <item>CMAKE_VERIFY_PRIVATE_HEADER_SETS</item>
+      <item>CMAKE_VERSION</item>
+      <item>CMAKE_VISIBILITY_INLINES_HIDDEN</item>
+      <item>CMAKE_VS_DEBUGGER_COMMAND</item>
+      <item>CMAKE_VS_DEBUGGER_COMMAND_ARGUMENTS</item>
+      <item>CMAKE_VS_DEBUGGER_ENVIRONMENT</item>
+      <item>CMAKE_VS_DEBUGGER_WORKING_DIRECTORY</item>
+      <item>CMAKE_VS_DEVENV_COMMAND</item>
+      <item>CMAKE_VS_GLOBALS</item>
+      <item>CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD</item>
+      <item>CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD</item>
+      <item>CMAKE_VS_JUST_MY_CODE_DEBUGGING</item>
+      <item>CMAKE_VS_MSBUILD_COMMAND</item>
+      <item>CMAKE_VS_NUGET_PACKAGE_RESTORE</item>
+      <item>CMAKE_VS_NsightTegra_VERSION</item>
+      <item>CMAKE_VS_PLATFORM_NAME</item>
+      <item>CMAKE_VS_PLATFORM_NAME_DEFAULT</item>
+      <item>CMAKE_VS_PLATFORM_TOOLSET</item>
+      <item>CMAKE_VS_PLATFORM_TOOLSET_CUDA</item>
+      <item>CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR</item>
+      <item>CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE</item>
+      <item>CMAKE_VS_PLATFORM_TOOLSET_VERSION</item>
+      <item>CMAKE_VS_SDK_EXCLUDE_DIRECTORIES</item>
+      <item>CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES</item>
+      <item>CMAKE_VS_SDK_INCLUDE_DIRECTORIES</item>
+      <item>CMAKE_VS_SDK_LIBRARY_DIRECTORIES</item>
+      <item>CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES</item>
+      <item>CMAKE_VS_SDK_REFERENCE_DIRECTORIES</item>
+      <item>CMAKE_VS_SDK_SOURCE_DIRECTORIES</item>
+      <item>CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER</item>
+      <item>CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION</item>
+      <item>CMAKE_VS_TARGET_FRAMEWORK_VERSION</item>
+      <item>CMAKE_VS_USE_DEBUG_LIBRARIES</item>
+      <item>CMAKE_VS_VERSION_BUILD_NUMBER</item>
+      <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION</item>
+      <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION</item>
+      <item>CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM</item>
+      <item>CMAKE_VS_WINRT_BY_DEFAULT</item>
+      <item>CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item>
+      <item>CMAKE_WATCOM_RUNTIME_LIBRARY</item>
+      <item>CMAKE_WIN32_EXECUTABLE</item>
+      <item>CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS</item>
+      <item>CMAKE_XCODE_BUILD_SYSTEM</item>
+      <item>CMAKE_XCODE_GENERATE_SCHEME</item>
+      <item>CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY</item>
+      <item>CMAKE_XCODE_LINK_BUILD_PHASE_MODE</item>
+      <item>CMAKE_XCODE_PLATFORM_TOOLSET</item>
+      <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER</item>
+      <item>CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
+      <item>CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
+      <item>CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
+      <item>CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
+      <item>CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
+      <item>CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION</item>
+      <item>CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE</item>
+      <item>CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION</item>
+      <item>CMAKE_XCODE_SCHEME_ENVIRONMENT</item>
+      <item>CMAKE_XCODE_SCHEME_GUARD_MALLOC</item>
+      <item>CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION</item>
+      <item>CMAKE_XCODE_SCHEME_LAUNCH_MODE</item>
+      <item>CMAKE_XCODE_SCHEME_LLDB_INIT_FILE</item>
+      <item>CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</item>
+      <item>CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES</item>
+      <item>CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE</item>
+      <item>CMAKE_XCODE_SCHEME_MALLOC_STACK</item>
+      <item>CMAKE_XCODE_SCHEME_TEST_CONFIGURATION</item>
+      <item>CMAKE_XCODE_SCHEME_THREAD_SANITIZER</item>
+      <item>CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP</item>
+      <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item>
+      <item>CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item>
+      <item>CMAKE_XCODE_SCHEME_WORKING_DIRECTORY</item>
+      <item>CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS</item>
+      <item>CMAKE_XCODE_XCCONFIG</item>
+      <item>CPACK_ABSOLUTE_DESTINATION_FILES</item>
+      <item>CPACK_APPIMAGE_COMPRESSOR</item>
+      <item>CPACK_APPIMAGE_DESKTOP_FILE</item>
+      <item>CPACK_APPIMAGE_EXCLUDE_FILE</item>
+      <item>CPACK_APPIMAGE_GUESS_UPDATE_INFORMATION</item>
+      <item>CPACK_APPIMAGE_MKSQUASHFS_OPTIONS</item>
+      <item>CPACK_APPIMAGE_NO_APPSTREAM</item>
+      <item>CPACK_APPIMAGE_PATCHELF_EXECUTABLE</item>
+      <item>CPACK_APPIMAGE_RUNTIME_FILE</item>
+      <item>CPACK_APPIMAGE_SIGN</item>
+      <item>CPACK_APPIMAGE_SIGN_KEY</item>
+      <item>CPACK_APPIMAGE_TOOL_EXECUTABLE</item>
+      <item>CPACK_APPIMAGE_UPDATE_INFORMATION</item>
+      <item>CPACK_ARCHIVE_COMPONENT_INSTALL</item>
+      <item>CPACK_ARCHIVE_COMPRESSION_LEVEL</item>
+      <item>CPACK_ARCHIVE_ENCODING</item>
+      <item>CPACK_ARCHIVE_FILE_EXTENSION</item>
+      <item>CPACK_ARCHIVE_FILE_NAME</item>
+      <item>CPACK_ARCHIVE_GID</item>
+      <item>CPACK_ARCHIVE_THREADS</item>
+      <item>CPACK_ARCHIVE_UID</item>
+      <item>CPACK_BUILD_SOURCE_DIRS</item>
+      <item>CPACK_BUNDLE_APPLE_CERT_APP</item>
+      <item>CPACK_BUNDLE_APPLE_CODESIGN_FILES</item>
+      <item>CPACK_BUNDLE_APPLE_CODESIGN_PARAMETER</item>
+      <item>CPACK_BUNDLE_APPLE_ENTITLEMENTS</item>
+      <item>CPACK_BUNDLE_ICON</item>
+      <item>CPACK_BUNDLE_NAME</item>
+      <item>CPACK_BUNDLE_PLIST</item>
+      <item>CPACK_BUNDLE_STARTUP_COMMAND</item>
+      <item>CPACK_CMAKE_GENERATOR</item>
+      <item>CPACK_COMMAND_CODESIGN</item>
+      <item>CPACK_COMMAND_HDIUTIL</item>
+      <item>CPACK_COMMAND_PKGBUILD</item>
+      <item>CPACK_COMMAND_PRODUCTBUILD</item>
+      <item>CPACK_COMMAND_REZ</item>
+      <item>CPACK_COMMAND_SETFILE</item>
+      <item>CPACK_COMPONENTS_ALL</item>
+      <item>CPACK_COMPONENTS_GROUPING</item>
+      <item>CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY</item>
+      <item>CPACK_COMPRESSION_LEVEL</item>
+      <item>CPACK_CREATE_DESKTOP_LINKS</item>
+      <item>CPACK_CUSTOM_INSTALL_VARIABLES</item>
+      <item>CPACK_CYGWIN_BUILD_SCRIPT</item>
+      <item>CPACK_CYGWIN_PATCH_FILE</item>
+      <item>CPACK_CYGWIN_PATCH_NUMBER</item>
+      <item>CPACK_DEBIAN_ARCHIVE_TYPE</item>
+      <item>CPACK_DEBIAN_COMPRESSION_LEVEL</item>
+      <item>CPACK_DEBIAN_COMPRESSION_TYPE</item>
+      <item>CPACK_DEBIAN_DEBUGINFO_PACKAGE</item>
+      <item>CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS</item>
+      <item>CPACK_DEBIAN_FILE_NAME</item>
+      <item>CPACK_DEBIAN_PACKAGE_ARCHITECTURE</item>
+      <item>CPACK_DEBIAN_PACKAGE_BREAKS</item>
+      <item>CPACK_DEBIAN_PACKAGE_CONFLICTS</item>
+      <item>CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA</item>
+      <item>CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION</item>
+      <item>CPACK_DEBIAN_PACKAGE_DEBUG</item>
+      <item>CPACK_DEBIAN_PACKAGE_DEPENDS</item>
+      <item>CPACK_DEBIAN_PACKAGE_DESCRIPTION</item>
+      <item>CPACK_DEBIAN_PACKAGE_ENHANCES</item>
+      <item>CPACK_DEBIAN_PACKAGE_EPOCH</item>
+      <item>CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS</item>
+      <item>CPACK_DEBIAN_PACKAGE_GENERATE_SHLIBS_POLICY</item>
+      <item>CPACK_DEBIAN_PACKAGE_HOMEPAGE</item>
+      <item>CPACK_DEBIAN_PACKAGE_MAINTAINER</item>
+      <item>CPACK_DEBIAN_PACKAGE_MULTIARCH</item>
+      <item>CPACK_DEBIAN_PACKAGE_NAME</item>
+      <item>CPACK_DEBIAN_PACKAGE_PREDEPENDS</item>
+      <item>CPACK_DEBIAN_PACKAGE_PRIORITY</item>
+      <item>CPACK_DEBIAN_PACKAGE_PROVIDES</item>
+      <item>CPACK_DEBIAN_PACKAGE_RECOMMENDS</item>
+      <item>CPACK_DEBIAN_PACKAGE_RELEASE</item>
+      <item>CPACK_DEBIAN_PACKAGE_REPLACES</item>
+      <item>CPACK_DEBIAN_PACKAGE_SECTION</item>
+      <item>CPACK_DEBIAN_PACKAGE_SHLIBDEPS</item>
+      <item>CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS</item>
+      <item>CPACK_DEBIAN_PACKAGE_SOURCE</item>
+      <item>CPACK_DEBIAN_PACKAGE_SUGGESTS</item>
+      <item>CPACK_DEBIAN_PACKAGE_VERSION</item>
+      <item>CPACK_DEB_COMPONENT_INSTALL</item>
+      <item>CPACK_DMG_BACKGROUND_IMAGE</item>
+      <item>CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK</item>
+      <item>CPACK_DMG_DS_STORE</item>
+      <item>CPACK_DMG_DS_STORE_SETUP_SCRIPT</item>
+      <item>CPACK_DMG_FILESYSTEM</item>
+      <item>CPACK_DMG_FORMAT</item>
+      <item>CPACK_DMG_SLA_DIR</item>
+      <item>CPACK_DMG_SLA_LANGUAGES</item>
+      <item>CPACK_DMG_SLA_USE_RESOURCE_FILE_LICENSE</item>
+      <item>CPACK_DMG_VOLUME_NAME</item>
+      <item>CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION</item>
+      <item>CPACK_EXTERNAL_BUILT_PACKAGES</item>
+      <item>CPACK_EXTERNAL_ENABLE_STAGING</item>
+      <item>CPACK_EXTERNAL_PACKAGE_SCRIPT</item>
+      <item>CPACK_EXTERNAL_REQUESTED_VERSIONS</item>
+      <item>CPACK_FREEBSD_PACKAGE_CATEGORIES</item>
+      <item>CPACK_FREEBSD_PACKAGE_COMMENT</item>
+      <item>CPACK_FREEBSD_PACKAGE_DEPS</item>
+      <item>CPACK_FREEBSD_PACKAGE_DESCRIPTION</item>
+      <item>CPACK_FREEBSD_PACKAGE_LICENSE</item>
+      <item>CPACK_FREEBSD_PACKAGE_LICENSE_LOGIC</item>
+      <item>CPACK_FREEBSD_PACKAGE_MAINTAINER</item>
+      <item>CPACK_FREEBSD_PACKAGE_NAME</item>
+      <item>CPACK_FREEBSD_PACKAGE_ORIGIN</item>
+      <item>CPACK_FREEBSD_PACKAGE_WWW</item>
+      <item>CPACK_GENERATOR</item>
+      <item>CPACK_IFW_ADMIN_TARGET_DIRECTORY</item>
+      <item>CPACK_IFW_ARCHIVE_COMPRESSION</item>
+      <item>CPACK_IFW_ARCHIVE_FORMAT</item>
+      <item>CPACK_IFW_BINARYCREATOR_EXECUTABLE</item>
+      <item>CPACK_IFW_DEVTOOL_EXECUTABLE</item>
+      <item>CPACK_IFW_DOWNLOAD_ALL</item>
+      <item>CPACK_IFW_FRAMEWORK_VERSION</item>
+      <item>CPACK_IFW_INSTALLERBASE_EXECUTABLE</item>
+      <item>CPACK_IFW_PACKAGES_DIRECTORIES</item>
+      <item>CPACK_IFW_PACKAGE_ALLOW_NON_ASCII_CHARACTERS</item>
+      <item>CPACK_IFW_PACKAGE_ALLOW_SPACE_IN_PATH</item>
+      <item>CPACK_IFW_PACKAGE_BACKGROUND</item>
+      <item>CPACK_IFW_PACKAGE_BANNER</item>
+      <item>CPACK_IFW_PACKAGE_CONTROL_SCRIPT</item>
+      <item>CPACK_IFW_PACKAGE_DISABLE_COMMAND_LINE_INTERFACE</item>
+      <item>CPACK_IFW_PACKAGE_GROUP</item>
+      <item>CPACK_IFW_PACKAGE_ICON</item>
+      <item>CPACK_IFW_PACKAGE_LOGO</item>
+      <item>CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_INI_FILE</item>
+      <item>CPACK_IFW_PACKAGE_MAINTENANCE_TOOL_NAME</item>
+      <item>CPACK_IFW_PACKAGE_NAME</item>
+      <item>CPACK_IFW_PACKAGE_PRODUCT_IMAGES</item>
+      <item>CPACK_IFW_PACKAGE_PRODUCT_IMAGE_URLS</item>
+      <item>CPACK_IFW_PACKAGE_PUBLISHER</item>
+      <item>CPACK_IFW_PACKAGE_REMOVE_TARGET_DIR</item>
+      <item>CPACK_IFW_PACKAGE_RESOURCES</item>
+      <item>CPACK_IFW_PACKAGE_RUN_PROGRAM</item>
+      <item>CPACK_IFW_PACKAGE_RUN_PROGRAM_ARGUMENTS</item>
+      <item>CPACK_IFW_PACKAGE_RUN_PROGRAM_DESCRIPTION</item>
+      <item>CPACK_IFW_PACKAGE_SIGNING_IDENTITY</item>
+      <item>CPACK_IFW_PACKAGE_START_MENU_DIRECTORY</item>
+      <item>CPACK_IFW_PACKAGE_STYLE_SHEET</item>
+      <item>CPACK_IFW_PACKAGE_TITLE</item>
+      <item>CPACK_IFW_PACKAGE_TITLE_COLOR</item>
+      <item>CPACK_IFW_PACKAGE_WATERMARK</item>
+      <item>CPACK_IFW_PACKAGE_WINDOW_ICON</item>
+      <item>CPACK_IFW_PACKAGE_WIZARD_DEFAULT_HEIGHT</item>
+      <item>CPACK_IFW_PACKAGE_WIZARD_DEFAULT_WIDTH</item>
+      <item>CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST</item>
+      <item>CPACK_IFW_PACKAGE_WIZARD_STYLE</item>
+      <item>CPACK_IFW_PRODUCT_URL</item>
+      <item>CPACK_IFW_REPOGEN_EXECUTABLE</item>
+      <item>CPACK_IFW_REPOSITORIES_ALL</item>
+      <item>CPACK_IFW_RESOLVE_DUPLICATE_NAMES</item>
+      <item>CPACK_IFW_ROOT</item>
+      <item>CPACK_IFW_TARGET_DIRECTORY</item>
+      <item>CPACK_IFW_VERBOSE</item>
+      <item>CPACK_INCLUDE_TOPLEVEL_DIRECTORY</item>
+      <item>CPACK_INNOSETUP_ALLOW_CUSTOM_DIRECTORY</item>
+      <item>CPACK_INNOSETUP_ARCHITECTURE</item>
+      <item>CPACK_INNOSETUP_CODE_FILES</item>
+      <item>CPACK_INNOSETUP_CREATE_UNINSTALL_LINK</item>
+      <item>CPACK_INNOSETUP_CUSTOM_INSTALL_INSTRUCTIONS</item>
+      <item>CPACK_INNOSETUP_EXECUTABLE</item>
+      <item>CPACK_INNOSETUP_EXECUTABLE_ARGUMENTS</item>
+      <item>CPACK_INNOSETUP_EXTRA_SCRIPTS</item>
+      <item>CPACK_INNOSETUP_ICON_FILE</item>
+      <item>CPACK_INNOSETUP_IGNORE_LICENSE_PAGE</item>
+      <item>CPACK_INNOSETUP_IGNORE_README_PAGE</item>
+      <item>CPACK_INNOSETUP_INSTALL_ROOT</item>
+      <item>CPACK_INNOSETUP_LANGUAGES</item>
+      <item>CPACK_INNOSETUP_MENU_LINKS</item>
+      <item>CPACK_INNOSETUP_PASSWORD</item>
+      <item>CPACK_INNOSETUP_PROGRAM_MENU_FOLDER</item>
+      <item>CPACK_INNOSETUP_RUN_EXECUTABLES</item>
+      <item>CPACK_INNOSETUP_USE_CMAKE_BOOL_FORMAT</item>
+      <item>CPACK_INNOSETUP_USE_MODERN_WIZARD</item>
+      <item>CPACK_INNOSETUP_VERIFY_DOWNLOADS</item>
+      <item>CPACK_INSTALLED_DIRECTORIES</item>
+      <item>CPACK_INSTALL_CMAKE_PROJECTS</item>
+      <item>CPACK_INSTALL_COMMANDS</item>
+      <item>CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS</item>
+      <item>CPACK_INSTALL_SCRIPTS</item>
+      <item>CPACK_MONOLITHIC_INSTALL</item>
+      <item>CPACK_NSIS_BRANDING_TEXT</item>
+      <item>CPACK_NSIS_BRANDING_TEXT_TRIM_POSITION</item>
+      <item>CPACK_NSIS_COMPRESSOR</item>
+      <item>CPACK_NSIS_CONTACT</item>
+      <item>CPACK_NSIS_CRC_CHECK</item>
+      <item>CPACK_NSIS_CREATE_ICONS_EXTRA</item>
+      <item>CPACK_NSIS_DELETE_ICONS_EXTRA</item>
+      <item>CPACK_NSIS_DISPLAY_NAME</item>
+      <item>CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL</item>
+      <item>CPACK_NSIS_EXECUTABLE</item>
+      <item>CPACK_NSIS_EXECUTABLES_DIRECTORY</item>
+      <item>CPACK_NSIS_EXECUTABLE_POST_ARGUMENTS</item>
+      <item>CPACK_NSIS_EXECUTABLE_PRE_ARGUMENTS</item>
+      <item>CPACK_NSIS_EXTRA_INSTALL_COMMANDS</item>
+      <item>CPACK_NSIS_EXTRA_PREINSTALL_COMMANDS</item>
+      <item>CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS</item>
+      <item>CPACK_NSIS_FINISH_TITLE</item>
+      <item>CPACK_NSIS_FINISH_TITLE_3LINES</item>
+      <item>CPACK_NSIS_HELP_LINK</item>
+      <item>CPACK_NSIS_IGNORE_COMPONENTS_PAGE</item>
+      <item>CPACK_NSIS_IGNORE_LICENSE_PAGE</item>
+      <item>CPACK_NSIS_INSTALLED_ICON_NAME</item>
+      <item>CPACK_NSIS_INSTALLER_MUI_ICON_CODE</item>
+      <item>CPACK_NSIS_INSTALL_ROOT</item>
+      <item>CPACK_NSIS_MANIFEST_DPI_AWARE</item>
+      <item>CPACK_NSIS_MENU_LINKS</item>
+      <item>CPACK_NSIS_MODIFY_PATH</item>
+      <item>CPACK_NSIS_MUI_FINISHPAGE_RUN</item>
+      <item>CPACK_NSIS_MUI_HEADERIMAGE</item>
+      <item>CPACK_NSIS_MUI_ICON</item>
+      <item>CPACK_NSIS_MUI_UNIICON</item>
+      <item>CPACK_NSIS_MUI_UNWELCOMEFINISHPAGE_BITMAP</item>
+      <item>CPACK_NSIS_MUI_WELCOMEFINISHPAGE_BITMAP</item>
+      <item>CPACK_NSIS_PACKAGE_NAME</item>
+      <item>CPACK_NSIS_UNINSTALL_NAME</item>
+      <item>CPACK_NSIS_URL_INFO_ABOUT</item>
+      <item>CPACK_NSIS_WELCOME_TITLE</item>
+      <item>CPACK_NSIS_WELCOME_TITLE_3LINES</item>
+      <item>CPACK_NUGET_COMPONENT_INSTALL</item>
+      <item>CPACK_NUGET_PACKAGE_AUTHORS</item>
+      <item>CPACK_NUGET_PACKAGE_COPYRIGHT</item>
+      <item>CPACK_NUGET_PACKAGE_DEBUG</item>
+      <item>CPACK_NUGET_PACKAGE_DEPENDENCIES</item>
+      <item>CPACK_NUGET_PACKAGE_DESCRIPTION</item>
+      <item>CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY</item>
+      <item>CPACK_NUGET_PACKAGE_HOMEPAGE_URL</item>
+      <item>CPACK_NUGET_PACKAGE_ICON</item>
+      <item>CPACK_NUGET_PACKAGE_ICONURL</item>
+      <item>CPACK_NUGET_PACKAGE_LANGUAGE</item>
+      <item>CPACK_NUGET_PACKAGE_LICENSEURL</item>
+      <item>CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION</item>
+      <item>CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME</item>
+      <item>CPACK_NUGET_PACKAGE_NAME</item>
+      <item>CPACK_NUGET_PACKAGE_OWNERS</item>
+      <item>CPACK_NUGET_PACKAGE_README</item>
+      <item>CPACK_NUGET_PACKAGE_RELEASE_NOTES</item>
+      <item>CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH</item>
+      <item>CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT</item>
+      <item>CPACK_NUGET_PACKAGE_REPOSITORY_TYPE</item>
+      <item>CPACK_NUGET_PACKAGE_REPOSITORY_URL</item>
+      <item>CPACK_NUGET_PACKAGE_TAGS</item>
+      <item>CPACK_NUGET_PACKAGE_TFMS</item>
+      <item>CPACK_NUGET_PACKAGE_TITLE</item>
+      <item>CPACK_NUGET_SYMBOL_PACKAGE</item>
+      <item>CPACK_OBJCOPY_EXECUTABLE</item>
+      <item>CPACK_OBJDUMP_EXECUTABLE</item>
+      <item>CPACK_OUTPUT_CONFIG_FILE</item>
+      <item>CPACK_PACKAGE_CHECKSUM</item>
+      <item>CPACK_PACKAGE_DESCRIPTION</item>
+      <item>CPACK_PACKAGE_DESCRIPTION_FILE</item>
+      <item>CPACK_PACKAGE_DESCRIPTION_SUMMARY</item>
+      <item>CPACK_PACKAGE_DIRECTORY</item>
+      <item>CPACK_PACKAGE_EXECUTABLES</item>
+      <item>CPACK_PACKAGE_FILES</item>
+      <item>CPACK_PACKAGE_FILE_NAME</item>
+      <item>CPACK_PACKAGE_HOMEPAGE_URL</item>
+      <item>CPACK_PACKAGE_ICON</item>
+      <item>CPACK_PACKAGE_INSTALL_DIRECTORY</item>
+      <item>CPACK_PACKAGE_INSTALL_REGISTRY_KEY</item>
+      <item>CPACK_PACKAGE_NAME</item>
+      <item>CPACK_PACKAGE_VENDOR</item>
+      <item>CPACK_PACKAGE_VERSION</item>
+      <item>CPACK_PACKAGE_VERSION_MAJOR</item>
+      <item>CPACK_PACKAGE_VERSION_MINOR</item>
+      <item>CPACK_PACKAGE_VERSION_PATCH</item>
+      <item>CPACK_PACKAGING_INSTALL_PREFIX</item>
+      <item>CPACK_PKGBUILD_IDENTITY_NAME</item>
+      <item>CPACK_PKGBUILD_KEYCHAIN_PATH</item>
+      <item>CPACK_POST_BUILD_SCRIPTS</item>
+      <item>CPACK_PRE_BUILD_SCRIPTS</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_ALIGNMENT</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_MIME_TYPE</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_SCALING</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_UTI</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_MIME_TYPE</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_SCALING</item>
+      <item>CPACK_PRODUCTBUILD_BACKGROUND_UTI</item>
+      <item>CPACK_PRODUCTBUILD_DOMAINS</item>
+      <item>CPACK_PRODUCTBUILD_DOMAINS_ANYWHERE</item>
+      <item>CPACK_PRODUCTBUILD_DOMAINS_ROOT</item>
+      <item>CPACK_PRODUCTBUILD_DOMAINS_USER</item>
+      <item>CPACK_PRODUCTBUILD_IDENTIFIER</item>
+      <item>CPACK_PRODUCTBUILD_IDENTITY_NAME</item>
+      <item>CPACK_PRODUCTBUILD_KEYCHAIN_PATH</item>
+      <item>CPACK_PRODUCTBUILD_RESOURCES_DIR</item>
+      <item>CPACK_PROJECT_CONFIG_FILE</item>
+      <item>CPACK_READELF_EXECUTABLE</item>
+      <item>CPACK_RESOURCE_FILE_LICENSE</item>
+      <item>CPACK_RESOURCE_FILE_README</item>
+      <item>CPACK_RESOURCE_FILE_WELCOME</item>
+      <item>CPACK_RPM_ADDITIONAL_MAN_DIRS</item>
+      <item>CPACK_RPM_BUILDREQUIRES</item>
+      <item>CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX</item>
+      <item>CPACK_RPM_CHANGELOG_FILE</item>
+      <item>CPACK_RPM_COMPONENT_INSTALL</item>
+      <item>CPACK_RPM_COMPRESSION_TYPE</item>
+      <item>CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS</item>
+      <item>CPACK_RPM_DEBUGINFO_EXCLUDE_DIRS_ADDITION</item>
+      <item>CPACK_RPM_DEBUGINFO_FILE_NAME</item>
+      <item>CPACK_RPM_DEBUGINFO_PACKAGE</item>
+      <item>CPACK_RPM_DEBUGINFO_SINGLE_PACKAGE</item>
+      <item>CPACK_RPM_DEFAULT_DIR_PERMISSIONS</item>
+      <item>CPACK_RPM_DEFAULT_FILE_PERMISSIONS</item>
+      <item>CPACK_RPM_DEFAULT_GROUP</item>
+      <item>CPACK_RPM_DEFAULT_USER</item>
+      <item>CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST</item>
+      <item>CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION</item>
+      <item>CPACK_RPM_FILE_NAME</item>
+      <item>CPACK_RPM_GENERATE_USER_BINARY_SPECFILE_TEMPLATE</item>
+      <item>CPACK_RPM_INSTALL_WITH_EXEC</item>
+      <item>CPACK_RPM_MAIN_COMPONENT</item>
+      <item>CPACK_RPM_NO_INSTALL_PREFIX_RELOCATION</item>
+      <item>CPACK_RPM_PACKAGE_ARCHITECTURE</item>
+      <item>CPACK_RPM_PACKAGE_AUTOPROV</item>
+      <item>CPACK_RPM_PACKAGE_AUTOREQ</item>
+      <item>CPACK_RPM_PACKAGE_AUTOREQPROV</item>
+      <item>CPACK_RPM_PACKAGE_CONFLICTS</item>
+      <item>CPACK_RPM_PACKAGE_DEBUG</item>
+      <item>CPACK_RPM_PACKAGE_DESCRIPTION</item>
+      <item>CPACK_RPM_PACKAGE_ENHANCES</item>
+      <item>CPACK_RPM_PACKAGE_EPOCH</item>
+      <item>CPACK_RPM_PACKAGE_GROUP</item>
+      <item>CPACK_RPM_PACKAGE_LICENSE</item>
+      <item>CPACK_RPM_PACKAGE_NAME</item>
+      <item>CPACK_RPM_PACKAGE_OBSOLETES</item>
+      <item>CPACK_RPM_PACKAGE_PROVIDES</item>
+      <item>CPACK_RPM_PACKAGE_RELEASE</item>
+      <item>CPACK_RPM_PACKAGE_RELEASE_DIST</item>
+      <item>CPACK_RPM_PACKAGE_RELOCATABLE</item>
+      <item>CPACK_RPM_PACKAGE_REQUIRES</item>
+      <item>CPACK_RPM_PACKAGE_REQUIRES_POST</item>
+      <item>CPACK_RPM_PACKAGE_REQUIRES_POSTUN</item>
+      <item>CPACK_RPM_PACKAGE_REQUIRES_PRE</item>
+      <item>CPACK_RPM_PACKAGE_REQUIRES_PREUN</item>
+      <item>CPACK_RPM_PACKAGE_SOURCES</item>
+      <item>CPACK_RPM_PACKAGE_SUGGESTS</item>
+      <item>CPACK_RPM_PACKAGE_SUMMARY</item>
+      <item>CPACK_RPM_PACKAGE_SUPPLEMENTS</item>
+      <item>CPACK_RPM_PACKAGE_URL</item>
+      <item>CPACK_RPM_PACKAGE_VENDOR</item>
+      <item>CPACK_RPM_PACKAGE_VERSION</item>
+      <item>CPACK_RPM_POST_INSTALL_SCRIPT_FILE</item>
+      <item>CPACK_RPM_POST_TRANS_SCRIPT_FILE</item>
+      <item>CPACK_RPM_POST_UNINSTALL_SCRIPT_FILE</item>
+      <item>CPACK_RPM_PRE_INSTALL_SCRIPT_FILE</item>
+      <item>CPACK_RPM_PRE_TRANS_SCRIPT_FILE</item>
+      <item>CPACK_RPM_PRE_UNINSTALL_SCRIPT_FILE</item>
+      <item>CPACK_RPM_RELOCATION_PATHS</item>
+      <item>CPACK_RPM_REQUIRES_EXCLUDE_FROM</item>
+      <item>CPACK_RPM_SOURCE_PKG_BUILD_PARAMS</item>
+      <item>CPACK_RPM_SOURCE_PKG_PACKAGING_INSTALL_PREFIX</item>
+      <item>CPACK_RPM_SPEC_INSTALL_POST</item>
+      <item>CPACK_RPM_SPEC_MORE_DEFINE</item>
+      <item>CPACK_RPM_USER_BINARY_SPECFILE</item>
+      <item>CPACK_RPM_USER_FILELIST</item>
+      <item>CPACK_SET_DESTDIR</item>
+      <item>CPACK_SOURCE_GENERATOR</item>
+      <item>CPACK_SOURCE_IGNORE_FILES</item>
+      <item>CPACK_SOURCE_OUTPUT_CONFIG_FILE</item>
+      <item>CPACK_SOURCE_PACKAGE_FILE_NAME</item>
+      <item>CPACK_SOURCE_STRIP_FILES</item>
+      <item>CPACK_STRIP_FILES</item>
+      <item>CPACK_SYSTEM_NAME</item>
+      <item>CPACK_THREADS</item>
+      <item>CPACK_TOPLEVEL_TAG</item>
+      <item>CPACK_VERBATIM_VARIABLES</item>
+      <item>CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION</item>
+      <item>CPACK_WIX_ARCHITECTURE</item>
+      <item>CPACK_WIX_CMAKE_PACKAGE_REGISTRY</item>
+      <item>CPACK_WIX_CULTURES</item>
+      <item>CPACK_WIX_CUSTOM_XMLNS</item>
+      <item>CPACK_WIX_EXTENSIONS</item>
+      <item>CPACK_WIX_EXTRA_OBJECTS</item>
+      <item>CPACK_WIX_EXTRA_SOURCES</item>
+      <item>CPACK_WIX_INSTALL_SCOPE</item>
+      <item>CPACK_WIX_LICENSE_RTF</item>
+      <item>CPACK_WIX_PATCH_FILE</item>
+      <item>CPACK_WIX_PRODUCT_GUID</item>
+      <item>CPACK_WIX_PRODUCT_ICON</item>
+      <item>CPACK_WIX_PROGRAM_MENU_FOLDER</item>
+      <item>CPACK_WIX_ROOT</item>
+      <item>CPACK_WIX_ROOT_FEATURE_DESCRIPTION</item>
+      <item>CPACK_WIX_ROOT_FEATURE_TITLE</item>
+      <item>CPACK_WIX_ROOT_FOLDER_ID</item>
+      <item>CPACK_WIX_SKIP_PROGRAM_FOLDER</item>
+      <item>CPACK_WIX_SKIP_WIX_UI_EXTENSION</item>
+      <item>CPACK_WIX_TEMPLATE</item>
+      <item>CPACK_WIX_UI_BANNER</item>
+      <item>CPACK_WIX_UI_DIALOG</item>
+      <item>CPACK_WIX_UI_REF</item>
+      <item>CPACK_WIX_UPGRADE_GUID</item>
+      <item>CTEST_BINARY_DIRECTORY</item>
+      <item>CTEST_BUILD_COMMAND</item>
+      <item>CTEST_BUILD_NAME</item>
+      <item>CTEST_BUILD_PRESET</item>
+      <item>CTEST_BZR_COMMAND</item>
+      <item>CTEST_BZR_UPDATE_OPTIONS</item>
+      <item>CTEST_CHANGE_ID</item>
+      <item>CTEST_CHECKOUT_COMMAND</item>
+      <item>CTEST_CONFIGURATION_TYPE</item>
+      <item>CTEST_CONFIGURE_COMMAND</item>
+      <item>CTEST_CONFIGURE_PRESET</item>
+      <item>CTEST_COVERAGE_COMMAND</item>
+      <item>CTEST_COVERAGE_EXTRA_FLAGS</item>
+      <item>CTEST_CURL_OPTIONS</item>
+      <item>CTEST_CUSTOM_COVERAGE_EXCLUDE</item>
+      <item>CTEST_CUSTOM_ERROR_EXCEPTION</item>
+      <item>CTEST_CUSTOM_ERROR_MATCH</item>
+      <item>CTEST_CUSTOM_ERROR_POST_CONTEXT</item>
+      <item>CTEST_CUSTOM_ERROR_PRE_CONTEXT</item>
+      <item>CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE</item>
+      <item>CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS</item>
+      <item>CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS</item>
+      <item>CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE</item>
+      <item>CTEST_CUSTOM_MEMCHECK_IGNORE</item>
+      <item>CTEST_CUSTOM_POST_MEMCHECK</item>
+      <item>CTEST_CUSTOM_POST_TEST</item>
+      <item>CTEST_CUSTOM_PRE_MEMCHECK</item>
+      <item>CTEST_CUSTOM_PRE_TEST</item>
+      <item>CTEST_CUSTOM_TEST_IGNORE</item>
+      <item>CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION</item>
+      <item>CTEST_CUSTOM_WARNING_EXCEPTION</item>
+      <item>CTEST_CUSTOM_WARNING_MATCH</item>
+      <item>CTEST_CVS_COMMAND</item>
+      <item>CTEST_CVS_UPDATE_OPTIONS</item>
+      <item>CTEST_DROP_LOCATION</item>
+      <item>CTEST_DROP_METHOD</item>
+      <item>CTEST_DROP_SITE</item>
+      <item>CTEST_DROP_SITE_CDASH</item>
+      <item>CTEST_DROP_SITE_PASSWORD</item>
+      <item>CTEST_DROP_SITE_USER</item>
+      <item>CTEST_EXTRA_COVERAGE_GLOB</item>
+      <item>CTEST_GIT_COMMAND</item>
+      <item>CTEST_GIT_INIT_SUBMODULES</item>
+      <item>CTEST_GIT_UPDATE_CUSTOM</item>
+      <item>CTEST_GIT_UPDATE_OPTIONS</item>
+      <item>CTEST_HG_COMMAND</item>
+      <item>CTEST_HG_UPDATE_OPTIONS</item>
+      <item>CTEST_LABELS_FOR_SUBPROJECTS</item>
+      <item>CTEST_MEMORYCHECK_COMMAND</item>
+      <item>CTEST_MEMORYCHECK_COMMAND_OPTIONS</item>
+      <item>CTEST_MEMORYCHECK_SANITIZER_OPTIONS</item>
+      <item>CTEST_MEMORYCHECK_SUPPRESSIONS_FILE</item>
+      <item>CTEST_MEMORYCHECK_TYPE</item>
+      <item>CTEST_NIGHTLY_START_TIME</item>
+      <item>CTEST_P4_CLIENT</item>
+      <item>CTEST_P4_COMMAND</item>
+      <item>CTEST_P4_OPTIONS</item>
+      <item>CTEST_P4_UPDATE_OPTIONS</item>
+      <item>CTEST_PRESET</item>
+      <item>CTEST_PRESETS_FILE</item>
+      <item>CTEST_RESOURCE_SPEC_FILE</item>
+      <item>CTEST_RUN_CURRENT_SCRIPT</item>
+      <item>CTEST_SITE</item>
+      <item>CTEST_SOURCE_DIRECTORY</item>
+      <item>CTEST_SUBMIT_INACTIVITY_TIMEOUT</item>
+      <item>CTEST_SUBMIT_PARTS</item>
+      <item>CTEST_SUBMIT_URL</item>
+      <item>CTEST_SVN_COMMAND</item>
+      <item>CTEST_SVN_OPTIONS</item>
+      <item>CTEST_SVN_UPDATE_OPTIONS</item>
+      <item>CTEST_TEST_COVERAGE_TOOL</item>
+      <item>CTEST_TEST_LOAD</item>
+      <item>CTEST_TEST_PRESET</item>
+      <item>CTEST_TEST_TIMEOUT</item>
+      <item>CTEST_TLS_VERIFY</item>
+      <item>CTEST_TLS_VERSION</item>
+      <item>CTEST_UPDATE_COMMAND</item>
+      <item>CTEST_UPDATE_OPTIONS</item>
+      <item>CTEST_UPDATE_VERSION_ONLY</item>
+      <item>CTEST_UPDATE_VERSION_OVERRIDE</item>
+      <item>CTEST_USE_LAUNCHERS</item>
+      <item>CUDAToolkit_NVCC_EXECUTABLE</item>
+      <item>CUPS_INCLUDE_DIR</item>
+      <item>CURL_NO_CURL_CMAKE</item>
+      <item>CURL_USE_STATIC_LIBS</item>
+      <item>CURSES_CFLAGS</item>
+      <item>CURSES_HAVE_CURSES_H</item>
+      <item>CURSES_HAVE_NCURSES_CURSES_H</item>
+      <item>CURSES_HAVE_NCURSES_H</item>
+      <item>CURSES_HAVE_NCURSES_NCURSES_H</item>
+      <item>CURSES_NEED_NCURSES</item>
+      <item>CURSES_NEED_WIDE</item>
+      <item>CVS_EXECUTABLE</item>
+      <item>CXXTEST_PERL_TESTGEN_EXECUTABLE</item>
+      <item>CXXTEST_PYTHON_TESTGEN_EXECUTABLE</item>
+      <item>CXXTEST_TESTGEN_ARGS</item>
+      <item>CXXTEST_TESTGEN_EXECUTABLE</item>
+      <item>CXXTEST_TESTGEN_INTERPRETER</item>
+      <item>CXXTEST_USE_PYTHON</item>
+      <item>CYGWIN</item>
+      <item>DVIPDF_CONVERTER</item>
+      <item>DVIPS_CONVERTER</item>
+      <item>EXECUTABLE_OUTPUT_PATH</item>
+      <item>EXPAT_USE_STATIC_LIBS</item>
+      <item>EnvModules_COMMAND</item>
+      <item>ExternalData_BINARY_ROOT</item>
+      <item>ExternalData_CUSTOM_ERROR</item>
+      <item>ExternalData_CUSTOM_FILE</item>
+      <item>ExternalData_CUSTOM_LOCATION</item>
+      <item>ExternalData_HTTPHEADERS</item>
+      <item>ExternalData_LINK_CONTENT</item>
+      <item>ExternalData_LINK_MODE</item>
+      <item>ExternalData_NO_SYMLINKS</item>
+      <item>ExternalData_OBJECT_STORES</item>
+      <item>ExternalData_SERIES_MATCH</item>
+      <item>ExternalData_SERIES_PARSE</item>
+      <item>ExternalData_SERIES_PARSE_NUMBER</item>
+      <item>ExternalData_SERIES_PARSE_PREFIX</item>
+      <item>ExternalData_SERIES_PARSE_SUFFIX</item>
+      <item>ExternalData_SOURCE_ROOT</item>
+      <item>ExternalData_STATE_ROOT</item>
+      <item>ExternalData_TIMEOUT_ABSOLUTE</item>
+      <item>ExternalData_TIMEOUT_INACTIVITY</item>
+      <item>ExternalData_URL_TEMPLATES</item>
+      <item>FETCHCONTENT_FULLY_DISCONNECTED</item>
+      <item>FETCHCONTENT_QUIET</item>
+      <item>FETCHCONTENT_TRY_FIND_PACKAGE_MODE</item>
+      <item>FETCHCONTENT_UPDATES_DISCONNECTED</item>
+      <item>FLEX_EXECUTABLE</item>
+      <item>FLTK2_BASE_LIBRARY</item>
+      <item>FLTK2_FLUID_EXECUTABLE</item>
+      <item>FLTK2_GL_LIBRARY</item>
+      <item>FLTK2_IMAGES_LIBRARY</item>
+      <item>FLTK2_WRAP_UI</item>
+      <item>FLTK_BASE_LIBRARY_DEBUG</item>
+      <item>FLTK_BASE_LIBRARY_RELEASE</item>
+      <item>FLTK_FLUID_EXECUTABLE</item>
+      <item>FLTK_FORMS_LIBRARY_DEBUG</item>
+      <item>FLTK_FORMS_LIBRARY_RELEASE</item>
+      <item>FLTK_GL_LIBRARY_DEBUG</item>
+      <item>FLTK_GL_LIBRARY_RELEASE</item>
+      <item>FLTK_IMAGES_LIBRARY_DEBUG</item>
+      <item>FLTK_IMAGES_LIBRARY_RELEASE</item>
+      <item>FLTK_SKIP_FLUID</item>
+      <item>FLTK_SKIP_FORMS</item>
+      <item>FLTK_SKIP_IMAGES</item>
+      <item>FLTK_SKIP_OPENGL</item>
+      <item>FLTK_WRAP_UI</item>
+      <item>FREETYPE_INCLUDE_DIR_freetype2</item>
+      <item>FREETYPE_INCLUDE_DIR_ft2build</item>
+      <item>FindGDAL_SKIP_GDAL_CONFIG</item>
+      <item>Fontconfig_COMPILE_OPTIONS</item>
+      <item>FortranCInterface_GLOBAL_CASE</item>
+      <item>FortranCInterface_GLOBAL_PREFIX</item>
+      <item>FortranCInterface_GLOBAL_SUFFIX</item>
+      <item>FortranCInterface_GLOBAL_SYMBOLS</item>
+      <item>FortranCInterface_GLOBAL__CASE</item>
+      <item>FortranCInterface_GLOBAL__PREFIX</item>
+      <item>FortranCInterface_GLOBAL__SUFFIX</item>
+      <item>FortranCInterface_MODULE_CASE</item>
+      <item>FortranCInterface_MODULE_MIDDLE</item>
+      <item>FortranCInterface_MODULE_PREFIX</item>
+      <item>FortranCInterface_MODULE_SUFFIX</item>
+      <item>FortranCInterface_MODULE_SYMBOLS</item>
+      <item>FortranCInterface_MODULE__CASE</item>
+      <item>FortranCInterface_MODULE__MIDDLE</item>
+      <item>FortranCInterface_MODULE__PREFIX</item>
+      <item>FortranCInterface_MODULE__SUFFIX</item>
+      <item>FortranCInterface_VERIFIED_C</item>
+      <item>FortranCInterface_VERIFIED_CXX</item>
+      <item>GCCXML</item>
+      <item>GDAL_ADDITIONAL_LIBRARY_VERSIONS</item>
+      <item>GDAL_LIBRARY</item>
+      <item>GETTEXT_MSGFMT_EXECUTABLE</item>
+      <item>GETTEXT_MSGMERGE_EXECUTABLE</item>
+      <item>GHSMULTI</item>
+      <item>GIF_LIBRARY</item>
+      <item>GIT_EXECUTABLE</item>
+      <item>GLEW_USE_STATIC_LIBS</item>
+      <item>GLEW_VERBOSE</item>
+      <item>GLUT_Xi_LIBRARY</item>
+      <item>GLUT_Xmu_LIBRARY</item>
+      <item>GLUT_glut_LIBRARY</item>
+      <item>GNUPLOT_EXECUTABLE</item>
+      <item>GNUTLS_DEFINITIONS</item>
+      <item>GRAPHVIZ_EXECUTABLES</item>
+      <item>GRAPHVIZ_EXTERNAL_LIBS</item>
+      <item>GRAPHVIZ_GENERATE_PER_TARGET</item>
+      <item>GRAPHVIZ_GRAPH_HEADER</item>
+      <item>GRAPHVIZ_GRAPH_NAME</item>
+      <item>GRAPHVIZ_GRAPH_TYPE</item>
+      <item>GRAPHVIZ_IGNORE_TARGETS</item>
+      <item>GRAPHVIZ_MODULE_LIBS</item>
+      <item>GRAPHVIZ_NODE_PREFIX</item>
+      <item>GRAPHVIZ_SHARED_LIBS</item>
+      <item>GRAPHVIZ_STATIC_LIBS</item>
+      <item>GSL_CBLAS_LIBRARY</item>
+      <item>GSL_CBLAS_LIBRARY_DEBUG</item>
+      <item>GSL_CONFIG_EXECUTABLE</item>
+      <item>GSL_LIBRARY</item>
+      <item>GSL_LIBRARY_DEBUG</item>
+      <item>GTEST_MSVC_SEARCH</item>
+      <item>GTK2_ADDITIONAL_SUFFIXES</item>
+      <item>GTK2_DEBUG</item>
+      <item>GTK2_DEFINITIONS</item>
+      <item>GTK2_TARGETS</item>
+      <item>GTK2_USE_IMPORTED_TARGETS</item>
+      <item>HDF5_CXX_COMPILER_EXECUTABLE</item>
+      <item>HDF5_CXX_COMPILER_EXECUTABLE_NO_INTERROGATE</item>
+      <item>HDF5_CXX_DEFINITIONS</item>
+      <item>HDF5_C_COMPILER_EXECUTABLE</item>
+      <item>HDF5_C_COMPILER_EXECUTABLE_NO_INTERROGATE</item>
+      <item>HDF5_C_DEFINITIONS</item>
+      <item>HDF5_DEFINITIONS</item>
+      <item>HDF5_DIFF_EXECUTABLE</item>
+      <item>HDF5_FIND_DEBUG</item>
+      <item>HDF5_Fortran_COMPILER_EXECUTABLE</item>
+      <item>HDF5_Fortran_COMPILER_EXECUTABLE_NO_INTERROGATE</item>
+      <item>HDF5_Fortran_DEFINITIONS</item>
+      <item>HDF5_IS_PARALLEL</item>
+      <item>HDF5_NO_FIND_PACKAGE_CONFIG_FILE</item>
+      <item>HDF5_PREFER_PARALLEL</item>
+      <item>HG_EXECUTABLE</item>
+      <item>HTLATEX_COMPILER</item>
+      <item>HTML_HELP_COMPILER</item>
+      <item>HTML_HELP_LIBRARY</item>
+      <item>ICOTOOL_EXECUTABLE</item>
+      <item>ICU_DEBUG</item>
+      <item>ICU_MAKEFILE_INC</item>
+      <item>ICU_PKGDATA_INC</item>
+      <item>IOS</item>
+      <item>Iconv_IS_BUILT_IN</item>
+      <item>Iconv_LIBRARY</item>
+      <item>Intl_IS_BUILT_IN</item>
+      <item>Intl_LIBRARY</item>
+      <item>JASPER_LIBARRY_DEBUG</item>
+      <item>JASPER_LIBRARY_RELEASE</item>
+      <item>JAVA_AWT_INCLUDE_PATH</item>
+      <item>JAVA_AWT_LIBRARY</item>
+      <item>JAVA_INCLUDE_PATH</item>
+      <item>JAVA_INCLUDE_PATH2</item>
+      <item>JAVA_JVM_LIBRARY</item>
+      <item>JPEG_LIBRARY</item>
+      <item>JPEG_LIBRARY_DEBUG</item>
+      <item>JPEG_LIBRARY_RELEASE</item>
+      <item>Java_IDLJ_EXECUTABLE</item>
+      <item>Java_JARSIGNER_EXECUTABLE</item>
+      <item>Java_JAR_EXECUTABLE</item>
+      <item>Java_JAVAC_EXECUTABLE</item>
+      <item>Java_JAVADOC_EXECUTABLE</item>
+      <item>Java_JAVAH_EXECUTABLE</item>
+      <item>Java_JAVA_EXECUTABLE</item>
+      <item>LAPACK_LINKER_FLAGS</item>
+      <item>LATEX2HTML_CONVERTER</item>
+      <item>LATEX_COMPILER</item>
+      <item>LIBLZMA_HAS_AUTO_DECODER</item>
+      <item>LIBLZMA_HAS_EASY_ENCODER</item>
+      <item>LIBLZMA_HAS_LZMA_PRESET</item>
+      <item>LIBRARY_OUTPUT_PATH</item>
+      <item>LIBXML2_DEFINITIONS</item>
+      <item>LIBXML2_LIBRARY</item>
+      <item>LIBXML2_XMLLINT_EXECUTABLE</item>
+      <item>LIBXSLT_DEFINITIONS</item>
+      <item>LIBXSLT_XSLTPROC_EXECUTABLE</item>
+      <item>LINUX</item>
+      <item>LTTNGUST_HAS_TRACEF</item>
+      <item>LTTNGUST_HAS_TRACELOG</item>
+      <item>LUALATEX_COMPILER</item>
+      <item>LibXml2_USE_STATIC_LIBS</item>
+      <item>Libinput_COMPILE_OPTIONS</item>
+      <item>MAKEINDEX_COMPILER</item>
+      <item>MATLAB_ADDITIONAL_VERSIONS</item>
+      <item>MATLAB_FIND_DEBUG</item>
+      <item>MINGW</item>
+      <item>MPEG2_mpeg2_LIBRARY</item>
+      <item>MPEG2_vo_LIBRARY</item>
+      <item>MPEG_mpeg2_LIBRARY</item>
+      <item>MPEG_vo_LIBRARY</item>
+      <item>MPIEXEC_EXECUTABLE</item>
+      <item>MPIEXEC_MAX_NUMPROCS</item>
+      <item>MPIEXEC_NUMPROC_FLAG</item>
+      <item>MPIEXEC_POSTFLAGS</item>
+      <item>MPIEXEC_PREFLAGS</item>
+      <item>MPI_ASSUME_NO_BUILTIN_MPI</item>
+      <item>MPI_ASYNC_PROTECTS_NONBLOCKING</item>
+      <item>MPI_COMPILER_FLAGS</item>
+      <item>MPI_CXX_SKIP_MPICXX</item>
+      <item>MPI_DETERMINE_Fortran_CAPABILITIES</item>
+      <item>MPI_EXECUTABLE_SUFFIX</item>
+      <item>MPI_Fortran_F08_MODULE_ASYNCPROT</item>
+      <item>MPI_Fortran_F08_MODULE_SUBARRAYS</item>
+      <item>MPI_Fortran_F77_HEADER_ASYNCPROT</item>
+      <item>MPI_Fortran_F77_HEADER_SUBARRAYS</item>
+      <item>MPI_Fortran_F90_MODULE_ASYNCPROT</item>
+      <item>MPI_Fortran_F90_MODULE_SUBARRAYS</item>
+      <item>MPI_Fortran_HAVE_F08_MODULE</item>
+      <item>MPI_Fortran_HAVE_F77_HEADER</item>
+      <item>MPI_Fortran_HAVE_F90_MODULE</item>
+      <item>MPI_GUESS_LIBRARY_NAME</item>
+      <item>MPI_HOME</item>
+      <item>MPI_SKIP_COMPILER_WRAPPER</item>
+      <item>MPI_SKIP_GUESSING</item>
+      <item>MPI_SUBARRAYS_SUPPORTED</item>
+      <item>MSVC</item>
+      <item>MSVC_IDE</item>
+      <item>MSVC_TOOLSET_VERSION</item>
+      <item>MSVC_VERSION</item>
+      <item>Matlab_DATAARRAY_LIBRARY</item>
+      <item>Matlab_ENGINE_LIBRARY</item>
+      <item>Matlab_ENG_LIBRARY</item>
+      <item>Matlab_MAIN_PROGRAM</item>
+      <item>Matlab_MAT_LIBRARY</item>
+      <item>Matlab_MCC_COMPILER</item>
+      <item>Matlab_MEX_COMPILER</item>
+      <item>Matlab_MEX_EXTENSION</item>
+      <item>Matlab_MEX_LIBRARY</item>
+      <item>Matlab_MX_LIBRARY</item>
+      <item>ODBC_CONFIG</item>
+      <item>ODBC_LIBRARY</item>
+      <item>OPENAL_LIBRARY</item>
+      <item>OPENGL_egl_LIBRARY</item>
+      <item>OPENGL_gl_LIBRARY</item>
+      <item>OPENGL_glu_LIBRARY</item>
+      <item>OPENGL_glx_LIBRARY</item>
+      <item>OPENGL_opengl_LIBRARY</item>
+      <item>OPENSSL_APPLINK_SOURCE</item>
+      <item>OPENSSL_CRYPTO_LIBRARY</item>
+      <item>OPENSSL_MSVC_STATIC_RT</item>
+      <item>OPENSSL_SSL_LIBRARY</item>
+      <item>OPENSSL_USE_STATIC_LIBS</item>
+      <item>OpenACC_ACCEL_TARGET</item>
+      <item>OpenCL_LIBRARY</item>
+      <item>OpenGL_GL_PREFERENCE</item>
+      <item>OpenMP_Fortran_HAVE_OMPLIB_HEADER</item>
+      <item>OpenMP_Fortran_HAVE_OMPLIB_MODULE</item>
+      <item>OpenMP_RUNTIME_MSVC</item>
+      <item>PACKAGE_FIND_NAME</item>
+      <item>PACKAGE_FIND_VERSION_COMPLETE</item>
+      <item>PACKAGE_FIND_VERSION_COUNT</item>
+      <item>PACKAGE_FIND_VERSION_MAX</item>
+      <item>PACKAGE_FIND_VERSION_MAX_COUNT</item>
+      <item>PACKAGE_FIND_VERSION_MAX_MAJOR</item>
+      <item>PACKAGE_FIND_VERSION_MAX_MINOR</item>
+      <item>PACKAGE_FIND_VERSION_MAX_PATCH</item>
+      <item>PACKAGE_FIND_VERSION_MAX_TWEAK</item>
+      <item>PACKAGE_FIND_VERSION_MIN</item>
+      <item>PACKAGE_FIND_VERSION_MIN_COUNT</item>
+      <item>PACKAGE_FIND_VERSION_MIN_MAJOR</item>
+      <item>PACKAGE_FIND_VERSION_MIN_MINOR</item>
+      <item>PACKAGE_FIND_VERSION_MIN_PATCH</item>
+      <item>PACKAGE_FIND_VERSION_MIN_TWEAK</item>
+      <item>PACKAGE_FIND_VERSION_RANGE</item>
+      <item>PACKAGE_FIND_VERSION_RANGE_MAX</item>
+      <item>PACKAGE_FIND_VERSION_RANGE_MIN</item>
+      <item>PACKAGE_VERSION</item>
+      <item>PACKAGE_VERSION_COMPATIBLE</item>
+      <item>PACKAGE_VERSION_EXACT</item>
+      <item>PACKAGE_VERSION_UNSUITABLE</item>
+      <item>PDFLATEX_COMPILER</item>
+      <item>PDFTOPS_CONVERTER</item>
+      <item>PERL_ARCHLIB</item>
+      <item>PERL_EXECUTABLE</item>
+      <item>PERL_EXTRA_C_FLAGS</item>
+      <item>PERL_PRIVLIB</item>
+      <item>PERL_SITEARCH</item>
+      <item>PERL_SITELIB</item>
+      <item>PERL_SITESEARCH</item>
+      <item>PERL_UPDATE_ARCHLIB</item>
+      <item>PERL_UPDATE_PRIVLIB</item>
+      <item>PERL_VENDORARCH</item>
+      <item>PERL_VENDORLIB</item>
+      <item>PHP4_EXECUTABLE</item>
+      <item>PHP4_INCLUDE_PATH</item>
+      <item>PHYSFS_LIBRARY</item>
+      <item>PIKE_EXECUTABLE</item>
+      <item>PIKE_INCLUDE_PATH</item>
+      <item>PKG_CONFIG_EXECUTABLE</item>
+      <item>PKG_CONFIG_USE_CMAKE_PREFIX_PATH</item>
+      <item>PKG_CONFIG_VERSION_STRING</item>
+      <item>PNG_DEFINITIONS</item>
+      <item>PNG_LIBRARY</item>
+      <item>PROJECT_BINARY_DIR</item>
+      <item>PROJECT_COMPAT_VERSION</item>
+      <item>PROJECT_DESCRIPTION</item>
+      <item>PROJECT_HOMEPAGE_URL</item>
+      <item>PROJECT_IS_TOP_LEVEL</item>
+      <item>PROJECT_NAME</item>
+      <item>PROJECT_SOURCE_DIR</item>
+      <item>PROJECT_SPDX_LICENSE</item>
+      <item>PROJECT_VERSION</item>
+      <item>PROJECT_VERSION_MAJOR</item>
+      <item>PROJECT_VERSION_MINOR</item>
+      <item>PROJECT_VERSION_PATCH</item>
+      <item>PROJECT_VERSION_TWEAK</item>
+      <item>PS2PDF_CONVERTER</item>
+      <item>Patch_EXECUTABLE</item>
+      <item>Protobuf_DEBUG</item>
+      <item>Protobuf_IMPORT_DIRS</item>
+      <item>Protobuf_LIBRARY</item>
+      <item>Protobuf_LIBRARY_DEBUG</item>
+      <item>Protobuf_LITE_LIBRARY</item>
+      <item>Protobuf_LITE_LIBRARY_DEBUG</item>
+      <item>Protobuf_PROTOC_EXECUTABLE</item>
+      <item>Protobuf_PROTOC_LIBRARY</item>
+      <item>Protobuf_PROTOC_LIBRARY_DEBUG</item>
+      <item>Protobuf_SRC_ROOT_FOLDER</item>
+      <item>Protobuf_USE_STATIC_LIBS</item>
+      <item>Python2_ARTIFACTS_INTERACTIVE</item>
+      <item>Python2_ARTIFACTS_PREFIX</item>
+      <item>Python2_COMPILER</item>
+      <item>Python2_COMPILER_ID</item>
+      <item>Python2_DEBUG_POSTFIX</item>
+      <item>Python2_DOTNET_LAUNCHER</item>
+      <item>Python2_EXECUTABLE</item>
+      <item>Python2_EXECUTABLE_DEBUG</item>
+      <item>Python2_FIND_ABI</item>
+      <item>Python2_FIND_FRAMEWORK</item>
+      <item>Python2_FIND_IMPLEMENTATIONS</item>
+      <item>Python2_FIND_REGISTRY</item>
+      <item>Python2_FIND_STRATEGY</item>
+      <item>Python2_FIND_UNVERSIONED_NAMES</item>
+      <item>Python2_FIND_VIRTUALENV</item>
+      <item>Python2_INTERPRETER</item>
+      <item>Python2_INTERPRETER_ID</item>
+      <item>Python2_LINK_OPTIONS</item>
+      <item>Python2_SITEARCH</item>
+      <item>Python2_SITELIB</item>
+      <item>Python2_SOABI</item>
+      <item>Python2_STDARCH</item>
+      <item>Python2_STDLIB</item>
+      <item>Python2_USE_STATIC_LIBS</item>
+      <item>Python3_ARTIFACTS_INTERACTIVE</item>
+      <item>Python3_ARTIFACTS_PREFIX</item>
+      <item>Python3_COMPILER</item>
+      <item>Python3_COMPILER_ID</item>
+      <item>Python3_DEBUG_POSTFIX</item>
+      <item>Python3_DOTNET_LAUNCHER</item>
+      <item>Python3_EXECUTABLE</item>
+      <item>Python3_EXECUTABLE_DEBUG</item>
+      <item>Python3_FIND_ABI</item>
+      <item>Python3_FIND_FRAMEWORK</item>
+      <item>Python3_FIND_IMPLEMENTATIONS</item>
+      <item>Python3_FIND_REGISTRY</item>
+      <item>Python3_FIND_STRATEGY</item>
+      <item>Python3_FIND_UNVERSIONED_NAMES</item>
+      <item>Python3_FIND_VIRTUALENV</item>
+      <item>Python3_FREE_THREADED</item>
+      <item>Python3_INTERPRETER</item>
+      <item>Python3_INTERPRETER_ID</item>
+      <item>Python3_LINK_OPTIONS</item>
+      <item>Python3_SITEARCH</item>
+      <item>Python3_SITELIB</item>
+      <item>Python3_SOABI</item>
+      <item>Python3_SOSABI</item>
+      <item>Python3_STDARCH</item>
+      <item>Python3_STDLIB</item>
+      <item>Python3_USE_STATIC_LIBS</item>
+      <item>Python_ARTIFACTS_INTERACTIVE</item>
+      <item>Python_ARTIFACTS_PREFIX</item>
+      <item>Python_COMPILER</item>
+      <item>Python_COMPILER_ID</item>
+      <item>Python_DEBUG_POSTFIX</item>
+      <item>Python_DOTNET_LAUNCHER</item>
+      <item>Python_EXECUTABLE</item>
+      <item>Python_EXECUTABLE_DEBUG</item>
+      <item>Python_FIND_ABI</item>
+      <item>Python_FIND_FRAMEWORK</item>
+      <item>Python_FIND_IMPLEMENTATIONS</item>
+      <item>Python_FIND_REGISTRY</item>
+      <item>Python_FIND_STRATEGY</item>
+      <item>Python_FIND_UNVERSIONED_NAMES</item>
+      <item>Python_FIND_VIRTUALENV</item>
+      <item>Python_INTERPRETER</item>
+      <item>Python_INTERPRETER_ID</item>
+      <item>Python_LINK_OPTIONS</item>
+      <item>Python_SITEARCH</item>
+      <item>Python_SITELIB</item>
+      <item>Python_SOABI</item>
+      <item>Python_SOSABI</item>
+      <item>Python_STDARCH</item>
+      <item>Python_STDLIB</item>
+      <item>Python_USE_STATIC_LIBS</item>
+      <item>QTIFWDIR</item>
+      <item>RTI_DEFINITIONS</item>
+      <item>Ruby_EXECUTABLE</item>
+      <item>Ruby_FIND_VIRTUALENV</item>
+      <item>SDLIMAGE_LIBRARY</item>
+      <item>SDLMIXER_LIBRARY</item>
+      <item>SDLNET_LIBRARY</item>
+      <item>SDLTTF_LIBRARY</item>
+      <item>SDL_BUILDING_LIBRARY</item>
+      <item>SDL_LIBRARY</item>
+      <item>SDL_SOUND_LIBRARY</item>
+      <item>SQUISH_CLIENT_EXECUTABLE</item>
+      <item>SQUISH_SERVER_EXECUTABLE</item>
+      <item>SWIG_EXECUTABLE</item>
+      <item>SWIG_OUTFILE_DIR</item>
+      <item>SWIG_SOURCE_FILE_EXTENSIONS</item>
+      <item>SWIG_USE_SWIG_DEPENDENCIES</item>
+      <item>Subversion_SVN_EXECUTABLE</item>
+      <item>Subversion_VERSION_SVN</item>
+      <item>TCL_INCLUDE_PATH</item>
+      <item>TCL_STUB_LIBRARY</item>
+      <item>TCL_TCLSH</item>
+      <item>THREADS_PREFER_PTHREAD_FLAG</item>
+      <item>TIFFXX_LIBRARY_DEBUG</item>
+      <item>TIFFXX_LIBRARY_RELEASE</item>
+      <item>TIFF_LIBRARY_DEBUG</item>
+      <item>TIFF_LIBRARY_RELEASE</item>
+      <item>TK_INCLUDE_PATH</item>
+      <item>TK_LIBRARY</item>
+      <item>TK_STUB_LIBRARY</item>
+      <item>TK_WISH</item>
+      <item>TTK_STUB_LIBRARY</item>
+      <item>UNIX</item>
+      <item>UseSWIG_MODULE_VERSION</item>
+      <item>Vulkan_GLSLANG_VALIDATOR_EXECUTABLE</item>
+      <item>Vulkan_GLSLC_EXECUTABLE</item>
+      <item>Vulkan_LIBRARY</item>
+      <item>WGET_EXECUTABLE</item>
+      <item>WIN32</item>
+      <item>WINCE</item>
+      <item>WINDOWS_PHONE</item>
+      <item>WINDOWS_STORE</item>
+      <item>XCODE</item>
+      <item>XCODE_VERSION</item>
+      <item>XCTest_EXECUTABLE</item>
+      <item>XELATEX_COMPILER</item>
+      <item>XINDY_COMPILER</item>
+      <item>XalanC_LIBRARY</item>
+      <item>XercesC_LIBRARY</item>
+      <item>ZLIB_USE_STATIC_LIBS</item>
+      <item>wxWidgets_CONFIGURATION</item>
+      <item>wxWidgets_CXX_FLAGS</item>
+      <item>wxWidgets_DEFINITIONS</item>
+      <item>wxWidgets_DEFINITIONS_DEBUG</item>
+      <item>wxWidgets_EXCLUDE_COMMON_LIBRARIES</item>
+      <item>wxWidgets_USE_DEBUG</item>
+      <item>wxWidgets_USE_STATIC</item>
+      <item>wxWidgets_USE_UNICODE</item>
+      <item>wxWidgets_USE_UNIVERSAL</item>
+    </list>
+
+    <list name="deprecated-or-internal-variables">
+      <item>CMAKE_AUTOMOC_RELAXED_MODE</item>
+      <item>CMAKE_BACKWARDS_COMPATIBILITY</item>
+      <item>CMAKE_BUILD_TOOL</item>
+      <item>CMAKE_COMPILER_IS_GNUCC</item>
+      <item>CMAKE_COMPILER_IS_GNUCXX</item>
+      <item>CMAKE_COMPILER_IS_GNUG77</item>
+      <item>CMAKE_ENABLE_EXPORTS</item>
+      <item>CMAKE_ERROR_DEPRECATED</item>
+      <item>CMAKE_EXTRA_GENERATOR</item>
+      <item>CMAKE_FILES_DIRECTORY</item>
+      <item>CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY</item>
+      <item>CMAKE_FIND_USE_CMAKE_PACKAGE_REGISTRY</item>
+      <item>CMAKE_HOME_DIRECTORY</item>
+      <item>CMAKE_INTERNAL_PLATFORM_ABI</item>
+      <item>CMAKE_IOS_INSTALL_COMBINED</item>
+      <item>CMAKE_NOT_USING_CONFIG_FLAGS</item>
+      <item>CMAKE_OBJCOPY</item>
+      <item>CMAKE_OBJDUMP</item>
+      <item>CMAKE_READELF</item>
+      <item>CMAKE_STRIP</item>
+      <item>CMAKE_SUPPRESS_DEVELOPER_ERRORS</item>
+      <item>CMAKE_SUPPRESS_DEVELOPER_WARNINGS</item>
+      <item>CMAKE_SYSTEM_ARCH</item>
+      <item>CMAKE_USE_RELATIVE_PATHS</item>
+      <item>CMAKE_VS_INTEL_Fortran_PROJECT_VERSION</item>
+      <item>CMAKE_WARN_DEPRECATED</item>
+      <item>CPACK_INSTALL_PREFIX</item>
+      <item>CPACK_INSTALL_SCRIPT</item>
+      <item>CPACK_PACKAGE_CONTACT</item>
+      <item>CPACK_PACKAGE_RELOCATABLE</item>
+      <item>CPACK_TEMPORARY_DIRECTORY</item>
+      <item>CPACK_TOPLEVEL_DIRECTORY</item>
+      <item>CTEST_CVS_CHECKOUT</item>
+      <item>CTEST_SCP_COMMAND</item>
+      <item>CTEST_TRIGGER_SITE</item>
+      <item>LIBXML2_FOUND</item>
+      <item>LIBXML2_VERSION_STRING</item>
+      <item>MSVC10</item>
+      <item>MSVC11</item>
+      <item>MSVC12</item>
+      <item>MSVC14</item>
+      <item>MSVC60</item>
+      <item>MSVC70</item>
+      <item>MSVC71</item>
+      <item>MSVC80</item>
+      <item>MSVC90</item>
+      <item>wxWidgets_USE_FILE</item>
+    </list>
+
+    <list name="environment-variables">
+      <item>ADSP_ROOT</item>
+      <item>CC</item>
+      <item>CCMAKE_COLORS</item>
+      <item>CFLAGS</item>
+      <item>CMAKE_APPBUNDLE_PATH</item>
+      <item>CMAKE_APPLE_SILICON_PROCESSOR</item>
+      <item>CMAKE_AUTOGEN_INTERMEDIATE_DIR_STRATEGY</item>
+      <item>CMAKE_BUILD_PARALLEL_LEVEL</item>
+      <item>CMAKE_BUILD_TYPE</item>
+      <item>CMAKE_COLOR_DIAGNOSTICS</item>
+      <item>CMAKE_CONFIGURATION_TYPES</item>
+      <item>CMAKE_CONFIG_TYPE</item>
+      <item>CMAKE_CROSSCOMPILING_EMULATOR</item>
+      <item>CMAKE_DISABLE_PRECOMPILE_HEADERS</item>
+      <item>CMAKE_EXPORT_BUILD_DATABASE</item>
+      <item>CMAKE_EXPORT_COMPILE_COMMANDS</item>
+      <item>CMAKE_FRAMEWORK_PATH</item>
+      <item>CMAKE_GENERATOR</item>
+      <item>CMAKE_GENERATOR_INSTANCE</item>
+      <item>CMAKE_GENERATOR_PLATFORM</item>
+      <item>CMAKE_GENERATOR_TOOLSET</item>
+      <item>CMAKE_INCLUDE_PATH</item>
+      <item>CMAKE_INSTALL_MODE</item>
+      <item>CMAKE_INSTALL_PREFIX</item>
+      <item>CMAKE_INTERMEDIATE_DIR_STRATEGY</item>
+      <item>CMAKE_LIBRARY_PATH</item>
+      <item>CMAKE_MAXIMUM_RECURSION_DEPTH</item>
+      <item>CMAKE_MSVCIDE_RUN_PATH</item>
+      <item>CMAKE_NO_VERBOSE</item>
+      <item>CMAKE_OSX_ARCHITECTURES</item>
+      <item>CMAKE_POLICY_VERSION_MINIMUM</item>
+      <item>CMAKE_PREFIX_PATH</item>
+      <item>CMAKE_PROGRAM_PATH</item>
+      <item>CMAKE_TLS_VERIFY</item>
+      <item>CMAKE_TLS_VERSION</item>
+      <item>CMAKE_TOOLCHAIN_FILE</item>
+      <item>CSFLAGS</item>
+      <item>CTEST_INTERACTIVE_DEBUG_MODE</item>
+      <item>CTEST_NO_TESTS_ACTION</item>
+      <item>CTEST_OUTPUT_ON_FAILURE</item>
+      <item>CTEST_PARALLEL_LEVEL</item>
+      <item>CTEST_PROGRESS_OUTPUT</item>
+      <item>CTEST_USE_LAUNCHERS_DEFAULT</item>
+      <item>CUDAARCHS</item>
+      <item>CUDACXX</item>
+      <item>CUDAFLAGS</item>
+      <item>CUDAHOSTCXX</item>
+      <item>CUDA_PATH</item>
+      <item>CXX</item>
+      <item>CXXFLAGS</item>
+      <item>DASHBOARD_TEST_FROM_CTEST</item>
+      <item>DESTDIR</item>
+      <item>FC</item>
+      <item>FFLAGS</item>
+      <item>HIPCXX</item>
+      <item>HIPFLAGS</item>
+      <item>ISPC</item>
+      <item>ISPCFLAGS</item>
+      <item>LDFLAGS</item>
+      <item>MACOSX_DEPLOYMENT_TARGET</item>
+      <item>OBJC</item>
+      <item>OBJCXX</item>
+      <item>PATH</item>
+      <item>QTIFWDIR</item>
+      <item>RC</item>
+      <item>RCFLAGS</item>
+      <item>SOURCE_DATE_EPOCH</item>
+      <item>SSL_CERT_DIR</item>
+      <item>SSL_CERT_FILE</item>
+      <item>SWIFTC</item>
+      <item>VERBOSE</item>
+    </list>
+    <list name="global-properties">
+      <item>ALLOW_DUPLICATE_CUSTOM_TARGETS</item>
+      <item>AUTOGEN_SOURCE_GROUP</item>
+      <item>AUTOGEN_TARGETS_FOLDER</item>
+      <item>AUTOMOC_SOURCE_GROUP</item>
+      <item>AUTOMOC_TARGETS_FOLDER</item>
+      <item>AUTORCC_SOURCE_GROUP</item>
+      <item>CMAKE_CUDA_KNOWN_FEATURES</item>
+      <item>CMAKE_CXX_KNOWN_FEATURES</item>
+      <item>CMAKE_C_KNOWN_FEATURES</item>
+      <item>CMAKE_ROLE</item>
+      <item>DEBUG_CONFIGURATIONS</item>
+      <item>DISABLED_FEATURES</item>
+      <item>ECLIPSE_EXTRA_NATURES</item>
+      <item>ENABLED_FEATURES</item>
+      <item>ENABLED_LANGUAGES</item>
+      <item>FIND_LIBRARY_USE_LIB32_PATHS</item>
+      <item>FIND_LIBRARY_USE_LIB64_PATHS</item>
+      <item>FIND_LIBRARY_USE_LIBX32_PATHS</item>
+      <item>FIND_LIBRARY_USE_OPENBSD_VERSIONING</item>
+      <item>FeatureSummary_DEFAULT_PKG_TYPE</item>
+      <item>FeatureSummary_PKG_TYPES</item>
+      <item>FeatureSummary_REQUIRED_PKG_TYPES</item>
+      <item>GENERATOR_IS_MULTI_CONFIG</item>
+      <item>GLOBAL_DEPENDS_DEBUG_MODE</item>
+      <item>GLOBAL_DEPENDS_NO_CYCLES</item>
+      <item>IN_TRY_COMPILE</item>
+      <item>JOB_POOLS</item>
+      <item>PACKAGES_FOUND</item>
+      <item>PACKAGES_NOT_FOUND</item>
+      <item>PREDEFINED_TARGETS_FOLDER</item>
+      <item>PROPAGATE_TOP_LEVEL_INCLUDES_TO_TRY_COMPILE</item>
+      <item>REPORT_UNDEFINED_PROPERTIES</item>
+      <item>RULE_LAUNCH_COMPILE</item>
+      <item>RULE_LAUNCH_CUSTOM</item>
+      <item>RULE_LAUNCH_LINK</item>
+      <item>RULE_MESSAGES</item>
+      <item>TARGET_ARCHIVES_MAY_BE_SHARED_LIBS</item>
+      <item>TARGET_MESSAGES</item>
+      <item>TARGET_SUPPORTS_SHARED_LIBS</item>
+      <item>USE_FOLDERS</item>
+      <item>XCODE_EMIT_EFFECTIVE_PLATFORM_NAME</item>
+    </list>
+    <list name="directory-properties">
+      <item>ADDITIONAL_CLEAN_FILES</item>
+      <item>ADDITIONAL_MAKE_CLEAN_FILES</item>
+      <item>BINARY_DIR</item>
+      <item>BUILDSYSTEM_TARGETS</item>
+      <item>CACHE_VARIABLES</item>
+      <item>CLEAN_NO_CUSTOM</item>
+      <item>CMAKE_CONFIGURE_DEPENDS</item>
+      <item>COMPILE_DEFINITIONS</item>
+      <item>COMPILE_OPTIONS</item>
+      <item>DEFINITIONS</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>IMPLICIT_DEPENDS_INCLUDE_TRANSFORM</item>
+      <item>IMPORTED_TARGETS</item>
+      <item>INCLUDE_DIRECTORIES</item>
+      <item>INCLUDE_REGULAR_EXPRESSION</item>
+      <item>INTERPROCEDURAL_OPTIMIZATION</item>
+      <item>LABELS</item>
+      <item>LINK_DIRECTORIES</item>
+      <item>LINK_OPTIONS</item>
+      <item>LISTFILE_STACK</item>
+      <item>MACROS</item>
+      <item>PARENT_DIRECTORY</item>
+      <item>RULE_LAUNCH_COMPILE</item>
+      <item>RULE_LAUNCH_CUSTOM</item>
+      <item>RULE_LAUNCH_LINK</item>
+      <item>SOURCE_DIR</item>
+      <item>SUBDIRECTORIES</item>
+      <item>SYSTEM</item>
+      <item>TESTS</item>
+      <item>TEST_INCLUDE_FILE</item>
+      <item>TEST_INCLUDE_FILES</item>
+      <item>VARIABLES</item>
+      <item>VS_SOLUTION_ITEMS</item>
+      <item>VS_STARTUP_PROJECT</item>
+    </list>
+    <list name="target-properties">
+      <item>ADDITIONAL_CLEAN_FILES</item>
+      <item>AIX_EXPORT_ALL_SYMBOLS</item>
+      <item>AIX_SHARED_LIBRARY_ARCHIVE</item>
+      <item>ALIASED_TARGET</item>
+      <item>ALIAS_GLOBAL</item>
+      <item>ANDROID_ANT_ADDITIONAL_OPTIONS</item>
+      <item>ANDROID_API</item>
+      <item>ANDROID_API_MIN</item>
+      <item>ANDROID_ARCH</item>
+      <item>ANDROID_ASSETS_DIRECTORIES</item>
+      <item>ANDROID_GUI</item>
+      <item>ANDROID_JAR_DEPENDENCIES</item>
+      <item>ANDROID_JAR_DIRECTORIES</item>
+      <item>ANDROID_JAVA_SOURCE_DIR</item>
+      <item>ANDROID_NATIVE_LIB_DEPENDENCIES</item>
+      <item>ANDROID_NATIVE_LIB_DIRECTORIES</item>
+      <item>ANDROID_PROCESS_MAX</item>
+      <item>ANDROID_PROGUARD</item>
+      <item>ANDROID_PROGUARD_CONFIG_PATH</item>
+      <item>ANDROID_SECURE_PROPS_PATH</item>
+      <item>ANDROID_SKIP_ANT_STEP</item>
+      <item>ANDROID_STL_TYPE</item>
+      <item>ARCHIVE_OUTPUT_DIRECTORY</item>
+      <item>ARCHIVE_OUTPUT_NAME</item>
+      <item>AUTOGEN_BUILD_DIR</item>
+      <item>AUTOGEN_ORIGIN_DEPENDS</item>
+      <item>AUTOGEN_TARGET_DEPENDS</item>
+      <item>AUTOGEN_USE_SYSTEM_INCLUDE</item>
+      <item>AUTOMOC</item>
+      <item>AUTOMOC_COMPILER_PREDEFINES</item>
+      <item>AUTOMOC_DEPEND_FILTERS</item>
+      <item>AUTOMOC_EXECUTABLE</item>
+      <item>AUTOMOC_INCLUDE_DIRECTORIES</item>
+      <item>AUTOMOC_MACRO_NAMES</item>
+      <item>AUTOMOC_MOC_OPTIONS</item>
+      <item>AUTOMOC_PATH_PREFIX</item>
+      <item>AUTORCC</item>
+      <item>AUTORCC_EXECUTABLE</item>
+      <item>AUTORCC_OPTIONS</item>
+      <item>AUTOUIC</item>
+      <item>AUTOUIC_EXECUTABLE</item>
+      <item>AUTOUIC_OPTIONS</item>
+      <item>AUTOUIC_SEARCH_PATHS</item>
+      <item>BINARY_DIR</item>
+      <item>BUILD_RPATH</item>
+      <item>BUILD_RPATH_USE_ORIGIN</item>
+      <item>BUILD_WITH_INSTALL_NAME_DIR</item>
+      <item>BUILD_WITH_INSTALL_RPATH</item>
+      <item>BUNDLE</item>
+      <item>BUNDLE_EXTENSION</item>
+      <item>COMMON_LANGUAGE_RUNTIME</item>
+      <item>COMPATIBLE_INTERFACE_BOOL</item>
+      <item>COMPATIBLE_INTERFACE_NUMBER_MAX</item>
+      <item>COMPATIBLE_INTERFACE_NUMBER_MIN</item>
+      <item>COMPATIBLE_INTERFACE_STRING</item>
+      <item>COMPILE_DEFINITIONS</item>
+      <item>COMPILE_FEATURES</item>
+      <item>COMPILE_FLAGS</item>
+      <item>COMPILE_OPTIONS</item>
+      <item>COMPILE_PDB_NAME</item>
+      <item>COMPILE_PDB_OUTPUT_DIRECTORY</item>
+      <item>COMPILE_WARNING_AS_ERROR</item>
+      <item>CROSSCOMPILING_EMULATOR</item>
+      <item>CUDA_ARCHITECTURES</item>
+      <item>CUDA_CUBIN_COMPILATION</item>
+      <item>CUDA_EXTENSIONS</item>
+      <item>CUDA_FATBIN_COMPILATION</item>
+      <item>CUDA_OPTIX_COMPILATION</item>
+      <item>CUDA_PTX_COMPILATION</item>
+      <item>CUDA_RESOLVE_DEVICE_SYMBOLS</item>
+      <item>CUDA_RUNTIME_LIBRARY</item>
+      <item>CUDA_SEPARABLE_COMPILATION</item>
+      <item>CUDA_STANDARD</item>
+      <item>CUDA_STANDARD_REQUIRED</item>
+      <item>CXX_EXTENSIONS</item>
+      <item>CXX_MODULE_DIRS</item>
+      <item>CXX_MODULE_SET</item>
+      <item>CXX_MODULE_SETS</item>
+      <item>CXX_SCAN_FOR_MODULES</item>
+      <item>CXX_STANDARD</item>
+      <item>CXX_STANDARD_REQUIRED</item>
+      <item>C_EXTENSIONS</item>
+      <item>C_STANDARD</item>
+      <item>C_STANDARD_REQUIRED</item>
+      <item>DEBUGGER_WORKING_DIRECTORY</item>
+      <item>DEFINE_SYMBOL</item>
+      <item>DEPLOYMENT_ADDITIONAL_FILES</item>
+      <item>DEPLOYMENT_REMOTE_DIRECTORY</item>
+      <item>DEPRECATION</item>
+      <item>DISABLE_PRECOMPILE_HEADERS</item>
+      <item>DLL_NAME_WITH_SOVERSION</item>
+      <item>DOTNET_SDK</item>
+      <item>DOTNET_TARGET_FRAMEWORK</item>
+      <item>DOTNET_TARGET_FRAMEWORK_VERSION</item>
+      <item>ENABLE_EXPORTS</item>
+      <item>EXCLUDE_FROM_ALL</item>
+      <item>EXCLUDE_FROM_DEFAULT_BUILD</item>
+      <item>EXPORT_BUILD_DATABASE</item>
+      <item>EXPORT_COMPILE_COMMANDS</item>
+      <item>EXPORT_NAME</item>
+      <item>EXPORT_NO_SYSTEM</item>
+      <item>EXPORT_PROPERTIES</item>
+      <item>EchoString</item>
+      <item>FOLDER</item>
+      <item>FRAMEWORK</item>
+      <item>FRAMEWORK_VERSION</item>
+      <item>Fortran_FORMAT</item>
+      <item>Fortran_MODULE_DIRECTORY</item>
+      <item>Fortran_PREPROCESS</item>
+      <item>GENERATOR_FILE_NAME</item>
+      <item>GNUtoMS</item>
+      <item>HAS_CXX</item>
+      <item>HEADER_DIRS</item>
+      <item>HEADER_SET</item>
+      <item>HEADER_SETS</item>
+      <item>HIP_ARCHITECTURES</item>
+      <item>HIP_EXTENSIONS</item>
+      <item>HIP_STANDARD</item>
+      <item>HIP_STANDARD_REQUIRED</item>
+      <item>IMPLICIT_DEPENDS_INCLUDE_TRANSFORM</item>
+      <item>IMPORTED</item>
+      <item>IMPORTED_COMMON_LANGUAGE_RUNTIME</item>
+      <item>IMPORTED_CONFIGURATIONS</item>
+      <item>IMPORTED_CXX_MODULES_COMPILE_DEFINITIONS</item>
+      <item>IMPORTED_CXX_MODULES_COMPILE_FEATURES</item>
+      <item>IMPORTED_CXX_MODULES_COMPILE_OPTIONS</item>
+      <item>IMPORTED_CXX_MODULES_INCLUDE_DIRECTORIES</item>
+      <item>IMPORTED_CXX_MODULES_LINK_LIBRARIES</item>
+      <item>IMPORTED_GLOBAL</item>
+      <item>IMPORTED_IMPLIB</item>
+      <item>IMPORTED_LIBNAME</item>
+      <item>IMPORTED_LINK_DEPENDENT_LIBRARIES</item>
+      <item>IMPORTED_LINK_INTERFACE_LANGUAGES</item>
+      <item>IMPORTED_LINK_INTERFACE_LIBRARIES</item>
+      <item>IMPORTED_LINK_INTERFACE_MULTIPLICITY</item>
+      <item>IMPORTED_LOCATION</item>
+      <item>IMPORTED_NO_SONAME</item>
+      <item>IMPORTED_NO_SYSTEM</item>
+      <item>IMPORTED_OBJECTS</item>
+      <item>IMPORTED_SONAME</item>
+      <item>IMPORT_PREFIX</item>
+      <item>IMPORT_SUFFIX</item>
+      <item>INCLUDE_DIRECTORIES</item>
+      <item>INSTALL_NAME_DIR</item>
+      <item>INSTALL_OBJECT_NAME_STRATEGY</item>
+      <item>INSTALL_OBJECT_ONLY_USE_DESTINATION</item>
+      <item>INSTALL_REMOVE_ENVIRONMENT_RPATH</item>
+      <item>INSTALL_RPATH</item>
+      <item>INSTALL_RPATH_USE_LINK_PATH</item>
+      <item>INTERFACE_AUTOMOC_MACRO_NAMES</item>
+      <item>INTERFACE_AUTOUIC_OPTIONS</item>
+      <item>INTERFACE_COMPILE_DEFINITIONS</item>
+      <item>INTERFACE_COMPILE_FEATURES</item>
+      <item>INTERFACE_COMPILE_OPTIONS</item>
+      <item>INTERFACE_CXX_MODULE_SETS</item>
+      <item>INTERFACE_HEADER_SETS</item>
+      <item>INTERFACE_HEADER_SETS_TO_VERIFY</item>
+      <item>INTERFACE_INCLUDE_DIRECTORIES</item>
+      <item>INTERFACE_LINK_DEPENDS</item>
+      <item>INTERFACE_LINK_DIRECTORIES</item>
+      <item>INTERFACE_LINK_LIBRARIES</item>
+      <item>INTERFACE_LINK_LIBRARIES_DIRECT</item>
+      <item>INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE</item>
+      <item>INTERFACE_LINK_OPTIONS</item>
+      <item>INTERFACE_POSITION_INDEPENDENT_CODE</item>
+      <item>INTERFACE_PRECOMPILE_HEADERS</item>
+      <item>INTERFACE_SOURCES</item>
+      <item>INTERFACE_SYSTEM_INCLUDE_DIRECTORIES</item>
+      <item>INTERPROCEDURAL_OPTIMIZATION</item>
+      <item>IOS_INSTALL_COMBINED</item>
+      <item>ISPC_HEADER_DIRECTORY</item>
+      <item>ISPC_HEADER_SUFFIX</item>
+      <item>ISPC_INSTRUCTION_SETS</item>
+      <item>JOB_POOL_COMPILE</item>
+      <item>JOB_POOL_LINK</item>
+      <item>LABELS</item>
+      <item>LIBRARY_OUTPUT_DIRECTORY</item>
+      <item>LIBRARY_OUTPUT_NAME</item>
+      <item>LINKER_LANGUAGE</item>
+      <item>LINK_DEPENDS</item>
+      <item>LINK_DEPENDS_NO_SHARED</item>
+      <item>LINK_DIRECTORIES</item>
+      <item>LINK_FLAGS</item>
+      <item>LINK_INTERFACE_LIBRARIES</item>
+      <item>LINK_INTERFACE_MULTIPLICITY</item>
+      <item>LINK_LIBRARIES</item>
+      <item>LINK_LIBRARIES_ONLY_TARGETS</item>
+      <item>LINK_LIBRARIES_STRATEGY</item>
+      <item>LINK_LIBRARY_OVERRIDE</item>
+      <item>LINK_OPTIONS</item>
+      <item>LINK_SEARCH_END_STATIC</item>
+      <item>LINK_SEARCH_START_STATIC</item>
+      <item>LINK_WARNING_AS_ERROR</item>
+      <item>LINK_WHAT_YOU_USE</item>
+      <item>LOCATION</item>
+      <item>MACHO_COMPATIBILITY_VERSION</item>
+      <item>MACHO_CURRENT_VERSION</item>
+      <item>MACOSX_BUNDLE</item>
+      <item>MACOSX_BUNDLE_INFO_PLIST</item>
+      <item>MACOSX_FRAMEWORK_BUNDLE_NAME</item>
+      <item>MACOSX_FRAMEWORK_BUNDLE_VERSION</item>
+      <item>MACOSX_FRAMEWORK_ICON_FILE</item>
+      <item>MACOSX_FRAMEWORK_IDENTIFIER</item>
+      <item>MACOSX_FRAMEWORK_INFO_PLIST</item>
+      <item>MACOSX_FRAMEWORK_SHORT_VERSION_STRING</item>
+      <item>MACOSX_RPATH</item>
+      <item>MANUALLY_ADDED_DEPENDENCIES</item>
+      <item>MSVC_DEBUG_INFORMATION_FORMAT</item>
+      <item>MSVC_RUNTIME_CHECKS</item>
+      <item>MSVC_RUNTIME_LIBRARY</item>
+      <item>NAME</item>
+      <item>NO_SONAME</item>
+      <item>NO_SYSTEM_FROM_IMPORTED</item>
+      <item>OBJCXX_EXTENSIONS</item>
+      <item>OBJCXX_STANDARD</item>
+      <item>OBJCXX_STANDARD_REQUIRED</item>
+      <item>OBJC_EXTENSIONS</item>
+      <item>OBJC_STANDARD</item>
+      <item>OBJC_STANDARD_REQUIRED</item>
+      <item>OPTIMIZE_DEPENDENCIES</item>
+      <item>OSX_ARCHITECTURES</item>
+      <item>OSX_COMPATIBILITY_VERSION</item>
+      <item>OSX_CURRENT_VERSION</item>
+      <item>OUTPUT_NAME</item>
+      <item>PCH_INSTANTIATE_TEMPLATES</item>
+      <item>PCH_WARN_INVALID</item>
+      <item>PDB_NAME</item>
+      <item>PDB_OUTPUT_DIRECTORY</item>
+      <item>POSITION_INDEPENDENT_CODE</item>
+      <item>PRECOMPILE_HEADERS</item>
+      <item>PRECOMPILE_HEADERS_REUSE_FROM</item>
+      <item>PREFIX</item>
+      <item>PRIVATE_HEADER</item>
+      <item>PRIVATE_HEADER_SETS_TO_VERIFY</item>
+      <item>PROJECT_LABEL</item>
+      <item>PUBLIC_HEADER</item>
+      <item>RESOURCE</item>
+      <item>RULE_LAUNCH_COMPILE</item>
+      <item>RULE_LAUNCH_CUSTOM</item>
+      <item>RULE_LAUNCH_LINK</item>
+      <item>RUNTIME_OUTPUT_DIRECTORY</item>
+      <item>RUNTIME_OUTPUT_NAME</item>
+      <item>SKIP_BUILD_RPATH</item>
+      <item>SKIP_LINTING</item>
+      <item>SOURCES</item>
+      <item>SOURCE_DIR</item>
+      <item>SOVERSION</item>
+      <item>SPDX_LICENSE</item>
+      <item>STATIC_LIBRARY_FLAGS</item>
+      <item>STATIC_LIBRARY_OPTIONS</item>
+      <item>SUFFIX</item>
+      <item>SYSTEM</item>
+      <item>Swift_COMPILATION_MODE</item>
+      <item>Swift_DEPENDENCIES_FILE</item>
+      <item>Swift_LANGUAGE_VERSION</item>
+      <item>Swift_MODULE_DIRECTORY</item>
+      <item>Swift_MODULE_NAME</item>
+      <item>Swift_PACKAGE_NAME</item>
+      <item>Swift_SEPARATE_MODULE_EMISSION</item>
+      <item>TEST_LAUNCHER</item>
+      <item>TRANSITIVE_COMPILE_PROPERTIES</item>
+      <item>TRANSITIVE_LINK_PROPERTIES</item>
+      <item>TYPE</item>
+      <item>UNITY_BUILD</item>
+      <item>UNITY_BUILD_BATCH_SIZE</item>
+      <item>UNITY_BUILD_CODE_AFTER_INCLUDE</item>
+      <item>UNITY_BUILD_CODE_BEFORE_INCLUDE</item>
+      <item>UNITY_BUILD_FILENAME_PREFIX</item>
+      <item>UNITY_BUILD_MODE</item>
+      <item>UNITY_BUILD_UNIQUE_ID</item>
+      <item>VERIFY_INTERFACE_HEADER_SETS</item>
+      <item>VERIFY_PRIVATE_HEADER_SETS</item>
+      <item>VERSION</item>
+      <item>VISIBILITY_INLINES_HIDDEN</item>
+      <item>VS_CONFIGURATION_TYPE</item>
+      <item>VS_DEBUGGER_COMMAND</item>
+      <item>VS_DEBUGGER_COMMAND_ARGUMENTS</item>
+      <item>VS_DEBUGGER_ENVIRONMENT</item>
+      <item>VS_DEBUGGER_WORKING_DIRECTORY</item>
+      <item>VS_DESKTOP_EXTENSIONS_VERSION</item>
+      <item>VS_DOTNET_DOCUMENTATION_FILE</item>
+      <item>VS_DOTNET_REFERENCES</item>
+      <item>VS_DOTNET_REFERENCES_COPY_LOCAL</item>
+      <item>VS_DOTNET_STARTUP_OBJECT</item>
+      <item>VS_DOTNET_TARGET_FRAMEWORK_VERSION</item>
+      <item>VS_DPI_AWARE</item>
+      <item>VS_FILTER_PROPS</item>
+      <item>VS_FRAMEWORK_REFERENCES</item>
+      <item>VS_GLOBAL_KEYWORD</item>
+      <item>VS_GLOBAL_PROJECT_TYPES</item>
+      <item>VS_GLOBAL_ROOTNAMESPACE</item>
+      <item>VS_IOT_EXTENSIONS_VERSION</item>
+      <item>VS_IOT_STARTUP_TASK</item>
+      <item>VS_JUST_MY_CODE_DEBUGGING</item>
+      <item>VS_KEYWORD</item>
+      <item>VS_MOBILE_EXTENSIONS_VERSION</item>
+      <item>VS_NO_COMPILE_BATCHING</item>
+      <item>VS_NO_SOLUTION_DEPLOY</item>
+      <item>VS_PACKAGE_REFERENCES</item>
+      <item>VS_PLATFORM_TOOLSET</item>
+      <item>VS_PROJECT_IMPORT</item>
+      <item>VS_SCC_AUXPATH</item>
+      <item>VS_SCC_LOCALPATH</item>
+      <item>VS_SCC_PROJECTNAME</item>
+      <item>VS_SCC_PROVIDER</item>
+      <item>VS_SDK_REFERENCES</item>
+      <item>VS_SOLUTION_DEPLOY</item>
+      <item>VS_USER_PROPS</item>
+      <item>VS_USE_DEBUG_LIBRARIES</item>
+      <item>VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION</item>
+      <item>VS_WINRT_COMPONENT</item>
+      <item>VS_WINRT_EXTENSIONS</item>
+      <item>VS_WINRT_REFERENCES</item>
+      <item>WATCOM_RUNTIME_LIBRARY</item>
+      <item>WIN32_EXECUTABLE</item>
+      <item>WINDOWS_EXPORT_ALL_SYMBOLS</item>
+      <item>XCODE_EXPLICIT_FILE_TYPE</item>
+      <item>XCODE_GENERATE_SCHEME</item>
+      <item>XCODE_LINK_BUILD_PHASE_MODE</item>
+      <item>XCODE_PRODUCT_TYPE</item>
+      <item>XCODE_SCHEME_ADDRESS_SANITIZER</item>
+      <item>XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN</item>
+      <item>XCODE_SCHEME_ARGUMENTS</item>
+      <item>XCODE_SCHEME_DEBUG_AS_ROOT</item>
+      <item>XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING</item>
+      <item>XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER</item>
+      <item>XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS</item>
+      <item>XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE</item>
+      <item>XCODE_SCHEME_ENABLE_GPU_API_VALIDATION</item>
+      <item>XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE</item>
+      <item>XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION</item>
+      <item>XCODE_SCHEME_ENVIRONMENT</item>
+      <item>XCODE_SCHEME_EXECUTABLE</item>
+      <item>XCODE_SCHEME_GUARD_MALLOC</item>
+      <item>XCODE_SCHEME_LAUNCH_CONFIGURATION</item>
+      <item>XCODE_SCHEME_LAUNCH_MODE</item>
+      <item>XCODE_SCHEME_LLDB_INIT_FILE</item>
+      <item>XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP</item>
+      <item>XCODE_SCHEME_MALLOC_GUARD_EDGES</item>
+      <item>XCODE_SCHEME_MALLOC_SCRIBBLE</item>
+      <item>XCODE_SCHEME_MALLOC_STACK</item>
+      <item>XCODE_SCHEME_TEST_CONFIGURATION</item>
+      <item>XCODE_SCHEME_THREAD_SANITIZER</item>
+      <item>XCODE_SCHEME_THREAD_SANITIZER_STOP</item>
+      <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER</item>
+      <item>XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP</item>
+      <item>XCODE_SCHEME_WORKING_DIRECTORY</item>
+      <item>XCODE_SCHEME_ZOMBIE_OBJECTS</item>
+      <item>XCODE_XCCONFIG</item>
+      <item>XCTEST</item>
+    </list>
+    <list name="fileset-properties">
+      <item>BASE_DIRS</item>
+      <item>COMPILE_DEFINITIONS</item>
+      <item>COMPILE_OPTIONS</item>
+      <item>CXX_SCAN_FOR_MODULES</item>
+      <item>INCLUDE_DIRECTORIES</item>
+      <item>INDEPENDENT_FILES</item>
+      <item>INTERFACE_COMPILE_DEFINITIONS</item>
+      <item>INTERFACE_COMPILE_OPTIONS</item>
+      <item>INTERFACE_INCLUDE_DIRECTORIES</item>
+      <item>INTERFACE_SOURCES</item>
+      <item>JOB_POOL_COMPILE</item>
+      <item>SCOPE</item>
+      <item>SKIP_LINTING</item>
+      <item>SKIP_PRECOMPILE_HEADERS</item>
+      <item>SKIP_UNITY_BUILD_INCLUSION</item>
+      <item>SOURCES</item>
+      <item>TYPE</item>
+    </list>
+    <list name="test-properties">
+      <item>ATTACHED_FILES</item>
+      <item>ATTACHED_FILES_ON_FAIL</item>
+      <item>COST</item>
+      <item>DEPENDS</item>
+      <item>DISABLED</item>
+      <item>ENVIRONMENT</item>
+      <item>ENVIRONMENT_MODIFICATION</item>
+      <item>FAIL_REGULAR_EXPRESSION</item>
+      <item>FIXTURES_CLEANUP</item>
+      <item>FIXTURES_REQUIRED</item>
+      <item>FIXTURES_SETUP</item>
+      <item>GENERATED_RESOURCE_SPEC_FILE</item>
+      <item>LABELS</item>
+      <item>MEASUREMENT</item>
+      <item>PASS_REGULAR_EXPRESSION</item>
+      <item>PROCESSORS</item>
+      <item>PROCESSOR_AFFINITY</item>
+      <item>REQUIRED_FILES</item>
+      <item>RESOURCE_GROUPS</item>
+      <item>RESOURCE_LOCK</item>
+      <item>RUN_SERIAL</item>
+      <item>SKIP_REGULAR_EXPRESSION</item>
+      <item>SKIP_RETURN_CODE</item>
+      <item>TIMEOUT</item>
+      <item>TIMEOUT_AFTER_MATCH</item>
+      <item>TIMEOUT_SIGNAL_GRACE_PERIOD</item>
+      <item>TIMEOUT_SIGNAL_NAME</item>
+      <item>WILL_FAIL</item>
+      <item>WORKING_DIRECTORY</item>
+    </list>
+    <list name="source-properties">
+      <item>ABSTRACT</item>
+      <item>AUTORCC_OPTIONS</item>
+      <item>AUTOUIC_OPTIONS</item>
+      <item>COMPILE_DEFINITIONS</item>
+      <item>COMPILE_FLAGS</item>
+      <item>COMPILE_OPTIONS</item>
+      <item>CXX_SCAN_FOR_MODULES</item>
+      <item>EXTERNAL_OBJECT</item>
+      <item>Fortran_FORMAT</item>
+      <item>Fortran_PREPROCESS</item>
+      <item>GENERATED</item>
+      <item>HEADER_FILE_ONLY</item>
+      <item>INCLUDE_DIRECTORIES</item>
+      <item>INSTALL_OBJECT_NAME</item>
+      <item>JOB_POOL_COMPILE</item>
+      <item>KEEP_EXTENSION</item>
+      <item>LABELS</item>
+      <item>LANGUAGE</item>
+      <item>LOCATION</item>
+      <item>MACOSX_PACKAGE_LOCATION</item>
+      <item>OBJECT_DEPENDS</item>
+      <item>OBJECT_NAME</item>
+      <item>OBJECT_OUTPUTS</item>
+      <item>SKIP_AUTOGEN</item>
+      <item>SKIP_AUTOMOC</item>
+      <item>SKIP_AUTORCC</item>
+      <item>SKIP_AUTOUIC</item>
+      <item>SKIP_LINTING</item>
+      <item>SKIP_PRECOMPILE_HEADERS</item>
+      <item>SKIP_UNITY_BUILD_INCLUSION</item>
+      <item>SYMBOLIC</item>
+      <item>Swift_DEPENDENCIES_FILE</item>
+      <item>Swift_DIAGNOSTICS_FILE</item>
+      <item>VS_COPY_TO_OUT_DIR</item>
+      <item>VS_CUSTOM_COMMAND_DISABLE_PARALLEL_BUILD</item>
+      <item>VS_DEPLOYMENT_CONTENT</item>
+      <item>VS_DEPLOYMENT_LOCATION</item>
+      <item>VS_INCLUDE_IN_VSIX</item>
+      <item>VS_RESOURCE_GENERATOR</item>
+      <item>VS_SETTINGS</item>
+      <item>VS_SHADER_DISABLE_OPTIMIZATIONS</item>
+      <item>VS_SHADER_ENABLE_DEBUG</item>
+      <item>VS_SHADER_ENTRYPOINT</item>
+      <item>VS_SHADER_FLAGS</item>
+      <item>VS_SHADER_MODEL</item>
+      <item>VS_SHADER_OBJECT_FILE_NAME</item>
+      <item>VS_SHADER_OUTPUT_HEADER_FILE</item>
+      <item>VS_SHADER_TYPE</item>
+      <item>VS_SHADER_VARIABLE_NAME</item>
+      <item>VS_TOOL_OVERRIDE</item>
+      <item>VS_XAML_TYPE</item>
+      <item>WRAP_EXCLUDE</item>
+      <item>XCODE_EXPLICIT_FILE_TYPE</item>
+      <item>XCODE_FILE_ATTRIBUTES</item>
+      <item>XCODE_LAST_KNOWN_FILE_TYPE</item>
+    </list>
+    <list name="cache-properties">
+      <item>ADVANCED</item>
+      <item>HELPSTRING</item>
+      <item>MODIFIED</item>
+      <item>STRINGS</item>
+      <item>TYPE</item>
+      <item>VALUE</item>
+    </list>
+    <list name="install-properties">
+      <item>CPACK_DESKTOP_SHORTCUTS</item>
+      <item>CPACK_NEVER_OVERWRITE</item>
+      <item>CPACK_PERMANENT</item>
+      <item>CPACK_STARTUP_SHORTCUTS</item>
+      <item>CPACK_START_MENU_SHORTCUTS</item>
+      <item>CPACK_WIX_ACL</item>
+    </list>
+
+    <list name="generator-expressions">
+      <item>IF</item>
+      <item>0</item>
+      <item>1</item>
+      <item>BOOL</item>
+      <item>AND</item>
+      <item>OR</item>
+      <item>NOT</item>
+      <item>EQUAL</item>
+      <item>VERSION_LESS</item>
+      <item>VERSION_GREATER</item>
+      <item>VERSION_EQUAL</item>
+      <item>VERSION_LESS_EQUAL</item>
+      <item>VERSION_GREATER_EQUAL</item>
+      <item>STREQUAL</item>
+      <item>STRLESS</item>
+      <item>STRGREATER</item>
+      <item>STRLESS_EQUAL</item>
+      <item>STRGREATER_EQUAL</item>
+      <item>LOWER_CASE</item>
+      <item>UPPER_CASE</item>
+      <item>MAKE_C_IDENTIFIER</item>
+      <item>IN_LIST</item>
+      <item>JOIN</item>
+      <item>REMOVE_DUPLICATES</item>
+      <item>FILTER</item>
+      <item>PATH_EQUAL</item>
+      <item>SHELL_PATH</item>
+      <item>CONFIG</item>
+      <item>OUTPUT_CONFIG</item>
+      <item>COMMAND_CONFIG</item>
+      <item>PLATFORM_ID</item>
+      <item>C_COMPILER_VERSION</item>
+      <item>CXX_COMPILER_VERSION</item>
+      <item>CUDA_COMPILER_VERSION</item>
+      <item>OBJC_COMPILER_VERSION</item>
+      <item>OBJCXX_COMPILER_VERSION</item>
+      <item>Fortran_COMPILER_VERSION</item>
+      <item>HIP_COMPILER_VERSION</item>
+      <item>ISPC_COMPILER_VERSION</item>
+      <item>C_COMPILER_ID</item>
+      <item>CXX_COMPILER_ID</item>
+      <item>CUDA_COMPILER_ID</item>
+      <item>OBJC_COMPILER_ID</item>
+      <item>OBJCXX_COMPILER_ID</item>
+      <item>Fortran_COMPILER_ID</item>
+      <item>HIP_COMPILER_ID</item>
+      <item>ISPC_COMPILER_ID</item>
+      <item>C_COMPILER_FRONTEND_VARIANT</item>
+      <item>CXX_COMPILER_FRONTEND_VARIANT</item>
+      <item>CUDA_COMPILER_FRONTEND_VARIANT</item>
+      <item>OBJC_COMPILER_FRONTEND_VARIANT</item>
+      <item>OBJCXX_COMPILER_FRONTEND_VARIANT</item>
+      <item>Fortran_COMPILER_FRONTEND_VARIANT</item>
+      <item>HIP_COMPILER_FRONTEND_VARIANT</item>
+      <item>ISPC_COMPILER_FRONTEND_VARIANT</item>
+      <item>COMPILE_LANGUAGE</item>
+      <item>COMPILE_LANG_AND_ID</item>
+      <item>COMPILE_FEATURES</item>
+      <item>COMPILE_ONLY</item>
+      <item>LINK_LANGUAGE</item>
+      <item>LINK_LANG_AND_ID</item>
+      <item>LINK_LIBRARY</item>
+      <item>LINK_GROUP</item>
+      <item>LINK_ONLY</item>
+      <item>DEVICE_LINK</item>
+      <item>HOST_LINK</item>
+      <item>C_COMPILER_LINKER_ID</item>
+      <item>CXX_COMPILER_LINKER_ID</item>
+      <item>CUDA_COMPILER_LINKER_ID</item>
+      <item>OBJC_COMPILER_LINKER_ID</item>
+      <item>OBJCXX_COMPILER_LINKER_ID</item>
+      <item>Fortran_COMPILER_LINKER_ID</item>
+      <item>HIP_COMPILER_LINKER_ID</item>
+      <item>C_COMPILER_LINKER_FRONTEND_VARIANT</item>
+      <item>CXX_COMPILER_LINKER_FRONTEND_VARIANT</item>
+      <item>CUDA_COMPILER_LINKER_FRONTEND_VARIANT</item>
+      <item>OBJC_COMPILER_LINKER_FRONTEND_VARIANT</item>
+      <item>OBJCXX_COMPILER_LINKER_FRONTEND_VARIANT</item>
+      <item>Fortran_COMPILER_LINKER_FRONTEND_VARIANT</item>
+      <item>HIP_COMPILER_LINKER_FRONTEND_VARIANT</item>
+      <item>SOURCE_EXISTS</item>
+      <item>SOURCE_PROPERTY</item>
+      <item>FILE_SET_EXISTS</item>
+      <item>FILE_SET_PROPERTY</item>
+      <item>TARGET_EXISTS</item>
+      <item>TARGET_NAME_IF_EXISTS</item>
+      <item>TARGET_NAME</item>
+      <item>TARGET_POLICY</item>
+      <item>TARGET_PROPERTY</item>
+      <item>TARGET_FILE</item>
+      <item>TARGET_FILE_BASE_NAME</item>
+      <item>TARGET_FILE_PREFIX</item>
+      <item>TARGET_FILE_SUFFIX</item>
+      <item>TARGET_FILE_NAME</item>
+      <item>TARGET_FILE_DIR</item>
+      <item>TARGET_IMPORT_FILE</item>
+      <item>TARGET_IMPORT_FILE_BASE_NAME</item>
+      <item>TARGET_IMPORT_FILE_PREFIX</item>
+      <item>TARGET_IMPORT_FILE_SUFFIX</item>
+      <item>TARGET_IMPORT_FILE_NAME</item>
+      <item>TARGET_IMPORT_FILE_DIR</item>
+      <item>TARGET_LINKER_FILE</item>
+      <item>TARGET_LINKER_FILE_BASE_NAME</item>
+      <item>TARGET_LINKER_FILE_PREFIX</item>
+      <item>TARGET_LINKER_FILE_SUFFIX</item>
+      <item>TARGET_LINKER_FILE_NAME</item>
+      <item>TARGET_LINKER_FILE_DIR</item>
+      <item>TARGET_LINKER_LIBRARY_FILE</item>
+      <item>TARGET_LINKER_LIBRARY_FILE_BASE_NAME</item>
+      <item>TARGET_LINKER_LIBRARY_FILE_PREFIX</item>
+      <item>TARGET_LINKER_LIBRARY_FILE_SUFFIX</item>
+      <item>TARGET_LINKER_LIBRARY_FILE_NAME</item>
+      <item>TARGET_LINKER_LIBRARY_FILE_DIR</item>
+      <item>TARGET_LINKER_IMPORT_FILE</item>
+      <item>TARGET_LINKER_IMPORT_FILE_BASE_NAME</item>
+      <item>TARGET_LINKER_IMPORT_FILE_PREFIX</item>
+      <item>TARGET_LINKER_IMPORT_FILE_SUFFIX</item>
+      <item>TARGET_LINKER_IMPORT_FILE_NAME</item>
+      <item>TARGET_LINKER_IMPORT_FILE_DIR</item>
+      <item>TARGET_SONAME_FILE</item>
+      <item>TARGET_SONAME_FILE_NAME</item>
+      <item>TARGET_SONAME_FILE_DIR</item>
+      <item>TARGET_SONAME_IMPORT_FILE</item>
+      <item>TARGET_SONAME_IMPORT_FILE_NAME</item>
+      <item>TARGET_SONAME_IMPORT_FILE_DIR</item>
+      <item>TARGET_PDB_FILE</item>
+      <item>TARGET_PDB_FILE_BASE_NAME</item>
+      <item>TARGET_PDB_FILE_NAME</item>
+      <item>TARGET_PDB_FILE_DIR</item>
+      <item>TARGET_BUNDLE_DIR</item>
+      <item>TARGET_BUNDLE_DIR_NAME</item>
+      <item>TARGET_BUNDLE_CONTENT_DIR</item>
+      <item>TARGET_OBJECTS</item>
+      <item>TARGET_RUNTIME_DLLS</item>
+      <item>TARGET_RUNTIME_DLL_DIRS</item>
+      <item>TARGET_INTERMEDIATE_DIR</item>
+      <item>INSTALL_INTERFACE</item>
+      <item>BUILD_INTERFACE</item>
+      <item>BUILD_LOCAL_INTERFACE</item>
+      <item>INSTALL_PREFIX</item>
+      <item>GENEX_EVAL</item>
+      <item>TARGET_GENEX_EVAL</item>
+      <item>ANGLE-R</item>
+      <item>COMMA</item>
+      <item>SEMICOLON</item>
+      <item>QUOTE</item>
+    </list>
+    <list name="genex-STRING-subcommands">
+      <item>LENGTH</item>
+      <item>SUBSTRING</item>
+      <item>FIND</item>
+      <item>MATCH</item>
+      <item>JOIN</item>
+      <item>ASCII</item>
+      <item>TIMESTAMP</item>
+      <item>RANDOM</item>
+      <item>UUID</item>
+      <item>REPLACE</item>
+      <item>APPEND</item>
+      <item>PREPEND</item>
+      <item>TOLOWER</item>
+      <item>TOUPPER</item>
+      <item>STRIP</item>
+      <item>QUOTE</item>
+      <item>HEX</item>
+      <item>HASH</item>
+      <item>MAKE_C_IDENTIFIER</item>
+    </list>
+    <list name="genex-LIST-subcommands">
+      <item>LENGTH</item>
+      <item>GET</item>
+      <item>SUBLIST</item>
+      <item>FIND</item>
+      <item>JOIN</item>
+      <item>APPEND</item>
+      <item>PREPEND</item>
+      <item>INSERT</item>
+      <item>POP_BACK</item>
+      <item>POP_FRONT</item>
+      <item>REMOVE_ITEM</item>
+      <item>REMOVE_AT</item>
+      <item>REMOVE_DUPLICATES</item>
+      <item>FILTER</item>
+      <item>TRANSFORM</item>
+      <item>FRANSFORM</item>
+      <item>REVERSE</item>
+      <item>SORT</item>
+    </list>
+    <list name="genex-PATH-subcommands">
+      <item>HAS_ROOT_NAME</item>
+      <item>HAS_ROOT_DIRECTORY</item>
+      <item>HAS_ROOT_PATH</item>
+      <item>HAS_FILENAME</item>
+      <item>HAS_EXTENSION</item>
+      <item>HAS_STEM</item>
+      <item>HAS_RELATIVE_PART</item>
+      <item>HAS_PARENT_PATH</item>
+      <item>IS_ABSOLUTE</item>
+      <item>IS_RELATIVE</item>
+      <item>IS_PREFIX</item>
+      <item>GET_ROOT_NAME</item>
+      <item>GET_ROOT_DIRECTORY</item>
+      <item>GET_ROOT_PATH</item>
+      <item>GET_FILENAME</item>
+      <item>GET_EXTENSION</item>
+      <item>GET_STEM</item>
+      <item>GET_RELATIVE_PART</item>
+      <item>GET_PARENT_PATH</item>
+      <item>CMAKE_PATH</item>
+      <item>NATIVE_PATH</item>
+      <item>APPEND</item>
+      <item>REMOVE_FILENAME</item>
+      <item>REPLACE_FILENAME</item>
+      <item>REMOVE_EXTENSION</item>
+      <item>REPLACE_EXTENSION</item>
+      <item>NORMAL_PATH</item>
+      <item>RELATIVE_PATH</item>
+      <item>ABSOLUTE_PATH</item>
+    </list>
+
+    <list name="standard-modules">
+      <item>AndroidTestUtilities</item>
+      <item>BundleUtilities</item>
+      <item>CheckCCompilerFlag</item>
+      <item>CheckCompilerFlag</item>
+      <item>CheckCSourceCompiles</item>
+      <item>CheckCSourceRuns</item>
+      <item>CheckCXXCompilerFlag</item>
+      <item>CheckCXXSourceCompiles</item>
+      <item>CheckCXXSourceRuns</item>
+      <item>CheckCXXSymbolExists</item>
+      <item>CheckFortranCompilerFlag</item>
+      <item>CheckFortranFunctionExists</item>
+      <item>CheckFortranSourceCompiles</item>
+      <item>CheckFortranSourceRuns</item>
+      <item>CheckFunctionExists</item>
+      <item>CheckIncludeFileCXX</item>
+      <item>CheckIncludeFile</item>
+      <item>CheckIncludeFiles</item>
+      <item>CheckIPOSupported</item>
+      <item>CheckLanguage</item>
+      <item>CheckLibraryExists</item>
+      <item>CheckLinkerFlag</item>
+      <item>CheckOBJCCompilerFlag</item>
+      <item>CheckOBJCSourceCompiles</item>
+      <item>CheckOBJCSourceRuns</item>
+      <item>CheckOBJCXXCompilerFlag</item>
+      <item>CheckOBJCXXSourceCompiles</item>
+      <item>CheckOBJCXXSourceRuns</item>
+      <item>CheckPIESupported</item>
+      <item>CheckPrototypeDefinition</item>
+      <item>CheckSourceCompiles</item>
+      <item>CheckSourceRuns</item>
+      <item>CheckStructHasMember</item>
+      <item>CheckSymbolExists</item>
+      <item>CheckTypeSize</item>
+      <item>CheckVariableExists</item>
+      <item>CMakeAddFortranSubdirectory</item>
+      <item>CMakeBackwardCompatibilityCXX</item>
+      <item>CMakeDependentOption</item>
+      <item>CMakeFindDependencyMacro</item>
+      <item>CMakeFindFrameworks</item>
+      <item>CMakePackageConfigHelpers</item>
+      <item>CMakePrintHelpers</item>
+      <item>CMakePrintSystemInformation</item>
+      <item>CMakePushCheckState</item>
+      <item>CPack</item>
+      <item>CPackComponent</item>
+      <item>CPackIFW</item>
+      <item>CPackIFWConfigureFile</item>
+      <item>CSharpUtilities</item>
+      <item>CTest</item>
+      <item>CTestCoverageCollectGCOV</item>
+      <item>CTestScriptMode</item>
+      <item>CTestUseLaunchers</item>
+      <item>DeployQt4</item>
+      <item>ExternalData</item>
+      <item>ExternalProject</item>
+      <item>FeatureSummary</item>
+      <item>FetchContent</item>
+      <item>FindPackageHandleStandardArgs</item>
+      <item>FindPackageMessage</item>
+      <item>FortranCInterface</item>
+      <item>GenerateExportHeader</item>
+      <item>GNUInstallDirs</item>
+      <item>GoogleTest</item>
+      <item>InstallRequiredSystemLibraries</item>
+      <item>ProcessorCount</item>
+      <item>SelectLibraryConfigurations</item>
+      <item>TestForANSIForScope</item>
+      <item>TestForANSIStreamHeaders</item>
+      <item>TestForSSTREAM</item>
+      <item>TestForSTDNamespace</item>
+      <item>UseEcos</item>
+      <item>UseJava</item>
+      <item>UseSWIG</item>
+      <item>UsewxWidgets</item>
+    </list>
+
+    <list name="standard-finder-modules">
+      <item>ALSA</item>
+      <item>Armadillo</item>
+      <item>ASPELL</item>
+      <item>AVIFile</item>
+      <item>Backtrace</item>
+      <item>BISON</item>
+      <item>BLAS</item>
+      <item>Boost</item>
+      <item>Bullet</item>
+      <item>BZip2</item>
+      <item>Coin3D</item>
+      <item>CUDAToolkit</item>
+      <item>Cups</item>
+      <item>CURL</item>
+      <item>Curses</item>
+      <item>CVS</item>
+      <item>CxxTest</item>
+      <item>Cygwin</item>
+      <item>DCMTK</item>
+      <item>DevIL</item>
+      <item>Doxygen</item>
+      <item>EnvModules</item>
+      <item>EXPAT</item>
+      <item>FLEX</item>
+      <item>FLTK</item>
+      <item>FLTK2</item>
+      <item>Fontconfig</item>
+      <item>Freetype</item>
+      <item>Gettext</item>
+      <item>GIF</item>
+      <item>Git</item>
+      <item>GLEW</item>
+      <item>GLUT</item>
+      <item>Gnuplot</item>
+      <item>GnuTLS</item>
+      <item>GSL</item>
+      <item>GTest</item>
+      <item>GTK</item>
+      <item>GTK2</item>
+      <item>HDF5</item>
+      <item>Hg</item>
+      <item>HSPELL</item>
+      <item>HTMLHelp</item>
+      <item>Ice</item>
+      <item>Iconv</item>
+      <item>Icotool</item>
+      <item>ICU</item>
+      <item>ImageMagick</item>
+      <item>Intl</item>
+      <item>ITK</item>
+      <item>Jasper</item>
+      <item>Java</item>
+      <item>JNI</item>
+      <item>JPEG</item>
+      <item>KDE3</item>
+      <item>KDE4</item>
+      <item>LAPACK</item>
+      <item>LATEX</item>
+      <item>LibArchive</item>
+      <item>Libinput</item>
+      <item>LibLZMA</item>
+      <item>LibXml2</item>
+      <item>LibXslt</item>
+      <item>LTTngUST</item>
+      <item>Lua</item>
+      <item>Lua50</item>
+      <item>Lua51</item>
+      <item>Matlab</item>
+      <item>MFC</item>
+      <item>Motif</item>
+      <item>MPEG</item>
+      <item>MPEG2</item>
+      <item>MPI</item>
+      <item>Msys</item>
+      <item>ODBC</item>
+      <item>OpenACC</item>
+      <item>OpenAL</item>
+      <item>OpenCL</item>
+      <item>OpenGL</item>
+      <item>OpenMP</item>
+      <item>OpenSceneGraph</item>
+      <item>OpenSSL</item>
+      <item>OpenThreads</item>
+      <item>osg</item>
+      <item>osg_functions</item>
+      <item>osgAnimation</item>
+      <item>osgDB</item>
+      <item>osgFX</item>
+      <item>osgGA</item>
+      <item>osgIntrospection</item>
+      <item>osgManipulator</item>
+      <item>osgParticle</item>
+      <item>osgPresentation</item>
+      <item>osgProducer</item>
+      <item>osgQt</item>
+      <item>osgShadow</item>
+      <item>osgSim</item>
+      <item>osgTerrain</item>
+      <item>osgText</item>
+      <item>osgUtil</item>
+      <item>osgViewer</item>
+      <item>osgVolume</item>
+      <item>osgWidget</item>
+      <item>Patch</item>
+      <item>Perl</item>
+      <item>PerlLibs</item>
+      <item>PHP4</item>
+      <item>PhysFS</item>
+      <item>Pike</item>
+      <item>PkgConfig</item>
+      <item>PNG</item>
+      <item>PostgreSQL</item>
+      <item>Producer</item>
+      <item>Protobuf</item>
+      <item>Python</item>
+      <item>Python2</item>
+      <item>Python3</item>
+      <item>Qt3</item>
+      <item>Qt4</item>
+      <item>QuickTime</item>
+      <item>RTI</item>
+      <item>Ruby</item>
+      <item>SDL</item>
+      <item>SDL_image</item>
+      <item>SDL_mixer</item>
+      <item>SDL_net</item>
+      <item>SDL_sound</item>
+      <item>SDL_ttf</item>
+      <item>SelfPackers</item>
+      <item>Squish</item>
+      <item>SQLite3</item>
+      <item>Subversion</item>
+      <item>SWIG</item>
+      <item>TCL</item>
+      <item>Tclsh</item>
+      <item>TclStub</item>
+      <item>Threads</item>
+      <item>TIFF</item>
+      <item>UnixCommands</item>
+      <item>VTK</item>
+      <item>Vulkan</item>
+      <item>Wget</item>
+      <item>Wish</item>
+      <item>wxWidgets</item>
+      <item>X11</item>
+      <item>XalanC</item>
+      <item>XCTest</item>
+      <item>XercesC</item>
+      <item>XMLRPC</item>
+      <item>ZLIB</item>
+    </list>
+
+    <list name="deprecated-modules">
+      <item>AddFileDependencies</item>
+      <item>CMakeDetermineVSServicePack</item>
+      <item>CMakeExpandImportedTargets</item>
+      <item>CMakeForceCompiler</item>
+      <item>CMakeParseArguments</item>
+      <item>Dart</item>
+      <item>Documentation</item>
+      <item>MacroAddFileDependencies</item>
+      <item>TestCXXAcceptsFlag</item>
+      <item>UseJavaClassFilelist</item>
+      <item>UseJavaSymlinks</item>
+      <item>UsePkgConfig</item>
+      <item>Use_wxWindows</item>
+      <item>WriteBasicConfigVersionFile</item>
+      <item>WriteCompilerDetectionHeader</item>
+      <item>FindCUDA</item>
+      <item>FindDart</item>
+      <item>FindGDAL</item>
+      <item>FindPythonInterp</item>
+      <item>FindPythonLibs</item>
+      <item>FindQt</item>
+      <item>FindwxWindows</item>
+      <item>CPackArchive</item>
+      <item>CPackBundle</item>
+      <item>CPackCygwin</item>
+      <item>CPackDeb</item>
+      <item>CPackDMG</item>
+      <item>CPackFreeBSD</item>
+      <item>CPackNSIS</item>
+      <item>CPackNuGet</item>
+      <item>CPackPackageMaker</item>
+      <item>CPackProductBuild</item>
+      <item>CPackRPM</item>
+      <item>CPackWIX</item>
+      <item>GetPrerequisites</item>
+      <item>TestBigEndian</item>
+      <item>FindGCCXML</item>
+      <item>FindCABLE</item>
+    </list>
+
+    
+<!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
+    <list name="true_special_arg">
+      <item>TRUE</item>
+      <item>ON</item>
+      <item>YES</item>
+      <item>Y</item>
+      <item>0</item>
+    </list>
+
+    
+<!-- Source/cmStringAlgorithms.cxx: bool cmIsOff(cm::string_view val) -->
+    <list name="false_special_arg">
+      <item>FALSE</item>
+      <item>OFF</item>
+      <item>NO</item>
+      <item>IGNORE</item>
+      <item>N</item>
+      <item>0</item>
+    </list>
+
+    <contexts>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
+        <DetectSpaces/>
+        <WordDetect String="block" insensitive="true" attribute="Command" context="block_ctx" beginRegion="block"/>
+        <WordDetect String="break" insensitive="true" attribute="Control Flow" context="break_ctx"/>
+        <WordDetect String="cmake_diagnostic" insensitive="true" attribute="Command" context="cmake_diagnostic_ctx"/>
+        <WordDetect String="cmake_host_system_information" insensitive="true" attribute="Command" context="cmake_host_system_information_ctx"/>
+        <WordDetect String="cmake_language" insensitive="true" attribute="Command" context="cmake_language_ctx"/>
+        <WordDetect String="cmake_minimum_required" insensitive="true" attribute="Command" context="cmake_minimum_required_ctx"/>
+        <WordDetect String="cmake_parse_arguments" insensitive="true" attribute="Command" context="cmake_parse_arguments_ctx"/>
+        <WordDetect String="cmake_path" insensitive="true" attribute="Command" context="cmake_path_ctx"/>
+        <WordDetect String="cmake_pkg_config" insensitive="true" attribute="Command" context="cmake_pkg_config_ctx"/>
+        <WordDetect String="cmake_policy" insensitive="true" attribute="Command" context="cmake_policy_ctx"/>
+        <WordDetect String="configure_file" insensitive="true" attribute="Command" context="configure_file_ctx"/>
+        <WordDetect String="continue" insensitive="true" attribute="Control Flow" context="break_ctx"/>
+        <WordDetect String="elseif" insensitive="true" attribute="Control Flow" context="elseif_ctx"/>
+        <WordDetect String="else" insensitive="true" attribute="Control Flow" context="break_ctx"/>
+        <WordDetect String="endblock" insensitive="true" attribute="Command" context="break_ctx" endRegion="block"/>
+        <WordDetect String="endforeach" insensitive="true" attribute="Control Flow" context="break_ctx" endRegion="foreach"/>
+        <WordDetect String="endfunction" insensitive="true" attribute="Command" context="break_ctx" endRegion="function"/>
+        <WordDetect String="endif" insensitive="true" attribute="Control Flow" context="break_ctx" endRegion="if"/>
+        <WordDetect String="endmacro" insensitive="true" attribute="Command" context="break_ctx" endRegion="macro"/>
+        <WordDetect String="endwhile" insensitive="true" attribute="Control Flow" context="break_ctx" endRegion="while"/>
+        <WordDetect String="execute_process" insensitive="true" attribute="Command" context="execute_process_ctx"/>
+        <WordDetect String="file" insensitive="true" attribute="Command" context="file_ctx"/>
+        <WordDetect String="find_file" insensitive="true" attribute="Command" context="find_file_ctx"/>
+        <WordDetect String="find_library" insensitive="true" attribute="Command" context="find_library_ctx"/>
+        <WordDetect String="find_package" insensitive="true" attribute="Command" context="find_package_ctx"/>
+        <WordDetect String="find_path" insensitive="true" attribute="Command" context="find_file_ctx"/>
+        <WordDetect String="find_program" insensitive="true" attribute="Command" context="find_library_ctx"/>
+        <WordDetect String="foreach" insensitive="true" attribute="Control Flow" context="foreach_ctx" beginRegion="foreach"/>
+        <WordDetect String="function" insensitive="true" attribute="Command" context="function_ctx" beginRegion="function"/>
+        <WordDetect String="get_cmake_property" insensitive="true" attribute="Command" context="get_cmake_property_ctx"/>
+        <WordDetect String="get_directory_property" insensitive="true" attribute="Command" context="get_directory_property_ctx"/>
+        <WordDetect String="get_filename_component" insensitive="true" attribute="Command" context="get_filename_component_ctx"/>
+        <WordDetect String="get_property" insensitive="true" attribute="Command" context="get_property_ctx"/>
+        <WordDetect String="if" insensitive="true" attribute="Control Flow" context="if_ctx" beginRegion="if"/>
+        <WordDetect String="include" insensitive="true" attribute="Command" context="include_ctx"/>
+        <WordDetect String="include_guard" insensitive="true" attribute="Command" context="include_guard_ctx"/>
+        <WordDetect String="list" insensitive="true" attribute="Command" context="list_ctx"/>
+        <WordDetect String="macro" insensitive="true" attribute="Command" context="function_ctx" beginRegion="macro"/>
+        <WordDetect String="mark_as_advanced" insensitive="true" attribute="Command" context="mark_as_advanced_ctx"/>
+        <WordDetect String="math" insensitive="true" attribute="Command" context="math_ctx"/>
+        <WordDetect String="message" insensitive="true" attribute="Command" context="message_ctx"/>
+        <WordDetect String="option" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="return" insensitive="true" attribute="Control Flow" context="return_ctx"/>
+        <WordDetect String="separate_arguments" insensitive="true" attribute="Command" context="separate_arguments_ctx"/>
+        <WordDetect String="set_directory_properties" insensitive="true" attribute="Command" context="set_directory_properties_ctx"/>
+        <WordDetect String="set_property" insensitive="true" attribute="Command" context="set_property_ctx"/>
+        <WordDetect String="set" insensitive="true" attribute="Command" context="set_ctx"/>
+        <WordDetect String="site_name" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="string" insensitive="true" attribute="Command" context="string_ctx"/>
+        <WordDetect String="unset" insensitive="true" attribute="Command" context="unset_ctx"/>
+        <WordDetect String="variable_watch" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="while" insensitive="true" attribute="Control Flow" context="while_ctx" beginRegion="while"/>
+        <WordDetect String="add_compile_definitions" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="add_compile_options" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="add_custom_command" insensitive="true" attribute="Command" context="add_custom_command_ctx"/>
+        <WordDetect String="add_custom_target" insensitive="true" attribute="Command" context="add_custom_target_ctx"/>
+        <WordDetect String="add_definitions" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="add_dependencies" insensitive="true" attribute="Command" context="add_dependencies_ctx"/>
+        <WordDetect String="add_executable" insensitive="true" attribute="Command" context="add_executable_ctx"/>
+        <WordDetect String="add_library" insensitive="true" attribute="Command" context="add_library_ctx"/>
+        <WordDetect String="add_link_options" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="add_subdirectory" insensitive="true" attribute="Command" context="add_subdirectory_ctx"/>
+        <WordDetect String="add_test" insensitive="true" attribute="Command" context="add_test_ctx"/>
+        <WordDetect String="aux_source_directory" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="build_command" insensitive="true" attribute="Command" context="build_command_ctx"/>
+        <WordDetect String="cmake_file_api" insensitive="true" attribute="Command" context="cmake_file_api_ctx"/>
+        <WordDetect String="cmake_instrumentation" insensitive="true" attribute="Command" context="cmake_instrumentation_ctx"/>
+        <WordDetect String="create_test_sourcelist" insensitive="true" attribute="Command" context="create_test_sourcelist_ctx"/>
+        <WordDetect String="define_property" insensitive="true" attribute="Command" context="define_property_ctx"/>
+        <WordDetect String="discover_tests" insensitive="true" attribute="Command" context="discover_tests_ctx"/>
+        <WordDetect String="enable_language" insensitive="true" attribute="Command" context="enable_language_ctx"/>
+        <WordDetect String="enable_testing" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="export" insensitive="true" attribute="Command" context="export_ctx"/>
+        <WordDetect String="fltk_wrap_ui" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="get_source_file_property" insensitive="true" attribute="Command" context="get_source_file_property_ctx"/>
+        <WordDetect String="get_target_property" insensitive="true" attribute="Command" context="get_target_property_ctx"/>
+        <WordDetect String="get_test_property" insensitive="true" attribute="Command" context="get_test_property_ctx"/>
+        <WordDetect String="include_directories" insensitive="true" attribute="Command" context="include_directories_ctx"/>
+        <WordDetect String="include_external_msproject" insensitive="true" attribute="Command" context="include_external_msproject_ctx"/>
+        <WordDetect String="include_regular_expression" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="install" insensitive="true" attribute="Command" context="install_ctx"/>
+        <WordDetect String="link_directories" insensitive="true" attribute="Command" context="link_directories_ctx"/>
+        <WordDetect String="link_libraries" insensitive="true" attribute="Command" context="link_libraries_ctx"/>
+        <WordDetect String="load_cache" insensitive="true" attribute="Command" context="load_cache_ctx"/>
+        <WordDetect String="project" insensitive="true" attribute="Command" context="project_ctx"/>
+        <WordDetect String="qt_wrap_cpp" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="qt_wrap_ui" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="remove_definitions" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="set_source_files_properties" insensitive="true" attribute="Command" context="set_source_files_properties_ctx"/>
+        <WordDetect String="set_target_properties" insensitive="true" attribute="Command" context="set_target_properties_ctx"/>
+        <WordDetect String="set_tests_properties" insensitive="true" attribute="Command" context="set_tests_properties_ctx"/>
+        <WordDetect String="source_group" insensitive="true" attribute="Command" context="source_group_ctx"/>
+        <WordDetect String="target_compile_definitions" insensitive="true" attribute="Command" context="target_compile_definitions_ctx"/>
+        <WordDetect String="target_compile_features" insensitive="true" attribute="Command" context="target_compile_features_ctx"/>
+        <WordDetect String="target_compile_options" insensitive="true" attribute="Command" context="target_compile_options_ctx"/>
+        <WordDetect String="target_include_directories" insensitive="true" attribute="Command" context="target_include_directories_ctx"/>
+        <WordDetect String="target_link_directories" insensitive="true" attribute="Command" context="target_compile_options_ctx"/>
+        <WordDetect String="target_link_libraries" insensitive="true" attribute="Command" context="target_link_libraries_ctx"/>
+        <WordDetect String="target_link_options" insensitive="true" attribute="Command" context="target_compile_definitions_ctx"/>
+        <WordDetect String="target_precompile_headers" insensitive="true" attribute="Command" context="target_precompile_headers_ctx"/>
+        <WordDetect String="target_sources" insensitive="true" attribute="Command" context="target_sources_ctx"/>
+        <WordDetect String="try_compile" insensitive="true" attribute="Command" context="try_compile_ctx"/>
+        <WordDetect String="try_run" insensitive="true" attribute="Command" context="try_run_ctx"/>
+        <WordDetect String="ctest_build" insensitive="true" attribute="Command" context="ctest_build_ctx"/>
+        <WordDetect String="ctest_configure" insensitive="true" attribute="Command" context="ctest_configure_ctx"/>
+        <WordDetect String="ctest_coverage" insensitive="true" attribute="Command" context="ctest_coverage_ctx"/>
+        <WordDetect String="ctest_empty_binary_directory" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="ctest_memcheck" insensitive="true" attribute="Command" context="ctest_memcheck_ctx"/>
+        <WordDetect String="ctest_read_custom_files" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="ctest_run_script" insensitive="true" attribute="Command" context="ctest_run_script_ctx"/>
+        <WordDetect String="ctest_sleep" insensitive="true" attribute="Command" context="function_ctx"/>
+        <WordDetect String="ctest_start" insensitive="true" attribute="Command" context="ctest_start_ctx"/>
+        <WordDetect String="ctest_submit" insensitive="true" attribute="Command" context="ctest_submit_ctx"/>
+        <WordDetect String="ctest_test" insensitive="true" attribute="Command" context="ctest_test_ctx"/>
+        <WordDetect String="ctest_update" insensitive="true" attribute="Command" context="ctest_update_ctx"/>
+        <WordDetect String="ctest_upload" insensitive="true" attribute="Command" context="ctest_upload_ctx"/>
+        <WordDetect String="android_add_test_data" insensitive="true" attribute="CMake Provided Function/Macro" context="android_add_test_data_ctx"/>
+        <WordDetect String="fixup_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="copy_and_fixup_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="verify_app" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="get_bundle_main_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="get_dotapp_dir" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="get_bundle_and_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="get_bundle_all_executables" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="get_item_key" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="get_item_rpaths" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="clear_bundle_keys" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="set_bundle_key_values" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="get_bundle_keys" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="copy_resolved_item_into_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="copy_resolved_framework_into_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="fixup_bundle_item" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="verify_bundle_prerequisites" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="verify_bundle_symlinks" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_c_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_c_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_c_source_compiles_ctx"/>
+        <WordDetect String="check_c_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_cxx_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_cxx_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_c_source_compiles_ctx"/>
+        <WordDetect String="check_cxx_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_cxx_symbol_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_fortran_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_fortran_function_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_fortran_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_source_compiles_ctx"/>
+        <WordDetect String="check_fortran_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_source_runs_ctx"/>
+        <WordDetect String="check_function_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_include_file_cxx" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_include_file" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_include_files" insensitive="true" attribute="CMake Provided Function/Macro" context="check_include_files_ctx"/>
+        <WordDetect String="check_ipo_supported" insensitive="true" attribute="CMake Provided Function/Macro" context="check_ipo_supported_ctx"/>
+        <WordDetect String="check_language" insensitive="true" attribute="CMake Provided Function/Macro" context="check_language_ctx"/>
+        <WordDetect String="check_library_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_linker_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_objc_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_objc_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_c_source_compiles_ctx"/>
+        <WordDetect String="check_objc_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_objcxx_compiler_flag" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_objcxx_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_c_source_compiles_ctx"/>
+        <WordDetect String="check_objcxx_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_pie_supported" insensitive="true" attribute="CMake Provided Function/Macro" context="check_pie_supported_ctx"/>
+        <WordDetect String="check_prototype_definition" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_source_compiles" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_source_compiles_ctx"/>
+        <WordDetect String="check_source_runs" insensitive="true" attribute="CMake Provided Function/Macro" context="check_fortran_source_runs_ctx"/>
+        <WordDetect String="check_struct_has_member" insensitive="true" attribute="CMake Provided Function/Macro" context="check_include_files_ctx"/>
+        <WordDetect String="check_symbol_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="check_type_size" insensitive="true" attribute="CMake Provided Function/Macro" context="check_type_size_ctx"/>
+        <WordDetect String="check_variable_exists" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="cmake_add_fortran_subdirectory" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_add_fortran_subdirectory_ctx"/>
+        <WordDetect String="cmake_dependent_option" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="find_dependency" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="configure_package_config_file" insensitive="true" attribute="CMake Provided Function/Macro" context="configure_package_config_file_ctx"/>
+        <WordDetect String="write_basic_package_version_file" insensitive="true" attribute="CMake Provided Function/Macro" context="write_basic_package_version_file_ctx"/>
+        <WordDetect String="generate_apple_platform_selection_file" insensitive="true" attribute="CMake Provided Function/Macro" context="generate_apple_platform_selection_file_ctx"/>
+        <WordDetect String="generate_apple_architecture_selection_file" insensitive="true" attribute="CMake Provided Function/Macro" context="generate_apple_architecture_selection_file_ctx"/>
+        <WordDetect String="cmake_print_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_print_properties_ctx"/>
+        <WordDetect String="cmake_push_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="cmake_push_check_state_ctx"/>
+        <WordDetect String="cmake_pop_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="cmake_reset_check_state" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="cpack_add_component" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_add_component_ctx"/>
+        <WordDetect String="cpack_add_component_group" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_add_component_group_ctx"/>
+        <WordDetect String="cpack_add_install_type" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_add_install_type_ctx"/>
+        <WordDetect String="cpack_configure_downloads" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_configure_downloads_ctx"/>
+        <WordDetect String="cpack_ifw_configure_component" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_configure_component_ctx"/>
+        <WordDetect String="cpack_ifw_configure_component_group" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_configure_component_group_ctx"/>
+        <WordDetect String="cpack_ifw_add_repository" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_add_repository_ctx"/>
+        <WordDetect String="cpack_ifw_update_repository" insensitive="true" attribute="CMake Provided Function/Macro" context="cpack_ifw_update_repository_ctx"/>
+        <WordDetect String="cpack_ifw_add_package_resources" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="cpack_ifw_configure_file" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="csharp_set_windows_forms_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="csharp_set_designer_cs_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="csharp_set_xaml_cs_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="csharp_get_filename_keys" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="csharp_get_filename_key_base" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="csharp_get_dependentupon_name" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ctest_coverage_collect_gcov" insensitive="true" attribute="CMake Provided Function/Macro" context="ctest_coverage_collect_gcov_ctx"/>
+        <WordDetect String="write_qt4_conf" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="resolve_qt4_paths" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="fixup_qt4_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="install_qt4_plugin_path" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="install_qt4_plugin" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="install_qt4_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ExternalData_Expand_Arguments" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ExternalData_Add_Test" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ExternalData_Add_Target" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalData_Add_Target_ctx"/>
+        <WordDetect String="ExternalProject_Add" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Add_ctx"/>
+        <WordDetect String="ExternalProject_Get_Property" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ExternalProject_Add_Step" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Add_Step_ctx"/>
+        <WordDetect String="ExternalProject_Add_StepTargets" insensitive="true" attribute="CMake Provided Function/Macro" context="ExternalProject_Add_StepTargets_ctx"/>
+        <WordDetect String="ExternalProject_Add_StepDependencies" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="feature_summary" insensitive="true" attribute="CMake Provided Function/Macro" context="feature_summary_ctx"/>
+        <WordDetect String="set_package_properties" insensitive="true" attribute="CMake Provided Function/Macro" context="set_package_properties_ctx"/>
+        <WordDetect String="add_feature_info" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="set_package_info" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="set_feature_info" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="print_enabled_features" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="print_disabled_features" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="FetchContent_Declare" insensitive="true" attribute="CMake Provided Function/Macro" context="FetchContent_Declare_ctx"/>
+        <WordDetect String="FetchContent_Populate" insensitive="true" attribute="CMake Provided Function/Macro" context="FetchContent_Populate_ctx"/>
+        <WordDetect String="FetchContent_GetProperties" insensitive="true" attribute="CMake Provided Function/Macro" context="FetchContent_GetProperties_ctx"/>
+        <WordDetect String="FetchContent_MakeAvailable" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="find_package_handle_standard_args" insensitive="true" attribute="CMake Provided Function/Macro" context="find_package_handle_standard_args_ctx"/>
+        <WordDetect String="find_package_check_version" insensitive="true" attribute="CMake Provided Function/Macro" context="find_package_check_version_ctx"/>
+        <WordDetect String="find_package_message" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="FortranCInterface_HEADER" insensitive="true" attribute="CMake Provided Function/Macro" context="FortranCInterface_HEADER_ctx"/>
+        <WordDetect String="FortranCInterface_VERIFY" insensitive="true" attribute="CMake Provided Function/Macro" context="FortranCInterface_VERIFY_ctx"/>
+        <WordDetect String="generate_export_header" insensitive="true" attribute="CMake Provided Function/Macro" context="generate_export_header_ctx"/>
+        <WordDetect String="GNUInstallDirs_get_absolute_install_dir" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="gtest_add_tests" insensitive="true" attribute="CMake Provided Function/Macro" context="gtest_add_tests_ctx"/>
+        <WordDetect String="gtest_discover_tests" insensitive="true" attribute="CMake Provided Function/Macro" context="gtest_discover_tests_ctx"/>
+        <WordDetect String="processorcount" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="select_library_configurations" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="test_big_endian" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ecos_add_include_directories" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ecos_add_executable" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ecos_add_target_lib" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ecos_adjust_directory" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ecos_use_arm_elf_tools" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ecos_use_i386_elf_tools" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="ecos_use_ppc_eabi_tools" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="add_jar" insensitive="true" attribute="CMake Provided Function/Macro" context="add_jar_ctx"/>
+        <WordDetect String="install_jar" insensitive="true" attribute="CMake Provided Function/Macro" context="install_jar_ctx"/>
+        <WordDetect String="install_jni_symlink" insensitive="true" attribute="CMake Provided Function/Macro" context="install_jar_ctx"/>
+        <WordDetect String="create_javah" insensitive="true" attribute="CMake Provided Function/Macro" context="create_javah_ctx"/>
+        <WordDetect String="install_jar_exports" insensitive="true" attribute="CMake Provided Function/Macro" context="install_jar_exports_ctx"/>
+        <WordDetect String="export_jars" insensitive="true" attribute="CMake Provided Function/Macro" context="export_jars_ctx"/>
+        <WordDetect String="find_jar" insensitive="true" attribute="CMake Provided Function/Macro" context="find_jar_ctx"/>
+        <WordDetect String="create_javadoc" insensitive="true" attribute="CMake Provided Function/Macro" context="create_javadoc_ctx"/>
+        <WordDetect String="swig_add_library" insensitive="true" attribute="CMake Provided Function/Macro" context="swig_add_library_ctx"/>
+        <WordDetect String="swig_link_libraries" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="squish_add_test" insensitive="true" attribute="CMake Provided Function/Macro" context="squish_add_test_ctx"/>
+        <WordDetect String="bison_target" insensitive="true" attribute="CMake Provided Function/Macro" context="bison_target_ctx"/>
+        <WordDetect String="cxxtest_add_test" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="doxygen_add_docs" insensitive="true" attribute="CMake Provided Function/Macro" context="doxygen_add_docs_ctx"/>
+        <WordDetect String="env_module" insensitive="true" attribute="CMake Provided Function/Macro" context="env_module_ctx"/>
+        <WordDetect String="env_module_swap" insensitive="true" attribute="CMake Provided Function/Macro" context="env_module_swap_ctx"/>
+        <WordDetect String="env_module_list" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="env_module_avail" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="flex_target" insensitive="true" attribute="CMake Provided Function/Macro" context="flex_target_ctx"/>
+        <WordDetect String="add_flex_bison_dependency" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="gettext_create_translations" insensitive="true" attribute="CMake Provided Function/Macro" context="gettext_create_translations_ctx"/>
+        <WordDetect String="gettext_process_pot_file" insensitive="true" attribute="CMake Provided Function/Macro" context="gettext_process_pot_file_ctx"/>
+        <WordDetect String="gettext_process_po_files" insensitive="true" attribute="CMake Provided Function/Macro" context="gettext_process_po_files_ctx"/>
+        <WordDetect String="hg_wc_info" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="matlab_get_version_from_release_name" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="matlab_get_release_name_from_version" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="matlab_extract_all_installed_versions_from_registry" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="matlab_get_all_valid_matlab_roots_from_registry" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="matlab_get_mex_suffix" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="matlab_get_version_from_matlab_run" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="matlab_add_unit_test" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_add_unit_test_ctx"/>
+        <WordDetect String="matlab_add_mex" insensitive="true" attribute="CMake Provided Function/Macro" context="matlab_add_mex_ctx"/>
+        <WordDetect String="pkg_check_modules" insensitive="true" attribute="CMake Provided Function/Macro" context="pkg_check_modules_ctx"/>
+        <WordDetect String="pkg_search_module" insensitive="true" attribute="CMake Provided Function/Macro" context="pkg_check_modules_ctx"/>
+        <WordDetect String="pkg_get_variable" insensitive="true" attribute="CMake Provided Function/Macro" context="pkg_get_variable_ctx"/>
+        <WordDetect String="protobuf_generate_cpp" insensitive="true" attribute="CMake Provided Function/Macro" context="protobuf_generate_cpp_ctx"/>
+        <WordDetect String="protobuf_generate_python" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="protobuf_generate" insensitive="true" attribute="CMake Provided Function/Macro" context="protobuf_generate_ctx"/>
+        <WordDetect String="Python_add_library" insensitive="true" attribute="CMake Provided Function/Macro" context="Python_add_library_ctx"/>
+        <WordDetect String="Python3_add_library" insensitive="true" attribute="CMake Provided Function/Macro" context="Python_add_library_ctx"/>
+        <WordDetect String="Subversion_WC_INFO" insensitive="true" attribute="CMake Provided Function/Macro" context="Subversion_WC_INFO_ctx"/>
+        <WordDetect String="Subversion_WC_LOG" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="xctest_add_bundle" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <WordDetect String="xctest_add_test" insensitive="true" attribute="CMake Provided Function/Macro" context="function_ctx"/>
+        <DetectChar attribute="Comment" context="Match Comments and Docs" char="#" lookAhead="true"/>
+        <DetectIdentifier attribute="User Function/Macro" context="User Function"/>
+        <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&var_ref_re;@" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="block_ctx">
+        <DetectChar attribute="Normal Text" context="block_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="block_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="block_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="block_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="break_ctx">
+        <DetectChar attribute="Normal Text" context="break_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="break_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_diagnostic_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_diagnostic_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_diagnostic_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_diagnostic_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="cmake_diagnostic_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_host_system_information_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_host_system_information_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_host_system_information_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_host_system_information_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="cmake_host_system_information_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_language_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_language_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_language_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_language_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="cmake_language_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_minimum_required_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_minimum_required_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_minimum_required_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_minimum_required_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_parse_arguments_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_parse_arguments_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_parse_arguments_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_parse_arguments_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_path_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_path_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_path_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_path_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_pkg_config_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_pkg_config_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_pkg_config_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_pkg_config_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="cmake_pkg_config_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_policy_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_policy_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_policy_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_policy_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="cmake_policy_sargs"/>
+        <IncludeRules context="User Function Args"/>
+        
+<!-- NOTE Handle CMP<NNN> as a special arg of `cmake_policy` command -->
+        <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9]+\b"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="configure_file_ctx">
+        <DetectChar attribute="Normal Text" context="configure_file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="configure_file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="configure_file_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="configure_file_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx">
+        <DetectChar attribute="Normal Text" context="elseif_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="elseif_ctx_op_nested" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="elseif_tgts"/>
+        <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/>
+        <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="elseif_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="elseif_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="elseif_ctx_op_nested">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="elseif_ctx_op_nested" char="("/>
+        <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx">
+        <DetectChar attribute="Normal Text" context="execute_process_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="execute_process_ctx_op_nested" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="execute_process_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="execute_process_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="execute_process_ctx_op_nested">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="execute_process_ctx_op_nested" char="("/>
+        <keyword attribute="Named Args" context="#stay" String="execute_process_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="execute_process_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx">
+        <DetectChar attribute="Normal Text" context="file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="file_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="file_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_file_ctx">
+        <DetectChar attribute="Normal Text" context="find_file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="find_file_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="find_file_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_library_ctx">
+        <DetectChar attribute="Normal Text" context="find_library_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_library_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="find_library_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="find_file_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_ctx">
+        <DetectChar attribute="Normal Text" context="find_package_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="find_package_nargs"/>
+        <keyword attribute="Standard Module" context="#stay" String="standard-finder-modules"/>
+        <keyword attribute="Special Args" context="#stay" String="find_file_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="foreach_ctx">
+        <DetectChar attribute="Normal Text" context="foreach_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="foreach_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="foreach_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="function_ctx">
+        <DetectChar attribute="Normal Text" context="function_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="function_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx">
+        <DetectChar attribute="Normal Text" context="get_cmake_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_cmake_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Special Args" context="#stay" String="get_cmake_property_sargs"/>
+        <keyword attribute="Property" context="#stay" String="global-properties"/>
+        <IncludeRules context="Detect More global-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_directory_property_ctx">
+        <DetectChar attribute="Normal Text" context="get_directory_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_directory_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="get_directory_property_nargs"/>
+        <keyword attribute="Property" context="#stay" String="directory-properties"/>
+        <IncludeRules context="Detect More directory-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_filename_component_ctx">
+        <DetectChar attribute="Normal Text" context="get_filename_component_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_filename_component_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="get_filename_component_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_property_ctx">
+        <DetectChar attribute="Normal Text" context="get_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="get_property_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="get_property_nargs"/>
+        <keyword attribute="Property" context="#stay" String="cache-properties"/>
+        <keyword attribute="Property" context="#stay" String="directory-properties"/>
+        <IncludeRules context="Detect More directory-properties"/>
+        <keyword attribute="Property" context="#stay" String="fileset-properties"/>
+        <keyword attribute="Property" context="#stay" String="global-properties"/>
+        <IncludeRules context="Detect More global-properties"/>
+        <keyword attribute="Property" context="#stay" String="install-properties"/>
+        <keyword attribute="Property" context="#stay" String="source-properties"/>
+        <IncludeRules context="Detect More source-properties"/>
+        <keyword attribute="Property" context="#stay" String="target-properties"/>
+        <IncludeRules context="Detect More target-properties"/>
+        <keyword attribute="Property" context="#stay" String="test-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_property_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="get_property_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx">
+        <DetectChar attribute="Normal Text" context="if_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="if_ctx_op_nested" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="elseif_tgts"/>
+        <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/>
+        <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="if_ctx_op_nested">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="if_ctx_op_nested" char="("/>
+        <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_ctx">
+        <DetectChar attribute="Normal Text" context="include_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="include_nargs"/>
+        <keyword attribute="Standard Module" context="#stay" String="standard-modules"/>
+        <keyword attribute="Deprecated Module" context="#stay" String="deprecated-modules"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_guard_ctx">
+        <DetectChar attribute="Normal Text" context="include_guard_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_guard_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="include_guard_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="list_ctx">
+        <DetectChar attribute="Normal Text" context="list_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="list_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="list_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="list_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mark_as_advanced_ctx">
+        <DetectChar attribute="Normal Text" context="mark_as_advanced_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mark_as_advanced_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="mark_as_advanced_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="math_ctx">
+        <DetectChar attribute="Normal Text" context="math_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="math_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="math_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="math_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="message_ctx">
+        <DetectChar attribute="Normal Text" context="message_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="message_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="message_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="return_ctx">
+        <DetectChar attribute="Normal Text" context="return_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="return_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="return_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="separate_arguments_ctx">
+        <DetectChar attribute="Normal Text" context="separate_arguments_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="separate_arguments_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="separate_arguments_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_directory_properties_ctx">
+        <DetectChar attribute="Normal Text" context="set_directory_properties_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_directory_properties_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="set_directory_properties_nargs"/>
+        <keyword attribute="Property" context="#stay" String="cache-properties"/>
+        <keyword attribute="Property" context="#stay" String="directory-properties"/>
+        <IncludeRules context="Detect More directory-properties"/>
+        <keyword attribute="Property" context="#stay" String="fileset-properties"/>
+        <keyword attribute="Property" context="#stay" String="global-properties"/>
+        <IncludeRules context="Detect More global-properties"/>
+        <keyword attribute="Property" context="#stay" String="install-properties"/>
+        <keyword attribute="Property" context="#stay" String="source-properties"/>
+        <IncludeRules context="Detect More source-properties"/>
+        <keyword attribute="Property" context="#stay" String="target-properties"/>
+        <IncludeRules context="Detect More target-properties"/>
+        <keyword attribute="Property" context="#stay" String="test-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_property_ctx">
+        <DetectChar attribute="Normal Text" context="set_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="set_property_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="set_property_nargs"/>
+        <keyword attribute="Property" context="#stay" String="cache-properties"/>
+        <keyword attribute="Property" context="#stay" String="directory-properties"/>
+        <IncludeRules context="Detect More directory-properties"/>
+        <keyword attribute="Property" context="#stay" String="fileset-properties"/>
+        <keyword attribute="Property" context="#stay" String="global-properties"/>
+        <IncludeRules context="Detect More global-properties"/>
+        <keyword attribute="Property" context="#stay" String="install-properties"/>
+        <keyword attribute="Property" context="#stay" String="source-properties"/>
+        <IncludeRules context="Detect More source-properties"/>
+        <keyword attribute="Property" context="#stay" String="target-properties"/>
+        <IncludeRules context="Detect More target-properties"/>
+        <keyword attribute="Property" context="#stay" String="test-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_property_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="set_property_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx">
+        <DetectChar attribute="Normal Text" context="set_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/>
+        <keyword attribute="Named Args" context="#stay" String="set_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="set_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="string_ctx">
+        <DetectChar attribute="Normal Text" context="string_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="string_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="string_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="unset_ctx">
+        <DetectChar attribute="Normal Text" context="unset_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="unset_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/>
+        <keyword attribute="Named Args" context="#stay" String="unset_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx">
+        <DetectChar attribute="Normal Text" context="while_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="while_ctx_op_nested" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="elseif_tgts"/>
+        <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="CACHE{"/>
+        <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="while_ctx_op_nested">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="while_ctx_op_nested" char="("/>
+        <keyword attribute="Named Args" context="#stay" String="elseif_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx">
+        <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op_nested" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="add_custom_command_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="add_custom_command_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_command_ctx_op_nested">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="add_custom_command_ctx_op_nested" char="("/>
+        <keyword attribute="Named Args" context="#stay" String="add_custom_command_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx">
+        <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_tgt_first" fallthroughContext="add_custom_target_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="add_custom_target_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="add_custom_target_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_nested" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_custom_target_ctx_op_nested">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="add_custom_target_ctx_op_nested" char="("/>
+        <keyword attribute="Named Args" context="#stay" String="add_custom_target_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_dependencies_ctx">
+        <DetectChar attribute="Normal Text" context="add_dependencies_ctx_op_tgts_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_dependencies_ctx_op_tgts_first">
+        <DetectSpaces/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx">
+        <DetectChar attribute="Normal Text" context="add_executable_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op_tgt_first" fallthroughContext="add_executable_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="add_executable_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="add_executable_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_executable_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="add_executable_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx">
+        <DetectChar attribute="Normal Text" context="add_library_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op_tgt_first" fallthroughContext="add_library_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="add_library_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="add_library_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_library_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="ALIAS" attribute="Named Args" context="add_library_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="add_library_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_library_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="add_library_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_subdirectory_ctx">
+        <DetectChar attribute="Normal Text" context="add_subdirectory_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_subdirectory_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="add_subdirectory_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx">
+        <DetectChar attribute="Normal Text" context="add_test_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="add_test_ctx_op_nested" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="add_test_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_test_ctx_op_nested">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="add_test_ctx_op_nested" char="("/>
+        <keyword attribute="Named Args" context="#stay" String="add_test_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="build_command_ctx">
+        <DetectChar attribute="Normal Text" context="build_command_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="build_command_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="build_command_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="build_command_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="build_command_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="build_command_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_file_api_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_file_api_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_file_api_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_file_api_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_instrumentation_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_instrumentation_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_instrumentation_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_instrumentation_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="cmake_instrumentation_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="create_test_sourcelist_ctx">
+        <DetectChar attribute="Normal Text" context="create_test_sourcelist_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="create_test_sourcelist_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="create_test_sourcelist_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="define_property_ctx">
+        <DetectChar attribute="Normal Text" context="define_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="define_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="define_property_nargs"/>
+        <keyword attribute="Property" context="#stay" String="cache-properties"/>
+        <keyword attribute="Property" context="#stay" String="directory-properties"/>
+        <IncludeRules context="Detect More directory-properties"/>
+        <keyword attribute="Property" context="#stay" String="fileset-properties"/>
+        <keyword attribute="Property" context="#stay" String="global-properties"/>
+        <IncludeRules context="Detect More global-properties"/>
+        <keyword attribute="Property" context="#stay" String="install-properties"/>
+        <keyword attribute="Property" context="#stay" String="source-properties"/>
+        <IncludeRules context="Detect More source-properties"/>
+        <keyword attribute="Property" context="#stay" String="target-properties"/>
+        <IncludeRules context="Detect More target-properties"/>
+        <keyword attribute="Property" context="#stay" String="test-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="discover_tests_ctx">
+        <DetectChar attribute="Normal Text" context="discover_tests_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="discover_tests_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="discover_tests_nargs"/>
+        <keyword attribute="Property" context="#stay" String="test-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="enable_language_ctx">
+        <DetectChar attribute="Normal Text" context="enable_language_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="enable_language_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="enable_language_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="enable_language_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="export_ctx">
+        <DetectChar attribute="Normal Text" context="export_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="export_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGETS" attribute="Named Args" context="export_tgts"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="export_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="export_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="export_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="export_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx">
+        <DetectChar attribute="Normal Text" context="get_source_file_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_source_file_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="get_source_file_property_nargs"/>
+        <keyword attribute="Property" context="#stay" String="source-properties"/>
+        <IncludeRules context="Detect More source-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_target_property_ctx">
+        <DetectChar attribute="Normal Text" context="get_target_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_target_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Property" context="#stay" String="target-properties"/>
+        <IncludeRules context="Detect More target-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_test_property_ctx">
+        <DetectChar attribute="Normal Text" context="get_test_property_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="get_test_property_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="get_test_property_nargs"/>
+        <keyword attribute="Property" context="#stay" String="test-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_directories_ctx">
+        <DetectChar attribute="Normal Text" context="include_directories_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_directories_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="include_directories_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_external_msproject_ctx">
+        <DetectChar attribute="Normal Text" context="include_external_msproject_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="include_external_msproject_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="include_external_msproject_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_ctx">
+        <DetectChar attribute="Normal Text" context="install_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGETS" attribute="Named Args" context="install_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="install_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="install_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="install_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="link_directories_ctx">
+        <DetectChar attribute="Normal Text" context="link_directories_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="link_directories_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="link_directories_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="link_libraries_ctx">
+        <DetectChar attribute="Normal Text" context="link_libraries_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="link_libraries_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Special Args" context="#stay" String="link_libraries_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="load_cache_ctx">
+        <DetectChar attribute="Normal Text" context="load_cache_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="load_cache_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="load_cache_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="project_ctx">
+        <DetectChar attribute="Normal Text" context="project_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="project_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="project_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="project_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_source_files_properties_ctx">
+        <DetectChar attribute="Normal Text" context="set_source_files_properties_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_source_files_properties_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="set_source_files_properties_nargs"/>
+        <keyword attribute="Property" context="#stay" String="source-properties"/>
+        <IncludeRules context="Detect More source-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx">
+        <DetectChar attribute="Normal Text" context="set_target_properties_ctx_op_tgts_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx_op_tgts_first">
+        <DetectSpaces/>
+          
+<!-- NOTE Handle the only case in CMake nowadays:
+              1. `set_target_properties` have a named keyword (`PROPERTIES`) after targets list
+          -->
+        <keyword context="set_target_properties_ctx_op" String="set_directory_properties_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_target_properties_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="set_directory_properties_nargs"/>
+        <keyword attribute="Property" context="#stay" String="target-properties"/>
+        <IncludeRules context="Detect More target-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_tests_properties_ctx">
+        <DetectChar attribute="Normal Text" context="set_tests_properties_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_tests_properties_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="set_tests_properties_nargs"/>
+        <keyword attribute="Property" context="#stay" String="test-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="source_group_ctx">
+        <DetectChar attribute="Normal Text" context="source_group_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="source_group_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="source_group_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx">
+        <DetectChar attribute="Normal Text" context="target_compile_definitions_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op_tgt_first" fallthroughContext="target_compile_definitions_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="target_compile_definitions_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="target_compile_definitions_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_definitions_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="target_compile_definitions_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx">
+        <DetectChar attribute="Normal Text" context="target_compile_features_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op_tgt_first" fallthroughContext="target_compile_features_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="target_compile_features_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="target_compile_features_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_features_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="target_compile_definitions_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="target_compile_features_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx">
+        <DetectChar attribute="Normal Text" context="target_compile_options_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op_tgt_first" fallthroughContext="target_compile_options_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="target_compile_options_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="target_compile_options_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_compile_options_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="target_compile_options_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx">
+        <DetectChar attribute="Normal Text" context="target_include_directories_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op_tgt_first" fallthroughContext="target_include_directories_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="target_include_directories_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="target_include_directories_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_include_directories_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="target_include_directories_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx">
+        <DetectChar attribute="Normal Text" context="target_link_libraries_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op_tgt_first" fallthroughContext="target_link_libraries_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="target_link_libraries_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="target_link_libraries_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_link_libraries_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="target_compile_definitions_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="link_libraries_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx">
+        <DetectChar attribute="Normal Text" context="target_precompile_headers_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op_tgt_first" fallthroughContext="target_precompile_headers_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="target_precompile_headers_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="target_precompile_headers_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_precompile_headers_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="target_precompile_headers_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx">
+        <DetectChar attribute="Normal Text" context="target_sources_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op_tgt_first" fallthroughContext="target_sources_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="target_sources_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="target_sources_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="target_sources_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="target_sources_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="target_sources_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="try_compile_ctx">
+        <DetectChar attribute="Normal Text" context="try_compile_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="try_compile_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="try_compile_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="try_run_ctx">
+        <DetectChar attribute="Normal Text" context="try_run_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="try_run_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="try_run_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_build_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_build_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_build_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_build_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_configure_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_configure_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_configure_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_configure_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_coverage_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_coverage_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_memcheck_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_memcheck_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_memcheck_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_memcheck_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_run_script_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_run_script_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_run_script_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_run_script_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_start_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_start_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_start_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_start_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_submit_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_submit_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_submit_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_submit_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_test_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_test_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_test_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_test_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="ctest_test_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_update_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_update_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_update_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_update_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_upload_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_upload_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_upload_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_upload_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      
+      <context attribute="Normal Text" lineEndContext="#stay" name="android_add_test_data_ctx">
+        <DetectChar attribute="Normal Text" context="android_add_test_data_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="android_add_test_data_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="android_add_test_data_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_source_compiles_ctx">
+        <DetectChar attribute="Normal Text" context="check_c_source_compiles_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_c_source_compiles_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="check_c_source_compiles_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_compiles_ctx">
+        <DetectChar attribute="Normal Text" context="check_fortran_source_compiles_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_compiles_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="check_fortran_source_compiles_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_runs_ctx">
+        <DetectChar attribute="Normal Text" context="check_fortran_source_runs_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_fortran_source_runs_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="check_fortran_source_runs_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_files_ctx">
+        <DetectChar attribute="Normal Text" context="check_include_files_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_include_files_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="check_include_files_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="check_include_files_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_ipo_supported_ctx">
+        <DetectChar attribute="Normal Text" context="check_ipo_supported_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_ipo_supported_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="check_ipo_supported_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="check_ipo_supported_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_language_ctx">
+        <DetectChar attribute="Normal Text" context="check_language_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_language_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Special Args" context="#stay" String="enable_language_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_pie_supported_ctx">
+        <DetectChar attribute="Normal Text" context="check_pie_supported_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_pie_supported_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="check_pie_supported_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="check_pie_supported_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_type_size_ctx">
+        <DetectChar attribute="Normal Text" context="check_type_size_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="check_type_size_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="check_type_size_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="check_include_files_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_add_fortran_subdirectory_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_add_fortran_subdirectory_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_add_fortran_subdirectory_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_add_fortran_subdirectory_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="configure_package_config_file_ctx">
+        <DetectChar attribute="Normal Text" context="configure_package_config_file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="configure_package_config_file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="configure_package_config_file_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="write_basic_package_version_file_ctx">
+        <DetectChar attribute="Normal Text" context="write_basic_package_version_file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="write_basic_package_version_file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="write_basic_package_version_file_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="write_basic_package_version_file_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_platform_selection_file_ctx">
+        <DetectChar attribute="Normal Text" context="generate_apple_platform_selection_file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_platform_selection_file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="generate_apple_platform_selection_file_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_architecture_selection_file_ctx">
+        <DetectChar attribute="Normal Text" context="generate_apple_architecture_selection_file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="generate_apple_architecture_selection_file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="generate_apple_architecture_selection_file_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_print_properties_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGETS" attribute="Named Args" context="cmake_print_properties_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_print_properties_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_print_properties_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="cmake_print_properties_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_push_check_state_ctx">
+        <DetectChar attribute="Normal Text" context="cmake_push_check_state_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake_push_check_state_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cmake_push_check_state_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_add_component_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_add_component_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_group_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_add_component_group_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_component_group_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_add_component_group_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_install_type_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_add_install_type_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_add_install_type_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_add_install_type_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_configure_downloads_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_configure_downloads_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_configure_downloads_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_configure_downloads_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_ifw_configure_component_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_configure_component_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_group_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_ifw_configure_component_group_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_configure_component_group_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_configure_component_group_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_add_repository_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_ifw_add_repository_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_add_repository_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_add_repository_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_update_repository_ctx">
+        <DetectChar attribute="Normal Text" context="cpack_ifw_update_repository_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpack_ifw_update_repository_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="cpack_ifw_update_repository_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_collect_gcov_ctx">
+        <DetectChar attribute="Normal Text" context="ctest_coverage_collect_gcov_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ctest_coverage_collect_gcov_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ctest_coverage_collect_gcov_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="ctest_coverage_collect_gcov_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Add_Target_ctx">
+        <DetectChar attribute="Normal Text" context="ExternalData_Add_Target_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalData_Add_Target_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ExternalData_Add_Target_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_ctx">
+        <DetectChar attribute="Normal Text" context="ExternalProject_Add_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ExternalProject_Add_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="ExternalProject_Add_sargs"/>
+        <keyword attribute="Property" context="#stay" String="target-properties"/>
+        <IncludeRules context="Detect More target-properties"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_Step_ctx">
+        <DetectChar attribute="Normal Text" context="ExternalProject_Add_Step_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_Step_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ExternalProject_Add_Step_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_StepTargets_ctx">
+        <DetectChar attribute="Normal Text" context="ExternalProject_Add_StepTargets_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExternalProject_Add_StepTargets_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="ExternalProject_Add_StepTargets_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="feature_summary_ctx">
+        <DetectChar attribute="Normal Text" context="feature_summary_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="feature_summary_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="feature_summary_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_package_properties_ctx">
+        <DetectChar attribute="Normal Text" context="set_package_properties_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="set_package_properties_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="set_package_properties_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Declare_ctx">
+        <DetectChar attribute="Normal Text" context="FetchContent_Declare_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Declare_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="FetchContent_Declare_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Populate_ctx">
+        <DetectChar attribute="Normal Text" context="FetchContent_Populate_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_Populate_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="FetchContent_Populate_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_GetProperties_ctx">
+        <DetectChar attribute="Normal Text" context="FetchContent_GetProperties_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FetchContent_GetProperties_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="FetchContent_GetProperties_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_handle_standard_args_ctx">
+        <DetectChar attribute="Normal Text" context="find_package_handle_standard_args_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_handle_standard_args_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="find_package_handle_standard_args_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_check_version_ctx">
+        <DetectChar attribute="Normal Text" context="find_package_check_version_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_package_check_version_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="find_package_check_version_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_HEADER_ctx">
+        <DetectChar attribute="Normal Text" context="FortranCInterface_HEADER_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_HEADER_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="FortranCInterface_HEADER_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_VERIFY_ctx">
+        <DetectChar attribute="Normal Text" context="FortranCInterface_VERIFY_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FortranCInterface_VERIFY_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="FortranCInterface_VERIFY_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx">
+        <DetectChar attribute="Normal Text" context="generate_export_header_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx_op_tgt_first" fallthroughContext="generate_export_header_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="generate_export_header_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="generate_export_header_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="generate_export_header_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="generate_export_header_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_add_tests_ctx">
+        <DetectChar attribute="Normal Text" context="gtest_add_tests_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_add_tests_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="gtest_add_tests_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="gtest_add_tests_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_add_tests_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="gtest_add_tests_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx">
+        <DetectChar attribute="Normal Text" context="gtest_discover_tests_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx_op_tgt_first" fallthroughContext="gtest_discover_tests_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="gtest_discover_tests_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="gtest_discover_tests_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gtest_discover_tests_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="gtest_discover_tests_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="gtest_discover_tests_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx">
+        <DetectChar attribute="Normal Text" context="add_jar_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx_op_tgt_first" fallthroughContext="add_jar_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="add_jar_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="add_jar_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="add_jar_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="add_jar_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx">
+        <DetectChar attribute="Normal Text" context="install_jar_ctx_op_tgt_first" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx_op_tgt_first" fallthroughContext="install_jar_ctx_op">
+        <DetectSpaces/>
+        <RegExpr attribute="Aliased Targets" context="install_jar_ctx_op" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+        <RegExpr attribute="Targets" context="install_jar_ctx_op" String="&tgt_name_re;"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="install_jar_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="create_javah_ctx">
+        <DetectChar attribute="Normal Text" context="create_javah_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="create_javah_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGET" attribute="Named Args" context="create_javah_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="create_javah_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="create_javah_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="create_javah_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_ctx">
+        <DetectChar attribute="Normal Text" context="install_jar_exports_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGETS" attribute="Named Args" context="install_jar_exports_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="install_jar_exports_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="install_jar_exports_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="install_jar_exports_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_ctx">
+        <DetectChar attribute="Normal Text" context="export_jars_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <WordDetect String="TARGETS" attribute="Named Args" context="export_jars_tgts"/>
+        <keyword attribute="Named Args" context="#stay" String="export_jars_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="export_jars_tgts">
+        <DetectSpaces/>
+        <keyword attribute="Named Args" context="#pop" String="export_jars_nargs" lookAhead="true"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Targets"/>
+        <IncludeRules context="User Function Opened"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_jar_ctx">
+        <DetectChar attribute="Normal Text" context="find_jar_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="find_jar_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="find_jar_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="create_javadoc_ctx">
+        <DetectChar attribute="Normal Text" context="create_javadoc_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="create_javadoc_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="create_javadoc_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="swig_add_library_ctx">
+        <DetectChar attribute="Normal Text" context="swig_add_library_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="swig_add_library_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="swig_add_library_nargs"/>
+        <keyword attribute="Special Args" context="#stay" String="swig_add_library_sargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="squish_add_test_ctx">
+        <DetectChar attribute="Normal Text" context="squish_add_test_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="squish_add_test_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="squish_add_test_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="bison_target_ctx">
+        <DetectChar attribute="Normal Text" context="bison_target_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="bison_target_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="bison_target_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="doxygen_add_docs_ctx">
+        <DetectChar attribute="Normal Text" context="doxygen_add_docs_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="doxygen_add_docs_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="doxygen_add_docs_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_ctx">
+        <DetectChar attribute="Normal Text" context="env_module_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="env_module_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_swap_ctx">
+        <DetectChar attribute="Normal Text" context="env_module_swap_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="env_module_swap_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="env_module_swap_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="flex_target_ctx">
+        <DetectChar attribute="Normal Text" context="flex_target_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="flex_target_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="flex_target_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_create_translations_ctx">
+        <DetectChar attribute="Normal Text" context="gettext_create_translations_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_create_translations_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="gettext_create_translations_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_pot_file_ctx">
+        <DetectChar attribute="Normal Text" context="gettext_process_pot_file_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_pot_file_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="gettext_process_pot_file_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_po_files_ctx">
+        <DetectChar attribute="Normal Text" context="gettext_process_po_files_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="gettext_process_po_files_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="gettext_process_po_files_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_unit_test_ctx">
+        <DetectChar attribute="Normal Text" context="matlab_add_unit_test_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_unit_test_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="matlab_add_unit_test_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_mex_ctx">
+        <DetectChar attribute="Normal Text" context="matlab_add_mex_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="matlab_add_mex_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="matlab_add_mex_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_check_modules_ctx">
+        <DetectChar attribute="Normal Text" context="pkg_check_modules_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_check_modules_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="pkg_check_modules_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_get_variable_ctx">
+        <DetectChar attribute="Normal Text" context="pkg_get_variable_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="pkg_get_variable_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="pkg_get_variable_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_cpp_ctx">
+        <DetectChar attribute="Normal Text" context="protobuf_generate_cpp_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_cpp_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="protobuf_generate_cpp_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_ctx">
+        <DetectChar attribute="Normal Text" context="protobuf_generate_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="protobuf_generate_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="protobuf_generate_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Python_add_library_ctx">
+        <DetectChar attribute="Normal Text" context="Python_add_library_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Python_add_library_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="Python_add_library_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Subversion_WC_INFO_ctx">
+        <DetectChar attribute="Normal Text" context="Subversion_WC_INFO_ctx_op" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Subversion_WC_INFO_ctx_op">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <keyword attribute="Named Args" context="#stay" String="Subversion_WC_INFO_nargs"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More global-properties">
+        <RegExpr attribute="Property" context="#stay" String="\b(?:FeatureSummary_&var_ref_re;_DESCRIPTION)\b"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More directory-properties">
+        <RegExpr attribute="Property" context="#stay" String="\b(?:(INTERPROCEDURAL_OPTIMIZATION|VS_GLOBAL_SECTION_(POST|PRE))_&var_ref_re;)\b"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More target-properties">
+        <RegExpr attribute="Property" context="#stay" String="\b(?:&var_ref_re;_((COMPIL|LINK)ER_LAUNCHER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|CPP(CHECK|LINT)|ICSTAT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|PVS_STUDIO|STANDARD(_REQUIRED)?|VISIBILITY_PRESET)|((ARCHIVE|LIBRARY|RUNTIME)_OUTPUT_(DIRECTORY|NAME)|COMPILE_PDB_(NAME|OUTPUT_DIRECTORY)|CXX_MODULE_(DIRS|SET)|EXCLUDE_FROM_DEFAULT_BUILD|FRAMEWORK_MULTI_CONFIG_POSTFIX|HEADER_(DIRS|SET)|IMPORTED_((NO_)?SONAME|CXX_MODULES|IMPLIB|LIBNAME|LINK_(DEPENDENT_LIBRARIES|INTERFACE_(LANGUAGES|LIBRARIES|MULTIPLICITY))|LOCATION|OBJECTS)|INTERPROCEDURAL_OPTIMIZATION|LINK_(FLAGS|INTERFACE_(LIBRARIES|MULTIPLICITY)|LIBRARY_OVERRIDE)|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_(NAME|OUTPUT_DIRECTORY)|STATIC_LIBRARY_FLAGS|VS_(DOTNET_REFERENCE(PROP_&var_ref_re;_TAG)?|GLOBAL|SOURCE_SETTINGS))_&var_ref_re;|XCODE_(ATTRIBUTE_&var_ref_re;|EMBED_&var_ref_re;(_((CODE_SIGN|REMOVE_HEADERS)_ON_COPY|PATH))?))\b"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More source-properties">
+        <RegExpr attribute="Property" context="#stay" String="\b(?:VS_CSHARP_&var_ref_re;)\b"/>
+      </context>
+
+      <context attribute="User Function/Macro" lineEndContext="#stay" name="User Function">
+        <DetectChar attribute="Normal Text" context="User Function Opened" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="User Function Opened">
+        <DetectChar attribute="Normal Text" context="#pop" char=")" lookAhead="true"/>
+        <IncludeRules context="User Function Args"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Builtin Variables">
+        <RegExpr attribute="Internal Name" context="#stay" String="\b_&var_ref_re;\b"/>
+        <keyword attribute="CMake Internal Variable" context="#stay" String="deprecated-or-internal-variables" insensitive="false"/>
+        <keyword attribute="Builtin Variable" context="#stay" String="variables" insensitive="false"/>
+        <IncludeRules context="Detect More Builtin Variables"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables">
+        <RegExpr attribute="CMake Internal Variable" context="#stay" String="\b(?:CMAKE_&var_ref_re;_(COMPILER_(ABI|ARCHITECTURE_ID|VERSION_INTERNAL)|PLATFORM_ID|USING_LINKER_MODE))\b"/>
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:&var_ref_re;_(((STATIC_)?LINK_)?LIBRARIES|(BINARY|SOURCE)_DIR|(C|LD)FLAGS(_OTHER)?|(INCLUDE|LIBRARY)_DIRS|COMPAT_VERSION|CONFIG|CONSIDERED_(CONFIGS|VERSIONS)|DESCRIPTION|FIND_(COMPONENTS|REQUIRED(_&var_ref_re;)?|VERSION_(COMPLETE|COUNT|EXACT|M(AX|IN)(_(COUNT|MAJOR|MINOR|PATCH|TWEAK))?|RANGE(_(MAX|MIN))?)|QUIETLY)|FOUND|HOMEPAGE_URL|IS_TOP_LEVEL|KEYWORDS_MISSING_VALUES|MODULE_NAME|ROOT|SPDX_LICENSE|UNPARSED_ARGUMENTS|VERSION(_(MAJOR|MINOR|PATCH|TWEAK|COUNT|STRING))?)|&var_ref_re;__TRYRUN_OUTPUT|(DOXYGEN|ExternalData_(CUSTOM_SCRIPT|URL_ALGO)|FETCHCONTENT_(SOURCE_DIR|UPDATES_DISCONNECTED))_&var_ref_re;|ARGV[0-9]+|BISON_&var_ref_re;_(COMPILE_FLAGS|DEFINED|INPUT|OUTPUT(S|_(HEADER|SOURCE)))|Boost_&var_ref_re;_LIBRARY(_(DEBUG|RELEASE))?|CMAKE_(&var_ref_re;_(ANDROID_TOOLCHAIN_((PRE|SUF)FIX|MACHINE)|ARCHIVE_(APPEND|CREATE|FINISH)|BYTE_ORDER|CLANG_TIDY(_EXPORT_FIXES_DIR)?|COMPILER(_(AR|EXTERNAL_TOOLCHAIN|FRONTEND_VARIANT|ID|LAUNCHER|LINKER(_(FRONTEND_VARIANT|ID|VERSION))?|LOADED|PREDEFINES_COMMAND|RANLIB|TARGET|VERSION))?|COMPILE_OBJECT|CPP(CHECK|LINT)|CREATE_(SHARED_(LIBRARY(_ARCHIVE)?|MODULE)|STATIC_LIBRARY)|DEVICE_LINK_MODE|EXTENSIONS(_DEFAULT)?|FLAGS(_((DEBUG|MINSIZEREL|REL(EASE|WITHDEBINFO)|&var_ref_re;)(_INIT)?|INIT))?|HOST_COMPILER(_ID)?|ICSTAT|IGNORE_EXTENSIONS|IMPLICIT_(INCLUDE_DIRECTORIES|LINK_((FRAMEWORK_)?DIRECTORIES|LIBRARIES))|INCLUDE_WHAT_YOU_USE|LIBRARY_ARCHITECTURE|LINKER_(LAUNCHER|PREFERENCE(_PROPAGATES)?|WRAPPER_FLAG(_SEP)?)|LINK_(EXECUTABLE|FLAGS(_&var_ref_re;)?|GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(FILE_FLAG|FLAG|SUFFIX|USING_&var_ref_re;(_SUPPORTED)?)|MODE|WHAT_YOU_USE_FLAG)|OUTPUT_EXTENSION|POSTFIX|PVS_STUDIO|SIMULATE_(ID|VERSION)|SIZEOF_DATA_PTR|SOURCE_FILE_EXTENSIONS|STANDARD_((INCLUDE_DIRECTO|LIBRA)RIES|DEFAULT|LATEST|LINK_DIRECTORIES)|USING_LINKER_&var_ref_re;|VISIBILITY_PRESET)|((ARCHIVE|(COMPILE_)?PDB|LIBRARY|RUNTIME)_OUTPUT_DIRECTORY|(DISABLE|REQUIRE)_FIND_PACKAGE|FRAMEWORK_MULTI_CONFIG_POSTFIX|GET_OS_RELEASE_FALLBACK_RESULT|IMPORT_LIBRARY_((PRE|SUF)FIX)|INTERPROCEDURAL_OPTIMIZATION|MAP_IMPORTED_CONFIG|USER_MAKE_RULES_OVERRIDE|XCODE_ATTRIBUTE)_&var_ref_re;|EXE_LINKER_FLAGS_&var_ref_re;(_INIT)?|LINK_(GROUP_USING_&var_ref_re;(_SUPPORTED)?|LIBRARY_(&var_ref_re;_ATTRIBUTES|USING_&var_ref_re;(_SUPPORTED)?))|MODULE_LINKER_FLAGS_&var_ref_re;(_INIT)?|PKG_CONFIG_&var_ref_re;_PRIVATE|PROJECT_&var_ref_re;_INCLUDE(_BEFORE)?|SHARED_((LIBRARY_((PRE|SUF)FIX)|MODULE_((PRE|SUF)FIX))_&var_ref_re;|LINKER_FLAGS_&var_ref_re;(_INIT)?)|STATIC_(LIBRARY_((PRE|SUF)FIX)_&var_ref_re;|LINKER_FLAGS_&var_ref_re;(_INIT)?))|CMAKE_(ARGV|MATCH_)[0-9]+|CMAKE_POLICY_(DEFAULT|WARNING)_CMP[0-9]{4}|CPACK_(&var_ref_re;_COMPONENT_INSTALL|ARCHIVE_&var_ref_re;_FILE_NAME|BINARY_&var_ref_re;|COMPONENT_&var_ref_re;_(DEPENDS|DESCRIPTION|DIS(ABLED|PLAY_NAME)|GROUP|HIDDEN|REQUIRED)|DEBIAN_&var_ref_re;_(DESCRIPTION|FILE_NAME|PACKAGE_((PRE)?DEPENDS|ARCHITECTURE|BREAKS|CONFLICTS|CONTROL_(EXTRA|STRICT_PERMISSION)|ENHANCES|MULTIARCH|NAME|PRIORITY|PROVIDES|RECOMMENDS|REPLACES|SECTION|SHLIBDEPS|SOURCE|SUGGESTS)|DEBUGINFO_PACKAGE)|DMG_&var_ref_re;_FILE_NAME|INNOSETUP_(&var_ref_re;_INSTALL_DIRECTORY|(DEFINE|SETUP)_&var_ref_re;)|NSIS_&var_ref_re;_INSTALL_DIRECTORY|NUGET_(&var_ref_re;_(PACKAGE_(AUTHORS|COPYRIGHT|DEPENDENCIES(_&var_ref_re;)?|DESCRIPTION(_SUMMARY)?|HOMEPAGE_URL|ICON(URL)?|LANGUAGE|LICENSE(URL|_(EXPRESSION|FILE_NAME))|NAME|OWNERS|README|RELEASE_NOTES|TAGS|TFMS|TITLE)|REPOSITORY_(BRANCH|COMMIT|TYPE|URL))|PACKAGE_DEPENDENCIES_&var_ref_re;)|P(RE|OST)FLIGHT_&var_ref_re;_SCRIPT|RPM_(&var_ref_re;_(DEFAULT_((DIR|FILE)_PERMISSIONS|GROUP|USER)|BUILD_SOURCE_DIRS_PREFIX|DEBUGINFO_(FILE_NAME|PACKAGE)|FILE_NAME|PACKAGE_(ARCHITECTURE|AUTO(PROV|REQ(PROV)?)|CONFLICTS|DESCRIPTION|ENHANCES|GROUP|NAME|OBSOLETES|PREFIX|PROVIDES|REQUIRES(_P(RE|OST)(UN)?)?|SUGGESTS|SUMMARY|SUPPLEMENTS|URL)|USER_(FILELIST|BINARY_SPECFILE))|NO_&var_ref_re;_INSTALL_PREFIX_RELOCATION)|WIX_(&var_ref_re;_EXT(ENSIONS|RA_FLAGS)|PROPERTY_&var_ref_re;))|ICU_&var_ref_re;_(LIBRARY|EXECUTABLE)|MPI_&var_ref_re;_(ADDITIONAL_INCLUDE_VARS|COMPILE(R|_(DEFINI|OP)TIONS)|LIB(_NAMES|RARY))|OpenACC_&var_ref_re;_(FLAGS|OPTIONS|SPEC_DATE)|OpenMP_&var_ref_re;_(FLAGS|LIB(_NAMES|RARY)|SPEC_DATE)|SWIG_MODULE_&var_ref_re;_EXTRA_DEPS)\b"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
+        <StringDetect attribute="Cache Variable Substitution" context="CacheVarSubst" String="$CACHE{"/>
+        <RegExpr attribute="Environment Variable Substitution" context="EnvVarSubst" String="\$?ENV\{"/>
+        <Detect2Chars attribute="Variable Substitution" context="VarSubst" char="$" char1="{"/>
+        <RegExpr attribute="@Variable Substitution" context="@VarSubst" String="@&var_ref_re;@" lookAhead="true"/>
+      </context>
+
+      <context attribute="Cache Variable Substitution" lineEndContext="#pop" name="CacheVarSubst">
+        <DetectChar attribute="Cache Variable Substitution" context="#pop" char="}"/>
+        <IncludeRules context="Detect Builtin Variables"/>
+        <IncludeRules context="Detect Variable Substitutions"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Environment Variable Substitution" lineEndContext="#pop" name="EnvVarSubst">
+        <DetectChar attribute="Environment Variable Substitution" context="#pop" char="}"/>
+        <keyword attribute="Standard Environment Variable" context="#stay" String="environment-variables" insensitive="false"/>
+        <RegExpr attribute="Standard Environment Variable" context="#stay" String="\b(?:&var_ref_re;_(DIR|ROOT)|ASM&var_ref_re;(FLAGS)?|CMAKE_&var_ref_re;_((COMPIL|LINK)ER_LAUNCHER|IMPLICIT_LINK_(DIRECTORIES_EXCLUDE|LIBRARIES_EXCLUDE)))\b"/>
+        <IncludeRules context="Detect Variable Substitutions"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Variable Substitution" lineEndContext="#pop" name="VarSubst">
+        <DetectChar attribute="Variable Substitution" context="#pop" char="}"/>
+        <IncludeRules context="Detect Builtin Variables"/>
+        <IncludeRules context="Detect Variable Substitutions"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="@Variable Substitution" lineEndContext="#pop" name="@VarSubst">
+        <DetectChar attribute="@Variable Substitution" context="VarSubst@" char="@"/>
+      </context>
+
+      <context attribute="@Variable Substitution" lineEndContext="#pop#pop" name="VarSubst@">
+        <DetectChar attribute="@Variable Substitution" context="#pop#pop" char="@"/>
+        <IncludeRules context="Detect Builtin Variables"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Targets">
+        <RegExpr attribute="Targets" context="#stay" String="&tgt_name_re;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="User Function Args">
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1="("/>
+        <Detect2Chars attribute="Normal Text" context="#stay" char="\" char1=")"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\"/>
+        <DetectChar attribute="Strings" context="String" char="&quot;"/>
+        <RegExpr attribute="Strings" context="Bracketed String" String="\[(=*)\[" beginRegion="BracketedString"/>
+        <DetectChar attribute="Comment" context="Match Comments" char="#" lookAhead="true"/>
+        <IncludeRules context="Detect Builtin Variables"/>
+        <IncludeRules context="Detect Variable Substitutions"/>
+        <IncludeRules context="Detect Special Values"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Generator Expressions"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Special Values">
+        <RegExpr attribute="Version Arg" context="#stay" String="\b[0-9]++(.[0-9]++)+\b"/>
+        <keyword attribute="True Special Arg" context="#stay" String="true_special_arg" insensitive="true"/>
+        <keyword attribute="False Special Arg" context="#stay" String="false_special_arg" insensitive="true"/>
+        <RegExpr attribute="False Special Arg" context="#stay" String="\b(?:&var_ref_re;-)?NOTFOUND\b"/>
+        <RegExpr attribute="Special Args" context="#stay" String="\bCMP[0-9][0-9][0-9][0-9]\b"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Aliased Targets">
+        <RegExpr attribute="Aliased Targets" context="#stay" String="&tgt_name_re;::&tgt_name_re;(?:\:\:&tgt_name_re;)*"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Match Comments">
+        <DetectSpaces/>
+        <RegExpr attribute="Comment" context="#pop!Bracketed Comment" String="#\[(=*)\[" beginRegion="BracketedComment"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Match Comments and Docs">
+        <RegExpr attribute="Region Marker" context="#pop!RST Documentation" String="^#\[(=*)\[\.rst:" column="0" beginRegion="RSTDocumentation"/>
+        <IncludeRules context="Match Comments"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces/>
+        <LineContinue attribute="Comment" context="#pop"/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="RST Documentation" dynamic="true">
+        <RegExpr attribute="Region Marker" context="#pop" String="^#?\]%1\]" dynamic="true" column="0" endRegion="RSTDocumentation"/>
+        <IncludeRules context="##reStructuredText"/>
+      </context>
+
+      <context attribute="Comment" lineEndContext="#stay" name="Bracketed Comment" dynamic="true">
+        <LineContinue attribute="Comment" context="#stay"/>
+        <DetectSpaces/>
+        <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedComment"/>
+        <IncludeRules context="##Comments"/>
+      </context>
+
+      <context attribute="Strings" lineEndContext="#stay" name="String">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <RegExpr attribute="Strings" context="#pop" String="&quot;(?=[ );]|$)"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="&quot;"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="$"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="n"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="r"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="t"/>
+        <Detect2Chars attribute="Escapes" context="#stay" char="\" char1="\"/>
+        <IncludeRules context="Detect Variable Substitutions"/>
+        <IncludeRules context="Detect Generator Expressions"/>
+      </context>
+
+      <context attribute="Strings" lineEndContext="#stay" name="Bracketed String" dynamic="true">
+        <StringDetect attribute="Strings" context="#pop" String="]%1]" dynamic="true" endRegion="BracketedString"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Detect Generator Expressions">
+        <Detect2Chars attribute="Generator Expression" context="Generator Expression" char="$" char1="&lt;"/>
+      </context>
+
+      <context attribute="Generator Expression" lineEndContext="#stay" name="Generator Expression">
+        <IncludeRules context="Detect Generator Expressions"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <DetectChar attribute="Generator Expression" context="#pop" char="&gt;"/>
+        <keyword attribute="Generator Expression Keyword" context="#stay" String="generator-expressions" insensitive="false"/>
+        <WordDetect String="STRING" attribute="Generator Expression Keyword" context="genex_STRING_ctx"/>
+        <WordDetect String="LIST" attribute="Generator Expression Keyword" context="genex_LIST_ctx"/>
+        <WordDetect String="PATH" attribute="Generator Expression Keyword" context="genex_PATH_ctx"/>
+        <IncludeRules context="Detect Aliased Targets"/>
+        <IncludeRules context="Detect Variable Substitutions"/>
+        <DetectIdentifier/>
+      </context>
+      <context attribute="Generator Expression" lineEndContext="#stay" name="genex_STRING_ctx" fallthroughContext="#pop">
+        <DetectChar char=":" context="#stay"/>
+        <DetectSpaces/>
+        <keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-STRING-subcommands" insensitive="false"/>
+      </context>
+      <context attribute="Generator Expression" lineEndContext="#stay" name="genex_LIST_ctx" fallthroughContext="#pop">
+        <DetectChar char=":" context="#stay"/>
+        <DetectSpaces/>
+        <keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-LIST-subcommands" insensitive="false"/>
+      </context>
+      <context attribute="Generator Expression" lineEndContext="#stay" name="genex_PATH_ctx" fallthroughContext="#pop">
+        <DetectChar char=":" context="#stay"/>
+        <DetectSpaces/>
+        <keyword attribute="Generator Expression Sub-Command" context="#pop" String="genex-PATH-subcommands" insensitive="false"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>
+      <itemData name="Command" defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="CMake Provided Function/Macro" defStyleNum="dsFunction" bold="true" spellChecking="false"/>
+      <itemData name="User Function/Macro" defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Property" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Targets" defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Aliased Targets" defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Named Args" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Special Args" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="True Special Arg" defStyleNum="dsOthers" color="#30a030" selColor="#30a030" spellChecking="false"/>
+      <itemData name="False Special Arg" defStyleNum="dsOthers" color="#e05050" selColor="#e05050" spellChecking="false"/>
+      <itemData name="Version Arg" defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Strings" defStyleNum="dsString" spellChecking="true"/>
+      <itemData name="Escapes" defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="Builtin Variable" defStyleNum="dsDecVal" color="#c09050" selColor="#c09050" spellChecking="false"/>
+      <itemData name="CMake Internal Variable" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Internal Name" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Variable Substitution" defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="@Variable Substitution" defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Cache Variable Substitution" defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="Environment Variable Substitution" defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="Standard Environment Variable" defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="Generator Expression Keyword" defStyleNum="dsKeyword" color="#b84040" selColor="#b84040" spellChecking="false"/>
+      <itemData name="Generator Expression Sub-Command" defStyleNum="dsKeyword" color="#c05050" selColor="#c05050" spellChecking="false"/>
+      <itemData name="Generator Expression" defStyleNum="dsOthers" color="#b86050" selColor="#b86050" spellChecking="false"/>
+      <itemData name="Standard Module" defStyleNum="dsImport" spellChecking="false"/>
+      <itemData name="Deprecated Module" defStyleNum="dsImport" spellChecking="false"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <comments>
+      <comment name="singleLine" start="#" position="afterwhitespace"/>
+      <comment name="multiLine" start="#[[" end="]]" region="BracketedComment"/>
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="."/>
+  </general>
+</language>
+<!-- kate: replace-tabs on; indent-width 2; tab-width 2; -->
diff --git a/xml/cobol.xml b/xml/cobol.xml
new file mode 100644
--- /dev/null
+++ b/xml/cobol.xml
@@ -0,0 +1,749 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY div "DATA|ENVIRONMENT|ID|IDENTIFICATION|PROCEDURE">
+  <!ENTITY sec "COMMUNICATION|CONFIGURATION|FILE|INPUT-OUTPUT|LINKAGE|LOCAL-STORAGE|REPORT|SCREEN|WORKING-STORAGE">
+  <!ENTITY seplist "[\s&lt;>+/*$,;():=.]">
+  <!ENTITY picsym "([-+*$ABCDENPRSUVXZ910]+(\([0-9]+\))?)+">
+]>
+<language name="COBOL" section="Sources" version="2" kateversion="5.62"
+          extensions="*.cob;*.cbl;*.cpy;*.copy;*.lst;*.pco;*.scb;*.sqb"
+          author="Jonathan Poelen (jonathan.poelen@gmail.com);github.com/MihailJP" license="MIT">
+<highlighting>
+
+<list name="picture">
+  <item>PIC</item>
+  <item>PICTURE</item>
+</list>
+
+<list name="verbs">
+  <item>ACCEPT</item>
+  <item>ADD</item>
+  <item>ALTER</item>
+  <item>CALL</item>
+  <item>COMPUTE</item>
+  <item>DELETE</item>
+  <item>DISPLAY</item>
+  <item>DIVIDE</item>
+  <item>END-ACCEPT</item>
+  <item>END-ADD</item>
+  <item>END-CALL</item>
+  <item>END-COMPUTE</item>
+  <item>END-DELETE</item>
+  <item>END-DISPLAY</item>
+  <item>END-DIVIDE</item>
+  <item>END-EVALUATE</item>
+  <item>END-IF</item>
+  <item>END-MULTIPLY</item>
+  <item>END-PERFORM</item>
+  <item>END-READ</item>
+  <item>END-RECEIVE</item>
+  <item>END-RETURN</item>
+  <item>END-REWRITE</item>
+  <item>END-SEARCH</item>
+  <item>END-START</item>
+  <item>END-STRING</item>
+  <item>END-SUBTRACT</item>
+  <item>END-UNSTRING</item>
+  <item>END-WRITE</item>
+  <item>EVALUATE</item>
+  <item>IF</item>
+  <item>MULTIPLY</item>
+  <item>PERFORM</item>
+  <item>READ</item>
+  <item>RECEIVE</item>
+  <item>RETURN</item>
+  <item>REWRITE</item>
+  <item>SEARCH</item>
+  <item>START</item>
+  <item>STRING</item>
+  <item>SUBTRACT</item>
+  <item>UNSTRING</item>
+  <item>WRITE</item>
+  <item>ASSIGN</item>
+  <item>CHAIN</item>
+  <item>CLOSE</item>
+  <item>CONTINUE</item>
+  <item>CONTROL</item>
+  <item>COPY</item>
+  <item>COUNT</item>
+  <item>ELSE</item>
+  <item>ENABLE</item>
+  <item>ERASE</item>
+  <item>EXIT</item>
+  <item>GENERATE</item>
+  <item>GO</item>
+  <item>GOBACK</item>
+  <item>IGNORE</item>
+  <item>INITIALIZE</item>
+  <item>INITIATE</item>
+  <item>INSPECT</item>
+  <item>INVOKE</item>
+  <item>MERGE</item>
+  <item>MOVE</item>
+  <item>OPEN</item>
+  <item>RELEASE</item>
+  <item>REPLACE</item>
+  <item>RESERVE</item>
+  <item>RESET</item>
+  <item>REWIND</item>
+  <item>ROLLBACK</item>
+  <item>RUN</item>
+  <item>SELECT</item>
+  <item>SEND</item>
+  <item>SET</item>
+  <item>SORT</item>
+  <item>STOP</item>
+  <item>SUM</item>
+  <item>SUPPRESS</item>
+  <item>TERMINATE</item>
+  <item>THEN</item>
+  <item>TRANSFORM</item>
+  <item>UNLOCK</item>
+  <item>UPDATE</item>
+  <item>USE</item>
+  <item>WAIT</item>
+  <item>WHEN</item>
+</list>
+
+<list name="usages">
+  <item>BINARY</item>
+  <item>BINARY-C-LONG</item>
+  <item>BINARY-CHAR</item>
+  <item>BINARY-DOUBLE</item>
+  <item>BINARY-LONG</item>
+  <item>BINARY-SHORT</item>
+  <item>COMP</item>
+  <item>COMP-1</item>
+  <item>COMP-2</item>
+  <item>COMP-3</item>
+  <item>COMP-4</item>
+  <item>COMP-5</item>
+  <item>COMP-X</item>
+  <item>COMPUTATIONAL</item>
+  <item>COMPUTATIONAL-1</item>
+  <item>COMPUTATIONAL-2</item>
+  <item>COMPUTATIONAL-3</item>
+  <item>COMPUTATIONAL-4</item>
+  <item>COMPUTATIONAL-5</item>
+  <item>COMPUTATIONAL-X</item>
+  <item>FLOAT-BINARY-16</item>
+  <item>FLOAT-BINARY-34</item>
+  <item>FLOAT-BINARY-7</item>
+  <item>FLOAT-DECIMAL-16</item>
+  <item>FLOAT-DECIMAL-34</item>
+  <item>FLOAT-EXTENDED</item>
+  <item>FLOAT-LONG</item>
+  <item>FLOAT-SHORT</item>
+  <item>FUNCTION-POINTER</item>
+  <item>INDEX</item>
+  <item>NATIONAL</item>
+  <item>PACKED-DECIMAL</item>
+  <item>POINTER</item>
+  <item>PROCEDURE-POINTER</item>
+  <item>PROGRAM-POINTER</item>
+  <item>SIGNED</item>
+  <item>SIGNED-INT</item>
+  <item>SIGNED-LONG</item>
+  <item>SIGNED-SHORT</item>
+  <item>UNSIGNED</item>
+  <item>UNSIGNED-INT</item>
+  <item>UNSIGNED-LONG</item>
+  <item>UNSIGNED-SHORT</item>
+</list>
+
+<list name="keywords">
+  <item>CD</item>
+  <item>COMMUNICATION</item>
+  <item>CONFIGURATION</item>
+  <item>DATA</item>
+  <item>DECLARATIVES</item>
+  <item>DIVISION</item>
+  <item>ENVIRONMENT</item>
+  <item>FD</item>
+  <item>FILE</item>
+  <item>FILE-CONTROL</item>
+  <item>I-O</item>
+  <item>I-O-CONTROL</item>
+  <item>ID</item>
+  <item>IDENTIFICATION</item>
+  <item>INPUT</item>
+  <item>INPUT-OUTPUT</item>
+  <item>LINKAGE</item>
+  <item>LOCAL-STORAGE</item>
+  <item>OUTPUT</item>
+  <item>PROCEDURE</item>
+  <item>PROGRAM</item>
+  <item>RD</item>
+  <item>REPORT</item>
+  <item>REPOSITORY</item>
+  <item>SD</item>
+  <item>SECTION</item>
+  <item>SPECIAL-NAMES</item>
+  <item>WORKING-STORAGE</item>
+</list>
+
+<list name="keywords-block">
+  <item>PROGRAM-ID</item>
+  <item>FUNCTION-ID</item>
+  <item>CLASS-ID</item>
+  <item>INTERFACE-ID</item>
+  <item>METHOD-ID</item>
+  <item>FACTORY</item>
+  <item>OBJECT</item>
+</list>
+
+<list name="logical">
+  <item>AND</item>
+  <item>EQUAL</item>
+  <item>EQUALS</item>
+  <item>GREATER</item>
+  <item>LESS</item>
+  <item>OR</item>
+  <item>THAN</item>
+</list>
+
+<list name="constants">
+  <item>HIGH-VALUEHIGH-VALUES</item>
+  <item>LOW-VALUE</item>
+  <item>LOW-VALUES</item>
+  <item>NULL</item>
+  <item>NULLS</item>
+  <item>QUOTE</item>
+  <item>QUOTES</item>
+  <item>SPACE</item>
+  <item>SPACES</item>
+  <item>ZERO</item>
+  <item>ZEROES</item>
+  <item>ZEROS</item>
+</list>
+
+<list name="reserved">
+  <item>ACCESS</item>
+  <item>ACTIVE-CLASS</item>
+  <item>ADDRESS</item>
+  <item>ADVANCING</item>
+  <item>AFTER</item>
+  <item>ALIGNED</item>
+  <item>ALL</item>
+  <item>ALLOCATE</item>
+  <item>ALPHABET</item>
+  <item>ALPHABETIC</item>
+  <item>ALPHABETIC-LOWER</item>
+  <item>ALPHABETIC-UPPER</item>
+  <item>ALPHANUMERIC</item>
+  <item>ALPHANUMERIC-EDITED</item>
+  <item>ALSO</item>
+  <item>ALTERNATE</item>
+  <item>ANY</item>
+  <item>ANYCASE</item>
+  <item>ARE</item>
+  <item>AREA</item>
+  <item>AREAS</item>
+  <item>ARGUMENT-NUMBER</item>
+  <item>ARGUMENT-VALUE</item>
+  <item>ARITHMETIC</item>
+  <item>AS</item>
+  <item>ASCENDING</item>
+  <item>AT</item>
+  <item>ATTRIBUTE</item>
+  <item>AUTO</item>
+  <item>AUTO-SKIP</item>
+  <item>AUTOMATIC</item>
+  <item>AUTOTERMINATE</item>
+  <item>B-AND</item>
+  <item>B-NOT</item>
+  <item>B-OR</item>
+  <item>B-XOR</item>
+  <item>BACKGROUND-COLOR</item>
+  <item>BASED</item>
+  <item>BEEP</item>
+  <item>BEFORE</item>
+  <item>BELL</item>
+  <item>BIT</item>
+  <item>BLANK</item>
+  <item>BLINK</item>
+  <item>BLOCK</item>
+  <item>BOOLEAN</item>
+  <item>BOTTOM</item>
+  <item>BY</item>
+  <item>BYTE-LENGTH</item>
+  <item>CANCEL</item>
+  <item>CENTER</item>
+  <item>CF</item>
+  <item>CH</item>
+  <item>CHAINING</item>
+  <item>CHARACTER</item>
+  <item>CHARACTERS</item>
+  <item>CLASS</item>
+  <item>CLASSIFICATION</item>
+  <item>CODE</item>
+  <item>CODE-SET</item>
+  <item>COL</item>
+  <item>COLLATING</item>
+  <item>COLS</item>
+  <item>COLUMN</item>
+  <item>COLUMNS</item>
+  <item>COMMA</item>
+  <item>COMMAND-LINE</item>
+  <item>COMMIT</item>
+  <item>COMMON</item>
+  <item>CONDITION</item>
+  <item>CONSTANT</item>
+  <item>CONTAINS</item>
+  <item>CONTENT</item>
+  <item>CONTROLS</item>
+  <item>CONVERTING</item>
+  <item>CORR</item>
+  <item>CORRESPONDING</item>
+  <item>CRT</item>
+  <item>CURRENCY</item>
+  <item>CURSOR</item>
+  <item>CYCLE</item>
+  <item>DATA-POINTER</item>
+  <item>DATE</item>
+  <item>DAY</item>
+  <item>DAY-OF-WEEK</item>
+  <item>DE</item>
+  <item>DEBUGGING</item>
+  <item>DECIMAL-POINT</item>
+  <item>DEFAULT</item>
+  <item>DELIMITED</item>
+  <item>DELIMITER</item>
+  <item>DEPENDING</item>
+  <item>DESCENDING</item>
+  <item>DESTINATION</item>
+  <item>DETAIL</item>
+  <item>DISABLE</item>
+  <item>DISK</item>
+  <item>DOWN</item>
+  <item>DUPLICATES</item>
+  <item>DYNAMIC</item>
+  <item>EBCDIC</item>
+  <item>EC</item>
+  <item>EGI</item>
+  <item>EMI</item>
+  <item>END</item>
+  <item>END-OF-PAGE</item>
+  <item>ENTRY</item>
+  <item>ENTRY-CONVENTION</item>
+  <item>ENVIRONMENT-NAME</item>
+  <item>ENVIRONMENT-VALUE</item>
+  <item>EO</item>
+  <item>EOL</item>
+  <item>EOP</item>
+  <item>EOS</item>
+  <item>ERROR</item>
+  <item>ESCAPE</item>
+  <item>ESI</item>
+  <item>EXCEPTION</item>
+  <item>EXCEPTION-OBJECT</item>
+  <item>EXCLUSIVE</item>
+  <item>EXPANDS</item>
+  <item>EXTEND</item>
+  <item>EXTERNAL</item>
+  <item>FALSE</item>
+  <item>FILE-ID</item>
+  <item>FILLER</item>
+  <item>FINAL</item>
+  <item>FIRST</item>
+  <item>FOOTING</item>
+  <item>FOR</item>
+  <item>FOREGROUND-COLOR</item>
+  <item>FOREVER</item>
+  <item>FORMAT</item>
+  <item>FREE</item>
+  <item>FROM</item>
+  <item>FULL</item>
+  <item>GET</item>
+  <item>GIVING</item>
+  <item>GLOBAL</item>
+  <item>GROUP</item>
+  <item>GROUP-USAGE</item>
+  <item>HEADING</item>
+  <item>HIGH-VALUE</item>
+  <item>HIGH-VALUES</item>
+  <item>HIGHLIGHT</item>
+  <item>IGNORING</item>
+  <item>IMPLEMENTS</item>
+  <item>IN</item>
+  <item>INDEXED</item>
+  <item>INDICATE</item>
+  <item>INFINITY</item>
+  <item>INHERITS</item>
+  <item>INITIAL</item>
+  <item>INITIALIZED</item>
+  <item>INTERFACE</item>
+  <item>INTO</item>
+  <item>INTRINSIC</item>
+  <item>INVALID</item>
+  <item>IS</item>
+  <item>JUST</item>
+  <item>JUSTIFIED</item>
+  <item>KEY</item>
+  <item>LABEL</item>
+  <item>LAST</item>
+  <item>LC_ALL</item>
+  <item>LC_COLLATE</item>
+  <item>LC_CTYPE</item>
+  <item>LC_MESSAGES</item>
+  <item>LC_MONETARY</item>
+  <item>LC_NUMERIC</item>
+  <item>LC_TIME</item>
+  <item>LEADING</item>
+  <item>LEFT</item>
+  <item>LENGTH</item>
+  <item>LIMIT</item>
+  <item>LIMITS</item>
+  <item>LINAGE</item>
+  <item>LINAGE-COUNTER</item>
+  <item>LINE</item>
+  <item>LINE-COUNTER</item>
+  <item>LINES</item>
+  <item>LOCALE</item>
+  <item>LOCK</item>
+  <item>LOWLIGHT</item>
+  <item>MANUAL</item>
+  <item>MEMORY</item>
+  <item>MESSAGE</item>
+  <item>METHOD</item>
+  <item>MINUS</item>
+  <item>MODE</item>
+  <item>MULTIPLE</item>
+  <item>NATIONAL-EDITED</item>
+  <item>NATIVE</item>
+  <item>NEGATIVE</item>
+  <item>NESTED</item>
+  <item>NEXT</item>
+  <item>NO</item>
+  <item>NONE</item>
+  <item>NORMAL</item>
+  <item>NOT</item>
+  <item>NUMBER</item>
+  <item>NUMBERS</item>
+  <item>NUMERIC</item>
+  <item>NUMERIC-EDITED</item>
+  <item>OBJECT-COMPUTER</item>
+  <item>OBJECT-REFERENCE</item>
+  <item>OCCURS</item>
+  <item>OF</item>
+  <item>OFF</item>
+  <item>OMITTED</item>
+  <item>ON</item>
+  <item>ONLY</item>
+  <item>OPTIONAL</item>
+  <item>OPTIONS</item>
+  <item>ORDER</item>
+  <item>ORGANIZATION</item>
+  <item>OTHER</item>
+  <item>OVERFLOW</item>
+  <item>OVERLINE</item>
+  <item>OVERRIDE</item>
+  <item>PADDING</item>
+  <item>PAGE</item>
+  <item>PAGE-COUNTER</item>
+  <item>PARAGRAPH</item>
+  <item>PF</item>
+  <item>PH</item>
+  <item>PLUS</item>
+  <item>POSITION</item>
+  <item>POSITIVE</item>
+  <item>PRESENT</item>
+  <item>PREVIOUS</item>
+  <item>PRINTER</item>
+  <item>PRINTING</item>
+  <item>PROCEDURES</item>
+  <item>PROCEED</item>
+  <item>PROMPT</item>
+  <item>PROPERTY</item>
+  <item>PROTOTYPE</item>
+  <item>PURGE</item>
+  <item>QUEUE</item>
+  <item>RAISE</item>
+  <item>RAISING</item>
+  <item>RANDOM</item>
+  <item>RECORD</item>
+  <item>RECORDING</item>
+  <item>RECORDS</item>
+  <item>RECURSIVE</item>
+  <item>REDEFINES</item>
+  <item>REEL</item>
+  <item>REFERENCE</item>
+  <item>RELATION</item>
+  <item>RELATIVE</item>
+  <item>REMAINDER</item>
+  <item>REMOVAL</item>
+  <item>RENAMES</item>
+  <item>REPLACING</item>
+  <item>REPORTING</item>
+  <item>REPORTS</item>
+  <item>REQUIRED</item>
+  <item>RESUME</item>
+  <item>RETRY</item>
+  <item>RETURNING</item>
+  <item>REVERSE-VIDEO</item>
+  <item>RF</item>
+  <item>RH</item>
+  <item>RIGHT</item>
+  <item>ROUNDED</item>
+  <item>SAME</item>
+  <item>SCREEN</item>
+  <item>SCROLL</item>
+  <item>SECONDS</item>
+  <item>SECURE</item>
+  <item>SEGMENT</item>
+  <item>SEGMENT-LIMIT</item>
+  <item>SELF</item>
+  <item>SENTENCE</item>
+  <item>SEPARATE</item>
+  <item>SEQUENCE</item>
+  <item>SEQUENTIAL</item>
+  <item>SHARING</item>
+  <item>SIGN</item>
+  <item>SIZE</item>
+  <item>SORT-MERGE</item>
+  <item>SOURCE</item>
+  <item>SOURCE-COMPUTER</item>
+  <item>SOURCES</item>
+  <item>STANDARD</item>
+  <item>STANDARD-1</item>
+  <item>STANDARD-2</item>
+  <item>STATEMENT</item>
+  <item>STATUS</item>
+  <item>STEP</item>
+  <item>STRONG</item>
+  <item>SUB-QUEUE-1</item>
+  <item>SUB-QUEUE-2</item>
+  <item>SUB-QUEUE-3</item>
+  <item>SUPER</item>
+  <item>SYMBOL</item>
+  <item>SYMBOLIC</item>
+  <item>SYNC</item>
+  <item>SYNCHRONIZED</item>
+  <item>SYSTEM-DEFAULT</item>
+  <item>TABLE</item>
+  <item>TALLYING</item>
+  <item>TAPE</item>
+  <item>TERMINAL</item>
+  <item>TEST</item>
+  <item>TEXT</item>
+  <item>THROUGH</item>
+  <item>THRU</item>
+  <item>TIME</item>
+  <item>TIMES</item>
+  <item>TO</item>
+  <item>TOP</item>
+  <item>TRAILING</item>
+  <item>TRUE</item>
+  <item>TYPE</item>
+  <item>TYPEDEF</item>
+  <item>UCS-4</item>
+  <item>UNDERLINE</item>
+  <item>UNIT</item>
+  <item>UNIVERSAL</item>
+  <item>UNTIL</item>
+  <item>UP</item>
+  <item>UPON</item>
+  <item>USAGE</item>
+  <item>USER-DEFAULT</item>
+  <item>USING</item>
+  <item>UTF-16</item>
+  <item>UTF-8</item>
+  <item>VAL-STATUS</item>
+  <item>VALID</item>
+  <item>VALIDATE</item>
+  <item>VALIDATE-STATUS</item>
+  <item>VALUE</item>
+  <item>VALUES</item>
+  <item>VARYING</item>
+  <item>WITH</item>
+  <item>WORDS</item>
+  <item>YYYYDDD</item>
+  <item>YYYYMMDD</item>
+</list>
+
+<list name="functions">
+  <item>ABS</item>
+  <item>ACOS</item>
+  <item>ANNUITY</item>
+  <item>ASIN</item>
+  <item>ATAN</item>
+  <item>BYTE-LENGTH</item>
+  <item>CHAR</item>
+  <item>CONCATENATE</item>
+  <item>COS</item>
+  <item>CURRENT-DATE</item>
+  <item>DATE-OF-INTEGER</item>
+  <item>DATE-TO-YYYYMMDD</item>
+  <item>DAY-OF-INTEGER</item>
+  <item>DAY-TO-YYYYDDD</item>
+  <item>E</item>
+  <item>EXCEPTION-FILE</item>
+  <item>EXCEPTION-LOCATION</item>
+  <item>EXCEPTION-STATEMENT</item>
+  <item>EXCEPTION-STATUS</item>
+  <item>EXP</item>
+  <item>EXP10</item>
+  <item>FACTORIAL</item>
+  <item>FRACTION-PART</item>
+  <item>INTEGER</item>
+  <item>INTEGER-OF-DATE</item>
+  <item>INTEGER-OF-DAY</item>
+  <item>INTEGER-PART</item>
+  <item>LENGTH</item>
+  <item>LOCALE-DATE</item>
+  <item>LOCALE-TIME</item>
+  <item>LOG</item>
+  <item>LOG10</item>
+  <item>LOWER-CASE</item>
+  <item>MAX</item>
+  <item>MEAN</item>
+  <item>MEDIAN</item>
+  <item>MIDRANGE</item>
+  <item>MIN</item>
+  <item>MOD</item>
+  <item>NUMVAL</item>
+  <item>NUMVAL-C</item>
+  <item>ORD</item>
+  <item>ORD-MAX</item>
+  <item>ORD-MIN</item>
+  <item>PI</item>
+  <item>PRESENT-VALUE</item>
+  <item>RANDOM</item>
+  <item>RANGE</item>
+  <item>REM</item>
+  <item>REVERSE</item>
+  <item>SECONDS-FROM-FORMATTED-TIME</item>
+  <item>SECONDS-PAST-MIDNIGHT</item>
+  <item>SIGN</item>
+  <item>SIN</item>
+  <item>SQRT</item>
+  <item>STANDARD-DEVIATION</item>
+  <item>STORED-CHAR-LENGTH</item>
+  <item>SUBSTITUTE</item>
+  <item>SUBSTITUTE-CASE</item>
+  <item>TAN</item>
+  <item>TEST-DATE-YYYYMMDD</item>
+  <item>TEST-DAY-YYYYDDD</item>
+  <item>TRIM</item>
+  <item>UPPER-CASE</item>
+  <item>VARIANCE</item>
+  <item>WHEN-COMPILED</item>
+  <item>YEAR-TO-YYYY</item>
+</list>
+
+<contexts>
+
+  <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+    <DetectSpaces attribute="Normal Text"/>
+    <Int attribute="Sequence Number Area" firstNonSpace="1"/>
+    <DetectChar attribute="Comment" context="comment" char="*" column="6"/>
+    <DetectChar attribute="Comment" context="comment" char="*" column="0"/>
+    <DetectChar attribute="Comment" context="comment" char="/" column="6"/>
+    <DetectChar attribute="Comment" context="comment" char="/" column="0"/>
+    <DetectChar attribute="String" context="stringDQ" char="&quot;"/>
+    <DetectChar attribute="String" context="stringSQ" char="'"/>
+    <StringDetect attribute="Comment" context="comment" String="*>"/>
+    <AnyChar attribute="Normal Text" String="&lt;>+/*$,;():="/>
+    <keyword attribute="Keywords" String="keywords-block" beginRegion="ID"/>
+    <keyword attribute="Other Reserved Words" context="picture" String="picture"/>
+    <keyword attribute="Verb" String="verbs"/>
+    <keyword attribute="Usage" String="usages"/>
+    <keyword attribute="Constant" String="constants"/>
+    <keyword attribute="Logical" String="logical"/>
+    <WordDetect attribute="Keywords" context="end" String="END" insensitive="1"/>
+    <RegExpr attribute="Division" String="\b(?!-)(&div;)\s+DIVISION\b(?!-)" insensitive="1"/>
+    <RegExpr attribute="Section" String="\b(?!-)(&sec;)\s+SECTION\b(?!-)" insensitive="1"/>
+    <keyword attribute="Keywords" String="keywords"/>
+    <keyword attribute="Other Reserved Words" String="reserved"/>
+    <WordDetect attribute="Other Reserved Words" context="function" String="FUNCTION" insensitive="1"/>
+    <WordDetect context="exec" String="EXEC" insensitive="1" lookAhead="1"/>
+    <RegExpr attribute="Float" String="(?&lt;=^|\s)-?[0-9]*\.[0-9]+(?=$|&seplist;)" context="#stay"/>
+    <RegExpr attribute="Decimal" String="(?&lt;=^|\s)-?[0-9]+(?=$|&seplist;)" context="#stay"/>
+    <RegExpr attribute="Hex" String="H(&quot;[0-9A-F]+&quot;|'[0-9A-F]+')" insensitive="1"/>
+    <RegExpr attribute="Char" String="X(&quot;[0-9A-F]+&quot;|'[0-9A-F]+')" insensitive="1"/>
+    <RegExpr attribute="Normal Text" String="[-\w]*[\s&lt;>+$,;():=.]"/>
+  </context>
+
+  <context name="end" attribute="Keywords" lineEndContext="#pop" fallthroughContext="#pop">
+    <keyword attribute="Keywords" String="keywords-block" context="#pop" endRegion="ID"/>
+  </context>
+
+  <context name="comment" attribute="Comment" lineEndContext="#pop">
+    <DetectSpaces attribute="Comment"/>
+    <IncludeRules context="##Comments"/>
+    <DetectIdentifier attribute="Comment"/>
+  </context>
+
+  <context name="stringDQ" attribute="String" lineEndContext="#pop">
+    <DetectChar attribute="String" context="#pop" char="&quot;"/>
+  </context>
+
+  <context name="stringSQ" attribute="String" lineEndContext="#pop">
+    <DetectChar attribute="String" context="#pop" char="'"/>
+  </context>
+
+  <context name="picture" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!picture3">
+    <DetectSpaces attribute="Normal Text"/>
+    <WordDetect attribute="Other Reserved Words" context="#pop!picture2" String="IS" insensitive="1"/>
+  </context>
+  <context name="picture2" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!picture3">
+    <DetectSpaces attribute="Normal Text" context="#pop!picture3"/>
+  </context>
+  <context name="picture3" attribute="Error" lineEndContext="#pop">
+    <RegExpr attribute="Picture" String="\s*&picsym;([,./]&picsym;)*(CR|DB)?" insensitive="1" context="#pop"/>
+    <AnyChar attribute="Normal Text" context="#pop" String=",./ &#9;"/>
+    <StringDetect attribute="Comment" context="#pop!comment" String="*>"/>
+  </context>
+
+  <context name="function" attribute="Error" lineEndContext="#pop">
+    <keyword attribute="Function" context="#pop" String="functions"/>
+    <WordDetect attribute="Other Reserved Words" context="#pop" String="ALL" insensitive="1"/>
+    <AnyChar attribute="Normal Text" context="#pop" String=". &#9;"/>
+    <StringDetect attribute="Comment" context="#pop!comment" String="*>"/>
+  </context>
+
+  <context name="exec" attribute="Normal Text" lineEndContext="#pop">
+    <RegExpr attribute="SQL" String="EXEC\s+SQL\b(?!-)" context="#pop!sql" insensitive="1" beginRegion="sql"/>
+    <DetectIdentifier attribute="Normal Text" context="#pop"/>
+  </context>
+
+  <context name="sql" attribute="Normal Text" lineEndContext="#stay">
+    <StringDetect attribute="Comment" context="comment" String="*>"/>
+    <WordDetect attribute="SQL" context="#pop" String="END-EXEC" insensitive="1" endRegion="sql"/>
+    <IncludeRules context="##SQL" includeAttrib="1"/>
+  </context>
+
+</contexts>
+
+<itemDatas>
+  <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="0"/>
+  <itemData name="Sequence Number Area" defStyleNum="dsComment" spellChecking="0" italic="1"/>
+  <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="0"/>
+  <itemData name="Float" defStyleNum="dsFloat" spellChecking="0"/>
+  <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="0"/>
+  <itemData name="Constant" defStyleNum="dsConstant" spellChecking="0"/>
+  <itemData name="Logical" defStyleNum="dsKeyword" spellChecking="0" italic="1"/>
+  <itemData name="String" defStyleNum="dsString"/>
+  <itemData name="Char" defStyleNum="dsChar" spellChecking="0"/>
+  <itemData name="Division" defStyleNum="dsRegionMarker" spellChecking="0"/>
+  <itemData name="Section" defStyleNum="dsRegionMarker" spellChecking="0"/>
+  <itemData name="SQL" defStyleNum="dsRegionMarker" spellChecking="0"/>
+  <itemData name="Keywords" defStyleNum="dsKeyword" spellChecking="0"/>
+  <itemData name="Verb" defStyleNum="dsKeyword" spellChecking="0"/>
+  <itemData name="Picture" defStyleNum="dsDataType" spellChecking="0"/>
+  <itemData name="Usage" defStyleNum="dsDataType" spellChecking="0"/>
+  <itemData name="Other Reserved Words" defStyleNum="dsOthers" spellChecking="0"/>
+  <itemData name="Function" defStyleNum="dsFunction" spellChecking="0"/>
+  <itemData name="Comment" defStyleNum="dsComment"/>
+  <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>
+</itemDatas>
+
+</highlighting>
+<general>
+  <comments>
+    <comment name="singleLine" start="*>"/>
+  </comments>
+  <keywords casesensitive="0" weakDeliminator="-"/>
+</general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/coffee.xml b/xml/coffee.xml
--- a/xml/coffee.xml
+++ b/xml/coffee.xml
@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 
 <language name="CoffeeScript"
-          version="15"
+          alternativeNames="Coffee;Coffee-Script"
+          version="16"
           kateversion="5.53"
           section="Scripts"
           extensions="Cakefile;*.coffee;*.coco;*.cson"
@@ -54,12 +55,9 @@
       <item>delete</item>
       <item>where</item>
       <item>super</item>
-      <item>try</item>
       <item>catch</item>
       <item>finally</item>
       <item>try</item>
-      <item>catch</item>
-      <item>finally</item>
       <item>constructor</item>
     </list>
     <!-- Keywords which are always followed by a class name. -->
diff --git a/xml/coldfusion.xml b/xml/coldfusion.xml
--- a/xml/coldfusion.xml
+++ b/xml/coldfusion.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="ColdFusion" version="5" kateversion="5.0" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
+<!DOCTYPE language>
+<language name="ColdFusion" version="6" kateversion="5.0" section="Markup" extensions="*.cfm;*.cfc;*.cfml;*.dbm" mimetype="text/x-coldfusion">
 
 	<highlighting>
 
@@ -510,6 +510,7 @@
 		<contexts>
 
 			<context attribute="Normal Text" lineEndContext="#stay" name="Normal Text">
+				<DetectSpaces attribute="Normal Text" />
 				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />
 				<StringDetect attribute="HTML Comment" context="ctxHTML Comment" String="&lt;!--" beginRegion="HTML Comment" />
 				<StringDetect attribute="Script Tags" context="ctxCFSCRIPT Tag" String="&lt;cfscript" insensitive="true" beginRegion="CF Script" />
@@ -532,10 +533,10 @@
 
 
 			<context name="Tag Content" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Tag Attributes" context="#stay" String="(?:\s|^)[A-Za-z_:*][\w.:_-]*(?=\s*\=)" />
 				<DetectChar attribute="Normal Text" context="#stay" char="=" />
 				<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />
 				<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" />
+				<RegExpr attribute="Tag Attributes" context="#stay" String="(?:\s|^)[A-Za-z_:*][\w.:_-]*(?=\s*\=)" />
 			</context>
 
 			<context name="ctxCFSCRIPT Tag" attribute="Script Tags" lineEndContext="#stay">
@@ -593,23 +594,31 @@
 
 
 			<context name="ctxHTML Comment" attribute="HTML Comment" lineEndContext="#stay">
+				<DetectSpaces attribute="HTML Comment" />
 				<StringDetect attribute="CF Comment" context="ctxCF Comment" String="&lt;!---" beginRegion="CF Comment" />
 				<StringDetect attribute="HTML Comment" context="#pop" String="--&gt;" endRegion="HTML Comment" />
 				<IncludeRules context="##Comments" />
+				<DetectIdentifier attribute="HTML Comment" />
 			</context>
 
 			<context name="ctxCF Comment" attribute="CF Comment" lineEndContext="#stay">
+				<DetectSpaces attribute="CF Comment" />
 				<StringDetect attribute="CF Comment" context="#pop" String="---&gt;" endRegion="CF Comment" />
 				<IncludeRules context="##Comments" />
+				<DetectIdentifier attribute="CF Comment" />
 			</context>
 
 			<context name="ctxC Style Comment" attribute="Script Comment" lineEndContext="#stay">
+				<DetectSpaces attribute="Script Comment" />
 				<Detect2Chars attribute="Script Comment" context="#pop" char="*" char1="/" endRegion="CComment" />
 				<IncludeRules context="##Comments" />
+				<DetectIdentifier attribute="Script Comment" />
 			</context>
 
 			<context name="ctxOne Line Comment" attribute="Script Comment" lineEndContext="#pop">
+				<DetectSpaces attribute="Script Comment" />
 				<IncludeRules context="##Comments" />
+				<DetectIdentifier attribute="Script Comment" />
 			</context>
 
 			<context name="ctxHTML Entities" attribute="HTML Entities" lineEndContext="#pop">
@@ -618,61 +627,69 @@
 
 
 
-			<context name="ctxCFSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
+			<context name="SCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces attribute="Normal Text" />
 				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
 				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />
 				<RangeDetect attribute="Script Strings" context="#stay" char="&quot;" char1="&quot;" />
 				<RangeDetect attribute="Script Strings" context="#stay" char="'" char1="'" />
-				<Int attribute="Script Numbers" context="#stay" />
 				<Float attribute="Script Numbers" context="#stay" />
+				<Int attribute="Script Numbers" context="#stay" />
 				<AnyChar attribute="Script Operators" context="#stay" String="()[]=+-*/" />
 				<AnyChar attribute="Brackets" context="#stay" String="{}" />
+			</context>
 
+
+
+			<context name="ctxCFSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
+				<IncludeRules context="SCRIPT Block" />
+
 				<keyword attribute="Script Keywords" context="#stay" String="CFSCRIPT Keywords" />
 				<keyword attribute="Script Functions" context="#stay" String="CFSCRIPT Functions" />
 				<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/cfscript&gt;" insensitive="true" endRegion="CF Script" />
+				<DetectIdentifier attribute="Normal Text" />
 			</context>
 
 
 
 			<context name="ctxSCRIPT Block" attribute="Normal Text" lineEndContext="#stay">
-				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
-				<Detect2Chars attribute="Script Comment" context="ctxOne Line Comment" char="/" char1="/" />
-				<RangeDetect attribute="Script Strings" context="#stay" char="&quot;" char1="&quot;" />
-				<RangeDetect attribute="Script Strings" context="#stay" char="'" char1="'" />
-				<Int attribute="Script Numbers" context="#stay" />
-				<Float attribute="Script Numbers" context="#stay" />
-				<AnyChar attribute="Script Operators" context="#stay" String="()[]=+-*/" />
-				<AnyChar attribute="Brackets" context="#stay" String="{}" />
+				<IncludeRules context="SCRIPT Block" />
 
 				<keyword attribute="Script Keywords" context="#stay" String="Script Keywords" />
 				<keyword attribute="Script Objects" context="#stay" String="Script Objects" />
 				<keyword attribute="Script Functions" context="#stay" String="Script Methods" />
 				<StringDetect attribute="Script Tags" context="#pop#pop" String="&lt;/script&gt;" insensitive="true" endRegion="Script" />
+				<DetectIdentifier attribute="Normal Text" />
 			</context>
 
 
 
 			<context name="ctxSTYLE Block" attribute="Style Selectors" lineEndContext="#stay">
+				<DetectSpaces attribute="Style Selectors" />
+				<DetectIdentifier attribute="Style Selectors" />
 				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
 				<DetectChar attribute="Brackets" context="ctxStyle Properties" char="{" />
 				<StringDetect attribute="Style Tags" context="#pop#pop" String="&lt;/style&gt;" insensitive="true" endRegion="Style" />
 			</context>
 
 			<context name="ctxStyle Properties" attribute="Style Properties" lineEndContext="#stay">
+				<DetectSpaces attribute="Style Properties" />
+				<DetectIdentifier attribute="Style Properties" />
 				<DetectChar attribute="Brackets" context="#pop" char="}" />
 				<Detect2Chars attribute="Script Comment" context="ctxC Style Comment" char="/" char1="*" beginRegion="CComment" />
 				<DetectChar attribute="Normal Text" context="ctxStyle Values" char=":" />
 			</context>
 
 			<context name="ctxStyle Values" attribute="Style Values" lineEndContext="#pop">
+				<DetectSpaces attribute="Style Values" />
+				<DetectIdentifier attribute="Style Values" />
 				<DetectChar attribute="Normal Text" context="#pop" char=";" />
 				<DetectChar attribute="Normal Text" context="#stay" char="," />
-				<Int attribute="Numbers" context="#stay" />
 				<Float attribute="Numbers" context="#stay" />
-				<RegExpr attribute="Numbers" context="#stay" String="#(?:[0-9a-fA-F]{3})|(?:[0-9a-fA-F]{6})" />
+				<Int attribute="Numbers" context="#stay" />
 				<RangeDetect attribute="Attribute Values" context="#stay" char="&quot;" char1="&quot;" />
 				<RangeDetect attribute="Attribute Values" context="#stay" char="'" char1="'" />
+				<RegExpr attribute="Numbers" context="#stay" String="#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3})" />
 			</context>
 
 		</contexts>
diff --git a/xml/comments.xml b/xml/comments.xml
--- a/xml/comments.xml
+++ b/xml/comments.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language
     version="1"
     kateversion="5.0"
diff --git a/xml/commonlisp.xml b/xml/commonlisp.xml
--- a/xml/commonlisp.xml
+++ b/xml/commonlisp.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language version="10" kateversion="5.0" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
+<!DOCTYPE language [
+    <!ENTITY identchar "[A-Za-z0-9-+&lt;&gt;/*]">
+]>
+<language version="12" kateversion="5.79" name="Common Lisp" section="Sources" extensions="*.lisp;*.cl;*.lsp;*.el" mimetype="" author="Dominik Haumann (dhaumann@kde.org)" license="MIT">
   <highlighting>
     <list name="symbols">
       <item>&lt;</item>
@@ -21,7 +23,7 @@
       <item>++</item> 
       <item>+++</item> 
       <item>1-</item> 
-      <item>1+</item> 
+      <item>1+</item>
     </list>
     <list name="definitions">
       <item>defclass</item> 
@@ -425,7 +427,6 @@
       <item>initialize-instance</item> 
       <item>inline</item> 
       <item>in-package</item> 
-      <item>in-package</item> 
       <item>input-stream-p</item> 
       <item>inspect</item> 
       <item>int-char</item> 
@@ -518,7 +519,6 @@
       <item>macro-function</item> 
       <item>macrolet</item> 
       <item>make-array</item> 
-      <item>make-array</item> 
       <item>make-broadcast-stream</item> 
       <item>make-char</item> 
       <item>make-concatenated-stream</item> 
@@ -789,7 +789,7 @@
       <item>simple-base-string</item> 
       <item>simple-bit-vector</item> 
       <item>simple-bit-vector-p</item> 
-      <item>simple-condition-format-arguments</item> 
+      <item>simple-condition-format-arguments</item>
       <item>simple-condition-format-control</item> 
       <item>simple-error</item> 
       <item>simple-string</item> 
@@ -909,7 +909,6 @@
       <item>translate-pathname</item> 
       <item>tree-equal</item> 
       <item>truename</item> 
-      <item>truncase</item> 
       <item>truncate</item> 
       <item>two-way-stream</item> 
       <item>two-way-stream-input-stream</item> 
@@ -1056,15 +1055,11 @@
     <list name="variables">
       <item>*applyhook*</item>
       <item>*break-on-signals*</item>
-      <item>*break-on-signals*</item>
       <item>*break-on-warnings*</item>
       <item>*compile-file-pathname*</item>
-      <item>*compile-file-pathname*</item>
       <item>*compile-file-truename*</item>
-      <item>*compile-file-truename*</item>
       <item>*compile-print*</item>
       <item>*compile-verbose*</item>
-      <item>*compile-verbose*</item>
       <item>*debugger-hook*</item>
       <item>*debug-io*</item>
       <item>*default-pathname-defaults*</item>
@@ -1089,14 +1084,11 @@
       <item>*print-level*</item>
       <item>*print-lines*</item>
       <item>*print-miser-width*</item>
-      <item>*print-miser-width*</item>
       <item>*print-pprint-dispatch*</item>
-      <item>*print-pprint-dispatch*</item>
       <item>*print-pretty*</item>
       <item>*print-radix*</item>
       <item>*print-readably*</item>
       <item>*print-right-margin*</item>
-      <item>*print-right-margin*</item>
       <item>*query-io*</item>
       <item>*random-state*</item>
       <item>*read-base*</item>
@@ -1110,62 +1102,104 @@
       <item>*trace-output*</item>
     </list>
 
+    <list name="operators">
+      <item>&amp;allow-other-keys</item>
+      <item>&amp;aux</item>
+      <item>&amp;body</item>
+      <item>&amp;environment</item>
+      <item>&amp;key</item>
+      <item>&amp;optional</item>
+      <item>&amp;rest</item>
+      <item>&amp;whole</item>
+    </list>
+
     <contexts>
       <context name="Normal" attribute="Normal" lineEndContext="#stay">
-        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*BEGIN.*$" beginRegion="region"/>
-        <RegExpr attribute="Region Marker" context="#stay" String=";+\s*END.*$" endRegion="region"/>
-        <DetectChar attribute="Comment" context="Comment" char=";"/>
-        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="BlockComment"/>
+        <DetectSpaces/>
+        <DetectChar context="StartSingleComment" char=";" lookAhead="1"/>
+        <DetectChar context="StartHash" char="#" lookAhead="1"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
         <AnyChar attribute="Brackets" context="#stay" String="()"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Operator" context="#stay" String="symbols"/>
         <keyword attribute="Modifier" context="#stay" String="modifiers"/>
         <keyword attribute="Variable" context="#stay" String="variables"/>
         <keyword attribute="Definition" context="function_decl" String="definitions"/>
-        <RegExpr attribute="Char" context="#stay" String="#\\."/>
-        <DetectChar attribute="String" context="String" char="&quot;"/>
-        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="t"/>
-        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="f"/>
-        <RegExpr attribute="Char" context="SpecialNumber" String="#[bodxei]"/>
-        <Float attribute="Float" context="#stay"/>
-        <Int attribute="Decimal" context="#stay"/>
+        <keyword attribute="Operator" context="#stay" String="operators" weakDeliminator="&amp;"/>
+        <RegExpr attribute="Type" context="#stay" String="'&identchar;+"/>
+        <Float attribute="Float" context="#stay" additionalDeliminator="-"/>
+        <Int attribute="Decimal" context="#stay" additionalDeliminator="-"/>
+        <WordDetect attribute="Operator" context="#stay" String="-" additionalDeliminator="0123456789"/>
+        <RegExpr String="&identchar;+"/>
       </context>
+
+      <context name="StartHash" attribute="Normal" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="BlockComment"/>
+        <Detect2Chars attribute="Function Operator" context="#pop!FunctionOperator" char="#" char1="'"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="t"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="f"/>
+        <RegExpr attribute="Char" context="#pop" String="#\\."/>
+        <RegExpr attribute="Char" context="#pop!SpecialNumber" String="#[bodxei]"/>
+        <DetectChar context="#pop" char="#"/>
+      </context>
+
+      <context name="FunctionOperator" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Function By Name" context="#pop" String="&identchar;+"/>
+      </context>
+
       <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
         <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="BlockComment"/>
         <IncludeRules context="##Comments"/>
       </context>
+
       <context name="function_decl" attribute="Function" lineEndContext="#stay">
-        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-+\&lt;\&gt;//\*]*\s*" />
+        <RegExpr attribute="Function" context="#pop" String="\s*&identchar;*\s*" />
       </context>
+
       <context name="SpecialNumber" attribute="Normal" lineEndContext="#pop">
         <Float attribute="Float" context="#pop"/>
         <Int attribute="Decimal" context="#pop"/>
         <HlCOct attribute="BaseN" context="#pop"/>
         <HlCHex attribute="Float" context="#pop"/>
       </context>
+
       <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
         <RegExpr attribute="Char" context="#stay" String="#\\."/>
         <HlCStringChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
+
+      <context name="StartSingleComment" attribute="Comment" lineEndContext="#pop">
+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*BEGIN.*$" beginRegion="region"/>
+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*END.*$" endRegion="region"/>
+        <DetectChar attribute="Comment" context="#pop!Comment" char=";"/>
+      </context>
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
         <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
       </context>
+
     </contexts>
     <itemDatas>
-      <itemData name="Normal"      defStyleNum="dsNormal"/>
-      <itemData name="Keyword"     defStyleNum="dsKeyword"/>
-      <itemData name="Operator"    defStyleNum="dsOperator"/>
-      <itemData name="Modifier"    defStyleNum="dsBuiltIn"/>
-      <itemData name="Variable"    defStyleNum="dsVariable"/>
-      <itemData name="Definition"  defStyleNum="dsKeyword"/>
-      <itemData name="Decimal"     defStyleNum="dsDecVal"/>
-      <itemData name="BaseN"       defStyleNum="dsBaseN"/>
-      <itemData name="Float"       defStyleNum="dsFloat"/>
-      <itemData name="Function"    defStyleNum="dsFunction"/>
-      <itemData name="Char"        defStyleNum="dsChar"/>
-      <itemData name="String"      defStyleNum="dsString"/>
-      <itemData name="String Char" defStyleNum="dsSpecialChar"/>
+      <itemData name="Normal"      defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Operator"    defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Modifier"    defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Variable"    defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Definition"  defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Decimal"     defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="BaseN"       defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Float"       defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="Function"    defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Function Operator" defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Function By Name"  defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Type"        defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Char"        defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="String"      defStyleNum="dsString" spellChecking="false"/>
+      <itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
       <itemData name="Comment"     defStyleNum="dsComment"/>
       <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
       <itemData name="Brackets"    defStyleNum="dsNormal" color="#0000ff" selColor="#00ff00" bold="1" italic="0"/>
diff --git a/xml/context.xml b/xml/context.xml
new file mode 100644
--- /dev/null
+++ b/xml/context.xml
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language
+[
+	<!-- The characters ! ? @ are "internal" or system macros, normally not usable, in general: user macros are just letters, see
+	https://wiki.contextgarden.net/System_Macros/Scratch_Variables and https://www.mail-archive.com/ntg-context@ntg.nl/msg87737.html
+	In practice any non-special character works, though english characters should be used, except for one character macros, they use any symbol -->
+	<!ENTITY macro      "\\([[:alpha:]]+|[[:graph:]])">
+]>
+<language
+	name="ConTeXt"
+	version="12"
+	section="Markup"
+	kateversion="5.79"
+	priority="9"
+	extensions="*.ctx;*.mkiv;*.mkvi;*.mkxl;*.mklx"
+	mimetype="text/x-tex"
+	casesensitive="1"
+	author="Philipp A. (flying-sheep@web.de)"
+	license="GPL"
+>
+	<highlighting>
+		<list name="titles">
+			<item>\part</item>
+			<item>\chapter</item>
+			<item>\section</item>
+			<item>\subsection</item>
+			<item>\subsubsection</item>
+			<item>\subsubsubsection</item>
+			<item>\subsubsubsubsection</item>
+			<item>\title</item>
+			<item>\subject</item>
+			<item>\subsubject</item>
+			<item>\subsubsubject</item>
+			<item>\subsubsubsubject</item>
+			<item>\subsubsubsubsubject</item>
+		</list>
+		<list name="mathMacros">
+			<item>\m</item>
+			<item>\math</item>
+			<item>\mathematics</item>
+			<item>\formula</item>
+		</list>
+		<list name="startEnvironments">
+			<item>\bTABLEhead</item>
+			<item>\bTABLEnext</item>
+			<item>\bTABLEbody</item>
+			<item>\bTABLEfoot</item>
+			<item>\bTABLE</item>
+			<item>\bTR</item>
+			<item>\bTD</item>
+		</list>
+		<list name="stopEnvironments">
+			<item>\eTABLEhead</item>
+			<item>\eTABLEnext</item>
+			<item>\eTABLEbody</item>
+			<item>\eTABLEfoot</item>
+			<item>\eTABLE</item>
+			<item>\eTR</item>
+			<item>\eTD</item>
+		</list>
+		<list name="startMetaPost">
+			<item>\startMPinclusions</item>
+			<item>\startuseMPgraphic</item>
+			<item>\startreusableMPgraphic</item>
+			<item>\startstaticMPfigure</item>
+			<item>\startuniqueMPgraphic</item>
+			<item>\startMPpage</item>
+			<item>\startMPcode</item>
+			<item>\startMP</item>
+		</list>
+		<list name="stopMetaPost">
+			<item>\stopMPinclusions</item>
+			<item>\stopuseMPgraphic</item>
+			<item>\stopreusableMPgraphic</item>
+			<item>\stopstaticMPfigure</item>
+			<item>\stopuniqueMPgraphic</item>
+			<item>\stopMPpage</item>
+			<item>\stopMPcode</item>
+			<item>\stopMP</item>
+		</list>
+
+		<contexts>
+			<!-- Normal text -->
+			<context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
+				<keyword      String="titles"        attribute="Section" context="#stay"/>
+				<Detect2Chars char="$" char1="$"     attribute="Block" context="MathModeDisplay"/>
+				<DetectChar   char="$"               attribute="Block" context="MathMode"/>
+				<keyword      String="mathMacros"    attribute="Block" context="MathModeMacroFind"/>
+				<StringDetect String="\startformula" attribute="Block" context="MathModeFormula" beginRegion="mathModeBlock"/>
+				<StringDetect String="\starttyping"  attribute="Block" context="Verbatim"        beginRegion="typingBlock"/>
+				<StringDetect String="\startluacode" attribute="Block" context="LuaCode"         beginRegion="luaBlock"/>
+				<StringDetect String="\startLUA"     attribute="Block" context="LuaCode"         beginRegion="luaBlock"/>
+				<StringDetect String="\startXML"     attribute="Block" context="XmlCode"         beginRegion="xmlBlock"/>
+				<keyword      String="startMetaPost" attribute="Block" context="MetaPostCode"    beginRegion="metaPostBlock"/>
+				<IncludeRules context="Common"/>
+			</context>
+
+			<!-- Comment -->
+			<context name="Comment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="##Comments"/>
+			</context>
+
+			<!-- Math Modes -->
+			<context name="MathMode" attribute="Math" lineEndContext="#stay">
+				<DetectChar   char="$"               attribute="Block" context="#pop"/>
+				<StringDetect String="\stopformula"  attribute="Error" context="#stay" />
+				<IncludeRules context="MathModeCommon"/>
+			</context>
+			<context name="MathModeMacroFind" attribute="Math" lineEndContext="#stay">
+				<DetectChar   char="{"             attribute="Brace" context="#pop!MathModeMacro"/>
+				<RegExpr      String="&macro;"     attribute="Macro" context="#pop"/> <!-- Single token -->
+				<RegExpr      String="[[:graph:]]" attribute="Math"  context="#pop"/> <!-- Single token -->
+			</context>
+			<context name="MathModeMacro" attribute="Math" lineEndContext="#stay">
+				<DetectChar   char="{"               attribute="Brace" context="MathModeMacro"/>
+				<DetectChar   char="}"               attribute="Brace" context="#pop"/>
+				<DetectChar   char="$"               attribute="Error" context="#stay"/>
+				<StringDetect String="\stopformula"  attribute="Error" context="#stay"/>
+				<IncludeRules context="MathModeCommon"/>
+			</context>
+			<context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">
+				<Detect2Chars char="$" char1="$"     attribute="Block" context="#pop"/>
+				<DetectChar   char="$"               attribute="Error" context="#stay"/>
+				<StringDetect String="\stopformula"  attribute="Error" context="#stay"/>
+				<IncludeRules context="MathModeCommon"/>
+			</context>
+			<context name="MathModeFormula" attribute="Math" lineEndContext="#stay">
+				<DetectChar   char="$"               attribute="Error" context="#stay"/>
+				<StringDetect String="\stopformula"  attribute="Block" context="#pop" endRegion="mathModeBlock"/>
+				<IncludeRules context="MathModeCommon"/>
+			</context>
+			<context name="MathModeCommon" attribute="Error" lineEndContext="#stay">
+				<AnyChar      String="^_"            attribute="Brace" context="#stay"/>
+				<StringDetect String="\startformula" attribute="Error" context="#stay"/>
+				<StringDetect String="\text"         attribute="Block" context="MathModeTextFind"/>
+				<IncludeRules context="Common"/>
+			</context>
+			<!--Math text-->
+			<context name="MathModeTextFind" attribute="Normal Text" lineEndContext="#stay" >
+				<DetectChar char="{" attribute="Brace" context="#pop!MathModeText"/>
+			</context>
+			<context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" >
+				<DetectChar char="{" attribute="Brace" context="MathModeText"/>
+				<DetectChar char="}" attribute="Brace" context="#pop"/>
+				<IncludeRules context="Normal Text"/>
+			</context>
+
+			<!--Verbatim TODO: \startC support-->
+			<context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">
+				<StringDetect String="\starttyping" attribute="Verbatim" context="NestedVerbatim"/>
+				<StringDetect String="\stoptyping"  attribute="Block"    context="#pop" endRegion="typingBlock"/>
+			</context>
+
+			<context name="NestedVerbatim" attribute="Verbatim" lineEndContext="#stay">
+				<StringDetect String="\starttyping" attribute="Verbatim" context="NestedVerbatim"/>
+				<StringDetect String="\stoptyping"  attribute="Verbatim" context="#pop"/>
+			</context>
+
+			<context name="MetaPostCode" attribute="Normal Text" lineEndContext="#stay">
+				<keyword      String="stopMetaPost" attribute="Block" context="#pop" endRegion="metaPostBlock"/>
+				<IncludeRules context="##Metapost/Metafont"/>
+			</context>
+
+			<context name="LuaCode" attribute="Normal Text" lineEndContext="#stay">
+				<StringDetect String="\stopluacode" attribute="Block" context="#pop" endRegion="luaBlock"/>
+				<StringDetect String="\stopLUA"     attribute="Block" context="#pop" endRegion="luaBlock"/>
+				<IncludeRules context="##Lua"/>
+			</context>
+
+			<context name="XmlCode" attribute="Normal Text" lineEndContext="#stay">
+				<StringDetect String="\stopXML"     attribute="Block" context="#pop" endRegion="xmlBlock"/>
+				<IncludeRules context="##XML"/>
+			</context>
+
+			<!--Common-->
+			<context name="Common" attribute="Error" lineEndContext="#stay">
+				<DetectChar char="%"                    attribute="Comment" context="Comment"/>
+				<RegExpr String="\\start(?:[a-zA-Z_]+)" attribute="Block" context="#stay" beginRegion="block"/>
+				<RegExpr String="\\stop(?:[a-zA-Z_]+)"  attribute="Block" context="#stay" endRegion="block"/>
+				<keyword String="startEnvironments"     attribute="Block" context="#stay" beginRegion="block"/>
+				<keyword String="stopEnvironments"      attribute="Block" context="#stay" endRegion="block"/>
+				<RegExpr String="&macro;"               attribute="Macro" context="#stay"/>
+				<DetectChar char="{"                    attribute="Brace" context="#stay" beginRegion="block"/>
+				<DetectChar char="}"                    attribute="Brace" context="#stay" endRegion="block"/>
+			</context>
+		</contexts>
+
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal"                            /><!--(Hi, I’m text)-->
+			<itemData name="Comment"     defStyleNum="dsComment"                           /><!--(%Comment)-->
+			<itemData name="Section"     defStyleNum="dsKeyword"                           /><!--\section{(Fancy!)}-->
+			<itemData name="Brace"       defStyleNum="dsChar"         spellChecking="false"/><!--({})-->
+			<itemData name="Math"        defStyleNum="dsOthers"       spellChecking="false"/><!--($5$)-->
+			<itemData name="Macro"       defStyleNum="dsFunction"     spellChecking="false"/><!--(\foo)-->
+			<itemData name="Block"       defStyleNum="dsRegionMarker" spellChecking="false"/><!--\start(bar), \stop(bar)-->
+			<itemData name="Error"       defStyleNum="dsError"        spellChecking="false"/><!--$($$)-->
+			<itemData name="Verbatim"    defStyleNum="dsString"       spellChecking="false"/><!--\starttyping(eggs)\stoptyping, \definetyping[C] \startC(umm…)\stopC-->
+		</itemDatas>
+	</highlighting>
+
+	<general>
+		<keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
+		<comments>
+			<comment name="singleLine" start="%" />
+		</comments>
+		<spellchecking>
+			<encodings>
+				<encoding string="''" />
+			</encodings>
+		</spellchecking>
+	</general>
+</language>
+
+<!-- kate: space-indent off; indent-width 4; -->
diff --git a/xml/cpp.xml b/xml/cpp.xml
--- a/xml/cpp.xml
+++ b/xml/cpp.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY space " ">
     <!ENTITY separators ",&#59;">
@@ -10,13 +10,14 @@
   -->
 <language
     name="C++"
+    alternativeNames="CPP"
     section="Sources"
-    version="13"
-    kateversion="5.0"
+    version="21"
+    kateversion="5.79"
     indenter="cstyle"
     style="C++"
     mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
-    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.inl;*.ino;*.pde;*.moc"
+    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.inl;*.pde;*.moc;*.mpp;*.ixx;*.cppm;*.cxxm;*.c++m;*.ccm"
     author="Alex Turbov (i.zaufi@gmail.com)"
     license="LGPL"
     priority="9"
@@ -50,11 +51,16 @@
     <item>Q_EMIT</item>
     <item>Q_ENUM</item>
     <item>Q_ENUMS</item>
+    <item>Q_ENUM_NS</item>
     <item>Q_FLAG</item>
     <item>Q_FLAGS</item>
+    <item>Q_FLAG_NS</item>
     <item>Q_GADGET</item>
+    <item>Q_GADGET_EXPORT</item>
     <item>Q_INTERFACES</item>
     <item>Q_INVOKABLE</item>
+    <item>Q_NAMESPACE</item>
+    <item>Q_NAMESPACE_EXPORT</item>
     <item>Q_OBJECT</item>
     <item>Q_PROPERTY</item>
     <item>Q_REVISION</item>
@@ -115,9 +121,6 @@
     <item>QAXTYPE</item>
     <!-- http://doc.qt.io/qt-5/qdesignercustomwidgetinterface.html#macros -->
     <item>QDESIGNER_WIDGET_EXPORT</item>
-    <!-- http://doc.qt.io/qt-5/qqmlengine.html#macros -->
-    <item>QML_DECLARE_TYPE</item>
-    <item>QML_DECLARE_TYPEINFO</item>
     <!-- http://doc.qt.io/qt-5/qmetaobject.html#macros -->
     <item>Q_ARG</item>
     <item>Q_RETURN_ARG</item>
@@ -360,7 +363,6 @@
     <item>Q_DECL_RELAXED_CONSTEXPR</item>
     <item>Q_DESTRUCTOR_FUNCTION</item>
     <item>Q_DESTRUCTOR_FUNCTION0</item>
-    <item>Q_DISABLE_COPY</item>
     <item>Q_DUMMY_COMPARISON_OPERATOR</item>
     <item>Q_FALLTHROUGH</item>
     <item>Q_FOREACH</item>
@@ -458,6 +460,31 @@
     <item>Q_MOVABLE_TYPE</item>
     <item>Q_DUMMY_TYPE</item>
     <item>Q_RELOCATABLE_TYPE</item>
+    <!-- http://doc.qt.io/qt-5/qqmlengine.html#macros -->
+    <!--https://doc.qt.io/qt-6/qqmlengine.html#macros-->
+    <!-- https://doc.qt.io/qt-6/qqmlintegration-h.html#macros -->
+    <item>QML_ADDED_IN_MINOR_VERSION</item>
+    <item>QML_ANONYMOUS</item>
+    <item>QML_ATTACHED</item>
+    <item>QML_CONSTRUCTIBLE_VALUE</item>
+    <item>QML_DECLARE_TYPE</item>
+    <item>QML_DECLARE_TYPEINFO</item>
+    <item>QML_ELEMENT</item>
+    <item>QML_EXTENDED</item>
+    <item>QML_EXTENDED_NAMESPACE</item>
+    <item>QML_EXTRA_VERSION</item>
+    <item>QML_FOREIGN</item>
+    <item>QML_FOREIGN_NAMESPACE</item>
+    <item>QML_IMPLEMENTS_INTERFACES</item>
+    <item>QML_INTERFACE</item>
+    <item>QML_NAMED_ELEMENT</item>
+    <item>QML_REMOVED_IN_MINOR_VERSION</item>
+    <item>QML_SEQUENTIAL_CONTAINER</item>
+    <item>QML_SINGLETON</item>
+    <item>QML_STRUCTURED_VALUE</item>
+    <item>QML_UNAVAILABLE</item>
+    <item>QML_UNCREATABLE</item>
+    <item>QML_VALUE_TYPE</item>
   </list>
 
   <list name="QtFunc">
@@ -566,7 +593,6 @@
     <item>qRed</item>
     <item>qRgb</item>
     <item>qRgba</item>
-    <item>qRgba</item>
     <item>qRgba64</item>
     <item>qUnpremultiply</item>
     <!-- http://doc.qt.io/qt-5/qcoreapplication.html#related-non-members -->
@@ -635,13 +661,17 @@
   <list name="QtClasses">
     <!-- Extracted with regular expression  Q[A-Z0-9][A-Za-z0-9]*  -->
     <item>Q3DBars</item>
+    <item>Q3DBarsWidgetItem</item>
     <item>Q3DCamera</item>
+    <item>Q3DGraphsWidgetItem</item>
     <item>Q3DInputHandler</item>
     <item>Q3DLight</item>
     <item>Q3DObject</item>
     <item>Q3DScatter</item>
+    <item>Q3DScatterWidgetItem</item>
     <item>Q3DScene</item>
     <item>Q3DSurface</item>
+    <item>Q3DSurfaceWidgetItem</item>
     <item>Q3DTheme</item>
     <item>QAbstract3DAxis</item>
     <item>QAbstract3DGraph</item>
@@ -649,7 +679,6 @@
     <item>QAbstract3DSeries</item>
     <item>QAbstractActionInput</item>
     <item>QAbstractAnimation</item>
-    <item>QAbstractAnimation</item>
     <item>QAbstractAnimationClip</item>
     <item>QAbstractAspect</item>
     <item>QAbstractAudioDeviceInfo</item>
@@ -664,13 +693,19 @@
     <item>QAbstractClipBlendNode</item>
     <item>QAbstractDataProxy</item>
     <item>QAbstractEventDispatcher</item>
+    <item>QAbstractEventDispatcherV2</item>
     <item>QAbstractExtensionFactory</item>
     <item>QAbstractExtensionManager</item>
+    <item>QAbstractFileIconProvider</item>
     <item>QAbstractFormBuilder</item>
     <item>QAbstractFunctor</item>
     <item>QAbstractGraphicsShapeItem</item>
+    <item>QAbstractGrpcChannel</item>
+    <item>QAbstractGrpcClient</item>
+    <item>QAbstractHttpServer</item>
     <item>QAbstractItemDelegate</item>
     <item>QAbstractItemModel</item>
+    <item>QAbstractItemModelReplica</item>
     <item>QAbstractItemModelTester</item>
     <item>QAbstractItemView</item>
     <item>QAbstractLight</item>
@@ -686,6 +721,7 @@
     <item>QAbstractPhysicalDeviceProxy</item>
     <item>QAbstractPlanarVideoBuffer</item>
     <item>QAbstractPrintDialog</item>
+    <item>QAbstractProtobufSerializer</item>
     <item>QAbstractProxyModel</item>
     <item>QAbstractRayCaster</item>
     <item>QAbstractScrollArea</item>
@@ -709,13 +745,17 @@
     <item>QAccelerometer</item>
     <item>QAccelerometerFilter</item>
     <item>QAccelerometerReading</item>
+    <item>QAccessibilityHints</item>
     <item>QAccessible</item>
     <item>QAccessibleActionInterface</item>
+    <item>QAccessibleAnnouncementEvent</item>
+    <item>QAccessibleAttributesInterface</item>
     <item>QAccessibleEditableTextInterface</item>
     <item>QAccessibleEvent</item>
     <item>QAccessibleInterface</item>
     <item>QAccessibleObject</item>
     <item>QAccessiblePlugin</item>
+    <item>QAccessibleSelectionInterface</item>
     <item>QAccessibleStateChangeEvent</item>
     <item>QAccessibleTableCellInterface</item>
     <item>QAccessibleTableInterface</item>
@@ -730,11 +770,11 @@
     <item>QAccessibleValueInterface</item>
     <item>QAccessibleWidget</item>
     <item>QAction</item>
-    <item>QAction</item>
     <item>QActionEvent</item>
     <item>QActionGroup</item>
     <item>QActionInput</item>
     <item>QAdditiveClipBlend</item>
+    <item>QAdoptSharedDataTag</item>
     <item>QAlphaCoverage</item>
     <item>QAlphaTest</item>
     <item>QAltimeter</item>
@@ -743,17 +783,21 @@
     <item>QAmbientLightFilter</item>
     <item>QAmbientLightReading</item>
     <item>QAmbientLightSensor</item>
+    <item>QAmbientSound</item>
     <item>QAmbientTemperatureFilter</item>
     <item>QAmbientTemperatureReading</item>
     <item>QAmbientTemperatureSensor</item>
     <item>QAnalogAxisInput</item>
     <item>QAndroidActivityResultReceiver</item>
+    <item>QAndroidApplication</item>
     <item>QAndroidBinder</item>
     <item>QAndroidIntent</item>
     <item>QAndroidJniEnvironment</item>
     <item>QAndroidJniExceptionCleaner</item>
     <item>QAndroidJniObject</item>
+    <item>QAndroidOffscreenSurface</item>
     <item>QAndroidParcel</item>
+    <item>QAndroidScreen</item>
     <item>QAndroidService</item>
     <item>QAndroidServiceConnection</item>
     <item>QAnimationAspect</item>
@@ -763,7 +807,7 @@
     <item>QAnimationClipLoader</item>
     <item>QAnimationController</item>
     <item>QAnimationGroup</item>
-    <item>QAnimationGroup</item>
+    <item>QAnyStringView</item>
     <item>QApplication</item>
     <item>QAreaLegendMarker</item>
     <item>QAreaSeries</item>
@@ -774,31 +818,43 @@
     <item>QAtomicInt</item>
     <item>QAtomicInteger</item>
     <item>QAtomicPointer</item>
+    <item>QAtomicScopedValueRollback</item>
     <item>QAttribute</item>
     <item>QAudioBuffer</item>
+    <item>QAudioBufferInput</item>
+    <item>QAudioBufferOutput</item>
     <item>QAudioDecoder</item>
     <item>QAudioDecoderControl</item>
+    <item>QAudioDevice</item>
     <item>QAudioDeviceInfo</item>
     <item>QAudioEncoderSettings</item>
     <item>QAudioEncoderSettingsControl</item>
+    <item>QAudioEngine</item>
     <item>QAudioFormat</item>
     <item>QAudioInput</item>
     <item>QAudioInputSelectorControl</item>
+    <item>QAudioListener</item>
     <item>QAudioOutput</item>
     <item>QAudioOutputSelectorControl</item>
     <item>QAudioProbe</item>
     <item>QAudioRecorder</item>
     <item>QAudioRoleControl</item>
+    <item>QAudioRoom</item>
+    <item>QAudioSink</item>
+    <item>QAudioSource</item>
     <item>QAudioSystemPlugin</item>
     <item>QAuthenticator</item>
     <item>QAxAggregated</item>
     <item>QAxBase</item>
+    <item>QAxBaseObject</item>
+    <item>QAxBaseWidget</item>
     <item>QAxBindable</item>
     <item>QAxFactory</item>
     <item>QAxis</item>
     <item>QAxisAccumulator</item>
     <item>QAxisSetting</item>
     <item>QAxObject</item>
+    <item>QAxObjectInterface</item>
     <item>QAxScript</item>
     <item>QAxScriptEngine</item>
     <item>QAxScriptManager</item>
@@ -812,10 +868,13 @@
     <item>QBarDataItem</item>
     <item>QBarDataProxy</item>
     <item>QBarLegendMarker</item>
+    <item>QBarModelMapper</item>
     <item>QBarSeries</item>
     <item>QBarSet</item>
+    <item>QBaseIterator</item>
     <item>QBasicTimer</item>
     <item>QBEInteger</item>
+    <item>QBindable</item>
     <item>QBitArray</item>
     <item>QBitmap</item>
     <item>QBlendedClipAnimator</item>
@@ -827,6 +886,7 @@
     <item>QBluetoothDeviceInfo</item>
     <item>QBluetoothHostInfo</item>
     <item>QBluetoothLocalDevice</item>
+    <item>QBluetoothPermission</item>
     <item>QBluetoothServer</item>
     <item>QBluetoothServiceDiscoveryAgent</item>
     <item>QBluetoothServiceInfo</item>
@@ -835,13 +895,13 @@
     <item>QBluetoothTransferReply</item>
     <item>QBluetoothTransferRequest</item>
     <item>QBluetoothUuid</item>
+    <item>QBoundingVolume</item>
     <item>QBoxLayout</item>
     <item>QBoxPlotLegendMarker</item>
     <item>QBoxPlotSeries</item>
     <item>QBoxSet</item>
     <item>QBrush</item>
     <item>QBuffer</item>
-    <item>QBuffer</item>
     <item>QBufferCapture</item>
     <item>QBufferDataGenerator</item>
     <item>QButtonAxisInput</item>
@@ -849,15 +909,17 @@
     <item>QByteArray</item>
     <item>QByteArrayList</item>
     <item>QByteArrayMatcher</item>
+    <item>QByteArrayView</item>
     <item>QCache</item>
     <item>QCalendar</item>
+    <item>QCalendarPermission</item>
     <item>QCalendarWidget</item>
     <item>QCallbackMapping</item>
     <item>QCamera</item>
-    <item>QCamera</item>
     <item>QCameraCaptureBufferFormatControl</item>
     <item>QCameraCaptureDestinationControl</item>
     <item>QCameraControl</item>
+    <item>QCameraDevice</item>
     <item>QCameraExposure</item>
     <item>QCameraExposureControl</item>
     <item>QCameraFeedbackControl</item>
@@ -865,6 +927,7 @@
     <item>QCameraFocus</item>
     <item>QCameraFocusControl</item>
     <item>QCameraFocusZone</item>
+    <item>QCameraFormat</item>
     <item>QCameraImageCapture</item>
     <item>QCameraImageCaptureControl</item>
     <item>QCameraImageProcessing</item>
@@ -873,6 +936,7 @@
     <item>QCameraInfoControl</item>
     <item>QCameraLens</item>
     <item>QCameraLocksControl</item>
+    <item>QCameraPermission</item>
     <item>QCameraSelector</item>
     <item>QCameraViewfinderSettings</item>
     <item>QCameraViewfinderSettingsControl</item>
@@ -884,10 +948,16 @@
     <item>QCanBusFactory</item>
     <item>QCanBusFactoryV2</item>
     <item>QCanBusFrame</item>
+    <item>QCanDbcFileParser</item>
     <item>QCandlestickLegendMarker</item>
     <item>QCandlestickModelMapper</item>
     <item>QCandlestickSeries</item>
     <item>QCandlestickSet</item>
+    <item>QCanFrameProcessor</item>
+    <item>QCanMessageDescription</item>
+    <item>QCanSignalDescription</item>
+    <item>QCanUniqueIdDescription</item>
+    <item>QCapturableWindow</item>
     <item>QCategory3DAxis</item>
     <item>QCategoryAxis</item>
     <item>QCborArray</item>
@@ -906,6 +976,8 @@
     <item>QChartView</item>
     <item>QCheckBox</item>
     <item>QChildEvent</item>
+    <item>QChildWindowEvent</item>
+    <item>QChronoTimer</item>
     <item>QClearBuffers</item>
     <item>QClipAnimator</item>
     <item>QClipBlendNodeCreatedChangeBase</item>
@@ -913,11 +985,22 @@
     <item>QClipboard</item>
     <item>QClipPlane</item>
     <item>QCloseEvent</item>
+    <item>QCoapClient</item>
+    <item>QCoapMessage</item>
+    <item>QCoapOption</item>
+    <item>QCoapPrivateKey</item>
+    <item>QCoapReply</item>
+    <item>QCoapRequest</item>
+    <item>QCoapResource</item>
+    <item>QCoapResourceDiscoveryReply</item>
+    <item>QCoapSecurityConfiguration</item>
+    <item>QCocoaGLContext</item>
     <item>QCocoaNativeContext</item>
     <item>QCocoaWindowFunctions</item>
     <item>QCollator</item>
     <item>QCollatorSortKey</item>
     <item>QColor</item>
+    <item>QColorAxis</item>
     <item>QColorDialog</item>
     <item>QColormap</item>
     <item>QColorMask</item>
@@ -940,13 +1023,18 @@
     <item>QComputeCommand</item>
     <item>QConcatenateTablesProxyModel</item>
     <item>QConeGeometry</item>
+    <item>QConeGeometryView</item>
     <item>QConeMesh</item>
     <item>QConicalGradient</item>
+    <item>QConstIterator</item>
+    <item>QContactsPermission</item>
     <item>QContextMenuEvent</item>
     <item>QContiguousCache</item>
     <item>QCoreApplication</item>
+    <item>QCoreSettings</item>
     <item>QCryptographicHash</item>
     <item>QCuboidGeometry</item>
+    <item>QCuboidGeometryView</item>
     <item>QCuboidMesh</item>
     <item>QCullFace</item>
     <item>QCursor</item>
@@ -955,6 +1043,7 @@
     <item>QCustom3DVolume</item>
     <item>QCustomAudioRoleControl</item>
     <item>QCylinderGeometry</item>
+    <item>QCylinderGeometryView</item>
     <item>QCylinderMesh</item>
     <item>QDataStream</item>
     <item>QDataWidgetMapper</item>
@@ -985,6 +1074,7 @@
     <item>QDBusVirtualObject</item>
     <item>QDeadlineTimer</item>
     <item>QDebug</item>
+    <item>QDebugOverlay</item>
     <item>QDebugStateSaver</item>
     <item>QDepthRange</item>
     <item>QDepthTest</item>
@@ -1014,6 +1104,7 @@
     <item>QDir</item>
     <item>QDirectionalLight</item>
     <item>QDirIterator</item>
+    <item>QDirListing</item>
     <item>QDirModel</item>
     <item>QDispatchCompute</item>
     <item>QDistanceFilter</item>
@@ -1026,6 +1117,7 @@
     <item>QDnsMailExchangeRecord</item>
     <item>QDnsServiceRecord</item>
     <item>QDnsTextRecord</item>
+    <item>QDnsTlsAssociationRecord</item>
     <item>QDockWidget</item>
     <item>QDomAttr</item>
     <item>QDomCDATASection</item>
@@ -1058,6 +1150,7 @@
     <item>QEasingCurve</item>
     <item>QEffect</item>
     <item>QEglFSFunctions</item>
+    <item>QEGLContext</item>
     <item>QEGLNativeContext</item>
     <item>QElapsedTimer</item>
     <item>QEnableSharedFromThis</item>
@@ -1068,6 +1161,7 @@
     <item>QEvent</item>
     <item>QEventLoop</item>
     <item>QEventLoopLocker</item>
+    <item>QEventPoint</item>
     <item>QEventTransition</item>
     <item>QException</item>
     <item>QExplicitlySharedDataPointer</item>
@@ -1100,7 +1194,10 @@
     <item>QFontInfo</item>
     <item>QFontMetrics</item>
     <item>QFontMetricsF</item>
+    <item>QFontVariableAxis</item>
     <item>QFormBuilder</item>
+    <item>QFormDataBuilder</item>
+    <item>QFormDataPartBuilder</item>
     <item>QFormLayout</item>
     <item>QForwardRenderer</item>
     <item>QFrame</item>
@@ -1134,6 +1231,7 @@
     <item>QGeoManeuver</item>
     <item>QGeometry</item>
     <item>QGeometryRenderer</item>
+    <item>QGeometryView</item>
     <item>QGeoPath</item>
     <item>QGeoPolygon</item>
     <item>QGeoPositionInfo</item>
@@ -1169,6 +1267,7 @@
     <item>QGLShader</item>
     <item>QGLShaderProgram</item>
     <item>QGLWidget</item>
+    <item>QGLXContext</item>
     <item>QGLXNativeContext</item>
     <item>QGlyphRun</item>
     <item>QGoochMaterial</item>
@@ -1212,17 +1311,39 @@
     <item>QGraphicsSvgItem</item>
     <item>QGraphicsTextItem</item>
     <item>QGraphicsTransform</item>
+    <item>QGraphicsVideoItem</item>
     <item>QGraphicsView</item>
     <item>QGraphicsWidget</item>
+    <item>QGraphTheme</item>
+    <item>QGraphsTheme</item>
     <item>QGregorianCalendar</item>
     <item>QGridLayout</item>
     <item>QGroupBox</item>
+    <item>QGrpcBidiStream</item>
+    <item>QGrpcBidirStream</item>
+    <item>QGrpcCallOptions</item>
+    <item>QGrpcCallReply</item>
+    <item>QGrpcChannel</item>
+    <item>QGrpcChannelOperation</item>
+    <item>QGrpcChannelOptions</item>
+    <item>QGrpcClientBase</item>
+    <item>QGrpcClientInterceptor</item>
+    <item>QGrpcClientInterceptorManager</item>
+    <item>QGrpcClientStream</item>
+    <item>QGrpcHttp2Channel</item>
+    <item>QGrpcInterceptorContinuation</item>
+    <item>QGrpcOperation</item>
+    <item>QGrpcOperationContext</item>
+    <item>QGrpcSerializationFormat</item>
+    <item>QGrpcServerStream</item>
+    <item>QGrpcStatus</item>
     <item>QGuiApplication</item>
     <item>QGyroscope</item>
     <item>QGyroscopeFilter</item>
     <item>QGyroscopeReading</item>
     <item>QHash</item>
     <item>QHashIterator</item>
+    <item>QHashSeed</item>
     <item>QHBarModelMapper</item>
     <item>QHBoxLayout</item>
     <item>QHBoxPlotModelMapper</item>
@@ -1242,6 +1363,7 @@
     <item>QHelpIndexWidget</item>
     <item>QHelpLink</item>
     <item>QHelpSearchEngine</item>
+    <item>QHelpSearchEngineCore</item>
     <item>QHelpSearchQuery</item>
     <item>QHelpSearchQueryWidget</item>
     <item>QHelpSearchResult</item>
@@ -1259,9 +1381,19 @@
     <item>QHoverEvent</item>
     <item>QHPieModelMapper</item>
     <item>QHstsPolicy</item>
+    <item>QHttp1Configuration</item>
     <item>QHttp2Configuration</item>
+    <item>QHttpHeaders</item>
     <item>QHttpMultiPart</item>
     <item>QHttpPart</item>
+    <item>QHttpServer</item>
+    <item>QHttpServerConfiguration</item>
+    <item>QHttpServerRequest</item>
+    <item>QHttpServerResponder</item>
+    <item>QHttpServerResponse</item>
+    <item>QHttpServerRouter</item>
+    <item>QHttpServerRouterRule</item>
+    <item>QHttpServerWebSocketUpgradeResponse</item>
     <item>QHumidityFilter</item>
     <item>QHumidityReading</item>
     <item>QHumiditySensor</item>
@@ -1272,6 +1404,7 @@
     <item>QIconEnginePlugin</item>
     <item>QIdentityProxyModel</item>
     <item>QImage</item>
+    <item>QImageCapture</item>
     <item>QImageEncoderControl</item>
     <item>QImageEncoderSettings</item>
     <item>QImageIOHandler</item>
@@ -1283,6 +1416,7 @@
     <item>QInAppTransaction</item>
     <item>QInputAspect</item>
     <item>QInputChord</item>
+    <item>QInputDevice</item>
     <item>QInputDeviceIntegration</item>
     <item>QInputDialog</item>
     <item>QInputEvent</item>
@@ -1293,6 +1427,7 @@
     <item>QInputSettings</item>
     <item>QIntValidator</item>
     <item>QIODevice</item>
+    <item>QIODeviceBase</item>
     <item>QIRProximityFilter</item>
     <item>QIRProximityReading</item>
     <item>QIRProximitySensor</item>
@@ -1306,20 +1441,30 @@
     <item>QItemSelection</item>
     <item>QItemSelectionModel</item>
     <item>QItemSelectionRange</item>
+    <item>QIterable</item>
+    <item>QIterator</item>
     <item>QJalaliCalendar</item>
+    <item>QJniArray</item>
+    <item>QJniArrayBase</item>
+    <item>QJniEnvironment</item>
+    <item>QJniObject</item>
     <item>QJoint</item>
     <item>QJSEngine</item>
+    <item>QJSManagedValue</item>
     <item>QJsonArray</item>
     <item>QJsonDocument</item>
     <item>QJsonObject</item>
     <item>QJsonParseError</item>
     <item>QJsonValue</item>
+    <item>QJSPrimitiveNull</item>
+    <item>QJSPrimitiveUndefined</item>
+    <item>QJSPrimitiveValue</item>
     <item>QJSValue</item>
     <item>QJSValueIterator</item>
     <item>QJulianCalendar</item>
     <item>QKeyboardDevice</item>
     <item>QKeyboardHandler</item>
-    <item>QKeyEvent</item>
+    <item>QKeyCombination</item>
     <item>QKeyEvent</item>
     <item>QKeyEventTransition</item>
     <item>QKeyFrame</item>
@@ -1330,12 +1475,15 @@
     <item>QLabel</item>
     <item>QLatin1Char</item>
     <item>QLatin1String</item>
+    <item>QLatin1StringMatcher</item>
+    <item>QLatin1StringView</item>
     <item>QLayer</item>
     <item>QLayerFilter</item>
     <item>QLayout</item>
     <item>QLayoutItem</item>
     <item>QLCDNumber</item>
     <item>QLegend</item>
+    <item>QLegendData</item>
     <item>QLegendMarker</item>
     <item>QLEInteger</item>
     <item>QLerpClipBlend</item>
@@ -1367,6 +1515,7 @@
     <item>QLocale</item>
     <item>QLocalServer</item>
     <item>QLocalSocket</item>
+    <item>QLocationPermission</item>
     <item>QLockFile</item>
     <item>QLoggingCategory</item>
     <item>QLogicalDevice</item>
@@ -1405,10 +1554,14 @@
     <item>QMediaAudioProbeControl</item>
     <item>QMediaAvailabilityControl</item>
     <item>QMediaBindableInterface</item>
+    <item>QMediaCaptureSession</item>
     <item>QMediaContainerControl</item>
     <item>QMediaContent</item>
     <item>QMediaControl</item>
+    <item>QMediaDevices</item>
+    <item>QMediaFormat</item>
     <item>QMediaGaplessPlaybackControl</item>
+    <item>QMediaMetaData</item>
     <item>QMediaNetworkAccessControl</item>
     <item>QMediaObject</item>
     <item>QMediaPlayer</item>
@@ -1437,6 +1590,7 @@
     <item>QMessageLogContext</item>
     <item>QMessageLogger</item>
     <item>QMetaClassInfo</item>
+    <item>QMetaContainer</item>
     <item>QMetaDataReaderControl</item>
     <item>QMetaDataWriterControl</item>
     <item>QMetaEnum</item>
@@ -1444,7 +1598,9 @@
     <item>QMetaMethod</item>
     <item>QMetaObject</item>
     <item>QMetaProperty</item>
+    <item>QMetaSequence</item>
     <item>QMetaType</item>
+    <item>QMicrophonePermission</item>
     <item>QMilankovicCalendar</item>
     <item>QMimeData</item>
     <item>QMimeDatabase</item>
@@ -1458,37 +1614,59 @@
     <item>QModbusReply</item>
     <item>QModbusRequest</item>
     <item>QModbusResponse</item>
+    <item>QModbusRtuSerialClient</item>
     <item>QModbusRtuSerialMaster</item>
+    <item>QModbusRtuSerialServer</item>
     <item>QModbusRtuSerialSlave</item>
     <item>QModbusServer</item>
     <item>QModbusTcpClient</item>
     <item>QModbusTcpConnectionObserver</item>
     <item>QModbusTcpServer</item>
     <item>QModelIndex</item>
+    <item>QModelRoleData</item>
+    <item>QModelRoleDataSpan</item>
     <item>QMorphingAnimation</item>
     <item>QMorphPhongMaterial</item>
     <item>QMorphTarget</item>
     <item>QMouseDevice</item>
     <item>QMouseEvent</item>
-    <item>QMouseEvent</item>
     <item>QMouseEventTransition</item>
     <item>QMouseHandler</item>
     <item>QMoveEvent</item>
     <item>QMovie</item>
+    <item>QMqttAuthenticationProperties</item>
+    <item>QMqttClient</item>
+    <item>QMqttConnectionProperties</item>
+    <item>QMqttLastWillProperties</item>
+    <item>QMqttMessage</item>
+    <item>QMqttMessageStatusProperties</item>
+    <item>QMqttPublishProperties</item>
+    <item>QMqttServerConnectionProperties</item>
+    <item>QMqttStringPair</item>
+    <item>QMqttSubscription</item>
+    <item>QMqttSubscriptionProperties</item>
+    <item>QMqttTopicFilter</item>
+    <item>QMqttTopicName</item>
+    <item>QMqttUnsubscriptionProperties</item>
+    <item>QMqttUserProperties</item>
     <item>QMultiHash</item>
     <item>QMultiMap</item>
+    <item>QMultiMapIterator</item>
     <item>QMultiSampleAntiAliasing</item>
     <item>QMutableHashIterator</item>
     <item>QMutableLinkedListIterator</item>
     <item>QMutableListIterator</item>
     <item>QMutableMapIterator</item>
+    <item>QMutableMultiMapIterator</item>
     <item>QMutableSetIterator</item>
     <item>QMutableVectorIterator</item>
     <item>QMutex</item>
     <item>QMutexLocker</item>
     <item>QNativeGestureEvent</item>
+    <item>QNativeIpcKey</item>
     <item>QNdefFilter</item>
     <item>QNdefMessage</item>
+    <item>QNdefNfcIconRecord</item>
     <item>QNdefNfcSmartPosterRecord</item>
     <item>QNdefNfcTextRecord</item>
     <item>QNdefNfcUriRecord</item>
@@ -1506,14 +1684,17 @@
     <item>QNetworkCookieJar</item>
     <item>QNetworkDatagram</item>
     <item>QNetworkDiskCache</item>
+    <item>QNetworkInformation</item>
     <item>QNetworkInterface</item>
     <item>QNetworkProxy</item>
     <item>QNetworkProxyFactory</item>
     <item>QNetworkProxyQuery</item>
     <item>QNetworkReply</item>
     <item>QNetworkRequest</item>
+    <item>QNetworkRequestFactory</item>
     <item>QNetworkSession</item>
     <item>QNmeaPositionInfoSource</item>
+    <item>QNmeaSatelliteInfoSource</item>
     <item>QNode</item>
     <item>QNodeCommand</item>
     <item>QNodeCreatedChange</item>
@@ -1526,14 +1707,88 @@
     <item>QNormalDiffuseMapAlphaMaterial</item>
     <item>QNormalDiffuseMapMaterial</item>
     <item>QNormalDiffuseSpecularMapMaterial</item>
+    <item>QNtfsPermissionCheckGuard</item>
     <item>QOAuth1</item>
     <item>QOAuth1Signature</item>
     <item>QOAuth2AuthorizationCodeFlow</item>
+    <item>QOAuth2DeviceAuthorizationFlow</item>
+    <item>QOAuthHttpServerReplyHandler</item>
+    <item>QOAuthUriSchemeReplyHandler</item>
     <item>QObject</item>
+    <item>QObjectBindableProperty</item>
     <item>QObjectCleanupHandler</item>
+    <item>QObjectComputedProperty</item>
     <item>QObjectPicker</item>
     <item>QOcspResponse</item>
     <item>QOffscreenSurface</item>
+    <item>QOpcUaAddNodeItem</item>
+    <item>QOpcUaAddReferenceItem</item>
+    <item>QOpcUaApplicationDescription</item>
+    <item>QOpcUaApplicationIdentity</item>
+    <item>QOpcUaApplicationRecordDataType</item>
+    <item>QOpcUaArgument</item>
+    <item>QOpcUaAttributeOperand</item>
+    <item>QOpcUaAuthenticationInformation</item>
+    <item>QOpcUaAxisInformation</item>
+    <item>QOpcUaBinaryDataEncoding</item>
+    <item>QOpcUaBrowsePathTarget</item>
+    <item>QOpcUaBrowseRequest</item>
+    <item>QOpcUaClient</item>
+    <item>QOpcUaComplexNumber</item>
+    <item>QOpcUaConnectionSettings</item>
+    <item>QOpcUaContentFilterElement</item>
+    <item>QOpcUaContentFilterElementResult</item>
+    <item>QOpcUaDataValue</item>
+    <item>QOpcUaDeleteReferenceItem</item>
+    <item>QOpcUaDiagnosticInfo</item>
+    <item>QOpcUaDoubleComplexNumber</item>
+    <item>QOpcUaElementOperand</item>
+    <item>QOpcUaEndpointDescription</item>
+    <item>QOpcUaEnumDefinition</item>
+    <item>QOpcUaEnumField</item>
+    <item>QOpcUaErrorState</item>
+    <item>QOpcUaEUInformation</item>
+    <item>QOpcUaEventFilterResult</item>
+    <item>QOpcUaExpandedNodeId</item>
+    <item>QOpcUaExtensionObject</item>
+    <item>QOpcUaGdsClient</item>
+    <item>QOpcUaGenericStructHandler</item>
+    <item>QOpcUaGenericStructValue</item>
+    <item>QOpcUaHistoryData</item>
+    <item>QOpcUaHistoryEvent</item>
+    <item>QOpcUaHistoryReadEventRequest</item>
+    <item>QOpcUaHistoryReadRawRequest</item>
+    <item>QOpcUaHistoryReadResponse</item>
+    <item>QOpcUaKeyPair</item>
+    <item>QOpcUaLiteralOperand</item>
+    <item>QOpcUaLocalizedText</item>
+    <item>QOpcUaMonitoringParameters</item>
+    <item>QOpcUaMultiDimensionalArray</item>
+    <item>QOpcUaNode</item>
+    <item>QOpcUaNodeCreationAttributes</item>
+    <item>QOpcUaPkiConfiguration</item>
+    <item>QOpcUaProvider</item>
+    <item>QOpcUaQualifiedName</item>
+    <item>QOpcUaRange</item>
+    <item>QOpcUaReadItem</item>
+    <item>QOpcUaReadResult</item>
+    <item>QOpcUaReferenceDescription</item>
+    <item>QOpcUaRelativePathElement</item>
+    <item>QOpcUaSimpleAttributeOperand</item>
+    <item>QOpcUaStructureDefinition</item>
+    <item>QOpcUaStructureField</item>
+    <item>QOpcUaUserTokenPolicy</item>
+    <item>QOpcUaVariant</item>
+    <item>QOpcUaWriteItem</item>
+    <item>QOpcUaWriteResult</item>
+    <item>QOpcUaX509CertificateSigningRequest</item>
+    <item>QOpcUaX509DistinguishedName</item>
+    <item>QOpcUaX509Extension</item>
+    <item>QOpcUaX509ExtensionBasicConstraints</item>
+    <item>QOpcUaX509ExtensionExtendedKeyUsage</item>
+    <item>QOpcUaX509ExtensionKeyUsage</item>
+    <item>QOpcUaX509ExtensionSubjectAlternativeName</item>
+    <item>QOpcUaXValue</item>
     <item>QOpenGLBuffer</item>
     <item>QOpenGLContext</item>
     <item>QOpenGLContextGroup</item>
@@ -1578,6 +1833,7 @@
     <item>QOpenGLTextureBlitter</item>
     <item>QOpenGLTimeMonitor</item>
     <item>QOpenGLTimerQuery</item>
+    <item>QOpenGLVersionFunctionsFactory</item>
     <item>QOpenGLVersionProfile</item>
     <item>QOpenGLVertexArrayObject</item>
     <item>QOpenGLWidget</item>
@@ -1590,6 +1846,7 @@
     <item>qoutputrange</item>
     <item>QPagedPaintDevice</item>
     <item>QPageLayout</item>
+    <item>QPageRanges</item>
     <item>QPageSetupDialog</item>
     <item>QPageSize</item>
     <item>QPaintDevice</item>
@@ -1600,28 +1857,40 @@
     <item>QPainter</item>
     <item>QPainterPath</item>
     <item>QPainterPathStroker</item>
+    <item>QPainterStateGuard</item>
     <item>QPaintEvent</item>
     <item>QPair</item>
     <item>QPalette</item>
     <item>QPanGesture</item>
     <item>QParallelAnimationGroup</item>
     <item>QParameter</item>
+    <item>QPartialOrdering</item>
     <item>QPauseAnimation</item>
+    <item>QPdfBookmarkModel</item>
     <item>QPdfDestination</item>
     <item>QPdfDocument</item>
     <item>QPdfDocumentRenderOptions</item>
+    <item>QPdfLink</item>
+    <item>QPdfLinkModel</item>
+    <item>QPdfOutputIntent</item>
     <item>QPdfPageNavigation</item>
+    <item>QPdfPageNavigator</item>
     <item>QPdfPageRenderer</item>
+    <item>QPdfPageSelector</item>
+    <item>QPdfSearchModel</item>
     <item>QPdfSelection</item>
+    <item>QPdfView</item>
     <item>QPdfWriter</item>
     <item>QPen</item>
     <item>QPercentBarSeries</item>
+    <item>QPermission</item>
     <item>QPersistentModelIndex</item>
     <item>QPerVertexColorMaterial</item>
     <item>QPhongAlphaMaterial</item>
     <item>QPhongMaterial</item>
     <item>QPhysicalDeviceCreatedChangeBase</item>
     <item>QPickEvent</item>
+    <item>QPickingProxy</item>
     <item>QPickingSettings</item>
     <item>QPickLineEvent</item>
     <item>QPickPointEvent</item>
@@ -1630,6 +1899,7 @@
     <item>QPictureFormatPlugin</item>
     <item>QPictureIO</item>
     <item>QPieLegendMarker</item>
+    <item>QPieModelMapper</item>
     <item>QPieSeries</item>
     <item>QPieSlice</item>
     <item>QPinchGesture</item>
@@ -1666,12 +1936,16 @@
     <item>QPlainTextDocumentLayout</item>
     <item>QPlainTextEdit</item>
     <item>QPlaneGeometry</item>
+    <item>QPlaneGeometryView</item>
     <item>QPlaneMesh</item>
     <item>QPlatformSurfaceEvent</item>
+    <item>QPlaybackOptions</item>
     <item>QPluginLoader</item>
     <item>QPoint</item>
     <item>QPointer</item>
+    <item>QPointerEvent</item>
     <item>QPointF</item>
+    <item>QPointingDevice</item>
     <item>QPointingDeviceUniqueId</item>
     <item>QPointLight</item>
     <item>QPointSize</item>
@@ -1692,16 +1966,27 @@
     <item>QProcessEnvironment</item>
     <item>QProgressBar</item>
     <item>QProgressDialog</item>
+    <item>QPromise</item>
+    <item>QProperty</item>
     <item>QPropertyAnimation</item>
+    <item>QPropertyBindingError</item>
+    <item>QPropertyChangeHandler</item>
+    <item>QPropertyData</item>
     <item>QPropertyNodeAddedChange</item>
     <item>QPropertyNodeRemovedChange</item>
+    <item>QPropertyNotifier</item>
     <item>QPropertyUpdatedChange</item>
     <item>QPropertyUpdatedChangeBase</item>
     <item>QPropertyValueAddedChange</item>
     <item>QPropertyValueAddedChangeBase</item>
     <item>QPropertyValueRemovedChange</item>
     <item>QPropertyValueRemovedChangeBase</item>
-    <item>QProximityFilter</item>
+    <item>QProtobufBaseSerializer</item>
+    <item>QProtobufJsonSerializer</item>
+    <item>QProtobufMessage</item>
+    <item>QProtobufMessageDeleter</item>
+    <item>QProtobufRepeatedIterator</item>
+    <item>QProtobufSerializer</item>
     <item>QProximityFilter</item>
     <item>QProximityReading</item>
     <item>QProximitySensor</item>
@@ -1716,10 +2001,13 @@
     <item>QQmlEngineExtensionPlugin</item>
     <item>QQmlError</item>
     <item>QQmlExpression</item>
+    <item>QQmlExtensionPlugin</item>
+    <item>QQmlFile</item>
     <item>QQmlFileSelector</item>
     <item>QQmlImageProviderBase</item>
     <item>QQmlIncubationController</item>
     <item>QQmlIncubator</item>
+    <item>QQmlInfo</item>
     <item>QQmlListProperty</item>
     <item>QQmlListReference</item>
     <item>QQmlNdefRecord</item>
@@ -1732,16 +2020,26 @@
     <item>QQuaternion</item>
     <item>QQueue</item>
     <item>QQuick3D</item>
+    <item>QQuick3DExtensionHelpers</item>
     <item>QQuick3DGeometry</item>
+    <item>QQuick3DInstancing</item>
     <item>QQuick3DObject</item>
+    <item>QQuick3DRenderExtension</item>
+    <item>QQuick3DTextureData</item>
     <item>QQuickAsyncImageProvider</item>
+    <item>QQuickAttachedPropertyPropagator</item>
     <item>QQuickFramebufferObject</item>
+    <item>QQuickGraphicsConfiguration</item>
+    <item>QQuickGraphicsDevice</item>
     <item>QQuickImageProvider</item>
     <item>QQuickImageResponse</item>
     <item>QQuickItem</item>
     <item>QQuickItemGrabResult</item>
     <item>QQuickPaintedItem</item>
     <item>QQuickRenderControl</item>
+    <item>QQuickRenderTarget</item>
+    <item>QQuickRhiItem</item>
+    <item>QQuickRhiItemRenderer</item>
     <item>QQuickStyle</item>
     <item>QQuickTextDocument</item>
     <item>QQuickTextureFactory</item>
@@ -1758,6 +2056,7 @@
     <item>QRadioTunerControl</item>
     <item>QRandomGenerator</item>
     <item>QRandomGenerator64</item>
+    <item>QRangeModel</item>
     <item>QRasterMode</item>
     <item>QRasterPaintEngine</item>
     <item>QRasterWindow</item>
@@ -1802,7 +2101,68 @@
     <item>QRenderTargetSelector</item>
     <item>QResizeEvent</item>
     <item>QResource</item>
+    <item>QRestAccessManager</item>
+    <item>QRestReply</item>
     <item>QRgba64</item>
+    <item>QRgbaFloat</item>
+    <item>QRhi</item>
+    <item>QRhiAdapter</item>
+    <item>QRhiBuffer</item>
+    <item>QRhiColorAttachment</item>
+    <item>QRhiCommandBuffer</item>
+    <item>QRhiComputePipeline</item>
+    <item>QRhiD3D11InitParams</item>
+    <item>QRhiD3D11NativeHandles</item>
+    <item>QRhiD3D12CommandBufferNativeHandles</item>
+    <item>QRhiD3D12InitParams</item>
+    <item>QRhiD3D12NativeHandles</item>
+    <item>QRhiDepthStencilClearValue</item>
+    <item>QRhiDriverInfo</item>
+    <item>QRhiGles2InitParams</item>
+    <item>QRhiGles2NativeHandles</item>
+    <item>QRhiGraphicsPipeline</item>
+    <item>QRhiInitParams</item>
+    <item>QRhiMetalCommandBufferNativeHandles</item>
+    <item>QRhiMetalInitParams</item>
+    <item>QRhiMetalNativeHandles</item>
+    <item>QRhiNativeHandles</item>
+    <item>QRhiNullInitParams</item>
+    <item>QRhiNullNativeHandles</item>
+    <item>QRhiReadbackDescription</item>
+    <item>QRhiReadbackResult</item>
+    <item>QRhiRenderBuffer</item>
+    <item>QRhiRenderPassDescriptor</item>
+    <item>QRhiRenderTarget</item>
+    <item>QRhiResource</item>
+    <item>QRhiResourceUpdateBatch</item>
+    <item>QRhiSampler</item>
+    <item>QRhiScissor</item>
+    <item>QRhiShaderResourceBinding</item>
+    <item>QRhiShaderResourceBindings</item>
+    <item>QRhiShaderStage</item>
+    <item>QRhiShadingRateMap</item>
+    <item>QRhiStats</item>
+    <item>QRhiSwapChain</item>
+    <item>QRhiSwapChainHdrInfo</item>
+    <item>QRhiSwapChainProxyData</item>
+    <item>QRhiSwapChainRenderTarget</item>
+    <item>QRhiTexture</item>
+    <item>QRhiTextureCopyDescription</item>
+    <item>QRhiTextureRenderTarget</item>
+    <item>QRhiTextureRenderTargetDescription</item>
+    <item>QRhiTextureSubresourceUploadDescription</item>
+    <item>QRhiTextureUploadDescription</item>
+    <item>QRhiTextureUploadEntry</item>
+    <item>QRhiVertexInputAttribute</item>
+    <item>QRhiVertexInputBinding</item>
+    <item>QRhiVertexInputLayout</item>
+    <item>QRhiViewport</item>
+    <item>QRhiVulkanCommandBufferNativeHandles</item>
+    <item>QRhiVulkanInitParams</item>
+    <item>QRhiVulkanNativeHandles</item>
+    <item>QRhiVulkanQueueSubmitParams</item>
+    <item>QRhiVulkanRenderPassNativeHandles</item>
+    <item>QRhiWidget</item>
     <item>QRomanCalendar</item>
     <item>QRotationFilter</item>
     <item>QRotationReading</item>
@@ -1820,9 +2180,11 @@
     <item>QScissorTest</item>
     <item>QScopedArrayPointer</item>
     <item>QScopedPointer</item>
+    <item>QScopedPropertyUpdateGroup</item>
     <item>QScopedValueRollback</item>
     <item>QScopeGuard</item>
     <item>QScreen</item>
+    <item>QScreenCapture</item>
     <item>QScreenRayCaster</item>
     <item>QScriptable</item>
     <item>QScriptClass</item>
@@ -1878,6 +2240,7 @@
     <item>QSequentialIterable</item>
     <item>QSerialPort</item>
     <item>QSerialPortInfo</item>
+    <item>QSeriesTheme</item>
     <item>QSessionManager</item>
     <item>QSet</item>
     <item>QSetFence</item>
@@ -1886,6 +2249,8 @@
     <item>QSGAbstractRenderer</item>
     <item>QSGBasicGeometryNode</item>
     <item>QSGClipNode</item>
+    <item>QSGD3D11Texture</item>
+    <item>QSGD3D12Texture</item>
     <item>QSGDynamicTexture</item>
     <item>QSGEngine</item>
     <item>QSGFlatColorMaterial</item>
@@ -1896,9 +2261,11 @@
     <item>QSGMaterialRhiShader</item>
     <item>QSGMaterialShader</item>
     <item>QSGMaterialType</item>
+    <item>QSGMetalTexture</item>
     <item>QSGNode</item>
     <item>QSGOpacityNode</item>
     <item>QSGOpaqueTextureMaterial</item>
+    <item>QSGOpenGLTexture</item>
     <item>QSGRectangleNode</item>
     <item>QSGRendererInterface</item>
     <item>QSGRenderNode</item>
@@ -1906,15 +2273,23 @@
     <item>QSGSimpleMaterialShader</item>
     <item>QSGSimpleRectNode</item>
     <item>QSGSimpleTextureNode</item>
+    <item>QSGTextNode</item>
     <item>QSGTexture</item>
     <item>QSGTextureMaterial</item>
     <item>QSGTextureProvider</item>
     <item>QSGTransformNode</item>
     <item>QSGVertexColorMaterial</item>
+    <item>QSGVulkanTexture</item>
+    <item>QShader</item>
+    <item>QShaderBaker</item>
+    <item>QShaderCode</item>
     <item>QShaderData</item>
+    <item>QShaderDescription</item>
     <item>QShaderImage</item>
+    <item>QShaderKey</item>
     <item>QShaderProgram</item>
     <item>QShaderProgramBuilder</item>
+    <item>QShaderVersion</item>
     <item>QSharedData</item>
     <item>QSharedDataPointer</item>
     <item>QSharedGLTexture</item>
@@ -1928,6 +2303,7 @@
     <item>QSignalSpy</item>
     <item>QSignalTransition</item>
     <item>QSimpleXmlNodeModel</item>
+    <item>QSinglePointEvent</item>
     <item>QSize</item>
     <item>QSizeF</item>
     <item>QSizeGrip</item>
@@ -1943,10 +2319,14 @@
     <item>QSoundEffect</item>
     <item>QSourceLocation</item>
     <item>QSpacerItem</item>
+    <item>QSpan</item>
+    <item>QSpatialSound</item>
     <item>QSphereGeometry</item>
+    <item>QSphereGeometryView</item>
     <item>QSphereMesh</item>
     <item>QSpinBox</item>
     <item>QSplashScreen</item>
+    <item>QSpline3DSeries</item>
     <item>QSplineSeries</item>
     <item>QSplitter</item>
     <item>QSplitterHandle</item>
@@ -1967,6 +2347,16 @@
     <item>QSqlRelationalTableModel</item>
     <item>QSqlResult</item>
     <item>QSqlTableModel</item>
+    <item>QSSGCameraHelpers</item>
+    <item>QSSGFrameData</item>
+    <item>QSSGModelHelpers</item>
+    <item>QSSGRenderContextInterface</item>
+    <item>QSSGRenderExtension</item>
+    <item>QSSGRenderExtensionHelpers</item>
+    <item>QSSGRenderHelpers</item>
+    <item>QSSGRhiContext</item>
+    <item>QSSGRhiGraphicsPipelineState</item>
+    <item>QSSGRhiSamplerDescription</item>
     <item>QSslCertificate</item>
     <item>QSslCertificateExtension</item>
     <item>QSslCipher</item>
@@ -1976,6 +2366,7 @@
     <item>QSslError</item>
     <item>QSslKey</item>
     <item>QSslPreSharedKeyAuthenticator</item>
+    <item>QSslServer</item>
     <item>QSslSocket</item>
     <item>QStack</item>
     <item>QStackedBarSeries</item>
@@ -1988,6 +2379,7 @@
     <item>QState</item>
     <item>QStateMachine</item>
     <item>QStaticByteArrayMatcher</item>
+    <item>QStaticLatin1StringMatcher</item>
     <item>QStaticPlugin</item>
     <item>QStaticPropertyUpdatedChangeBase</item>
     <item>QStaticPropertyValueAddedChangeBase</item>
@@ -2002,10 +2394,14 @@
     <item>QStencilTestArguments</item>
     <item>QStorageInfo</item>
     <item>QString</item>
+    <item>QStringConverter</item>
+    <item>QStringDecoder</item>
+    <item>QStringEncoder</item>
     <item>QStringList</item>
     <item>QStringListModel</item>
     <item>QStringMatcher</item>
     <item>QStringRef</item>
+    <item>QStringTokenizer</item>
     <item>QStringView</item>
     <item>QStyle</item>
     <item>QStyledItemDelegate</item>
@@ -2024,6 +2420,7 @@
     <item>QStyleOptionGraphicsItem</item>
     <item>QStyleOptionGroupBox</item>
     <item>QStyleOptionHeader</item>
+    <item>QStyleOptionHeaderV2</item>
     <item>QStyleOptionMenuItem</item>
     <item>QStyleOptionProgressBar</item>
     <item>QStyleOptionRubberBand</item>
@@ -2062,11 +2459,13 @@
     <item>QTableWidgetItem</item>
     <item>QTableWidgetSelectionRange</item>
     <item>QTabWidget</item>
+    <item>QTaggedIterator</item>
     <item>QTapAndHoldGesture</item>
     <item>QTapFilter</item>
     <item>QTapGesture</item>
     <item>QTapReading</item>
     <item>QTapSensor</item>
+    <item>QTaskBuilder</item>
     <item>QTcpServer</item>
     <item>QTcpSocket</item>
     <item>QTechnique</item>
@@ -2152,12 +2551,13 @@
     <item>QToolButton</item>
     <item>QToolTip</item>
     <item>QTorusGeometry</item>
+    <item>QTorusGeometryView</item>
     <item>QTorusMesh</item>
     <item>QTouch3DInputHandler</item>
     <item>QTouchDevice</item>
     <item>QTouchEvent</item>
     <item>QTouchEventSequence</item>
-    <item>QTransform</item>
+    <item>QTouchEventWidgetSequence</item>
     <item>QTransform</item>
     <item>QTranslator</item>
     <item>QTransposeProxyModel</item>
@@ -2167,6 +2567,7 @@
     <item>QTreeWidgetItemIterator</item>
     <item>QtROClientFactory</item>
     <item>QtROServerFactory</item>
+    <item>QTypeRevision</item>
     <item>QUdpSocket</item>
     <item>QUiLoader</item>
     <item>QUndoCommand</item>
@@ -2174,8 +2575,11 @@
     <item>QUndoStack</item>
     <item>QUndoView</item>
     <item>QUnhandledException</item>
+    <item>QUntypedBindable</item>
     <item>QUrl</item>
     <item>QUrlQuery</item>
+    <item>QUtf8StringView</item>
+    <item>QUtiMimeConverter</item>
     <item>QUuid</item>
     <item>QValidator</item>
     <item>QValue3DAxis</item>
@@ -2186,6 +2590,9 @@
     <item>QVariantHash</item>
     <item>QVariantList</item>
     <item>QVariantMap</item>
+    <item>QVariantConstPointer</item>
+    <item>QVariantPointer</item>
+    <item>QVariantRef</item>
     <item>QVarLengthArray</item>
     <item>QVBarModelMapper</item>
     <item>QVBoxLayout</item>
@@ -2203,8 +2610,11 @@
     <item>QVideoEncoderSettingsControl</item>
     <item>QVideoFilterRunnable</item>
     <item>QVideoFrame</item>
+    <item>QVideoFrameFormat</item>
+    <item>QVideoFrameInput</item>
     <item>QVideoProbe</item>
     <item>QVideoRendererControl</item>
+    <item>QVideoSink</item>
     <item>QVideoSurfaceFormat</item>
     <item>QVideoWidget</item>
     <item>QVideoWidgetControl</item>
@@ -2212,8 +2622,11 @@
     <item>QViewport</item>
     <item>QVirtualKeyboardAbstractInputMethod</item>
     <item>QVirtualKeyboardExtensionPlugin</item>
+    <item>QVirtualKeyboardDictionary</item>
+    <item>QVirtualKeyboardDictionaryManager</item>
     <item>QVirtualKeyboardInputContext</item>
     <item>QVirtualKeyboardInputEngine</item>
+    <item>QVirtualKeyboardObserver</item>
     <item>QVirtualKeyboardSelectionListModel</item>
     <item>QVirtualKeyboardTrace</item>
     <item>QVoice</item>
@@ -2229,23 +2642,34 @@
     <item>QVXYModelMapper</item>
     <item>QWaitCondition</item>
     <item>QWaitFence</item>
+    <item>QWaylandApplication</item>
     <item>QWaylandBufferRef</item>
     <item>QWaylandClient</item>
     <item>QWaylandCompositor</item>
+    <item>QWaylandCompositorExtension</item>
+    <item>QWaylandCompositorExtensionTemplate</item>
     <item>QWaylandIdleInhibitManagerV1</item>
     <item>QWaylandIviApplication</item>
     <item>QWaylandIviSurface</item>
     <item>QWaylandKeyboard</item>
+    <item>QWaylandObject</item>
     <item>QWaylandOutput</item>
     <item>QWaylandOutputMode</item>
     <item>QWaylandPointer</item>
+    <item>QWaylandPresentationTime</item>
+    <item>QWaylandQtTextInputMethodManager</item>
     <item>QWaylandQuickItem</item>
     <item>QWaylandQuickShellIntegration</item>
     <item>QWaylandQuickShellSurfaceItem</item>
+    <item>QWaylandResource</item>
+    <item>QWaylandScreen</item>
     <item>QWaylandSeat</item>
     <item>QWaylandShellSurface</item>
+    <item>QWaylandShellSurfaceTemplate</item>
     <item>QWaylandSurface</item>
     <item>QWaylandSurfaceGrabber</item>
+    <item>QWaylandSurfaceRole</item>
+    <item>QWaylandTextInputManager</item>
     <item>QWaylandTouch</item>
     <item>QWaylandView</item>
     <item>QWaylandViewporter</item>
@@ -2268,13 +2692,32 @@
     <item>QWeakPointer</item>
     <item>QWebChannel</item>
     <item>QWebChannelAbstractTransport</item>
+    <item>QWebEngineCertificateError</item>
+    <item>QWebEngineClientCertificateSelection</item>
     <item>QWebEngineClientCertificateStore</item>
+    <item>QWebEngineClientHints</item>
+    <item>QWebEngineContextMenuRequest</item>
     <item>QWebEngineCookieStore</item>
+    <item>QWebEngineDesktopMediaRequest</item>
+    <item>QWebEngineDownloadRequest</item>
+    <item>QWebEngineExtensionInfo</item>
+    <item>QWebEngineExtensionManager</item>
+    <item>QWebEngineFileSystemAccessRequest</item>
     <item>QWebEngineFindTextResult</item>
+    <item>QWebEngineFrame</item>
+    <item>QWebEngineFullScreenRequest</item>
+    <item>QWebEngineHistory</item>
+    <item>QWebEngineHistoryItem</item>
+    <item>QWebEngineHistoryModel</item>
     <item>QWebEngineHttpRequest</item>
+    <item>QWebEngineLoadingInfo</item>
+    <item>QWebEngineNavigationRequest</item>
+    <item>QWebEngineNewWindowRequest</item>
     <item>QWebEngineNotification</item>
     <item>QWebEnginePage</item>
+    <item>QWebEnginePermission</item>
     <item>QWebEngineProfile</item>
+    <item>QWebEngineProfileBuilder</item>
     <item>QWebEngineQuotaRequest</item>
     <item>QWebEngineRegisterProtocolHandlerRequest</item>
     <item>QWebEngineScript</item>
@@ -2286,18 +2729,24 @@
     <item>QWebEngineUrlScheme</item>
     <item>QWebEngineUrlSchemeHandler</item>
     <item>QWebEngineView</item>
+    <item>QWebEngineWebAuthPinRequest</item>
+    <item>QWebEngineWebAuthUxRequest</item>
     <item>QWebSocket</item>
     <item>QWebSocketCorsAuthenticator</item>
+    <item>QWebSocketHandshakeOptions</item>
     <item>QWebSocketServer</item>
+    <item>QWGLContext</item>
     <item>QWGLNativeContext</item>
     <item>QWhatsThis</item>
     <item>QWhatsThisClickedEvent</item>
     <item>QWheelEvent</item>
-    <item>QWheelEvent</item>
     <item>QWidget</item>
     <item>QWidgetAction</item>
     <item>QWidgetItem</item>
     <item>QWindow</item>
+    <item>QWindowCapture</item>
+    <item>QWindowsMimeConverter</item>
+    <item>QWindowsScreen</item>
     <item>QWindowStateChangeEvent</item>
     <item>QWindowsWindowFunctions</item>
     <item>QWinEventNotifier</item>
@@ -2312,6 +2761,7 @@
     <item>QWizard</item>
     <item>QWizardPage</item>
     <item>QWriteLocker</item>
+    <item>QX11Application</item>
     <item>QX11Info</item>
     <item>QXcbWindowFunctions</item>
     <item>QXmlAttributes</item>
@@ -2347,19 +2797,31 @@
     <item>QXmlStreamReader</item>
     <item>QXmlStreamWriter</item>
     <item>QXYLegendMarker</item>
+    <item>QXYModelMapper</item>
     <item>QXYSeries</item>
     <!-- Not actually classes, but used like those -->
     <item>QByteArrayLiteral</item>
     <item>QStringLiteral</item>
     <!-- Not actually classes, but namespaces -->
     <item>Qt</item>
+    <item>QNativeInterface</item>
+    <item>QQmlSA</item>
+    <item>QScxmlExecutableContent</item>
     <item>QTest</item>
+    <item>QWebEngineGlobalSettings</item>
+    <item>Qt3DAnimation</item>
+    <item>Qt3DCore</item>
+    <item>Qt3DExtras</item>
+    <item>Qt3DInput</item>
+    <item>Qt3DLogic</item>
+    <item>Qt3DRender</item>
     <item>QtConcurrent</item>
+    <item>QtFuture</item>
+    <item>QtProtobuf</item>
     <item>Phonon</item>
     <!-- Some public types, but not listed in main class list -->
     <item>QFileInfoList</item>
     <item>QMutableStringListIterator</item>
-    <item>QTouchEventSequence</item>                      <!-- QTest -->
     <item>QStringListIterator</item>
     <item>QStringBuilder</item>
     <!-- Helper classes for C++11-only code, where qOverload (requires C++14) can't be used
@@ -2387,10 +2849,6 @@
     </context>
 
     <context attribute="Qt Classes" lineEndContext="#pop" name="Qt5ClassMember">
-      <IncludeRules context="DetectNSEnd" />
-    </context>
-
-    <context lineEndContext="#pop" name="DetectNSEnd" attribute="Normal Text">
       <DetectIdentifier context="#stay" />
       <AnyChar context="#pop" String="&ns_punctuators;" lookAhead="true" />
     </context>
@@ -2408,7 +2866,7 @@
 
 <general>
   <comments>
-    <comment name="singleLine" start="//" />
+    <comment name="singleLine" start="//" position="afterwhitespace"/>
     <comment name="multiLine" start="/*" end="*/" />
   </comments>
   <keywords casesensitive="1" />
diff --git a/xml/crystal.xml b/xml/crystal.xml
new file mode 100644
--- /dev/null
+++ b/xml/crystal.xml
@@ -0,0 +1,999 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+
+<!--
+  Crystal syntax highlighting definition for Kate.
+  Copyright (C) 2022  by Gaurav Shah (gauravshah.89@gmail.com)
+
+  Forked from the Ruby syntax highlighting definition.
+  Copyright (C) 2004  by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)
+  Copyright (C) 2004  by Stefan Lang (langstefan@gmx.at)
+  Copyright (C) 2008  by Robin Pedersen (robinpeder@gmail.com)
+  Copyright (C) 2011  by Miquel Sabaté (mikisabate@gmail.com)
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+  You should have received a copy of the GNU Library General Public
+  License along with this library; if not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA  02110-1301, USA.
+-->
+
+<!--
+    TODO: Division after gdl contexts is interpreted as regexp
+-->
+
+<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
+<language name="Crystal" section="Sources"
+	  version="1" kateversion="5.0"
+	  extensions="*.cr"
+	  mimetype="application/x-crystal"
+	  style="crystal" indenter="ruby"
+	  author="Gaurav Shah (gauravshah.89@gmail.com)" license="LGPLv2+">
+
+	<highlighting>
+
+		<list name="keywords">
+			<item>alias</item>
+			<item>begin</item>
+			<item>break</item>
+			<item>case</item>
+			<item>do</item>
+			<item>else</item>
+			<item>elsif</item>
+			<item>end</item>
+			<item>ensure</item>
+			<item>enum</item>
+			<item>for</item>
+			<item>fun</item>
+			<item>if</item>
+			<item>in</item>
+			<item>lib</item>
+			<item>next</item>
+			<item>rescue</item>
+			<item>return</item>
+			<item>then</item>
+			<item>type</item>
+			<item>union</item>
+			<item>unless</item>
+			<item>until</item>
+			<item>when</item>
+			<item>yield</item>
+		</list>
+
+		<list name="access-control">
+			<item>private</item>
+			<item>protected</item>
+		</list>
+
+		<list name="attribute-definitions">
+			<item>getter</item>
+			<item>setter</item>
+			<item>property</item>
+		</list>
+
+		<list name="definitions">
+			<item>alias</item>
+			<item>module</item>
+			<item>class</item>
+			<item>struct</item>
+			<item>def</item>
+			<item>macro</item>
+		</list>
+
+		<list name="pseudo-variables">
+			<item>self</item>
+			<item>super</item>
+			<item>nil</item>
+			<item>false</item>
+			<item>true</item>
+			<item>caller</item>
+			<!-- TODO: move these to psudo constants list -->
+			<item>__FILE__</item>
+			<item>__LINE__</item>
+			<item>__END_LINE__</item>
+			<item>__DIR__</item>
+		</list>
+
+		<!-- Kernel module methods.
+			NOTE: Methods ending in ? or !
+				are included below as regexes.
+		-->
+		<!-- TODO: replace this with Crystal Object methods? -->
+		<list name="kernel-methods">
+			<!-- backquote ` -->
+			<item>abort</item>
+			<item>at_exit</item>
+			<item>autoload</item>
+			<item>autoload?</item>
+			<item>binding</item>
+			<item>block_given?</item>
+			<item>callcc</item>
+			<item>caller</item>
+			<item>catch</item>
+			<item>chomp</item>
+			<item>chomp!</item>
+			<item>chop</item>
+			<item>chop!</item>
+			<item>eval</item>
+			<item>exec</item>
+			<item>exit</item>
+			<item>exit!</item>
+			<item>fail</item>
+			<item>fork</item>
+			<item>format</item>
+			<item>getc</item>
+			<item>gets</item>
+			<item>global_variables</item>
+			<item>gsub</item>
+			<item>gsub!</item>
+			<item>iterator?</item>
+			<item>lambda</item>
+			<item>load</item>
+			<item>local_variables</item>
+			<item>loop</item>
+			<item>method_missing</item>
+			<item>open</item>
+			<item>p</item>
+			<item>print</item>
+			<item>printf</item>
+			<item>proc</item>
+			<item>putc</item>
+			<item>puts</item>
+			<item>raise</item>
+			<item>rand</item>
+			<item>readline</item>
+			<item>readlines</item>
+			<item>require</item>
+			<item>require_relative</item>
+			<item>scan</item>
+			<item>select</item>
+			<item>set_trace_func</item>
+			<item>sleep</item>
+			<item>split</item>
+			<item>sprintf</item>
+			<item>srand</item>
+			<item>sub</item>
+			<item>sub!</item>
+			<item>syscall</item>
+			<item>system</item>
+			<item>test</item>
+			<item>throw</item>
+			<item>trace_var</item>
+			<item>trap</item>
+			<item>untrace_var</item>
+			<item>warn</item>
+		</list>
+
+		<list name="mixin-methods">
+			<item>extend</item>
+			<item>include</item>
+		</list>
+
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<!-- crystal ignores newline after \ -->
+				<LineContinue attribute="Normal Text" context="Line Continue"/>
+
+				<!-- "shebang" line -->
+				<!-- TODO: this may be required once crystal interpreter is ready -->
+				<!--<RegExpr attribute="Keyword" String="^#!\/.*" context="#stay" column="0"/>-->
+
+				<!-- "def" - "end" blocks -->
+				<!-- check for statement modifiers with regexes -->
+				<Detect2Chars attribute="Operator" char="{" char1="%" context="Find closing macro brace" beginRegion="def block"/>
+				<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
+				<!-- TODO: why is this needed as a Delimiter? -->
+				<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
+				<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<WordDetect attribute="Keyword" String="class" context="no_heredoc" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="struct" context="no_heredoc" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="case" context="#stay" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="do" context="#stay" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="macro" context="#stay" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="def" context="Overloaded Operators" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/>
+				<!-- elsif/else close the current block and start a new one -->
+				<RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/>
+
+				<StringDetect attribute="Operator" String="..." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>
+
+				<!-- marks a message being sent, not defined -->
+				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/>
+
+				<keyword attribute="Keyword" String="keywords" context="#stay"/>
+				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="check_div_2"/>
+				<keyword attribute="Access Control" String="access-control" context="check_div_2"/>
+				<keyword attribute="Definition" String="definitions"  context="#stay" />
+				<keyword attribute="Pseudo variable" String="pseudo-variables"  context="check_div_1"/>
+				<keyword attribute="Kernel methods" String="kernel-methods" context="check_div_2"/>
+				<keyword attribute="Module mixin methods" String="mixin-methods" context="check_div_2"/>
+
+				<!-- TODO: write a rule for $~ and $? -->
+				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>
+				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
+				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>
+
+				<!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->
+				<!-- TODO: add support for Crystal number literals -->
+				<RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="check_div_1"/>
+				<RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="check_div_1"/>
+				<RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="check_div_1"/>
+				<RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="check_div_1"/>
+				<RegExpr attribute="Dec" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="check_div_1"/>
+				<Int attribute="Dec" context="check_div_1"/>
+				<!-- TODO: what is this? remove if this is not required. -->
+				<HlCChar attribute="Char" context="check_div_1"/>
+
+				<!-- recognize the beginning of a HEREDOC
+					This uses new features in Kate 2.3 and later
+
+					There is no other chance of keeping heredoc apart from the
+					push operator '<<' than requiring to put space between the operator
+					and the string.
+				-->
+				<RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*&lt;&lt;[-~](?=\w+|[&quot;'`])" beginRegion="HereDocument" />
+				<RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'`])" beginRegion="HereDocument" />
+
+				<DetectChar attribute="Operator" char="." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
+				<!-- \s! is regexp hack -->
+				<RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=]+|\s!|/=\s" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>
+
+				<RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?|:\[\]=?" context="check_div_1"/>
+
+				<!-- Do not send to "check_div_1" context!:
+				     after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->
+				<RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>
+
+				<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
+				<!-- TODO: There are no single-quoted strings in Crystal. Only single-quoted characters. Modify accordingly. -->
+				<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
+				<DetectChar attribute="Command" char="`" context="Command String"/>
+
+				<!-- TODO: Remove this if not needed -->
+				<Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>
+
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+
+				<DetectChar attribute="Delimiter" char="["  context="#stay"/>
+				<DetectChar attribute="Delimiter" char="]"  context="check_div_1"/>
+
+				<RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="check_div_1"/>
+				<RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="check_div_1"/>
+
+				<!-- handle the different regular expression formats -->
+				<DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>
+
+				<!-- recognize the beginning of a general delimited input format -->
+				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
+				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[QqxwW]?[^\s}])" beginRegion="GdlInput" />
+
+				<DetectChar attribute="Normal Text" char=")" context="check_div_1"/>
+				<DetectIdentifier attribute="Normal Text" context="check_div_2"/>
+
+			</context>
+
+			<context name="Macro" attribute="Normal Text" lineEndContext="#stay">
+				<!-- TODO: copied Macro context from Normal context. repititions can be removed. pls refactor by including rules. -->
+				<!-- crystal ignores newline after \ -->
+				<LineContinue attribute="Normal Text" context="Line Continue"/>
+
+				<!-- "def" - "end" blocks -->
+				<!-- check for statement modifiers with regexes -->
+				<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
+				<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
+				<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
+				<WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>
+				<RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="do" context="#stay" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="def" context="Overloaded Operators" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/>
+				<!-- elsif/else close the current block and start a new one -->
+				<RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/>
+
+				<StringDetect attribute="Operator" String="..." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>
+
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/>
+
+				<keyword attribute="Keyword" String="keywords" context="#stay"/>
+				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="check_div_2"/>
+				<keyword attribute="Definition" String="definitions"  context="#stay" />
+				<keyword attribute="Pseudo variable" String="pseudo-variables"  context="check_div_1"/>
+
+				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>
+				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
+				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>
+
+				<!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->
+				<RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="check_div_1"/>
+				<RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="check_div_1"/>
+				<RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="check_div_1"/>
+				<RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="check_div_1"/>
+				<RegExpr attribute="Dec" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="check_div_1"/>
+				<Int attribute="Dec" context="check_div_1"/>
+				<HlCChar attribute="Char" context="check_div_1"/>
+
+				<!-- recognize the beginning of a HEREDOC
+					This uses new features in Kate 2.3 and later
+
+					There is no other chance of keeping heredoc apart from the
+					push operator '<<' than requiring to put space between the operator
+					and the string.
+				-->
+				<RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*&lt;&lt;[-~](?=\w+|[&quot;'`])" beginRegion="HereDocument" />
+				<RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'`])" beginRegion="HereDocument" />
+
+				<DetectChar attribute="Operator" char="." context="#stay"/>
+				<Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
+				<!-- \s! is regexp hack -->
+				<RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=]+|\s!|/=\s" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>
+
+				<RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?|:\[\]=?" context="check_div_1"/>
+
+				<!-- Do not send to "check_div_1" context!:
+				     after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->
+				<RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>
+
+				<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
+				<!-- TODO: There are no single-quoted strings in Crystal. Only single-quoted characters. Modify accordingly. -->
+				<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
+				<DetectChar attribute="Command" char="`" context="Command String"/>
+
+				<!-- TODO: Remove this if not needed -->
+				<Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>
+
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+
+				<DetectChar attribute="Delimiter" char="["  context="#stay"/>
+				<DetectChar attribute="Delimiter" char="]"  context="check_div_1"/>
+
+				<!-- handle the different regular expression formats -->
+				<DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>
+
+				<!-- recognize the beginning of a general delimited input format -->
+				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
+				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[QqxwW]?[^\s}])" beginRegion="GdlInput" />
+
+				<DetectChar attribute="Normal Text" char=")" context="check_div_1"/>
+				<DetectIdentifier attribute="Normal Text" context="check_div_2"/>
+			</context>
+
+			<context name="Overloaded Operators" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
+				<DetectChar attribute="Normal Text" char="/" context="#pop"/>
+			</context>
+
+			<!-- In the following contexts, a slash character ('/') is a division operator -->
+			<!-- Everywhere else, it's a regular expression delimiter -->
+
+			<!-- A slash is always a division operator, even if preceeded by whitespace -->
+			<context name="check_div_1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
+				<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop"/>
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="%" char1="}" context="#pop#pop"/>
+				<AnyChar attribute="Operator" String="/%" context="#pop"/>
+			</context>
+
+			<!-- Same as check_div_1, but with double pop to exit the surrounding context -->
+			<context name="check_div_1_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+				<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop#pop"/>
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
+				<Detect2Chars attribute="Operator" char="%" char1="}" context="#pop#pop#pop#pop"/>
+				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
+			</context>
+
+			<!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->
+			<context name="check_div_2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
+				<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop"/>
+				<AnyChar attribute="Operator" String="/%" context="#pop"/>
+				<DetectSpaces attribute="Normal Text" context="check_div_2_internal"/>
+			</context>
+
+			<!-- Internal context used by check_div_2 -->
+			<context name="check_div_2_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+				<RegExpr attribute="Operator" String="(//|[/%])(?=\s)" context="#pop#pop"/>
+			</context>
+
+			<!-- Same as check_div_2, but with double pop to exit the surrounding context -->
+			<context name="check_div_2_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+				<Detect2Chars attribute="Operator" char="/" char1="/" context="#pop#pop"/>
+				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
+				<DetectSpaces attribute="Normal Text" context="check_div_2_pop_internal"/>
+			</context>
+
+			<!-- Internal context used by check_div_2_pop -->
+			<context name="check_div_2_pop_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop#pop" lineEndContext="#pop#pop#pop">
+				<RegExpr attribute="Operator" String="//(?=\s)" context="#pop#pop#pop"/>
+				<DetectChar attribute="Operator" char="%" context="#pop#pop#pop"/>
+				<RegExpr attribute="Operator" String="/(?=\s)" context="#pop#pop#pop"/>
+			</context>
+
+			<context name="Line Continue" attribute="Normal Text" lineEndContext="#pop">
+				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)|(if|unless)\b" context="#stay" firstNonSpace="true"/>
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<context name="Find closing macro brace" attribute="Normal Text" lineEndContext="#stay">
+				<Detect2Chars attribute="Operator" char="%" char1="}" context="check_div_1_pop" endRegion="def block"/>
+				<IncludeRules context="Macro"/>
+			</context>
+
+			<context name="Find closing block brace" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Operator" char="}" context="check_div_1_pop" endRegion="def block"/>
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<context name="Quoted String" attribute="String" lineEndContext="#stay">
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+				<Detect2Chars attribute="String" char="\" char1="&quot;" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<DetectChar char="&quot;" attribute="String" context="check_div_1_pop"/>
+			</context>
+
+			<context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+				<Detect2Chars attribute="String" char="\" char1="'" context="#stay"/>
+				<DetectChar char="'" attribute="Raw String" context="check_div_1_pop"/>
+			</context>
+
+			<context name="Command String" attribute="Command" lineEndContext="#stay">
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+				<Detect2Chars attribute="String" char="\" char1="`" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<DetectChar char="`" attribute="Command" context="check_div_1_pop"/>
+			</context>
+
+			<context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">
+				<Detect2Chars attribute="Regular Expression" char="\" char1="/" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+				<RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="check_div_1_pop"/>
+			</context>
+
+			<!-- Substitutions can be nested -->
+			<context name="Subst" attribute="Normal Text" lineEndContext="#stay">
+				<DetectChar attribute="Substitution" char="}" context="#pop"/>
+				<!-- Highlight substitution as code. -->
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<context name="Short Subst" attribute="Substitution" lineEndContext="#pop">
+				<!-- Check for e.g.: "#@var#@@xy" -->
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/>
+				<RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>
+			</context>
+
+			<!-- This handles access of nested module classes and class methods -->
+			<context name="Member Access" attribute="Member" lineEndContext="#pop">
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="check_div_2_pop"/>
+				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="check_div_2_pop"/>
+				<RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="check_div_2_pop"/>
+				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>
+				<Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
+				<DetectChar attribute="Member" char="." context="#stay"/>
+
+				<AnyChar attribute="Operator" String="=+-*/%|&amp;[]{}~" context="#pop"/>
+				<DetectChar attribute="Comment" char="#" context="#pop"/>
+				<AnyChar attribute="Normal Text" String="()\" context="#pop"/>
+				<RegExpr attribute="Member" String="\W" context="#pop"/>
+			</context>
+
+			<context name="General Comment" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces />
+				<IncludeRules context="##Comments" />
+			</context>
+
+			<!-- HEREDOC support
+				The contexts below support both normal and indented heredocs
+			 -->
+			<!-- here we markup the heredoc markers -->
+			<context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+				<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
+			</context>
+			<context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+				<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
+				<RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
+			</context>
+			<!-- these are the real heredoc contexts -->
+			<context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+			</context>
+
+			<context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+				<IncludeRules context="heredoc_rules" />
+			</context>
+			<context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+			</context>
+
+			<!-- rules for heredoc types -->
+			<context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay">
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+
+			<!-- avoid highlighting heredoc markers, for example, in singleton class definition (see bug: #358273) -->
+			<context name="no_heredoc" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+				<DetectSpaces />
+				<Detect2Chars attribute="Operator" char="&lt;" char1="&lt;" context="#pop"/>
+				<!-- comments -->
+				<RegExpr attribute="Comment" String="^#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
+				<RegExpr attribute="Comment" String="^#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+			</context>
+
+			<!-- General delimited input support
+				The contexts below handle the various gdl formats
+			 -->
+			<context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">
+
+				<!-- handle token arrays -->
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="w" char1="(" />
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="w" char1="{" />
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="w" char1="[" />
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="w" char1="&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />
+
+				<!-- handle token arrays -->
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="W" char1="(" />
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="W" char1="{" />
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="W" char1="[" />
+				<Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="W" char1="&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_token_array_5" String="W([^\s\w])" />
+
+				<!-- handle apostrophed strings -->
+				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_1" char="q" char1="(" />
+				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_2" char="q" char1="{" />
+				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_3" char="q" char1="[" />
+				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_4" char="q" char1="&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />
+
+				<!-- handle shell commands -->
+				<Detect2Chars attribute="GDL input" context="gdl_shell_command_1" char="x" char1="(" />
+				<Detect2Chars attribute="GDL input" context="gdl_shell_command_2" char="x" char1="{" />
+				<Detect2Chars attribute="GDL input" context="gdl_shell_command_3" char="x" char1="[" />
+				<Detect2Chars attribute="GDL input" context="gdl_shell_command_4" char="x" char1="&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />
+
+				<!-- handle regular expressions -->
+				<Detect2Chars attribute="GDL input" context="gdl_regexpr_1" char="r" char1="(" />
+				<Detect2Chars attribute="GDL input" context="gdl_regexpr_2" char="r" char1="{" />
+				<Detect2Chars attribute="GDL input" context="gdl_regexpr_3" char="r" char1="[" />
+				<Detect2Chars attribute="GDL input" context="gdl_regexpr_4" char="r" char1="&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" />
+
+				<!-- handle double-quoted strings -->
+				<!--
+					  be careful to make this the last GDL ruleset, because the rule for
+					  the short form %?foo? will otherwise catch any of the other formats
+				-->
+				<Detect2Chars attribute="GDL input" context="gdl_dq_string_1" char="Q" char1="(" />
+				<Detect2Chars attribute="GDL input" context="gdl_dq_string_2" char="Q" char1="{" />
+				<Detect2Chars attribute="GDL input" context="gdl_dq_string_3" char="Q" char1="[" />
+				<Detect2Chars attribute="GDL input" context="gdl_dq_string_4" char="Q" char1="&lt;" />
+				<DetectChar attribute="GDL input" context="gdl_dq_string_1" char="(" />
+				<DetectChar attribute="GDL input" context="gdl_dq_string_2" char="{" />
+				<DetectChar attribute="GDL input" context="gdl_dq_string_3" char="[" />
+				<DetectChar attribute="GDL input" context="gdl_dq_string_4" char="&lt;" />
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" />
+
+			</context>
+			<!-- double-quoted string specific contexts follow -->
+			<context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+			<!-- note that here substitution should win over nesting -->
+			<context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+			</context>
+			<context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+
+			<context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+
+			<context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="dq_string_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >
+				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+				<IncludeRules context="dq_string_rules" />
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="dq_string_rules" />
+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+			<!-- rules to be included in all dq_string contexts -->
+			<context name="dq_string_rules" attribute="String" lineEndContext="#stay" >
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+
+			<!-- token array specific contexts -->
+
+			<context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
+				<DetectChar attribute="String" context="#pop" char=")" />
+			</context>
+
+			<context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+			</context>
+			<context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
+				<DetectChar attribute="String" context="#pop" char="}" />
+			</context>
+
+			<context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
+				<DetectChar attribute="String" context="#pop" char="]" />
+			</context>
+
+			<context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" >
+				<IncludeRules context="token_array_rules" />
+				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
+				<DetectChar attribute="String" context="#pop" char="&gt;" />
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="token_array_rules" />
+				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+
+			<!-- rules to be included in all token_array contexts -->
+			<context name="token_array_rules" attribute="String" lineEndContext="#stay" >
+				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
+			</context>
+
+			<!-- apostrophed string specific contexts -->
+
+			<context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
+				<DetectChar attribute="Raw String" context="#pop" char=")" />
+			</context>
+
+			<context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+			</context>
+			<context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
+				<DetectChar attribute="Raw String" context="#pop" char="}" />
+			</context>
+
+			<context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
+				<DetectChar attribute="Raw String" context="#pop" char="]" />
+			</context>
+
+			<context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<Detect2Chars attribute="Raw String" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" >
+				<IncludeRules context="apostrophed_rules" />
+				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
+				<DetectChar attribute="Raw String" context="#pop" char="&gt;" />
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="apostrophed_rules" />
+				<StringDetect attribute="Raw String" String="\%1" context="#stay" dynamic="true"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+
+			<!-- rules to be included in all apostrophed contexts -->
+			<context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" >
+				<Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/>
+			</context>
+
+			<!-- shell command specific contexts -->
+
+			<context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
+				<DetectChar attribute="Command" context="#pop" char=")" />
+			</context>
+
+			<context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/>
+				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+			</context>
+			<context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
+				<DetectChar attribute="Command" context="#pop" char="}" />
+			</context>
+
+			<context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
+				<DetectChar attribute="Command" context="#pop" char="]" />
+			</context>
+
+			<context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<Detect2Chars attribute="Command" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" >
+				<IncludeRules context="shell_command_rules" />
+				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
+				<DetectChar attribute="Command" context="#pop" char="&gt;" />
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="shell_command_rules" />
+				<StringDetect attribute="Command" String="\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
+			</context>
+
+			<!-- rules to be included in all shell_command contexts -->
+			<context name="shell_command_rules" attribute="Command" lineEndContext="#stay" >
+				<Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+
+			<!-- regular expression specific contexts -->
+
+			<context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
+				<DetectChar attribute="Regular Expression" context="#pop" char=")" />
+			</context>
+
+			<context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/>
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+			</context>
+			<context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="}" />
+			</context>
+
+			<context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="]" />
+			</context>
+
+			<context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<Detect2Chars attribute="Regular Expression" char="\" char1="&gt;" context="#stay"/>
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="&gt;[uiomxn]*" endRegion="GdlInput" />
+			</context>
+			<context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" >
+				<IncludeRules context="regexpr_rules" />
+				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
+				<DetectChar attribute="Regular Expression" context="#pop" char="&gt;" />
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
+				<IncludeRules context="regexpr_rules" />
+				<StringDetect attribute="Regular Expression" String="\%1" context="#stay" dynamic="true" />
+				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />
+			</context>
+
+			<!-- rules to be included in all regexpr contexts -->
+			<context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" >
+				<Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/>
+				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
+				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
+			</context>
+
+			<!-- END of General delimited input support -->
+
+		</contexts>
+
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal"/>
+
+			<itemData name="Keyword" defStyleNum="dsControlFlow"/>
+			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
+			<itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->
+			<itemData name="Definition" defStyleNum="dsKeyword"/>
+			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
+
+			<itemData name="Dec" defStyleNum="dsDecVal"/>
+			<itemData name="Float" defStyleNum="dsFloat"/>
+			<itemData name="Char" defStyleNum="dsChar"/>
+			<itemData name="Octal" defStyleNum="dsBaseN"/>
+			<itemData name="Hex" defStyleNum="dsBaseN"/>
+			<itemData name="Bin" defStyleNum="dsBaseN"/>
+
+			<itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->
+			<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->
+			<itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->
+			<itemData name="Regular Expression" defStyleNum="dsSpecialString"/> <!-- #4A5704 -->
+			<itemData name="Substitution"	defStyleNum="dsSpecialChar"/>
+			<!-- short for 'general delimited input' -->
+			<itemData name="GDL input" defStyleNum="dsOthers" />
+
+			<itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->
+			<itemData name="Constant" defStyleNum="dsDataType"/>
+			<itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->
+			<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
+			<itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
+			<itemData name="Member" defStyleNum="dsNormal"/>
+			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
+			<itemData name="Class Variable" defStyleNum="dsOthers"/>
+
+			<itemData name="Comment" defStyleNum="dsComment"/>
+
+			<itemData name="Here Document" defStyleNum="dsDocumentation"/>
+
+			<itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
+			<itemData name="Operator" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
+		</itemDatas>
+	</highlighting>
+	<general>
+		<comments>
+			<comment name="singleLine" start="#" position="afterwhitespace"/>
+		</comments>
+		<keywords casesensitive="1" weakDeliminator="!?"/>
+	</general>
+</language>
+
+<!-- kate: replace-tabs off; -->
diff --git a/xml/cs.xml b/xml/cs.xml
--- a/xml/cs.xml
+++ b/xml/cs.xml
@@ -1,5 +1,5 @@
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="C#" version="11" kateversion="5.0" section="Sources" extensions="*.cs" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
+<!DOCTYPE language>
+<language name="C#" alternativeNames="CS;CSharp" version="14" kateversion="5.0" section="Sources" extensions="*.cs;*.ashx" mimetype="text/x-csharp-src;text/x-csharp-hde" indenter="cstyle" style="C++">
   <highlighting>
     <list name="keywords">
       <item>abstract</item>
@@ -160,7 +160,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace"/>
       <comment name="multiLine" start="/*" end="*/" region="BlockComment" />
     </comments>
     <keywords casesensitive="1" />
diff --git a/xml/css.xml b/xml/css.xml
--- a/xml/css.xml
+++ b/xml/css.xml
@@ -1,1783 +1,2081 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-  <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
-  <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-  <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-]>
-
-<!--
-
-Kate CSS syntax highlighting definition
-
-Changelog:
-
-- Version 8, by Jonathan Poelen
-- fix some Operator and Selector Tag highlighting
-
-- Version 7, by Jonathan Poelen
-- fix tag followed by a pseudo-class in a nested rule (@media, ...)
-- fix constraint in a rule
-- fix Kate auto-completion for properties and rules
-- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Variable, Value Keyword, Color, Number, Unit, Selector Tag
-
-- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
-- Remake for complex CSS syntax, avoid errors
-
-- Version 2.13, by Guo Yunhe
-- Add all W3C Work Draft properties
-
-- Version 2.06, by Mte90:
-- CSS3 tag
-
-- Version 2.03, by Milian Wolff:
-- Make it spelling aware
-
-- Version 2.08, Joseph Wenninger:
-- CSS3 media queries
-
--->
-
-<language name="CSS" version="13" kateversion="5.53" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
-    <!-- https://www.w3.org/Style/CSS/current-work -->
-
-    <highlighting>
-        <list name="properties">
-            <!-- W3C > Work Draft, from https://www.w3.org/Style/CSS/all-properties -->
-            <item>align-content</item>
-            <item>align-items</item>
-            <item>alignment-baseline</item>
-            <item>align-self</item>
-            <item>all</item>
-            <item>animation</item>
-            <item>animation-delay</item>
-            <item>animation-direction</item>
-            <item>animation-duration</item>
-            <item>animation-fill-mode</item>
-            <item>animation-iteration-count</item>
-            <item>animation-name</item>
-            <item>animation-play-state</item>
-            <item>animation-timing-function</item>
-            <item>appearance</item>
-            <item>azimuth</item>
-            <item>backface-visibility</item>
-            <item>background</item>
-            <item>background-attachment</item>
-            <item>background-blend-mode</item>
-            <item>background-clip</item>
-            <item>background-color</item>
-            <item>background-image</item>
-            <item>background-image-transform</item>
-            <item>background-origin</item>
-            <item>background-position</item>
-            <item>background-repeat</item>
-            <item>background-size</item>
-            <item>baseline-shift</item>
-            <item>block-size</item>
-            <item>block-step</item>
-            <item>block-step-align</item>
-            <item>block-step-insert</item>
-            <item>block-step-round</item>
-            <item>block-step-size</item>
-            <item>bookmark-label</item>
-            <item>bookmark-level</item>
-            <item>bookmark-state</item>
-            <item>border</item>
-            <item>border-block</item>
-            <item>border-block-color</item>
-            <item>border-block-end</item>
-            <item>border-block-end-color</item>
-            <item>border-block-end-style</item>
-            <item>border-block-end-width</item>
-            <item>border-block-start</item>
-            <item>border-block-start-color</item>
-            <item>border-block-start-style</item>
-            <item>border-block-start-width</item>
-            <item>border-block-style</item>
-            <item>border-block-width</item>
-            <item>border-bottom</item>
-            <item>border-bottom-color</item>
-            <item>border-bottom-left-radius</item>
-            <item>border-bottom-right-radius</item>
-            <item>border-bottom-style</item>
-            <item>border-bottom-width</item>
-            <item>border-boundary</item>
-            <item>border-collapse</item>
-            <item>border-color</item>
-            <item>border-image</item>
-            <item>border-image-outset</item>
-            <item>border-image-repeat</item>
-            <item>border-image-slice</item>
-            <item>border-image-source</item>
-            <item>border-image-transform</item>
-            <item>border-image-width</item>
-            <item>border-inline</item>
-            <item>border-inline-color</item>
-            <item>border-inline-end</item>
-            <item>border-inline-end-color</item>
-            <item>border-inline-end-style</item>
-            <item>border-inline-end-width</item>
-            <item>border-inline-start</item>
-            <item>border-inline-start-color</item>
-            <item>border-inline-start-style</item>
-            <item>border-inline-start-width</item>
-            <item>border-inline-style</item>
-            <item>border-inline-width</item>
-            <item>border-left</item>
-            <item>border-left-color</item>
-            <item>border-left-style</item>
-            <item>border-left-width</item>
-            <item>border-radius</item>
-            <item>border-right</item>
-            <item>border-right-color</item>
-            <item>border-right-style</item>
-            <item>border-right-width</item>
-            <item>border-spacing</item>
-            <item>border-style</item>
-            <item>border-top</item>
-            <item>border-top-color</item>
-            <item>border-top-left-radius</item>
-            <item>border-top-right-radius</item>
-            <item>border-top-style</item>
-            <item>border-top-width</item>
-            <item>border-width</item>
-            <item>bottom</item>
-            <item>box-decoration-break</item>
-            <item>box-shadow</item>
-            <item>box-sizing</item>
-            <item>box-snap</item>
-            <item>break-after</item>
-            <item>break-before</item>
-            <item>break-inside</item>
-            <item>caption-side</item>
-            <item>caret</item>
-            <item>caret-color</item>
-            <item>caret-shape</item>
-            <item>clear</item>
-            <item>clip</item>
-            <item>clip-path</item>
-            <item>clip-rule</item>
-            <item>color</item>
-            <item>color-adjust</item>
-            <item>color-interpolation-filters</item>
-            <item>columns</item>
-            <item>column-count</item>
-            <item>column-fill</item>
-            <item>column-gap</item>
-            <item>column-rule</item>
-            <item>column-rule-color</item>
-            <item>column-rule-style</item>
-            <item>column-rule-width</item>
-            <item>column-span</item>
-            <item>column-width</item>
-            <item>contain</item>
-            <item>content</item>
-            <item>continue</item>
-            <item>counter-increment</item>
-            <item>counter-reset</item>
-            <item>counter-set</item>
-            <item>cue</item>
-            <item>cue-after</item>
-            <item>cue-before</item>
-            <item>cursor</item>
-            <item>direction</item>
-            <item>display</item>
-            <item>dominant-baseline</item>
-            <item>elevation</item>
-            <item>empty-cells</item>
-            <item>fill</item>
-            <item>fill-break</item>
-            <item>fill-color</item>
-            <item>fill-image</item>
-            <item>fill-opacity</item>
-            <item>fill-origin</item>
-            <item>fill-position</item>
-            <item>fill-repeat</item>
-            <item>fill-rule</item>
-            <item>fill-size</item>
-            <item>filter</item>
-            <item>flex</item>
-            <item>flex-basis</item>
-            <item>flex-direction</item>
-            <item>flex-flow</item>
-            <item>flex-grow</item>
-            <item>flex-shrink</item>
-            <item>flex-wrap</item>
-            <item>float</item>
-            <item>float-defer</item>
-            <item>float-offset</item>
-            <item>float-reference</item>
-            <item>flood-color</item>
-            <item>flood-opacity</item>
-            <item>flow-from</item>
-            <item>flow-into</item>
-            <item>font</item>
-            <item>font-family</item>
-            <item>font-feature-settings</item>
-            <item>font-kerning</item>
-            <item>font-language-override</item>
-            <item>font-max-size</item>
-            <item>font-min-size</item>
-            <item>font-optical-sizing</item>
-            <item>font-palette</item>
-            <item>font-size</item>
-            <item>font-size-adjust</item>
-            <item>font-stretch</item>
-            <item>font-style</item>
-            <item>font-synthesis</item>
-            <item>font-variant</item>
-            <item>font-variant-alternates</item>
-            <item>font-variant-caps</item>
-            <item>font-variant-east-asian</item>
-            <item>font-variant-emoji</item>
-            <item>font-variant-ligatures</item>
-            <item>font-variant-numeric</item>
-            <item>font-variant-position</item>
-            <item>font-variation-settings</item>
-            <item>font-weight</item>
-            <item>footnote-display</item>
-            <item>footnote-policy</item>
-            <item>gap</item>
-            <item>glyph-orientation-vertical</item>
-            <item>grid</item>
-            <item>grid-area</item>
-            <item>grid-auto-columns</item>
-            <item>grid-auto-flow</item>
-            <item>grid-auto-rows</item>
-            <item>grid-column</item>
-            <item>grid-column-end</item>
-            <item>grid-column-gap</item>
-            <item>grid-column-start</item>
-            <item>grid-gap</item>
-            <item>grid-row</item>
-            <item>grid-row-end</item>
-            <item>grid-row-gap</item>
-            <item>grid-row-start</item>
-            <item>grid-template</item>
-            <item>grid-template-areas</item>
-            <item>grid-template-columns</item>
-            <item>grid-template-rows</item>
-            <item>hanging-punctuation</item>
-            <item>height</item>
-            <item>hyphenate-character</item>
-            <item>hyphenate-limit-chars</item>
-            <item>hyphenate-limit-last</item>
-            <item>hyphenate-limit-lines</item>
-            <item>hyphenate-limit-zone</item>
-            <item>hyphens</item>
-            <item>image-orientation</item>
-            <item>image-rendering</item>
-            <item>image-resolution</item>
-            <item>initial-letter</item>
-            <item>initial-letter-align</item>
-            <item>initial-letter-wrap</item>
-            <item>inline-size</item>
-            <item>inset</item>
-            <item>inset-block</item>
-            <item>inset-block-end</item>
-            <item>inset-block-start</item>
-            <item>inset-inline</item>
-            <item>inset-inline-end</item>
-            <item>inset-inline-start</item>
-            <item>isolation</item>
-            <item>justify-content</item>
-            <item>justify-items</item>
-            <item>justify-self</item>
-            <item>left</item>
-            <item>letter-spacing</item>
-            <item>lighting-color</item>
-            <item>line-break</item>
-            <item>line-grid</item>
-            <item>line-height</item>
-            <item>line-height-step</item>
-            <item>line-snap</item>
-            <item>list-style</item>
-            <item>list-style-image</item>
-            <item>list-style-position</item>
-            <item>list-style-type</item>
-            <item>margin</item>
-            <item>margin-block</item>
-            <item>margin-block-end</item>
-            <item>margin-block-start</item>
-            <item>margin-bottom</item>
-            <item>margin-inline</item>
-            <item>margin-inline-end</item>
-            <item>margin-inline-start</item>
-            <item>margin-left</item>
-            <item>margin-right</item>
-            <item>margin-top</item>
-            <item>marker</item>
-            <item>marker-end</item>
-            <item>marker-knockout-left</item>
-            <item>marker-knockout-right</item>
-            <item>marker-mid</item>
-            <item>marker-pattern</item>
-            <item>marker-segment</item>
-            <item>marker-side</item>
-            <item>marker-start</item>
-            <item>marquee-direction</item>
-            <item>marquee-loop</item>
-            <item>marquee-speed</item>
-            <item>marquee-style</item>
-            <item>mask</item>
-            <item>mask-border</item>
-            <item>mask-border-mode</item>
-            <item>mask-border-outset</item>
-            <item>mask-border-repeat</item>
-            <item>mask-border-slice</item>
-            <item>mask-border-source</item>
-            <item>mask-border-width</item>
-            <item>mask-clip</item>
-            <item>mask-composite</item>
-            <item>mask-image</item>
-            <item>mask-mode</item>
-            <item>mask-origin</item>
-            <item>mask-position</item>
-            <item>mask-repeat</item>
-            <item>mask-size</item>
-            <item>mask-type</item>
-            <item>max-block-size</item>
-            <item>max-height</item>
-            <item>max-inline-size</item>
-            <item>max-lines</item>
-            <item>max-width</item>
-            <item>min-block-size</item>
-            <item>min-height</item>
-            <item>min-inline-size</item>
-            <item>min-width</item>
-            <item>mix-blend-mode</item>
-            <item>nav-up</item>
-            <item>nav-down</item>
-            <item>nav-left</item>
-            <item>nav-right</item>
-            <item>object-fit</item>
-            <item>object-position</item>
-            <item>offset</item>
-            <item>offset-after</item>
-            <item>offset-anchor</item>
-            <item>offset-before</item>
-            <item>offset-distance</item>
-            <item>offset-end</item>
-            <item>offset-path</item>
-            <item>offset-position</item>
-            <item>offset-rotate</item>
-            <item>offset-start</item>
-            <item>opacity</item>
-            <item>order</item>
-            <item>orphans</item>
-            <item>outline</item>
-            <item>outline-color</item>
-            <item>outline-offset</item>
-            <item>outline-style</item>
-            <item>outline-width</item>
-            <item>overflow</item>
-            <item>overflow-style</item>
-            <item>overflow-wrap</item>
-            <item>overflow-x</item>
-            <item>overflow-y</item>
-            <item>padding</item>
-            <item>padding-block</item>
-            <item>padding-block-end</item>
-            <item>padding-block-start</item>
-            <item>padding-bottom</item>
-            <item>padding-inline</item>
-            <item>padding-inline-end</item>
-            <item>padding-inline-start</item>
-            <item>padding-left</item>
-            <item>padding-right</item>
-            <item>padding-top</item>
-            <item>page</item>
-            <item>page-break-after</item>
-            <item>page-break-before</item>
-            <item>page-break-inside</item>
-            <item>pause</item>
-            <item>pause-after</item>
-            <item>pause-before</item>
-            <item>perspective</item>
-            <item>perspective-origin</item>
-            <item>pitch</item>
-            <item>pitch-range</item>
-            <item>place-content</item>
-            <item>place-items</item>
-            <item>place-self</item>
-            <item>play-during</item>
-            <item>pointer-events</item>
-            <item>position</item>
-            <item>quotes</item>
-            <item>region-fragment</item>
-            <item>resize</item>
-            <item>richness</item>
-            <item>right</item>
-            <item>rotation</item>
-            <item>rotation-point</item>
-            <item>row-gap</item>
-            <item>ruby-align</item>
-            <item>ruby-merge</item>
-            <item>ruby-position</item>
-            <item>running</item>
-            <item>scrollbar-gutter</item>
-            <item>shape-image-threshold</item>
-            <item>shape-inside</item>
-            <item>shape-margin</item>
-            <item>shape-outside</item>
-            <item>size</item>
-            <item>speak</item>
-            <item>speak-header</item>
-            <item>speak-numeral</item>
-            <item>speak-punctuation</item>
-            <item>speech-rate</item>
-            <item>stress</item>
-            <item>string-set</item>
-            <item>table-layout</item>
-            <item>tab-size</item>
-            <item>text-align-all</item>
-            <item>text-align</item>
-            <item>text-align-last</item>
-            <item>text-combine-upright</item>
-            <item>text-decoration-color</item>
-            <item>text-decoration</item>
-            <item>text-decoration-line</item>
-            <item>text-decoration-skip</item>
-            <item>text-decoration-skip-ink</item>
-            <item>text-decoration-style</item>
-            <item>text-decoration-width</item>
-            <item>text-emphasis</item>
-            <item>text-emphasis-color</item>
-            <item>text-emphasis-position</item>
-            <item>text-emphasis-skip</item>
-            <item>text-emphasis-style</item>
-            <item>text-indent</item>
-            <item>text-justify</item>
-            <item>text-orientation</item>
-            <item>text-overflow</item>
-            <item>text-shadow</item>
-            <item>text-space-collapse</item>
-            <item>text-space-trim</item>
-            <item>text-spacing</item>
-            <item>text-transform</item>
-            <item>text-underline-offset</item>
-            <item>text-underline-position</item>
-            <item>text-wrap</item>
-            <item>top</item>
-            <item>transform</item>
-            <item>transform-box</item>
-            <item>transform-origin</item>
-            <item>transform-style</item>
-            <item>transition</item>
-            <item>transition-delay</item>
-            <item>transition-duration</item>
-            <item>transition-property</item>
-            <item>transition-timing-function</item>
-            <item>unicode-bidi</item>
-            <item>user-select</item>
-            <item>vertical-align</item>
-            <item>visibility</item>
-            <item>voice-family</item>
-            <item>volume</item>
-            <item>white-space</item>
-            <item>widows</item>
-            <item>width</item>
-            <item>will-change</item>
-            <item>word-break</item>
-            <item>word-spacing</item>
-            <item>word-wrap</item>
-            <item>wrap-after</item>
-            <item>wrap-before</item>
-            <item>wrap-flow</item>
-            <item>wrap-inside</item>
-            <item>wrap-through</item>
-            <item>writing-mode</item>
-            <item>z-index</item>
-
-            <!-- Gecko rendering engine CSS property extensions -->
-            <item>-moz-animation</item>
-            <item>-moz-animation-delay</item>
-            <item>-moz-animation-direction</item>
-            <item>-moz-animation-duration</item>
-            <item>-moz-animation-fill-mode</item>
-            <item>-moz-animation-iteration-count</item>
-            <item>-moz-animation-name</item>
-            <item>-moz-animation-play-state</item>
-            <item>-moz-animation-timing-function</item>
-            <item>-moz-appearance</item>
-            <item>-moz-background-clip</item>
-            <item>-moz-background-origin</item>
-            <item>-moz-background-size</item>
-            <item>-moz-border-image</item>
-            <item>-moz-border-radius</item>
-            <item>-moz-border-radius-bottomleft</item>
-            <item>-moz-border-radius-bottomright</item>
-            <item>-moz-border-radius-topleft</item>
-            <item>-moz-border-radius-topright</item>
-            <item>-moz-box-align</item>
-            <item>-moz-box-direction</item>
-            <item>-moz-box-flex</item>
-            <item>-moz-box-flex-group</item>
-            <item>-moz-box-ordinal-group</item>
-            <item>-moz-box-orient</item>
-            <item>-moz-box-pack</item>
-            <item>-moz-box-shadow</item>
-            <item>-moz-box-sizing</item>
-            <item>-moz-box</item>
-            <item>-moz-column-count</item>
-            <item>-moz-column-fill</item>
-            <item>-moz-column-gap</item>
-            <item>-moz-column-rule</item>
-            <item>-moz-column-rule-color</item>
-            <item>-moz-column-rule-style</item>
-            <item>-moz-column-rule-width</item>
-            <item>-moz-columns</item>
-            <item>-moz-column-width</item>
-            <item>-moz-hyphens</item>
-            <item>-moz-opacity</item>
-            <item>-moz-outline-style</item>
-            <item>-moz-perspective</item>
-            <item>-moz-resize</item>
-            <item>-moz-text-align-last</item>
-            <item>-moz-text-decoration-color</item>
-            <item>-moz-text-decoration-line</item>
-            <item>-moz-text-decoration-style</item>
-            <item>-moz-transform</item>
-            <item>-moz-transform-origin</item>
-            <item>-moz-transform-style</item>
-            <item>-moz-transition</item>
-            <item>-moz-transition-delay</item>
-            <item>-moz-transition-duration</item>
-            <item>-moz-transition-property</item>
-            <item>-moz-transition-timing-function</item>
-            <item>-moz-user-select</item>
-
-            <!-- Opera rendering engine CSS property extensions -->
-            <item>-o-background-size</item>
-            <item>-o-linear-gradient</item>
-            <item>-o-text-overflow</item>
-            <item>-o-transition</item>
-            <item>-o-transform-origin</item>
-
-            <!-- konq specific -->
-            <item>konq_bgpos_x</item>
-            <item>konq_bgpos_y</item>
-            <item>-khtml-background-size</item>
-            <item>-khtml-border-top-left-radius</item>
-            <item>-khtml-border-top-right-radius</item>
-            <item>-khtml-border-bottom-left-radius</item>
-            <item>-khtml-border-bottom-right-radius</item>
-            <item>-khtml-border-radius</item>
-            <item>-khtml-box-shadow</item>
-            <item>-khtml-opacity</item>
-
-            <!-- Webkit rendering engine CSS property extensions -->
-            <item>-webkit-appearance</item>
-            <item>-webkit-animation</item>
-            <item>-webkit-animation-name</item>
-            <item>-webkit-animation-duration</item>
-            <item>-webkit-animation-iteration</item>
-            <item>-webkit-animation-direction</item>
-            <item>-webkit-animation-delay</item>
-            <item>-webkit-animation-play-state</item>
-            <item>-webkit-animation-fill-mode</item>
-            <item>-webkit-background-size</item>
-            <item>-webkit-backface-visibility</item>
-            <item>-webkit-border-image</item>
-            <item>-webkit-border-bottom-colors</item>
-            <item>-webkit-border-left-colors</item>
-            <item>-webkit-border-radius</item>
-            <item>-webkit-border-right-colors</item>
-            <item>-webkit-border-top-colors</item>
-            <item>-webkit-border-top-left-radius</item>
-            <item>-webkit-border-top-right-radius</item>
-            <item>-webkit-border-bottom-left-radius</item>
-            <item>-webkit-border-bottom-right-radius</item>
-            <item>-webkit-border-radius-bottomleft</item>
-            <item>-webkit-border-radius-bottomright</item>
-            <item>-webkit-box-align</item>
-            <item>-webkit-box-direction</item>
-            <item>-webkit-box-flex</item>
-            <item>-webkit-box-ordinal-group</item>
-            <item>-webkit-box-orient</item>
-            <item>-webkit-box-pack</item>
-            <item>-webkit-box-reflect</item>
-            <item>-webkit-box-shadow</item>
-            <item>-webkit-box-sizing</item>
-            <item>-webkit-column-count</item>
-            <item>-webkit-column-gap</item>
-            <item>-webkit-hyphens</item>
-            <item>-webkit-linear-gradient</item>
-            <item>-webkit-gradient</item>
-            <item>-webkit-overflow-scrolling</item>
-            <item>-webkit-perspective</item>
-            <item>-webkit-text-decoration</item>
-            <item>-webkit-text-decoration-skip</item>
-            <item>-webkit-text-fill-color</item>
-            <item>-webkit-text-stroke-color</item>
-            <item>-webkit-text-stroke-width</item>
-            <item>-webkit-text-size-adjust</item>
-            <item>-webkit-tap-highlight-color</item>
-            <item>-webkit-transform</item>
-            <item>-webkit-transform-origin</item>
-            <item>-webkit-transform-style</item>
-            <item>-webkit-transition</item>
-            <item>-webkit-transition-property</item>
-            <item>-webkit-transition-delay</item>
-            <item>-webkit-transition-duration</item>
-            <item>-webkit-user-select</item>
-
-            <!-- Trident (a.k.a., MSHTML) CSS property extensions -->
-            <item>zoom</item>
-            <item>-ms-animation-name</item>
-            <item>-ms-animation-duration</item>
-            <item>-ms-animation-iteration</item>
-            <item>-ms-animation-direction</item>
-            <item>-ms-animation-delay</item>
-            <item>-ms-animation-play-state</item>
-            <item>-ms-animation-fill-mode</item>
-            <item>-ms-box-sizing</item>
-            <item>-ms-filter</item>
-            <item>-ms-flex</item>
-            <item>-ms-flex-align</item>
-            <item>-ms-flex-direction</item>
-            <item>-ms-flex-flow</item>
-            <item>-ms-flex-item-align</item>
-            <item>-ms-flex-line-pack</item>
-            <item>-ms-flex-negative</item>
-            <item>-ms-flex-order</item>
-            <item>-ms-flex-pack</item>
-            <item>-ms-flex-positive</item>
-            <item>-ms-flex-position</item>
-            <item>-ms-flex-preferred-size</item>
-            <item>-ms-flex-wrap</item>
-            <item>-ms-interpolation-mode</item>
-            <item>-ms-linear-gradient</item>
-            <item>-ms-overflow-style</item>
-            <item>-ms-text-size-adjust</item>
-            <item>-ms-transform</item>
-            <item>-ms-transition</item>
-            <item>-ms-user-select</item>
-        </list>
-
-        <list name="value keywords">
-            <item>inherit</item>
-            <item>unset</item>
-            <item>auto</item>
-            <!-- <item>revert</item> -->
-        </list>
-
-        <list name="values">
-            <item>none</item>
-            <item>hidden</item>
-            <item>initial</item>
-            <item>dotted</item>
-            <item>dashed</item>
-            <item>solid</item>
-            <item>double</item>
-            <item>groove</item>
-            <item>ridge</item>
-            <item>inset</item>
-            <item>outset</item>
-            <item>xx-small</item>
-            <item>x-small</item>
-            <item>small</item>
-            <item>medium</item>
-            <item>large</item>
-            <item>x-large</item>
-            <item>xx-large</item>
-            <item>smaller</item>
-            <item>larger</item>
-            <item>italic</item>
-            <item>oblique</item>
-            <item>small-caps</item>
-            <item>normal</item>
-            <item>bold</item>
-            <item>bolder</item>
-            <item>lighter</item>
-            <item>light</item>
-            <item>transparent</item>
-            <item>repeat</item>
-            <item>repeat-x</item>
-            <item>repeat-y</item>
-            <item>no-repeat</item>
-            <item>baseline</item>
-            <item>sub</item>
-            <item>super</item>
-            <item>top</item>
-            <item>text-top</item>
-            <item>middle</item>
-            <item>bottom</item>
-            <item>text-bottom</item>
-            <item>left</item>
-            <item>right</item>
-            <item>center</item>
-            <item>justify</item>
-            <item>konq-center</item>
-            <item>disc</item>
-            <item>circle</item>
-            <item>square</item>
-            <item>box</item>
-            <item>decimal</item>
-            <item>decimal-leading-zero</item>
-            <item>lower-roman</item>
-            <item>upper-roman</item>
-            <item>lower-greek</item>
-            <item>lower-alpha</item>
-            <item>lower-latin</item>
-            <item>upper-alpha</item>
-            <item>upper-latin</item>
-            <item>hebrew</item>
-            <item>armenian</item>
-            <item>georgian</item>
-            <item>cjk-ideographic</item>
-            <item>hiragana</item>
-            <item>katakana</item>
-            <item>hiragana-iroha</item>
-            <item>katakana-iroha</item>
-            <item>list-item</item>
-            <item>compact</item>
-            <item>marker</item>
-            <item>crosshair</item>
-            <item>default</item>
-            <item>pointer</item>
-            <item>move</item>
-            <item>e-resize</item>
-            <item>ne-resize</item>
-            <item>nw-resize</item>
-            <item>n-resize</item>
-            <item>se-resize</item>
-            <item>sw-resize</item>
-            <item>s-resize</item>
-            <item>w-resize</item>
-            <item>text</item>
-            <item>wait</item>
-            <item>help</item>
-            <item>above</item>
-            <item>absolute</item>
-            <item>always</item>
-            <item>avoid</item>
-            <item>avoid-page</item>
-            <item>avoid-column</item>
-            <item>avoid-region</item>
-            <item>below</item>
-            <item>bidi-override</item>
-            <item>blink</item>
-            <item>both</item>
-            <item>break-word</item>
-            <item>capitalize</item>
-            <item>caption</item>
-            <item>clip</item>
-            <item>close-quote</item>
-            <item>collapse</item>
-            <item>column</item>
-            <item>condensed</item>
-            <item>crop</item>
-            <item>cross</item>
-            <item>ellipsis</item>
-            <item>ellipsis-word</item>
-            <item>embed</item>
-            <item>expanded</item>
-            <item>extra-condensed</item>
-            <item>extra-expanded</item>
-            <item>fixed</item>
-            <item>hand</item>
-            <item>hide</item>
-            <item>higher</item>
-            <item>icon</item>
-            <item>inside</item>
-            <item>invert</item>
-            <item>landscape</item>
-            <item>level</item>
-            <item>line-through</item>
-            <item>loud</item>
-            <item>lower</item>
-            <item>lowercase</item>
-            <item>ltr</item>
-            <item>menu</item>
-            <item>message-box</item>
-            <item>mix</item>
-            <item>narrower</item>
-            <item>no-close-quote</item>
-            <item>no-open-quote</item>
-            <item>nowrap</item>
-            <item>open-quote</item>
-            <item>outside</item>
-            <item>overline</item>
-            <item>portrait</item>
-            <item>pre</item>
-            <item>pre-line</item>
-            <item>pre-wrap</item>
-            <item>relative</item>
-            <item>rtl</item>
-            <item>scroll</item>
-            <item>semi-condensed</item>
-            <item>semi-expanded</item>
-            <item>separate</item>
-            <item>show</item>
-            <item>small-caption</item>
-            <item>static</item>
-            <item>static-position</item>
-            <item>status-bar</item>
-            <item>sticky</item>
-            <item>thick</item>
-            <item>thin</item>
-            <item>ultra-condensed</item>
-            <item>ultra-expanded</item>
-            <item>underline</item>
-            <item>uppercase</item>
-            <item>visible</item>
-            <item>wider</item>
-            <item>break</item>
-            <item>serif</item>
-            <item>sans-serif</item>
-            <item>cursive</item>
-            <item>fantasy</item>
-            <item>monospace</item>
-            <item>border-box</item>
-            <item>content-box</item>
-            <item>-epub-hyphens</item>
-            <item>contain</item>
-            <item>cover</item>
-
-            <!-- display -->
-            <!-- https://developer.mozilla.org/fr/docs/Web/CSS/display -->
-            <item>block</item>
-            <item>inline</item>
-            <item>run-in</item>
-
-            <item>flow</item>
-            <item>flow-root</item>
-            <item>table</item>
-            <item>flex</item>
-            <item>grid</item>
-            <item>ruby</item>
-
-            <item>list-item</item>
-
-            <item>table-row-group</item>
-            <item>table-header-group</item>
-            <item>table-footer-group</item>
-            <item>table-row</item>
-            <item>table-cell</item>
-            <item>table-column-group</item>
-            <item>table-column</item>
-            <item>table-caption</item>
-            <item>ruby-base</item>
-            <item>ruby-text</item>
-            <item>ruby-base-container</item>
-            <item>ruby-text-container</item>
-
-            <item>contents</item>
-
-            <item>inline-block</item>
-            <item>inline-table</item>
-            <item>inline-flex</item>
-            <item>inline-grid</item>
-
-            <!-- transition and animation -->
-            <item>all</item>
-            <item>ease</item>
-            <item>ease-in</item>
-            <item>ease-out</item>
-            <item>ease-in-out</item>
-            <item>step-start</item>
-            <item>step-end</item>
-            <item>linear</item>
-
-            <!-- animation -->
-            <item>infinite</item>
-            <item>reverse</item>
-            <item>alternate</item>
-            <item>alternate-reverse</item>
-            <item>forwards</item>
-            <item>backwards</item>
-            <item>running</item>
-            <item>paused</item>
-        </list>
-
-        <list name="colors">
-            <item>black</item>
-            <item>silver</item>
-            <item>gray</item>
-            <item>white</item>
-            <item>maroon</item>
-            <item>red</item>
-            <item>purple</item>
-            <item>fuchsia</item>
-            <item>green</item>
-            <item>lime</item>
-            <item>olive</item>
-            <item>yellow</item>
-            <item>navy</item>
-            <item>blue</item>
-            <item>teal</item>
-            <item>aqua</item>
-            <item>orange</item>
-            <item>aliceblue</item>
-            <item>antiquewhite</item>
-            <item>aquamarine</item>
-            <item>azure</item>
-            <item>beige</item>
-            <item>bisque</item>
-            <item>blanchedalmond</item>
-            <item>blueviolet</item>
-            <item>brown</item>
-            <item>burlywood</item>
-            <item>cadetblue</item>
-            <item>chartreuse</item>
-            <item>chocolate</item>
-            <item>coral</item>
-            <item>cornflowerblue</item>
-            <item>cornsilk</item>
-            <item>crimson</item>
-            <item>cyan</item>
-            <item>aqua</item>
-            <item>darkblue</item>
-            <item>darkcyan</item>
-            <item>darkgoldenrod</item>
-            <item>darkgray</item>
-            <item>darkgreen</item>
-            <item>darkgrey</item>
-            <item>darkkhaki</item>
-            <item>darkmagenta</item>
-            <item>darkolivegreen</item>
-            <item>darkorange</item>
-            <item>darkorchid</item>
-            <item>darkred</item>
-            <item>darksalmon</item>
-            <item>darkseagreen</item>
-            <item>darkslateblue</item>
-            <item>darkslategray</item>
-            <item>darkslategrey</item>
-            <item>darkturquoise</item>
-            <item>darkviolet</item>
-            <item>deeppink</item>
-            <item>deepskyblue</item>
-            <item>dimgray</item>
-            <item>dimgrey</item>
-            <item>dodgerblue</item>
-            <item>firebrick</item>
-            <item>floralwhite</item>
-            <item>forestgreen</item>
-            <item>gainsboro</item>
-            <item>ghostwhite</item>
-            <item>gold</item>
-            <item>goldenrod</item>
-            <item>greenyellow</item>
-            <item>grey</item>
-            <item>honeydew</item>
-            <item>hotpink</item>
-            <item>indianred</item>
-            <item>indigo</item>
-            <item>ivory</item>
-            <item>khaki</item>
-            <item>lavender</item>
-            <item>lavenderblush</item>
-            <item>lawngreen</item>
-            <item>lemonchiffon</item>
-            <item>lightblue</item>
-            <item>lightcoral</item>
-            <item>lightcyan</item>
-            <item>lightgoldenrodyellow</item>
-            <item>lightgray</item>
-            <item>lightgreen</item>
-            <item>lightgrey</item>
-            <item>lightpink</item>
-            <item>lightsalmon</item>
-            <item>lightseagreen</item>
-            <item>lightskyblue</item>
-            <item>lightslategray</item>
-            <item>lightslategrey</item>
-            <item>lightsteelblue</item>
-            <item>lightyellow</item>
-            <item>limegreen</item>
-            <item>linen</item>
-            <item>magenta</item>
-            <item>fuchsia</item>
-            <item>mediumaquamarine</item>
-            <item>mediumblue</item>
-            <item>mediumorchid</item>
-            <item>mediumpurple</item>
-            <item>mediumseagreen</item>
-            <item>mediumslateblue</item>
-            <item>mediumspringgreen</item>
-            <item>mediumturquoise</item>
-            <item>mediumvioletred</item>
-            <item>midnightblue</item>
-            <item>mintcream</item>
-            <item>mistyrose</item>
-            <item>moccasin</item>
-            <item>navajowhite</item>
-            <item>oldlace</item>
-            <item>olivedrab</item>
-            <item>orangered</item>
-            <item>orchid</item>
-            <item>palegoldenrod</item>
-            <item>palegreen</item>
-            <item>paleturquoise</item>
-            <item>palevioletred</item>
-            <item>papayawhip</item>
-            <item>peachpuff</item>
-            <item>peru</item>
-            <item>pink</item>
-            <item>plum</item>
-            <item>powderblue</item>
-            <item>rebeccapurple</item>
-            <item>rosybrown</item>
-            <item>royalblue</item>
-            <item>saddlebrown</item>
-            <item>salmon</item>
-            <item>sandybrown</item>
-            <item>seagreen</item>
-            <item>seashell</item>
-            <item>sienna</item>
-            <item>skyblue</item>
-            <item>slateblue</item>
-            <item>slategray</item>
-            <item>slategrey</item>
-            <item>snow</item>
-            <item>springgreen</item>
-            <item>steelblue</item>
-            <item>tan</item>
-            <item>thistle</item>
-            <item>tomato</item>
-            <item>turquoise</item>
-            <item>violet</item>
-            <item>wheat</item>
-            <item>whitesmoke</item>
-            <item>yellowgreen</item>
-            <item>rebeccapurple</item>
-
-            <item>ActiveBorder</item>
-            <item>ActiveCaption</item>
-            <item>AppWorkspace</item>
-            <item>Background</item>
-            <item>ButtonFace</item>
-            <item>ButtonHighlight</item>
-            <item>ButtonShadow</item>
-            <item>ButtonText</item>
-            <item>CaptionText</item>
-            <item>GrayText</item>
-            <item>Highlight</item>
-            <item>HighlightText</item>
-            <item>InactiveBorder</item>
-            <item>InactiveCaption</item>
-            <item>InactiveCaptionText</item>
-            <item>InfoBackground</item>
-            <item>InfoText</item>
-            <item>Menu</item>
-            <item>MenuText</item>
-            <item>Scrollbar</item>
-            <item>ThreeDDarkShadow</item>
-            <item>ThreeDFace</item>
-            <item>ThreeDHighlight</item>
-            <item>ThreeDLightShadow</item>
-            <item>ThreeDShadow</item>
-            <item>Window</item>
-            <item>WindowFrame</item>
-            <item>WindowText</item>
-        </list>
-
-        <list name="functions">
-            <item>attr</item>
-            <item>calc</item>
-            <item>hsl</item>
-            <item>hsla</item>
-            <item>linear-gradient</item>
-            <item>radial-gradient</item>
-            <item>repeating-linear-gradient</item>
-            <item>repeating-radial-gradient</item>
-            <item>rgb</item>
-            <item>rgba</item>
-            <item>var</item>
-            <item>url</item>
-
-            <!-- CSS4 -->
-            <item>min</item>
-            <item>max</item>
-            <item>clamp</item>
-            <item>toggle</item>
-            <item>hwb</item>
-            <item>device-cmyk</item>
-            <item>color</item>
-            <item>element</item>
-            <item>image</item>
-            <item>image-set</item>
-            <item>conic-gradient</item>
-
-            <!-- counter style -->
-            <item>symbols</item>
-
-            <!-- clip -->
-            <item>rect</item>
-
-            <!-- shape-outside and clip-path -->
-            <item>inset</item>
-            <item>circle</item>
-            <item>ellipse</item>
-            <item>polygon</item>
-
-            <!-- filter and backdrop-filter -->
-            <item>blur</item>
-            <item>brightness</item>
-            <item>contrast</item>
-            <item>drop-shadow</item>
-            <item>grayscale</item>
-            <item>hue-rotate</item>
-            <item>invert</item>
-            <item>opacity</item>
-            <item>saturate</item>
-            <item>sepia</item>
-
-            <!-- grid-template-columns and grid-template-rows -->
-            <item>max-content</item>
-            <item>min-content</item>
-            <item>minmax</item>
-            <item>fix-content</item>
-            <item>repeat</item>
-
-            <!-- transition and animation -->
-            <item>cubic-bezier</item>
-            <item>frames</item>
-            <item>steps</item>
-
-            <!-- transform -->
-            <item>matrix</item>
-            <item>matrix3d</item>
-            <item>perspective</item>
-            <item>rotate</item>
-            <item>rotate3d</item>
-            <item>rotateX</item>
-            <item>rotateY</item>
-            <item>rotateZ</item>
-            <item>scale</item>
-            <item>scale3d</item>
-            <item>scaleX</item>
-            <item>scaleY</item>
-            <item>scaleZ</item>
-            <item>skew</item>
-            <item>skewX</item>
-            <item>skewY</item>
-            <item>translate</item>
-            <item>translate3d</item>
-            <item>translateX</item>
-            <item>translateY</item>
-            <item>translateZ</item>
-
-            <!-- inner @font-face -->
-            <item>local</item>
-            <item>format</item>
-        </list>
-
-        <list name="medias">
-            <!-- types -->
-            <item>all</item>
-            <item>print</item>
-            <item>screen</item>
-            <item>speech</item>
-
-            <!-- features -->
-            <item>any-pointer</item>
-            <item>any-hover</item>
-            <item>aspect-ratio</item>
-            <item>color</item>
-            <item>color-gamut</item>
-            <item>color-index</item>
-            <item>display-mode</item>
-            <item>grid</item>
-            <item>height</item>
-            <item>hover</item>
-            <item>max-aspect-ratio</item>
-            <item>max-color</item>
-            <item>max-color-index</item>
-            <item>max-device-aspect-ratio</item>
-            <item>max-device-height</item>
-            <item>max-device-width</item>
-            <item>max-height</item>
-            <item>max-monochrome</item>
-            <item>max-resolution</item>
-            <item>max-width</item>
-            <item>min-aspect-ratio</item>
-            <item>min-color</item>
-            <item>min-color-index</item>
-            <item>min-device-aspect-ratio</item>
-            <item>min-device-height</item>
-            <item>min-device-width</item>
-            <item>min-height</item>
-            <item>min-monochrome</item>
-            <item>min-resolution</item>
-            <item>min-width</item>
-            <item>monochrome</item>
-            <item>orientation</item>
-            <item>pointer</item>
-            <item>resolution</item>
-            <item>scan</item>
-            <item>update</item>
-            <item>width</item>
-        </list>
-
-        <!-- prefixed by :: -->
-        <list name="pseudoelements">
-            <item>after</item>
-            <item>before</item>
-            <item>cue</item>
-            <item>first-letter</item>
-            <item>first-line</item>
-            <item>selection</item>
-
-            <!-- experimental -->
-            <item>backdrop</item>
-            <item>placeholder</item>
-            <!-- <item>marker</item> -->
-            <item>slotted</item>
-            <!-- <item>spelling-error</item> -->
-            <!-- <item>grammar-error</item> -->
-
-            <!-- UI pseudo-classes -->
-            <item>value</item>
-            <item>choices</item>
-            <item>repeat-item</item>
-            <item>repeat-index</item>
-
-            <item>-moz-progress-bar</item>
-            <item>-moz-range-progress</item>
-            <item>-moz-range-thumb</item>
-            <item>-moz-range-track</item>
-            <item>-moz-selection</item>
-            <item>-ms-fill</item>
-            <item>-ms-fill-lower</item>
-            <item>-ms-fill-upper</item>
-            <item>-ms-thumb</item>
-            <item>-ms-track</item>
-            <item>-webkit-progress-bar</item>
-            <item>-webkit-progress-value</item>
-            <item>-webkit-slider-runnable-track</item>
-            <item>-webkit-slider-thumb</item>
-        </list>
-
-        <!-- prefixed by : -->
-        <list name="pseudoclasses">
-            <item>active</item>
-            <item>any-link</item>
-            <item>checked</item>
-            <item>default</item>
-            <item>defined</item>
-            <!-- <item>dir</item> -->
-            <item>disabled</item>
-            <item>empty</item>
-            <item>enabled</item>
-            <item>first-child</item>
-            <item>first-of-type</item>
-            <item>fullscreen</item>
-            <item>focus</item>
-            <item>focus-within</item>
-            <item>host</item>
-            <item>hover</item>
-            <item>in-range</item>
-            <item>indeterminate</item>
-            <item>invalid</item>
-            <item>lang</item>
-            <item>last-child</item>
-            <item>last-of-type</item>
-            <item>link</item>
-            <item>not</item>
-            <item>nth-child</item>
-            <item>nth-last-child</item>
-            <item>nth-last-of-type</item>
-            <item>nth-of-type</item>
-            <item>only-child</item>
-            <item>only-of-type</item>
-            <item>optional</item>
-            <item>out-of-range</item>
-            <item>placeholder-shown</item>
-            <item>read-only</item>
-            <item>read-write</item>
-            <item>required</item>
-            <item>root</item>
-            <item>scope</item>
-            <item>target</item>
-            <item>valid</item>
-            <item>visited</item>
-
-            <!-- pseudo-elements -->
-            <item>after</item>
-            <item>before</item>
-            <item>cue</item>
-            <item>first-letter</item>
-            <item>first-line</item>
-            <item>selection</item>
-        </list>
-
-        <list name="pseudoclass-selector">
-            <item>not</item>
-            <item>matches</item>
-        </list>
-
-        <list name="pseudoclasses-@page">
-            <item>blank</item>
-            <item>first</item>
-            <item>left</item>
-            <item>recto</item>
-            <item>right</item>
-            <item>verso</item>
-        </list>
-
-        <list name="at-rules">
-            <item>@character</item>
-            <item>@charset</item>
-            <item>@import</item>
-            <item>@namespace</item>
-        </list>
-
-        <list name="nested at-rules">
-            <item>@document</item>
-            <item>@media</item>
-            <item>@supports</item>
-        </list>
-
-        <list name="@viewport">
-            <item>@viewport</item>
-        </list>
-
-        <list name="within-@viewport">
-            <item>min-width</item>
-            <item>max-width</item>
-            <item>width</item>
-            <item>min-height</item>
-            <item>max-height</item>
-            <item>height</item>
-            <item>zoom</item>
-            <item>min-zoom</item>
-            <item>max-zoom</item>
-            <item>user-zoom</item>
-            <item>orientation</item>
-            <item>viewport-fit</item>
-        </list>
-
-        <list name="@page">
-            <item>@page</item>
-        </list>
-
-        <list name="within-@page">
-            <item>size</item>
-            <item>marks</item>
-            <item>bleed</item>
-        </list>
-
-        <list name="@font-face">
-            <item>@font-face</item>
-        </list>
-
-        <list name="within-@font-face">
-            <item>font-display</item>
-            <item>font-family</item>
-            <item>font-stretch</item>
-            <item>font-style</item>
-            <item>font-weight</item>
-            <item>font-variant</item>
-            <item>font-feature-settings</item>
-            <item>font-variation-settings</item>
-            <item>src</item>
-            <item>unicode-range</item>
-        </list>
-
-        <list name="@keyframes">
-            <item>@keyframes</item>
-        </list>
-
-        <list name="within-@keyframes">
-            <item>from</item>
-            <item>to</item>
-        </list>
-
-        <list name="media operators">
-            <item>and</item>
-            <item>only</item>
-            <item>not</item>
-        </list>
-
-        <contexts>
-            <context name="Base" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" />
-                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
-                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
-                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
-            </context>
-
-            <context name="FindSelector" attribute="Normal Text" lineEndContext="#stay">
-                <IncludeRules context="FindComments" />
-                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
-                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
-                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
-                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
-            </context>
-
-            <!-- find functions // rgba(255,255,255,0.75) -->
-            <context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" />
-            </context>
-
-            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
-            <context name="FindValues" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Annotation" context="Annotation" char="!" />
-                <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
-                <keyword attribute="Value" context="#stay" String="values" />
-                <keyword attribute="Color" context="#stay" String="colors" />
-                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
-                <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])" />
-                <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
-            </context>
-
-            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <WordDetect attribute="Annotation" context="#pop" String="important" />
-            </context>
-
-            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <!-- https://drafts.csswg.org/css-values-4/#lengths -->
-                <RegExpr attribute="Unit" context="#stay" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)(?![-+])" />
-            </context>
-
-            <!-- find strings // "some words" 'some words' -->
-            <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="String" context="StringDQ" char="&quot;" />
-                <DetectChar attribute="String" context="StringSQ" char="'" />
-            </context>
-
-            <!-- find comments // /* comment */ -->
-            <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
-                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="true"/>
-                <Detect2Chars attribute="Error" context="Error" char="/" char1="/" />
-            </context>
-
-            <context name="Error" attribute="Error" lineEndContext="#pop">
-                <RegExpr attribute="Error" context="#pop" String=".*" />
-            </context>
-
-            <context name="IsComments" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*BEGIN\b.*\*/" beginRegion="UserDefined" />
-                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*END\b.*\*/" endRegion="UserDefined" />
-                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
-            </context>
-
-            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
-                <keyword attribute="At Rule" context="#pop!NestedAtRule" String="nested at-rules" />
-                <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
-                <keyword attribute="At Rule" context="#pop!@keyframes" String="@keyframes" />
-                <keyword attribute="At Rule" context="#pop!@viewport" String="@viewport" />
-                <keyword attribute="At Rule" context="#pop!@font-face" String="@font-face" />
-                <keyword attribute="At Rule" context="#pop!@page" String="@page" />
-                <RegExpr attribute="At Rule" context="#pop!UnknownAtRule" String="@[a-zA-Z0-9\-_]+\b" />
-            </context>
-
-            <context name="@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="Within-@keyframes" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <keyword attribute="Value" context="#stay" String="within-@keyframes" />
-                <RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+%" />
-            </context>
-
-            <context name="@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@viewport" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@viewport" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@font-face" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <keyword attribute="Property" context="IsProperty" String="within-@font-face" />
-                <RegExpr attribute="Unknown Property" context="IsProperty" String="[A-Za-z_-]+\b" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-            </context>
-
-            <context name="@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@page" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop">
-                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
-                <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="Within-@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@page" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="IsProperty" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-            </context>
-
-            <context name="NestedAtRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="NestedBase" char="{" beginRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="NestedBase" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="Base" />
-            </context>
-
-            <context name="AtRule" attribute="Normal Text" lineEndContext="#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="UnknownAtRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="AtRuleValue" attribute="Normal Text" lineEndContext="#stay">
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <keyword attribute="Keyword" context="#stay" String="media operators" />
-                <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
-                <keyword attribute="Value" context="#stay" String="medias" />
-                <IncludeRules context="FindValues" />
-            </context>
-
-            <context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop" char="]" />
-                <IncludeRules context="FindStrings" />
-                <DetectChar   attribute="Operator" context="SelectorAttrValue" char="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorAttrValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
-                <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
-                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
-                <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="Comment" attribute="Comment" lineEndContext="#stay">
-                <DetectSpaces />
-                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
-                <IncludeRules context="##Comments" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="RuleSet" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <RegExpr attribute="Property" context="Rule" String="[A-Za-z_-]+(?=\s*:)" lookAhead="true" />
-                <IncludeRules context="Base" />
-                <RegExpr attribute="Normal Text" context="#stay" String="[A-Za-z_-]+" />
-                <!-- auto-completion only, includes by previous rule -->
-                <keyword attribute="Normal Text" context="#stay" String="properties" />
-            </context>
-
-            <context name="Rule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-                <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
-                <keyword attribute="Property" context="#stay" String="properties" />
-                <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="IsVariable" attribute="Normal Text" lineEndContext="#pop">
-                <DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" />
-                <RegExpr attribute="Variable" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="RuleParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <!-- Jump out conditions -->
-                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="Function" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="FunctionParameters" char="(" />
-                <StringDetect attribute="Function" context="FunctionVar" String="var(" />
-                <StringDetect attribute="Function" context="FunctionUrl" String="url(" />
-                <StringDetect attribute="Function" context="FunctionCalc" String="calc(" />
-                <keyword attribute="Function" context="#stay" String="functions" />
-                <RegExpr attribute="Normal Text" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="FunctionVar" attribute="Variable" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
-                <DetectSpaces />
-                <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
-            </context>
-
-            <context name="FunctionCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="NestedCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="Calc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="NestedCalc" char="(" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="UrlValue">
-                <DetectSpaces />
-                <IncludeRules context="FindStrings" />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-            </context>
-
-            <context name="UrlValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="#pop#pop#pop" char=")" />
-            </context>
-
-            <context name="FunctionParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-            </context>
-
-            <!-- string contexts -->
-            <context name="StringDQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="&quot;" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="StringSQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="'" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="InsideString" attribute="String" lineEndContext="#stay">
-                <RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" />
-                <RegExpr attribute="String" context="#stay" String="\\?[^&quot;'\\]+" />
-            </context>
-
-        </contexts>
-
-        <itemDatas>
-            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
-            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="String" defStyleNum="dsString"/>
-            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
-            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
-            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
-            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
-            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
-            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
-            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
-            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
-            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
-            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="Comment" defStyleNum="dsComment" />
-            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
-            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
-        </itemDatas>
-    </highlighting>
-
-    <general>
-        <keywords casesensitive="0" weakDeliminator="-%@" />
-        <comments>
-            <comment name="multiLine" start="/*" end="*/" region="comment" />
+<!DOCTYPE language
+[
+  <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
+  <!ENTITY escaped "\\([0-9a-fA-F]{1,6}|[^\n\r\f0-9a-fA-F])">
+  <!ENTITY ident   "-?([_a-zA-Z]|&escaped;)([-_a-zA-Z0-9]+|&escaped;)*">
+  <!-- identifiers starting with several - are invalid, but supported by browsers -->
+  <!ENTITY ident2  "([-\w]+|&escaped;)+">
+  <!ENTITY var     "--[-\w]*">
+  <!ENTITY func    "-?[a-zA-Z][-a-zA-Z0-9]*">
+  <!ENTITY propcheck "(?=\s*(/[*].*?[*]/\s*)?:)">
+]>
+
+<!--
+
+Kate CSS syntax highlighting definition
+
+Changelog:
+
+- Version 8, by Jonathan Poelen
+- fix some Operator and Selector Tag highlighting
+
+- Version 7, by Jonathan Poelen
+- fix tag followed by a pseudo-class in a nested rule (@media, ...)
+- fix constraint in a rule
+- fix Kate auto-completion for properties and rules
+- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Variable, Value Keyword, Color, Number, Unit, Selector Tag
+
+- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
+- Remake for complex CSS syntax, avoid errors
+
+- Version 2.13, by Guo Yunhe
+- Add all W3C Work Draft properties
+
+- Version 2.06, by Mte90:
+- CSS3 tag
+
+- Version 2.03, by Milian Wolff:
+- Make it spelling aware
+
+- Version 2.08, Joseph Wenninger:
+- CSS3 media queries
+
+-->
+
+<language name="CSS" version="17" kateversion="5.79" section="Markup" extensions="*.css" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+    <highlighting>
+        <!-- W3C > Work Draft, from https://www.w3.org/Style/CSS/all-properties (exclude FPWD)-->
+        <list name="properties">
+            <item>-webkit-line-clamp</item>
+            <item>-webkit-text-fill-color</item>
+            <item>-webkit-text-stroke</item>
+            <item>-webkit-text-stroke-color</item>
+            <item>-webkit-text-stroke-width</item>
+            <item>accent-color</item>
+            <item>additive-symbols</item>
+            <item>align-content</item>
+            <item>align-items</item>
+            <item>align-self</item>
+            <item>all</item>
+            <item>animation</item>
+            <item>animation-composition</item>
+            <item>animation-delay</item>
+            <item>animation-direction</item>
+            <item>animation-duration</item>
+            <item>animation-fill-mode</item>
+            <item>animation-iteration-count</item>
+            <item>animation-name</item>
+            <item>animation-play-state</item>
+            <item>animation-timing-function</item>
+            <item>appearance</item>
+            <item>ascent-override</item>
+            <item>aspect-ratio</item>
+            <item>backdrop-filter</item>
+            <item>backface-visibility</item>
+            <item>background</item>
+            <item>background-attachment</item>
+            <item>background-blend-mode</item>
+            <item>background-clip</item>
+            <item>background-color</item>
+            <item>background-image</item>
+            <item>background-origin</item>
+            <item>background-position</item>
+            <item>background-position-x</item>
+            <item>background-position-y</item>
+            <item>background-repeat</item>
+            <item>background-size</item>
+            <item>base-palette</item>
+            <item>block-size</item>
+            <item>border</item>
+            <item>border-block</item>
+            <item>border-block-color</item>
+            <item>border-block-end</item>
+            <item>border-block-end-color</item>
+            <item>border-block-end-style</item>
+            <item>border-block-end-width</item>
+            <item>border-block-start</item>
+            <item>border-block-start-color</item>
+            <item>border-block-start-style</item>
+            <item>border-block-start-width</item>
+            <item>border-block-style</item>
+            <item>border-block-width</item>
+            <item>border-bottom</item>
+            <item>border-bottom-color</item>
+            <item>border-bottom-left-radius</item>
+            <item>border-bottom-right-radius</item>
+            <item>border-bottom-style</item>
+            <item>border-bottom-width</item>
+            <item>border-collapse</item>
+            <item>border-color</item>
+            <item>border-end-end-radius</item>
+            <item>border-end-start-radius</item>
+            <item>border-image</item>
+            <item>border-image-outset</item>
+            <item>border-image-repeat</item>
+            <item>border-image-slice</item>
+            <item>border-image-source</item>
+            <item>border-image-width</item>
+            <item>border-inline</item>
+            <item>border-inline-color</item>
+            <item>border-inline-end</item>
+            <item>border-inline-end-color</item>
+            <item>border-inline-end-style</item>
+            <item>border-inline-end-width</item>
+            <item>border-inline-start</item>
+            <item>border-inline-start-color</item>
+            <item>border-inline-start-style</item>
+            <item>border-inline-start-width</item>
+            <item>border-inline-style</item>
+            <item>border-inline-width</item>
+            <item>border-left</item>
+            <item>border-left-color</item>
+            <item>border-left-style</item>
+            <item>border-left-width</item>
+            <item>border-radius</item>
+            <item>border-right</item>
+            <item>border-right-color</item>
+            <item>border-right-style</item>
+            <item>border-right-width</item>
+            <item>border-spacing</item>
+            <item>border-start-end-radius</item>
+            <item>border-start-start-radius</item>
+            <item>border-style</item>
+            <item>border-top</item>
+            <item>border-top-color</item>
+            <item>border-top-left-radius</item>
+            <item>border-top-right-radius</item>
+            <item>border-top-style</item>
+            <item>border-top-width</item>
+            <item>border-width</item>
+            <item>bottom</item>
+            <item>box-decoration-break</item>
+            <item>box-shadow</item>
+            <item>box-sizing</item>
+            <item>break-after</item>
+            <item>break-before</item>
+            <item>break-inside</item>
+            <item>caption-side</item>
+            <item>caret-color</item>
+            <item>clear</item>
+            <item>clip-path</item>
+            <item>color</item>
+            <item>color-scheme</item>
+            <item>column-count</item>
+            <item>column-fill</item>
+            <item>column-gap</item>
+            <item>column-rule</item>
+            <item>column-rule-color</item>
+            <item>column-rule-style</item>
+            <item>column-rule-width</item>
+            <item>column-span</item>
+            <item>column-width</item>
+            <item>columns</item>
+            <item>contain</item>
+            <item>contain-intrinsic-block-size</item>
+            <item>contain-intrinsic-height</item>
+            <item>contain-intrinsic-inline-size</item>
+            <item>contain-intrinsic-size</item>
+            <item>contain-intrinsic-width</item>
+            <item>container</item>
+            <item>container-name</item>
+            <item>container-type</item>
+            <item>content</item>
+            <item>counter-increment</item>
+            <item>counter-reset</item>
+            <item>counter-set</item>
+            <item>cursor</item>
+            <item>descent-override</item>
+            <item>direction</item>
+            <item>display</item>
+            <item>empty-cells</item>
+            <item>fallback</item>
+            <item>filter</item>
+            <item>flex</item>
+            <item>flex-basis</item>
+            <item>flex-direction</item>
+            <item>flex-flow</item>
+            <item>flex-grow</item>
+            <item>flex-shrink</item>
+            <item>flex-wrap</item>
+            <item>float</item>
+            <item>font</item>
+            <item>font-display</item>
+            <item>font-family</item>
+            <item>font-feature-settings</item>
+            <item>font-kerning</item>
+            <item>font-language-override</item>
+            <item>font-optical-sizing</item>
+            <item>font-palette</item>
+            <item>font-size</item>
+            <item>font-size-adjust</item>
+            <item>font-stretch</item>
+            <item>font-style</item>
+            <item>font-synthesis</item>
+            <item>font-synthesis-position</item>
+            <item>font-synthesis-small-caps</item>
+            <item>font-synthesis-style</item>
+            <item>font-synthesis-weight</item>
+            <item>font-variant</item>
+            <item>font-variant-alternates</item>
+            <item>font-variant-caps</item>
+            <item>font-variant-east-asian</item>
+            <item>font-variant-emoji</item>
+            <item>font-variant-ligatures</item>
+            <item>font-variant-numeric</item>
+            <item>font-variant-position</item>
+            <item>font-variation-settings</item>
+            <item>font-weight</item>
+            <item>forced-color-adjust</item>
+            <item>gap</item>
+            <item>grid</item>
+            <item>grid-area</item>
+            <item>grid-auto-columns</item>
+            <item>grid-auto-flow</item>
+            <item>grid-auto-rows</item>
+            <item>grid-column</item>
+            <item>grid-column-end</item>
+            <item>grid-column-start</item>
+            <item>grid-row</item>
+            <item>grid-row-end</item>
+            <item>grid-row-start</item>
+            <item>grid-template</item>
+            <item>grid-template-areas</item>
+            <item>grid-template-columns</item>
+            <item>grid-template-rows</item>
+            <item>hanging-punctuation</item>
+            <item>height</item>
+            <item>hyphenate-character</item>
+            <item>hyphenate-limit-chars</item>
+            <item>hyphens</item>
+            <item>image-orientation</item>
+            <item>image-rendering</item>
+            <item>inherits</item>
+            <item>initial-value</item>
+            <item>inline-size</item>
+            <item>inset</item>
+            <item>inset-block</item>
+            <item>inset-block-end</item>
+            <item>inset-block-start</item>
+            <item>inset-inline</item>
+            <item>inset-inline-end</item>
+            <item>inset-inline-start</item>
+            <item>isolation</item>
+            <item>justify-content</item>
+            <item>justify-items</item>
+            <item>justify-self</item>
+            <item>left</item>
+            <item>letter-spacing</item>
+            <item>line-break</item>
+            <item>line-gap-override</item>
+            <item>line-height</item>
+            <item>list-style</item>
+            <item>list-style-image</item>
+            <item>list-style-position</item>
+            <item>list-style-type</item>
+            <item>margin</item>
+            <item>margin-block</item>
+            <item>margin-block-end</item>
+            <item>margin-block-start</item>
+            <item>margin-bottom</item>
+            <item>margin-inline</item>
+            <item>margin-inline-end</item>
+            <item>margin-inline-start</item>
+            <item>margin-left</item>
+            <item>margin-right</item>
+            <item>margin-top</item>
+            <item>mask</item>
+            <item>mask-border</item>
+            <item>mask-border-mode</item>
+            <item>mask-border-outset</item>
+            <item>mask-border-repeat</item>
+            <item>mask-border-slice</item>
+            <item>mask-border-source</item>
+            <item>mask-border-width</item>
+            <item>mask-clip</item>
+            <item>mask-composite</item>
+            <item>mask-image</item>
+            <item>mask-mode</item>
+            <item>mask-origin</item>
+            <item>mask-position</item>
+            <item>mask-repeat</item>
+            <item>mask-size</item>
+            <item>mask-type</item>
+            <item>math-depth</item>
+            <item>math-style</item>
+            <item>max-block-size</item>
+            <item>max-height</item>
+            <item>max-inline-size</item>
+            <item>max-width</item>
+            <item>min-block-size</item>
+            <item>min-height</item>
+            <item>min-inline-size</item>
+            <item>min-width</item>
+            <item>mix-blend-mode</item>
+            <item>negative</item>
+            <item>object-fit</item>
+            <item>object-position</item>
+            <item>offset</item>
+            <item>offset-anchor</item>
+            <item>offset-distance</item>
+            <item>offset-path</item>
+            <item>offset-rotate</item>
+            <item>opacity</item>
+            <item>order</item>
+            <item>orphans</item>
+            <item>outline</item>
+            <item>outline-color</item>
+            <item>outline-offset</item>
+            <item>outline-style</item>
+            <item>outline-width</item>
+            <item>overflow</item>
+            <item>overflow-anchor</item>
+            <item>overflow-block</item>
+            <item>overflow-clip-margin</item>
+            <item>overflow-inline</item>
+            <item>overflow-wrap</item>
+            <item>overflow-x</item>
+            <item>overflow-y</item>
+            <item>override-colors</item>
+            <item>overscroll-behavior</item>
+            <item>overscroll-behavior-block</item>
+            <item>overscroll-behavior-inline</item>
+            <item>overscroll-behavior-x</item>
+            <item>overscroll-behavior-y</item>
+            <item>pad</item>
+            <item>padding</item>
+            <item>padding-block</item>
+            <item>padding-block-end</item>
+            <item>padding-block-start</item>
+            <item>padding-bottom</item>
+            <item>padding-inline</item>
+            <item>padding-inline-end</item>
+            <item>padding-inline-start</item>
+            <item>padding-left</item>
+            <item>padding-right</item>
+            <item>padding-top</item>
+            <item>page</item>
+            <item>page-break-after</item>
+            <item>page-break-before</item>
+            <item>page-break-inside</item>
+            <item>page-orientation</item>
+            <item>paint-order</item>
+            <item>perspective</item>
+            <item>perspective-origin</item>
+            <item>place-content</item>
+            <item>place-items</item>
+            <item>place-self</item>
+            <item>pointer-events</item>
+            <item>position</item>
+            <item>prefix</item>
+            <item>print-color-adjust</item>
+            <item>quotes</item>
+            <item>range</item>
+            <item>resize</item>
+            <item>right</item>
+            <item>rotate</item>
+            <item>row-gap</item>
+            <item>ruby-position</item>
+            <item>scale</item>
+            <item>scroll-behavior</item>
+            <item>scroll-margin</item>
+            <item>scroll-margin-block</item>
+            <item>scroll-margin-block-end</item>
+            <item>scroll-margin-block-start</item>
+            <item>scroll-margin-bottom</item>
+            <item>scroll-margin-inline</item>
+            <item>scroll-margin-inline-end</item>
+            <item>scroll-margin-inline-start</item>
+            <item>scroll-margin-left</item>
+            <item>scroll-margin-right</item>
+            <item>scroll-margin-top</item>
+            <item>scroll-padding</item>
+            <item>scroll-padding-block</item>
+            <item>scroll-padding-block-end</item>
+            <item>scroll-padding-block-start</item>
+            <item>scroll-padding-bottom</item>
+            <item>scroll-padding-inline</item>
+            <item>scroll-padding-inline-end</item>
+            <item>scroll-padding-inline-start</item>
+            <item>scroll-padding-left</item>
+            <item>scroll-padding-right</item>
+            <item>scroll-padding-top</item>
+            <item>scroll-snap-align</item>
+            <item>scroll-snap-stop</item>
+            <item>scroll-snap-type</item>
+            <item>scrollbar-color</item>
+            <item>scrollbar-gutter</item>
+            <item>scrollbar-width</item>
+            <item>shape-image-threshold</item>
+            <item>shape-margin</item>
+            <item>shape-outside</item>
+            <item>size</item>
+            <item>size-adjust</item>
+            <item>speak-as</item>
+            <item>src</item>
+            <item>suffix</item>
+            <item>symbols</item>
+            <item>syntax</item>
+            <item>system</item>
+            <item>tab-size</item>
+            <item>table-layout</item>
+            <item>text-align</item>
+            <item>text-align-last</item>
+            <item>text-combine-upright</item>
+            <item>text-decoration</item>
+            <item>text-decoration-color</item>
+            <item>text-decoration-line</item>
+            <item>text-decoration-skip-ink</item>
+            <item>text-decoration-style</item>
+            <item>text-decoration-thickness</item>
+            <item>text-emphasis</item>
+            <item>text-emphasis-color</item>
+            <item>text-emphasis-position</item>
+            <item>text-emphasis-style</item>
+            <item>text-indent</item>
+            <item>text-justify</item>
+            <item>text-orientation</item>
+            <item>text-overflow</item>
+            <item>text-rendering</item>
+            <item>text-shadow</item>
+            <item>text-transform</item>
+            <item>text-underline-offset</item>
+            <item>text-underline-position</item>
+            <item>top</item>
+            <item>touch-action</item>
+            <item>transform</item>
+            <item>transform-box</item>
+            <item>transform-origin</item>
+            <item>transform-style</item>
+            <item>transition</item>
+            <item>transition-delay</item>
+            <item>transition-duration</item>
+            <item>transition-property</item>
+            <item>transition-timing-function</item>
+            <item>translate</item>
+            <item>unicode-bidi</item>
+            <item>unicode-range</item>
+            <item>user-select</item>
+            <item>vertical-align</item>
+            <item>visibility</item>
+            <item>white-space</item>
+            <item>widows</item>
+            <item>width</item>
+            <item>will-change</item>
+            <item>word-break</item>
+            <item>word-spacing</item>
+            <item>writing-mode</item>
+            <item>z-index</item>
+
+            <!-- SVG only -->
+
+            <item>alignment-baseline</item>
+            <item>baseline-shift</item>
+            <item>color-interpolation</item>
+            <item>color-interpolation-filters</item>
+            <item>dominant-baseline</item>
+            <item>fill</item>
+            <item>fill-opacity</item>
+            <item>fill-rule</item>
+            <item>flood-color</item>
+            <item>flood-opacity</item>
+            <item>marker-end</item>
+            <item>marker-mid</item>
+            <item>marker-start</item>
+            <item>shape-rendering</item>
+            <item>stop-color</item>
+            <item>stop-opacity</item>
+            <item>stroke</item>
+            <item>stroke-dasharray</item>
+            <item>stroke-dashoffset</item>
+            <item>stroke-linecap</item>
+            <item>stroke-linejoin</item>
+            <item>stroke-miterlimit</item>
+            <item>stroke-opacity</item>
+            <item>text-anchor</item>
+            <item>vector-effect</item>
+        </list>
+
+        <list name="vendor properties">
+            <!-- Gecko rendering engine CSS property extensions -->
+            <item>-moz-box-align</item>
+            <item>-moz-box-direction</item>
+            <item>-moz-box-flex</item>
+            <item>-moz-box-flex-group</item>
+            <item>-moz-box-ordinal-group</item>
+            <item>-moz-box-orient</item>
+            <item>-moz-box-pack</item>
+            <item>-moz-box</item>
+
+            <!-- Opera rendering engine CSS property extensions -->
+            <item>-o-linear-gradient</item>
+
+            <!-- konq specific -->
+            <item>konq_bgpos_x</item>
+            <item>konq_bgpos_y</item>
+
+            <!-- Webkit rendering engine CSS property extensions -->
+            <item>-webkit-box-align</item>
+            <item>-webkit-box-direction</item>
+            <item>-webkit-box-flex</item>
+            <item>-webkit-box-ordinal-group</item>
+            <item>-webkit-box-orient</item>
+            <item>-webkit-box-pack</item>
+            <item>-webkit-box-reflect</item>
+            <item>-webkit-linear-gradient</item>
+            <item>-webkit-gradient</item>
+            <item>-webkit-overflow-scrolling</item>
+            <item>-webkit-text-decoration-skip</item>
+            <item>-webkit-text-size-adjust</item>
+            <item>-webkit-tap-highlight-color</item>
+
+            <!-- Trident (a.k.a., MSHTML) CSS property extensions -->
+            <item>-ms-filter</item>
+            <item>-ms-flex</item>
+            <item>-ms-flex-align</item>
+            <item>-ms-flex-item-align</item>
+            <item>-ms-flex-line-pack</item>
+            <item>-ms-flex-negative</item>
+            <item>-ms-flex-order</item>
+            <item>-ms-flex-pack</item>
+            <item>-ms-flex-positive</item>
+            <item>-ms-flex-position</item>
+            <item>-ms-flex-preferred-size</item>
+            <item>-ms-interpolation-mode</item>
+            <item>-ms-linear-gradient</item>
+            <item>-ms-text-size-adjust</item>
+        </list>
+
+        <list name="value keywords">
+            <item>auto</item>
+            <item>inherit</item>
+            <item>initial</item>
+            <item>revert</item>
+            <item>revert-layer</item>
+            <item>unset</item>
+        </list>
+
+        <list name="values">
+            <item>-moz-arabic-indic</item>
+            <item>-moz-bengali</item>
+            <item>-moz-cjk-earthly-branch</item>
+            <item>-moz-cjk-heavenly-stem</item>
+            <item>-moz-devanagari</item>
+            <item>-moz-gujarati</item>
+            <item>-moz-gurmukhi</item>
+            <item>-moz-kannada</item>
+            <item>-moz-lao</item>
+            <item>-moz-malayalam</item>
+            <item>-moz-myanmar</item>
+            <item>-moz-oriya</item>
+            <item>-moz-persian</item>
+            <item>-moz-tamil</item>
+            <item>-moz-telugu</item>
+            <item>-moz-thai</item>
+            <item>absolute</item>
+            <item>accumulate</item>
+            <item>add</item>
+            <item>additive</item>
+            <item>alias</item>
+            <item>all</item>
+            <item>all-petite-caps</item>
+            <item>all-scroll</item>
+            <item>all-small-caps</item>
+            <item>allow-end</item>
+            <item>alpha</item>
+            <item>alphabetic</item>
+            <item>alternate</item>
+            <item>alternate-reverse</item>
+            <item>always</item>
+            <item>anywhere</item>
+            <item>arabic-indic</item>
+            <item>armenian</item>
+            <item>auto-add</item>
+            <item>auto-fill</item>
+            <item>auto-fit</item>
+            <item>avoid</item>
+            <item>avoid-column</item>
+            <item>avoid-page</item>
+            <item>avoid-region</item>
+            <item>backwards</item>
+            <item>balance</item>
+            <item>balance-all</item>
+            <item>baseline</item>
+            <item>bengali</item>
+            <item>bidi-override</item>
+            <item>bigger</item>
+            <item>block</item>
+            <item>block-end</item>
+            <item>block-start</item>
+            <item>bold</item>
+            <item>bolder</item>
+            <item>border</item>
+            <item>border-box</item>
+            <item>both</item>
+            <item>both-edges</item>
+            <item>bottom</item>
+            <item>break-all</item>
+            <item>break-spaces</item>
+            <item>break-word</item>
+            <item>bullets</item>
+            <item>cambodian</item>
+            <item>cap-height</item>
+            <item>capitalize</item>
+            <item>cell</item>
+            <item>center</item>
+            <item>ch-width</item>
+            <item>circle</item>
+            <item>cjk-decimal</item>
+            <item>cjk-earthly-branch</item>
+            <item>cjk-heavenly-stem</item>
+            <item>cjk-ideographic</item>
+            <item>clip</item>
+            <item>clone</item>
+            <item>close-quote</item>
+            <item>col-resize</item>
+            <item>collapse</item>
+            <item>color</item>
+            <item>color-burn</item>
+            <item>color-dodge</item>
+            <item>column</item>
+            <item>column-reverse</item>
+            <item>common-ligatures</item>
+            <item>compact</item>
+            <item>condensed</item>
+            <item>contain</item>
+            <item>content</item>
+            <item>content-box</item>
+            <item>contents</item>
+            <item>context-menu</item>
+            <item>contextual</item>
+            <item>copy</item>
+            <item>cover</item>
+            <item>crisp-edges</item>
+            <item>crosshair</item>
+            <item>currentcolor</item>
+            <item>cursive</item>
+            <item>cyclic</item>
+            <item>dark</item>
+            <item>darken</item>
+            <item>dashed</item>
+            <item>decimal</item>
+            <item>decimal-leading-zero</item>
+            <item>default</item>
+            <item>dense</item>
+            <item>devanagari</item>
+            <item>diagonal-fractions</item>
+            <item>difference</item>
+            <item>disc</item>
+            <item>disclosure-closed</item>
+            <item>disclosure-open</item>
+            <item>discretionary-ligatures</item>
+            <item>dot</item>
+            <item>dotted</item>
+            <item>double</item>
+            <item>double-circle</item>
+            <item>e-resize</item>
+            <item>each-line</item>
+            <item>ease</item>
+            <item>ease-in</item>
+            <item>ease-in-out</item>
+            <item>ease-out</item>
+            <item>economy</item>
+            <item>ellipsis</item>
+            <item>embed</item>
+            <item>emoji</item>
+            <item>end</item>
+            <item>ethiopic-numeric</item>
+            <item>ew-resize</item>
+            <item>ex-height</item>
+            <item>exact</item>
+            <item>exclude</item>
+            <item>exclusion</item>
+            <item>expanded</item>
+            <item>extends</item>
+            <item>extra-condensed</item>
+            <item>extra-expanded</item>
+            <item>fade</item>
+            <item>fallback</item>
+            <item>false</item>
+            <item>fangsong</item>
+            <item>fantasy</item>
+            <item>fill</item>
+            <item>fill-box</item>
+            <item>filled</item>
+            <item>first</item>
+            <item>fit-content</item>
+            <item>fixed</item>
+            <item>flat</item>
+            <item>flex</item>
+            <item>flex-end</item>
+            <item>flex-start</item>
+            <item>flow</item>
+            <item>flow-root</item>
+            <item>force-end</item>
+            <item>forwards</item>
+            <item>from-font</item>
+            <item>from-image</item>
+            <item>full-size-kana</item>
+            <item>full-width</item>
+            <item>georgian</item>
+            <item>grab</item>
+            <item>grabbing</item>
+            <item>grid</item>
+            <item>groove</item>
+            <item>gujarati</item>
+            <item>gurmukhi</item>
+            <item>hanging</item>
+            <item>hard-light</item>
+            <item>hebrew</item>
+            <item>help</item>
+            <item>hidden</item>
+            <item>hide</item>
+            <item>high-quality</item>
+            <item>hiragana</item>
+            <item>hiragana-iroha</item>
+            <item>historical-forms</item>
+            <item>historical-ligatures</item>
+            <item>horizontal</item>
+            <item>horizontal-tb</item>
+            <item>hue</item>
+            <item>ic-height</item>
+            <item>ic-width</item>
+            <item>infinite</item>
+            <item>inline</item>
+            <item>inline-block</item>
+            <item>inline-end</item>
+            <item>inline-flex</item>
+            <item>inline-grid</item>
+            <item>inline-size</item>
+            <item>inline-start</item>
+            <item>inline-table</item>
+            <item>inset</item>
+            <item>inside</item>
+            <item>inter-character</item>
+            <item>inter-word</item>
+            <item>intersect</item>
+            <item>invert</item>
+            <item>isolate</item>
+            <item>isolate-override</item>
+            <item>italic</item>
+            <item>japanese-formal</item>
+            <item>japanese-informal</item>
+            <item>jump-both</item>
+            <item>jump-end</item>
+            <item>jump-none</item>
+            <item>jump-start</item>
+            <item>justify</item>
+            <item>justify-all</item>
+            <item>kannada</item>
+            <item>katakana</item>
+            <item>katakana-iroha</item>
+            <item>keep-all</item>
+            <item>keyword</item>
+            <item>khmer</item>
+            <item>korean-hangul-formal</item>
+            <item>korean-hanja-formal</item>
+            <item>korean-hanja-informal</item>
+            <item>landscape</item>
+            <item>lao</item>
+            <item>large</item>
+            <item>larger</item>
+            <item>last</item>
+            <item>layout</item>
+            <item>left</item>
+            <item>legacy</item>
+            <item>light</item>
+            <item>lighten</item>
+            <item>lighter</item>
+            <item>line-through</item>
+            <item>linear</item>
+            <item>lining-nums</item>
+            <item>local</item>
+            <item>loose</item>
+            <item>lower-alpha</item>
+            <item>lower-armenian</item>
+            <item>lower-greek</item>
+            <item>lower-latin</item>
+            <item>lower-roman</item>
+            <item>lowercase</item>
+            <item>ltr</item>
+            <item>luminance</item>
+            <item>luminosity</item>
+            <item>malayalam</item>
+            <item>mandatory</item>
+            <item>manipulation</item>
+            <item>manual</item>
+            <item>margin-box</item>
+            <item>match-parent</item>
+            <item>match-source</item>
+            <item>math</item>
+            <item>max-content</item>
+            <item>medium</item>
+            <item>min-content</item>
+            <item>mixed</item>
+            <item>mongolian</item>
+            <item>monospace</item>
+            <item>move</item>
+            <item>multiply</item>
+            <item>myanmar</item>
+            <item>n-resize</item>
+            <item>ne-resize</item>
+            <item>nesw-resize</item>
+            <item>no-clip</item>
+            <item>no-close-quote</item>
+            <item>no-common-ligatures</item>
+            <item>no-contextual</item>
+            <item>no-discretionary-ligatures</item>
+            <item>no-drop</item>
+            <item>no-historical-ligatures</item>
+            <item>no-open-quote</item>
+            <item>no-repeat</item>
+            <item>none</item>
+            <item>normal</item>
+            <item>not-allowed</item>
+            <item>nowrap</item>
+            <item>ns-resize</item>
+            <item>numbers</item>
+            <item>numeric</item>
+            <item>nw-resize</item>
+            <item>nwse-resize</item>
+            <item>oblique</item>
+            <item>oldstyle-nums</item>
+            <item>only</item>
+            <item>open</item>
+            <item>open-quote</item>
+            <item>optional</item>
+            <item>ordinal</item>
+            <item>oriya</item>
+            <item>outset</item>
+            <item>outside</item>
+            <item>over</item>
+            <item>overlay</item>
+            <item>overline</item>
+            <item>padding</item>
+            <item>padding-box</item>
+            <item>paint</item>
+            <item>painted</item>
+            <item>pan-down</item>
+            <item>pan-left</item>
+            <item>pan-right</item>
+            <item>pan-up</item>
+            <item>pan-x</item>
+            <item>pan-y</item>
+            <item>paused</item>
+            <item>persian</item>
+            <item>petite-caps</item>
+            <item>pinch-zoom</item>
+            <item>pixelated</item>
+            <item>plaintext</item>
+            <item>pointer</item>
+            <item>portrait</item>
+            <item>position</item>
+            <item>pre</item>
+            <item>pre-line</item>
+            <item>pre-wrap</item>
+            <item>preserve-3d</item>
+            <item>progress</item>
+            <item>proportional-nums</item>
+            <item>proportional-width</item>
+            <item>proximity</item>
+            <item>recto</item>
+            <item>relative</item>
+            <item>repeat</item>
+            <item>repeat-x</item>
+            <item>repeat-y</item>
+            <item>replace</item>
+            <item>reverse</item>
+            <item>ridge</item>
+            <item>right</item>
+            <item>rotate-left</item>
+            <item>rotate-right</item>
+            <item>round</item>
+            <item>row</item>
+            <item>row-resize</item>
+            <item>row-reverse</item>
+            <item>rtl</item>
+            <item>ruby</item>
+            <item>ruby-base</item>
+            <item>ruby-base-container</item>
+            <item>ruby-text</item>
+            <item>ruby-text-container</item>
+            <item>running</item>
+            <item>s-resize</item>
+            <item>safe</item>
+            <item>sans-serif</item>
+            <item>saturation</item>
+            <item>scale-down</item>
+            <item>screen</item>
+            <item>scroll</item>
+            <item>scroll-position</item>
+            <item>se-resize</item>
+            <item>self-end</item>
+            <item>self-start</item>
+            <item>semi-condensed</item>
+            <item>semi-expanded</item>
+            <item>separate</item>
+            <item>serif</item>
+            <item>sesame</item>
+            <item>show</item>
+            <item>sideways</item>
+            <item>sideways-lr</item>
+            <item>sideways-right</item>
+            <item>sideways-rl</item>
+            <item>simp-chinese-formal</item>
+            <item>simp-chinese-informal</item>
+            <item>size</item>
+            <item>slashed-zero</item>
+            <item>slice</item>
+            <item>small</item>
+            <item>small-caps</item>
+            <item>smaller</item>
+            <item>smooth</item>
+            <item>soft-light</item>
+            <item>solid</item>
+            <item>space</item>
+            <item>space-around</item>
+            <item>space-between</item>
+            <item>space-evenly</item>
+            <item>spell-out</item>
+            <item>square</item>
+            <item>stable</item>
+            <item>stacked-fractions</item>
+            <item>start</item>
+            <item>static</item>
+            <item>step-end</item>
+            <item>step-start</item>
+            <item>sticky</item>
+            <item>stretch</item>
+            <item>strict</item>
+            <item>stroke</item>
+            <item>stroke-box</item>
+            <item>style</item>
+            <item>sub</item>
+            <item>subtract</item>
+            <item>super</item>
+            <item>sw-resize</item>
+            <item>swap</item>
+            <item>symbolic</item>
+            <item>system-ui</item>
+            <item>table</item>
+            <item>table-caption</item>
+            <item>table-cell</item>
+            <item>table-column</item>
+            <item>table-column-group</item>
+            <item>table-footer-group</item>
+            <item>table-header-group</item>
+            <item>table-row</item>
+            <item>table-row-group</item>
+            <item>tabular-nums</item>
+            <item>tamil</item>
+            <item>telugu</item>
+            <item>text</item>
+            <item>thai</item>
+            <item>thick</item>
+            <item>thin</item>
+            <item>tibetan</item>
+            <item>titling-caps</item>
+            <item>top</item>
+            <item>trad-chinese-formal</item>
+            <item>trad-chinese-informal</item>
+            <item>transparent</item>
+            <item>triangle</item>
+            <item>true</item>
+            <item>ui-monospace</item>
+            <item>ui-rounded</item>
+            <item>ui-sans-serif</item>
+            <item>ui-serif</item>
+            <item>ultra-condensed</item>
+            <item>ultra-expanded</item>
+            <item>under</item>
+            <item>underline</item>
+            <item>unicase</item>
+            <item>unicode</item>
+            <item>unsafe</item>
+            <item>upper-alpha</item>
+            <item>upper-armenian</item>
+            <item>upper-latin</item>
+            <item>upper-roman</item>
+            <item>uppercase</item>
+            <item>upright</item>
+            <item>use-glyph-orientation</item>
+            <item>verso</item>
+            <item>vertical</item>
+            <item>vertical-lr</item>
+            <item>vertical-rl</item>
+            <item>vertical-text</item>
+            <item>view-box</item>
+            <item>visible</item>
+            <item>visibleFill</item>
+            <item>visiblePainted</item>
+            <item>visibleStroke</item>
+            <item>w-resize</item>
+            <item>wait</item>
+            <item>weight</item>
+            <item>words</item>
+            <item>wrap</item>
+            <item>wrap-reverse</item>
+            <item>x-large</item>
+            <item>x-small</item>
+            <item>xx-large</item>
+            <item>xx-small</item>
+            <item>xxx-large</item>
+            <item>zoom-in</item>
+            <item>zoom-out</item>
+
+            <!-- SVG only -->
+
+            <item>after-edge</item>
+            <item>arcs</item>
+            <item>before-edge</item>
+            <item>bevel</item>
+            <item>bounding-box</item>
+            <item>butt</item>
+            <item>central</item>
+            <item>crispEdges</item>
+            <item>evenodd</item>
+            <item>fixed-position</item>
+            <item>freeze</item>
+            <item>geometricPrecision</item>
+            <item>ideographic</item>
+            <item>linearRGB</item>
+            <item>mathematical</item>
+            <item>middle</item>
+            <item>miter</item>
+            <item>miter-clip</item>
+            <item>non-rotation</item>
+            <item>non-scaling-size</item>
+            <item>non-scaling-stroke</item>
+            <item>nonzero</item>
+            <item>optimizeLegibility</item>
+            <item>optimizeQuality</item>
+            <item>optimizeSpeed</item>
+            <item>remove</item>
+            <item>sRGB</item>
+            <item>text-after-edge</item>
+            <item>text-before-edge</item>
+            <item>text-bottom</item>
+            <item>text-top</item>
+
+            <!-- manual list -->
+            <item>konq-center</item>
+        </list>
+
+        <list name="colors">
+            <item>aliceblue</item>
+            <item>antiquewhite</item>
+            <item>aqua</item>
+            <item>aquamarine</item>
+            <item>azure</item>
+            <item>beige</item>
+            <item>bisque</item>
+            <item>black</item>
+            <item>blanchedalmond</item>
+            <item>blue</item>
+            <item>blueviolet</item>
+            <item>brown</item>
+            <item>burlywood</item>
+            <item>cadetblue</item>
+            <item>chartreuse</item>
+            <item>chocolate</item>
+            <item>coral</item>
+            <item>cornflowerblue</item>
+            <item>cornsilk</item>
+            <item>crimson</item>
+            <item>cyan</item>
+            <item>darkblue</item>
+            <item>darkcyan</item>
+            <item>darkgoldenrod</item>
+            <item>darkgray</item>
+            <item>darkgreen</item>
+            <item>darkgrey</item>
+            <item>darkkhaki</item>
+            <item>darkmagenta</item>
+            <item>darkolivegreen</item>
+            <item>darkorange</item>
+            <item>darkorchid</item>
+            <item>darkred</item>
+            <item>darksalmon</item>
+            <item>darkseagreen</item>
+            <item>darkslateblue</item>
+            <item>darkslategray</item>
+            <item>darkslategrey</item>
+            <item>darkturquoise</item>
+            <item>darkviolet</item>
+            <item>deeppink</item>
+            <item>deepskyblue</item>
+            <item>dimgray</item>
+            <item>dimgrey</item>
+            <item>dodgerblue</item>
+            <item>firebrick</item>
+            <item>floralwhite</item>
+            <item>forestgreen</item>
+            <item>fuchsia</item>
+            <item>gainsboro</item>
+            <item>ghostwhite</item>
+            <item>gold</item>
+            <item>goldenrod</item>
+            <item>gray</item>
+            <item>green</item>
+            <item>greenyellow</item>
+            <item>grey</item>
+            <item>honeydew</item>
+            <item>hotpink</item>
+            <item>indianred</item>
+            <item>indigo</item>
+            <item>ivory</item>
+            <item>khaki</item>
+            <item>lavender</item>
+            <item>lavenderblush</item>
+            <item>lawngreen</item>
+            <item>lemonchiffon</item>
+            <item>lightblue</item>
+            <item>lightcoral</item>
+            <item>lightcyan</item>
+            <item>lightgoldenrodyellow</item>
+            <item>lightgray</item>
+            <item>lightgreen</item>
+            <item>lightgrey</item>
+            <item>lightpink</item>
+            <item>lightsalmon</item>
+            <item>lightseagreen</item>
+            <item>lightskyblue</item>
+            <item>lightslategray</item>
+            <item>lightslategrey</item>
+            <item>lightsteelblue</item>
+            <item>lightyellow</item>
+            <item>lime</item>
+            <item>limegreen</item>
+            <item>linen</item>
+            <item>magenta</item>
+            <item>maroon</item>
+            <item>mediumaquamarine</item>
+            <item>mediumblue</item>
+            <item>mediumorchid</item>
+            <item>mediumpurple</item>
+            <item>mediumseagreen</item>
+            <item>mediumslateblue</item>
+            <item>mediumspringgreen</item>
+            <item>mediumturquoise</item>
+            <item>mediumvioletred</item>
+            <item>midnightblue</item>
+            <item>mintcream</item>
+            <item>mistyrose</item>
+            <item>moccasin</item>
+            <item>navajowhite</item>
+            <item>navy</item>
+            <item>oldlace</item>
+            <item>olive</item>
+            <item>olivedrab</item>
+            <item>orange</item>
+            <item>orangered</item>
+            <item>orchid</item>
+            <item>palegoldenrod</item>
+            <item>palegreen</item>
+            <item>paleturquoise</item>
+            <item>palevioletred</item>
+            <item>papayawhip</item>
+            <item>peachpuff</item>
+            <item>peru</item>
+            <item>pink</item>
+            <item>plum</item>
+            <item>powderblue</item>
+            <item>purple</item>
+            <item>rebeccapurple</item>
+            <item>red</item>
+            <item>rosybrown</item>
+            <item>royalblue</item>
+            <item>saddlebrown</item>
+            <item>salmon</item>
+            <item>sandybrown</item>
+            <item>seagreen</item>
+            <item>seashell</item>
+            <item>sienna</item>
+            <item>silver</item>
+            <item>skyblue</item>
+            <item>slateblue</item>
+            <item>slategray</item>
+            <item>slategrey</item>
+            <item>snow</item>
+            <item>springgreen</item>
+            <item>steelblue</item>
+            <item>tan</item>
+            <item>teal</item>
+            <item>thistle</item>
+            <item>tomato</item>
+            <item>turquoise</item>
+            <item>violet</item>
+            <item>wheat</item>
+            <item>white</item>
+            <item>whitesmoke</item>
+            <item>yellow</item>
+            <item>yellowgreen</item>
+            
+            <!-- System colors -->
+            <item>AccentColor</item>
+            <item>AccentColorText</item>
+            <item>ActiveText</item>
+            <item>ButtonBorder</item>
+            <item>ButtonFace</item>
+            <item>ButtonText</item>
+            <item>Canvas</item>
+            <item>CanvasText</item>
+            <item>Field</item>
+            <item>FieldText</item>
+            <item>GrayText</item>
+            <item>Highlight</item>
+            <item>HighlightText</item>
+            <item>LinkText</item>
+            <item>Mark</item>
+            <item>MarkText</item>
+            <item>VisitedText</item>
+        </list>
+
+        <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Functions -->
+        <list name="functions">
+            <item>abs</item>
+            <item>acos</item>
+            <item>annotation</item>
+            <item>asin</item>
+            <item>atan</item>
+            <item>atan2</item>
+            <item>attr</item>
+            <item>blur</item>
+            <item>brightness</item>
+            <item>calc</item>
+            <item>character-variant</item>
+            <item>circle</item>
+            <item>clamp</item>
+            <item>color</item>
+            <item>color-mix</item>
+            <item>conic-gradient</item>
+            <item>contrast</item>
+            <item>cos</item>
+            <item>counter</item>
+            <item>counters</item>
+            <item>cross-fade</item>
+            <item>device-cmyk</item>
+            <item>drop-shadow</item>
+            <item>ellipse</item>
+            <item>env</item>
+            <item>exp</item>
+            <item>fit-content</item>
+            <item>format</item>
+            <item>grayscale</item>
+            <item>hsl</item>
+            <item>hue-rotate</item>
+            <item>hwb</item>
+            <item>hypot</item>
+            <item>image</item>
+            <item>image-set</item>
+            <item>inset</item>
+            <item>invert</item>
+            <item>lab</item>
+            <item>lch</item>
+            <item>linear-gradient</item>
+            <item>local</item>
+            <item>log</item>
+            <item>matrix</item>
+            <item>matrix3d</item>
+            <item>max</item>
+            <item>min</item>
+            <item>minmax</item>
+            <item>mod</item>
+            <item>oklab</item>
+            <item>oklch</item>
+            <item>opacity</item>
+            <item>ornaments</item>
+            <item>paint</item>
+            <item>path</item>
+            <item>perspective</item>
+            <item>polygon</item>
+            <item>pow</item>
+            <item>radial-gradient</item>
+            <item>rem</item>
+            <item>repeat</item>
+            <item>repeating-conic-gradient</item>
+            <item>repeating-linear-gradient</item>
+            <item>repeating-radial-gradient</item>
+            <item>rgb</item>
+            <item>rotate</item>
+            <item>rotate3d</item>
+            <item>rotateX</item>
+            <item>rotateY</item>
+            <item>rotateZ</item>
+            <item>round</item>
+            <item>saturate</item>
+            <item>scale</item>
+            <item>scale3d</item>
+            <item>scaleX</item>
+            <item>scaleY</item>
+            <item>scaleZ</item>
+            <item>sepia</item>
+            <item>sign</item>
+            <item>sin</item>
+            <item>skew</item>
+            <item>skewX</item>
+            <item>skewY</item>
+            <item>sqrt</item>
+            <item>styleset</item>
+            <item>stylistic</item>
+            <item>swash</item>
+            <item>symbols</item>
+            <item>tan</item>
+            <item>tech</item>
+            <item>translate</item>
+            <item>translate3d</item>
+            <item>translateX</item>
+            <item>translateY</item>
+            <item>translateZ</item>
+            <item>url</item>
+            <item>var</item>
+        </list>
+
+        <list name="media types">
+            <item>all</item>
+            <item>print</item>
+            <item>screen</item>
+            <item>speech</item>
+        </list>
+
+        <list name="media features">
+            <item>-webkit-device-pixel-ratio</item>
+            <item>-webkit-transform-3d</item>
+            <item>any-hover</item>
+            <item>any-pointer</item>
+            <item>aspect-ratio</item>
+            <item>color</item>
+            <item>color-gamut</item>
+            <item>color-index</item>
+            <item>display-mode</item>
+            <item>dynamic-range</item>
+            <item>forced-colors</item>
+            <item>grid</item>
+            <item>height</item>
+            <item>hover</item>
+            <item>inverted-colors</item>
+            <item>max-height</item>
+            <item>max-width</item>
+            <item>min-height</item>
+            <item>min-width</item>
+            <item>monochrome</item>
+            <item>orientation</item>
+            <item>overflow-block</item>
+            <item>overflow-inline</item>
+            <item>pointer</item>
+            <item>prefers-color-scheme</item>
+            <item>prefers-contrast</item>
+            <item>prefers-reduced-motion</item>
+            <item>resolution</item>
+            <item>scripting</item>
+            <item>update</item>
+            <item>video-dynamic-range</item>
+            <item>width</item>
+        </list>
+
+        <!-- prefixed by :: -->
+        <list name="pseudo-elements">
+            <item>after</item>
+            <item>backdrop</item>
+            <item>before</item>
+            <item>cue</item>
+            <item>cue-region</item>
+            <item>file-selector-button</item>
+            <item>first-letter</item>
+            <item>first-line</item>
+            <item>marker</item>
+            <item>part</item>
+            <item>placeholder</item>
+            <item>selection</item>
+            <item>slotted</item>
+
+            <!-- manual list -->
+
+            <item>-moz-progress-bar</item>
+            <item>-moz-range-progress</item>
+            <item>-moz-range-thumb</item>
+            <item>-moz-range-track</item>
+            <item>-moz-selection</item>
+            <item>-ms-fill</item>
+            <item>-ms-fill-lower</item>
+            <item>-ms-fill-upper</item>
+            <item>-ms-thumb</item>
+            <item>-ms-track</item>
+            <item>-webkit-progress-bar</item>
+            <item>-webkit-progress-value</item>
+            <item>-webkit-slider-runnable-track</item>
+            <item>-webkit-slider-thumb</item>
+        </list>
+
+        <!-- prefixed by : -->
+        <list name="pseudo-classes">
+            <item>active</item>
+            <item>any-link</item>
+            <item>autofill</item>
+            <item>buffering</item>
+            <item>checked</item>
+            <item>current</item>
+            <item>default</item>
+            <item>defined</item>
+            <item>dir</item>
+            <item>disabled</item>
+            <item>empty</item>
+            <item>enabled</item>
+            <item>first</item>
+            <item>first-child</item>
+            <item>first-of-type</item>
+            <item>focus</item>
+            <item>focus-visible</item>
+            <item>focus-within</item>
+            <item>fullscreen</item>
+            <item>has</item>
+            <item>host</item>
+            <item>host-context</item>
+            <item>hover</item>
+            <item>in-range</item>
+            <item>indeterminate</item>
+            <item>invalid</item>
+            <item>is</item>
+            <item>lang</item>
+            <item>last-child</item>
+            <item>last-of-type</item>
+            <item>left</item>
+            <item>link</item>
+            <item>local-link</item>
+            <item>modal</item>
+            <item>muted</item>
+            <item>not</item>
+            <item>nth-child</item>
+            <item>nth-last-child</item>
+            <item>nth-last-of-type</item>
+            <item>nth-of-type</item>
+            <item>only-child</item>
+            <item>only-of-type</item>
+            <item>optional</item>
+            <item>out-of-range</item>
+            <item>paused</item>
+            <item>picture-in-picture</item>
+            <item>placeholder-shown</item>
+            <item>playing</item>
+            <item>read-only</item>
+            <item>read-write</item>
+            <item>required</item>
+            <item>right</item>
+            <item>root</item>
+            <item>scope</item>
+            <item>seeking</item>
+            <item>stalled</item>
+            <item>target</item>
+            <item>user-invalid</item>
+            <item>user-valid</item>
+            <item>valid</item>
+            <item>visited</item>
+            <item>volume-locked</item>
+            <item>where</item>
+        </list>
+
+        <list name="@page pseudo-classes">
+            <item>blank</item>
+            <item>first</item>
+            <item>left</item>
+            <item>recto</item>
+            <item>right</item>
+            <item>verso</item>
+        </list>
+
+        <list name="at-rules">
+            <item>@charset</item>
+            <item>@container</item>
+            <item>@font-feature-values</item>
+            <item>@import</item>
+            <item>@keyframes</item>
+            <item>@layer</item>
+            <item>@media</item>
+            <item>@namespace</item>
+            <item>@page</item>
+            <item>@supports</item>
+        </list>
+
+        <list name="at-rules definitions">
+            <item>@color-profile</item>
+            <item>@counter-style</item>
+            <item>@font-face</item>
+            <item>@font-palette-values</item>
+            <item>@property</item>
+        </list>
+
+        <list name="media operators">
+            <item>or</item>
+            <item>and</item>
+            <item>only</item>
+            <item>not</item>
+        </list>
+
+        <contexts>
+            <context name="Base" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="RuleSet" char="{" beginRegion="ruleset"/>
+                <DetectChar context="SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+            <context name="FindSelector" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassOrElement" char=":"/>
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="["/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassSelector" char="("/>
+                <AnyChar attribute="Selector Symbol" String="*>+~|&amp;"/>
+                <IncludeRules context="FindComments"/>
+                <RegExpr attribute="Selector Class" String="\.&ident2;"/>
+                <RegExpr attribute="Selector Id" String="#&ident2;"/>
+                <RegExpr attribute="Selector Tag" String="&ident;"/>
+            </context>
+
+            <!-- find functions // rgba(255,255,255,0.75) -->
+            <context name="FindFunctions" attribute="Normal Text">
+                <RegExpr context="Function" String="(&func;)?\(" lookAhead="1"/>
+            </context>
+            <context name="FindNestedFunctions" attribute="Normal Text">
+                <RegExpr context="NestedFunction" String="(&func;)?\(" lookAhead="1"/>
+            </context>
+
+            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
+            <context name="FindValues" attribute="Normal Text">
+                <DetectChar attribute="Annotation" context="Annotation" char="!"/>
+                <keyword attribute="Value Keyword" String="value keywords"/>
+                <keyword attribute="Value" String="values"/>
+                <keyword attribute="Named Color" String="colors"/>
+                <RegExpr attribute="Color" String="#([0-9A-Fa-f]{8}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{3,4})"/>
+                <IncludeRules context="FindNumber"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="FindNumber" attribute="Number" lineEndContext="#pop">
+                <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])"/>
+            </context>
+
+            <context name="FindIdentifier" attribute="Number" lineEndContext="#pop">
+                <RegExpr String="&ident2;\s*"/>
+            </context>
+
+            <context name="FindVendorProperty" attribute="Normal Text">
+                <RegExpr attribute="Vendor Property" String="-(webkit|moz|o|ms)-[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <WordDetect attribute="Annotation" context="#pop" String="important"/>
+            </context>
+
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <!-- https://drafts.csswg.org/css-values-4/#lengths -->
+                <!-- https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Values_and_Units -->
+                <RegExpr attribute="Unit" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|grad|rad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)(?![-+])"/>
+            </context>
+
+            <!-- find strings // "some words" 'some words' -->
+            <context name="FindStrings" attribute="Normal Text">
+                <DetectChar attribute="String" context="StringDQ" char="&quot;"/>
+                <DetectChar attribute="String" context="StringSQ" char="'"/>
+            </context>
+
+            <!-- find comments // /* comment */ -->
+            <context name="FindComments" attribute="Normal Text">
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="1"/>
+                <Detect2Chars attribute="Error" context="Error" char="/" char1="/"/>
+            </context>
+
+            <context name="Error" attribute="Error" lineEndContext="#pop">
+                <RegExpr attribute="Error" context="#pop" String=".*"/>
+            </context>
+
+            <context name="IsComments" attribute="Normal Text">
+                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*BEGIN\b.*\*/" beginRegion="UserDefined"/>
+                <RegExpr attribute="Region Marker" context="#pop" String="/\*\s*END\b.*\*/" endRegion="UserDefined"/>
+                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment"/>
+            </context>
+
+            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
+                <WordDetect attribute="At Rule" context="@keyframes" String="@keyframes"/>
+                <WordDetect attribute="At Rule" context="@layer" String="@layer"/>
+                <WordDetect attribute="At Rule" context="@font-feature-values" String="@font-feature-values"/>
+                <WordDetect attribute="At Rule" context="@page" String="@page"/>
+                <WordDetect attribute="At Rule" context="@supports" String="@supports"/>
+                <keyword attribute="At Rule" context="@property" String="at-rules definitions"/>
+                <RegExpr attribute="At Rule" context="@media" String="@[-a-zA-Z0-9_]*"/>
+            </context>
+
+
+            <context name="AtRuleCommon" attribute="At Rule Text">
+                <DetectChar char=";" context="#pop#pop" attribute="Separator Symbol"/>
+                <DetectChar char="}" context="#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="AtRuleCommon2" attribute="At Rule Text">
+                <DetectChar char="{" context="#pop#pop!NestedRule" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+
+
+            <context name="@media" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleCommon2"/>
+                <IncludeRules context="FindFunctions"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media types" attribute="Media Type"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="AtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char=";" context="#pop#pop#pop" attribute="Error"/>
+                <DetectChar char="{" context="#pop#pop#pop!RuleSet" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop#pop#pop" lookAhead="1"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="NestedAtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="AtRuleMediaConditionValue" attribute="At Rule Text">
+                <AnyChar String="&lt;>=" attribute="Operator"/>
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="NestedAtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" attribute="Property Separator"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindNumber"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media features" attribute="Condition Property"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="NestedRule" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char="}" context="#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="{" context="RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <DetectChar char="@" context="SelectAtRule" lookAhead="1"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+
+            <context name="@supports" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleSupportsCondition" lookAhead="1"/>
+                <IncludeRules context="AtRuleCommon2"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <WordDetect String="selector(" context="FunctionSelector" attribute="Function"/>
+                <WordDetect String="font-tech(" context="#pop!SupportsProp" lookAhead="1"/>
+                <WordDetect String="font-format(" context="#pop!SupportsProp" lookAhead="1"/>
+                <DetectIdentifier/>
+            </context>
+            <context name="SupportsProp" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="#pop#pop!RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <WordDetect String="font-tech(" context="FunctionFont" attribute="Function"/>
+                <WordDetect String="font-format(" context="FunctionFont" attribute="Function"/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+
+            <context name="AtRuleSupportsCondition" attribute="At Rule Text" fallthroughContext="#pop">
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=";" context="#pop#pop#pop" attribute="Error"/>
+                <DetectChar char="{" context="#pop#pop#pop!NestedRule" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop#pop#pop" lookAhead="1"/>
+            </context>
+            <context name="SupportsCondition" attribute="At Rule Text" fallthroughContext="#pop!SupportsConditionValue">
+                <DetectSpaces/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" context="#pop!SupportsConditionValue" attribute="Property Separator"/>
+                <IncludeRules context="FindComments"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="properties" attribute="Condition Property"/>
+                <IncludeRules context="FindVendorProperty"/>
+            </context>
+            <context name="SupportsConditionValue" attribute="At Rule Text">
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionSelector" attribute="At Rule Text">
+                <DetectSpaces/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Function"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+            <context name="FunctionFont" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Function"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+
+            <context name="@layer" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="AtRuleCommon2"/>
+            </context>
+
+
+            <context name="@page" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Pseudo" char=":"/>
+                <AnyChar String="{};" context="#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <keyword attribute="Selector Pseudo" String="@page pseudo-classes"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@property" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="-"/>
+                <DetectChar char="{" context="#pop#pop!RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@font-feature-values" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar char="{" context="#pop#pop!FontFeatureBlock" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+            <context name="FontFeatureBlock" attribute="Normal Text" fallthroughContext="#pop!NestedRule">
+                <DetectSpaces/>
+                <DetectChar char="}" context="#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="{" context="AtRuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <RegExpr String="@[-a-zA-Z]*" attribute="At Rule"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="AtRuleSet" attribute="Normal Text" fallthroughContext="#pop!NestedRule">
+                <IncludeRules context="RuleSet"/>
+            </context>
+
+
+            <context name="@keyframes" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="#pop#pop!KeyFramesBlock" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <DetectIdentifier/>
+            </context>
+            <context name="KeyFramesBlock" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="RuleSet" attribute="Block Symbol" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="," attribute="Separator Symbol"/>
+                <IncludeRules context="FindComments"/>
+                <RegExpr attribute="Value" String="\b(from|to)\b|[-+]?[0-9.]+%"/>
+            </context>
+
+
+            <context name="SelectorAttr" attribute="Attribute Name">
+                <DetectChar attribute="Selector Attribute" context="#pop" char="]"/>
+                <IncludeRules context="FindStrings"/>
+                <DetectChar attribute="Attribute Operator" context="SelectorAttrValue" char="="/>
+                <AnyChar attribute="Attribute Operator" String="~^$*|"/>
+                <IncludeRules context="FindComments"/>
+                <DetectIdentifier/>
+                <AnyChar context="#pop" String="{};#.,:>" lookAhead="1"/>
+            </context>
+
+            <context name="SelectorAttrValue" attribute="Normal Text" fallthroughContext="SelectorAttrEnd">
+                <DetectSpaces/>
+                <AnyChar context="SelectorAttrValueQuoted" String="&quot;'" lookAhead="1"/>
+                <RegExpr context="SelectorAttrEnd" attribute="String" String="-?(\w|&escaped;)([-\w]+|&escaped;)*"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="SelectorAttrValueQuoted" attribute="String" fallthroughContext="#pop!SelectorAttrEnd">
+                <IncludeRules context="FindStrings"/>
+            </context>
+            <context name="SelectorAttrEnd" attribute="String" fallthroughContext="#pop#pop#pop">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop" char="]"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="i" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="I" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="s" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="S" char1="]" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="SelectorAttrValueSensitiveOp" attribute="String">
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop#pop" char="]"/>
+                <AnyChar attribute="Attribute Operator" String="isIS"/>
+            </context>
+
+            <context name="PseudoClassOrElement" attribute="Selector Pseudo" lineEndContext="#pop" fallthroughContext="#pop">
+                <DetectChar char=":" attribute="Selector Pseudo"/>
+                <WordDetect String="lang" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <WordDetect String="part" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <RegExpr String="nth-[-a-zA-Z0-9]*" attribute="Selector Pseudo" context="PseudoClassNth"/>
+                <RegExpr String="[-a-zA-Z]+" attribute="Selector Pseudo" context="#pop"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="PseudoClassStr" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassStrInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassStrInner" attribute="Error">
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <DetectChar char="{" context="#pop#pop#pop!RuleSet" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char=":" context="#pop#pop#pop!PseudoClassOrElement" attribute="Error"/>
+                <RegExpr String="\s*&ident;(\s+&ident;|\s+)*" attribute="String"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="PseudoClassNth" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassNthInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassNthInner" attribute="Normal Text" fallthroughContext="#pop#pop!PseudoClassSelector">
+                <Int attribute="Number" additionalDeliminator="-"/>
+                <AnyChar String="+-" attribute="Operator"/>
+                <DetectChar char="n" attribute="Unit"/>
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <WordDetect String="odd" attribute="Value"/>
+                <WordDetect String="even" attribute="Value"/>
+                <WordDetect String="of" attribute="Keyword" context="#pop#pop!PseudoClassSelector"/>
+                <IncludeRules context="FindComments"/>
+                <DetectSpaces/>
+            </context>
+
+            <context name="PseudoClassSelector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop" attribute="Selector Pseudo"/>
+                <DetectChar attribute="Selector Pseudo" context="NestedPseudoClassSelector" char="("/>
+                <IncludeRules context="FindSelector"/>
+                <DetectChar char="{" context="#pop!RuleSet" attribute="Error" beginRegion="ruleset"/>
+            </context>
+            <context name="NestedPseudoClassSelector" attribute="Normal Text">
+                <DetectChar char="{" context="#pop" lookAhead="1"/>
+                <IncludeRules context="PseudoClassSelector"/>
+            </context>
+
+            <context name="Comment" attribute="Comment">
+                <DetectSpaces/>
+                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="RuleSet" attribute="Normal Text" fallthroughContext="Rule">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="RuleSet" char="{" beginRegion="ruleset"/>
+                <DetectChar context="SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar context="Selector" String=".#:,[*>+~|&amp;" lookAhead="1"/>
+            </context>
+
+            <context name="Selector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop!RuleSet" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar context="#pop!SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <context name="Rule" attribute="Normal Text">
+                <DetectChar attribute="Property Separator" context="RuleParameters" char=":"/>
+                <Detect2Chars attribute="Variable" context="PropertyVariable" char="-" char1="-"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar context="#pop!Selector" String=".#,[*>+~|&amp;@{}" lookAhead="1"/>
+                <keyword attribute="Property" String="properties"/>
+                <DetectSpaces attribute="Normal Text"/>
+                <IncludeRules context="FindVendorProperty"/>
+                <RegExpr attribute="Unknown Property" String="[-_a-zA-Z]*"/>
+            </context>
+            <context name="PropertyVariable" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <RegExpr attribute="Variable" context="#pop" String="[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <context name="RuleParameters" attribute="Normal Text">
+                <DetectSpaces/>
+                <!-- Jump out conditions -->
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="Function" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char=";"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset"/>
+            </context>
+            <context name="NestedFunction" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <AnyChar context="#pop" String="{};" lookAhead="1"/>
+            </context>
+            <context name="FunctionInc" attribute="Normal Text">
+                <DetectChar attribute="Function" context="FunctionParameters" char="("/>
+                <StringDetect attribute="Function" context="FunctionVar" String="var("/>
+                <StringDetect attribute="Function" context="FunctionCalc" String="calc("/>
+                <StringDetect attribute="Function" context="FunctionUrl" String="url("/>
+                <StringDetect attribute="Function" context="FunctionEnv" String="env("/>
+                <keyword attribute="Function" String="functions"/>
+                <!-- Legacy -->
+                <WordDetect attribute="Function" String="rgba"/>
+                <WordDetect attribute="Function" String="hsla"/>
+                <RegExpr attribute="Unknown Function" String="&func;"/>
+            </context>
+
+            <context name="FunctionVar" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&var;" context="FunctionVarSep" attribute="Variable"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="FunctionVarSep" attribute="Normal Text" fallthroughContext="FunctionVarParam">
+                <DetectChar char=")" context="#pop#pop#pop" attribute="Function"/>
+                <DetectChar char="," context="FunctionVarParam" attribute="Separator Symbol"/>
+            </context>
+            <context name="FunctionVarParam" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop#pop#pop#pop" attribute="Function"/>
+                <AnyChar String=";{}" context="#pop#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionEnv" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&ident;" context="FunctionVarSep" attribute="Normal Text"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="FunctionCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="NestedCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="Calc" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Normal Text" context="NestedCalc" char="("/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/%"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindNumber"/>
+                <RegExpr String="[-+]?((?i:infinity|e|pi)|NaN)($|[^-\w])|[-+]($|[\s(,;]|/\*)" context="CalcConstantOrOperator" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+            <context name="CalcConstantOrOperator" attribute="Normal Text" fallthroughContext="#pop">
+                <DetectIdentifier context="#pop" attribute="Calc Constant"/>
+                <AnyChar String="-+" attribute="Operator"/>
+            </context>
+
+            <context name="FunctionUrl" attribute="Normal Text" fallthroughContext="UrlValue">
+                <DetectSpaces/>
+                <IncludeRules context="FindStrings"/>
+            </context>
+            <context name="UrlValue" attribute="String">
+                <DetectChar attribute="Function" context="#pop#pop#pop" char=")"/>
+                <AnyChar String=";{}" context="#pop#pop" lookAhead="1"/>
+            </context>
+
+            <context name="FunctionParameters" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <!-- string contexts -->
+            <context name="StringDQ" attribute="String" lineEndContext="#pop">
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="StringSQ" attribute="String" lineEndContext="#pop">
+                <DetectChar attribute="String" context="#pop" char="'"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="InsideString" attribute="String">
+                <RegExpr attribute="SpecialChar" String="\\([0-9A-Fa-f]{1,6}|.?)"/>
+                <RegExpr attribute="String" String="\\?[^&quot;'\\]+"/>
+            </context>
+
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
+            <itemData name="At Rule Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Media Type" defStyleNum="dsAnnotation" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Vendor Property" defStyleNum="dsKeyword" spellChecking="false" italic="1"/>
+            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Property Separator" defStyleNum="dsChar" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
+            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Block Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Named Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Unknown Function" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Calc Constant" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Condition Open/Close" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Condition Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
+            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
+            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
+            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Selector Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Attribute Name" defStyleNum="dsSpecialString" spellChecking="false"/>
+            <itemData name="Attribute Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Comment" defStyleNum="dsComment"/>
+            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <keywords casesensitive="0" weakDeliminator="-%@"/>
+        <comments>
+            <comment name="multiLine" start="/*" end="*/" region="comment"/>
         </comments>
     </general>
 
diff --git a/xml/csv.xml b/xml/csv.xml
new file mode 100644
--- /dev/null
+++ b/xml/csv.xml
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY sep ",">
+]>
+<!--
+Inspired by Rainbow CSV
+
+Language name     | Separator     | Extension | Properties
+ CSV              | , (comma)     |   .csv    | Ignored inside double-quoted fields
+ TSV              | \t (TAB)      | .tsv .tab |
+ CSV (semicolon)  | ; (semicolon) |           | Ignored inside double-quoted fields
+ CSV (whitespace) | whitespace    |           | Consecutive whitespaces are merged
+ CSV (pipe)       | | (pipe)      |
+
+https://www.rfc-editor.org/rfc/rfc4180
+
+Although the RFC considers this invalid,
+the syntax is tolerant of spaces before double quotes.
+
+  aaa, "bbb,ccc", ddd
+       ~ RFC: invalid character in non-escaped rule
+-->
+<language name="CSV" section="Other" version="2" kateversion="5.62" extensions="*.csv" mimetype="text/csv" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+  <highlighting>
+
+    <contexts>
+      <context name="Column0" lineEndContext="#stay" attribute="Column 0">
+        <DetectChar char="&sep;" context="#pop!Column1" attribute="Column 0 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column0Quote"/>
+        <DetectChar char="&quot;" context="Column0MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column0Quote" lineEndContext="#pop" attribute="Column 0" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column0MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column0MultiLine" lineEndContext="#stay" attribute="Column 0">
+        <DetectChar char="&quot;" context="#pop!Column0Quote"/>
+      </context>
+
+      <context name="Column1" lineEndContext="#pop!Column0" attribute="Column 1">
+        <DetectChar char="&sep;" context="#pop!Column2" attribute="Column 1 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column1Quote"/>
+        <DetectChar char="&quot;" context="Column1MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column1Quote" lineEndContext="#pop#pop!Column0" attribute="Column 1" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column1MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column1MultiLine" lineEndContext="#stay" attribute="Column 1">
+        <DetectChar char="&quot;" context="#pop!Column1Quote"/>
+      </context>
+
+      <context name="Column2" lineEndContext="#pop!Column0" attribute="Column 2">
+        <DetectChar char="&sep;" context="#pop!Column3" attribute="Column 2 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column2Quote"/>
+        <DetectChar char="&quot;" context="Column2MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column2Quote" lineEndContext="#pop#pop!Column0" attribute="Column 2" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column2MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column2MultiLine" lineEndContext="#stay" attribute="Column 2">
+        <DetectChar char="&quot;" context="#pop!Column2Quote"/>
+      </context>
+
+      <context name="Column3" lineEndContext="#pop!Column0" attribute="Column 3">
+        <DetectChar char="&sep;" context="#pop!Column4" attribute="Column 3 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column3Quote"/>
+        <DetectChar char="&quot;" context="Column3MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column3Quote" lineEndContext="#pop#pop!Column0" attribute="Column 3" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column3MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column3MultiLine" lineEndContext="#stay" attribute="Column 3">
+        <DetectChar char="&quot;" context="#pop!Column3Quote"/>
+      </context>
+
+      <context name="Column4" lineEndContext="#pop!Column0" attribute="Column 4">
+        <DetectChar char="&sep;" context="#pop!Column5" attribute="Column 4 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column4Quote"/>
+        <DetectChar char="&quot;" context="Column4MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column4Quote" lineEndContext="#pop#pop!Column0" attribute="Column 4" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column4MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column4MultiLine" lineEndContext="#stay" attribute="Column 4">
+        <DetectChar char="&quot;" context="#pop!Column4Quote"/>
+      </context>
+
+      <context name="Column5" lineEndContext="#pop!Column0" attribute="Column 5">
+        <DetectChar char="&sep;" context="#pop!Column6" attribute="Column 5 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column5Quote"/>
+        <DetectChar char="&quot;" context="Column5MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column5Quote" lineEndContext="#pop#pop!Column0" attribute="Column 5" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column5MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column5MultiLine" lineEndContext="#stay" attribute="Column 5">
+        <DetectChar char="&quot;" context="#pop!Column5Quote"/>
+      </context>
+
+      <context name="Column6" lineEndContext="#pop!Column0" attribute="Column 6">
+        <DetectChar char="&sep;" context="#pop!Column7" attribute="Column 6 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column6Quote"/>
+        <DetectChar char="&quot;" context="Column6MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column6Quote" lineEndContext="#pop#pop!Column0" attribute="Column 6" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column6MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column6MultiLine" lineEndContext="#stay" attribute="Column 6">
+        <DetectChar char="&quot;" context="#pop!Column6Quote"/>
+      </context>
+
+      <context name="Column7" lineEndContext="#pop!Column0" attribute="Column 7">
+        <DetectChar char="&sep;" context="#pop!Column8" attribute="Column 7 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column7Quote"/>
+        <DetectChar char="&quot;" context="Column7MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column7Quote" lineEndContext="#pop#pop!Column0" attribute="Column 7" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column7MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column7MultiLine" lineEndContext="#stay" attribute="Column 7">
+        <DetectChar char="&quot;" context="#pop!Column7Quote"/>
+      </context>
+
+      <context name="Column8" lineEndContext="#pop!Column0" attribute="Column 8">
+        <DetectChar char="&sep;" context="#pop!Column9" attribute="Column 8 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column8Quote"/>
+        <DetectChar char="&quot;" context="Column8MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column8Quote" lineEndContext="#pop#pop!Column0" attribute="Column 8" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column8MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column8MultiLine" lineEndContext="#stay" attribute="Column 8">
+        <DetectChar char="&quot;" context="#pop!Column8Quote"/>
+      </context>
+
+      <context name="Column9" lineEndContext="#pop!Column0" attribute="Column 9">
+        <DetectChar char="&sep;" context="#pop!Column0" attribute="Column 9 Separator"/>
+        <RangeDetect char="&quot;" char1="&quot;" context="Column9Quote"/>
+        <DetectChar char="&quot;" context="Column9MultiLine"/>
+        <IncludeRules context="FindField"/>
+      </context>
+      <context name="Column9Quote" lineEndContext="#pop!Column0" attribute="Column 9" fallthroughContext="#pop">
+        <RangeDetect char="&quot;" char1="&quot;"/>
+        <DetectChar char="&quot;" context="#pop!Column9MultiLine"/>
+        <IncludeRules context="Error"/>
+      </context>
+      <context name="Column9MultiLine" lineEndContext="#stay" attribute="Column 9">
+        <DetectChar char="&quot;" context="#pop!Column9Quote"/>
+      </context>
+
+      <context name="FindField" lineEndContext="#stay" attribute="Column 0">
+        <DetectSpaces/>
+        <RegExpr String="[^&sep;]+"/>
+      </context>
+
+      <context name="Error" lineEndContext="#stay" attribute="Error">
+        <RegExpr String="[^&sep;]+" context="#pop" attribute="Error"/>
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Column 0" defStyleNum="dsNormal"/>
+      <itemData name="Column 1" defStyleNum="dsVariable"/>
+      <itemData name="Column 2" defStyleNum="dsString"/>
+      <itemData name="Column 3" defStyleNum="dsBuiltIn"/>
+      <itemData name="Column 4" defStyleNum="dsPreprocessor"/>
+      <itemData name="Column 5" defStyleNum="dsChar"/>
+      <itemData name="Column 6" defStyleNum="dsFunction"/>
+      <itemData name="Column 7" defStyleNum="dsBaseN"/>
+      <itemData name="Column 8" defStyleNum="dsOperator"/>
+      <itemData name="Column 9" defStyleNum="dsDataType"/>
+
+      <itemData name="Column 0 Separator" bold="1" defStyleNum="dsNormal"/>
+      <itemData name="Column 1 Separator" bold="1" defStyleNum="dsVariable"/>
+      <itemData name="Column 2 Separator" bold="1" defStyleNum="dsString"/>
+      <itemData name="Column 3 Separator" bold="1" defStyleNum="dsBuiltIn"/>
+      <itemData name="Column 4 Separator" bold="1" defStyleNum="dsPreprocessor"/>
+      <itemData name="Column 5 Separator" bold="1" defStyleNum="dsChar"/>
+      <itemData name="Column 6 Separator" bold="1" defStyleNum="dsFunction"/>
+      <itemData name="Column 7 Separator" bold="1" defStyleNum="dsBaseN"/>
+      <itemData name="Column 8 Separator" bold="1" defStyleNum="dsOperator"/>
+      <itemData name="Column 9 Separator" bold="1" defStyleNum="dsDataType"/>
+
+      <itemData name="Error" defStyleNum="dsError"/>
+    </itemDatas>
+  </highlighting>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/curry.xml b/xml/curry.xml
--- a/xml/curry.xml
+++ b/xml/curry.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!-- qualification of entities -->
   <!ENTITY qualify     "(?:[A-Z][a-zA-Z0-9_']*\.)*">
diff --git a/xml/d.xml b/xml/d.xml
--- a/xml/d.xml
+++ b/xml/d.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd" [
+<!DOCTYPE language [
   <!ENTITY hexfloat "0[xX][\da-fA-F_]*(?:\.[\da-fA-F_]*)?[pP][-+]?\d[\d_]*[fFL]?i?">
   <!-- Float starting with a dot is matched in main context -->
   <!-- All floats except integers -->
@@ -105,7 +105,7 @@
    ========================================================================
 -->
 
-<language name="D" version="12" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
+<language name="D" version="13" kateversion="5.0" section="Sources" extensions="*.d;*.D;*.di;*.DI;" mimetype="text/x-dsrc" casesensitive="true" author="Diggory Hardy (diggory.hardy@gmail.com), Aziz Köksal (aziz.koeksal@gmail.com), Jari-Matti Mäkelä (jmjm@iki.fi), Simon J Mackenzie (project.katedxml@smackoz.fastmail.fm)" license="LGPL">
   <highlighting>
     <!-- User-defined keywords (add identifiers you'd like highlighted here) -->
     <list name="userkeywords">
@@ -926,7 +926,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//"/>
+      <comment name="singleLine" start="//" position="afterwhitespace"/>
       <comment name="multiLine"  start="/+" end="+/" region="CommentNested"/>
     </comments>
     <keywords casesensitive="true"/>
diff --git a/xml/dart.xml b/xml/dart.xml
new file mode 100644
--- /dev/null
+++ b/xml/dart.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="Dart" section="Sources" version="4" kateversion="5.0" indenter="cstyle" extensions="*.dart" mimetype="text/x-dart" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT">
+    <highlighting>
+        <list name="keywords">
+            <item>Function</item>
+            <item>abstract</item>
+            <item>as</item>
+            <item>assert</item>
+            <item>class</item>
+            <item>covariant</item>
+            <item>deferred</item>
+            <item>enum</item>
+            <item>export</item>
+            <item>extends</item>
+            <item>extension</item>
+            <item>external</item>
+            <item>factory</item>
+            <item>get</item>
+            <item>hide</item>
+            <item>implements</item>
+            <item>import</item>
+            <item>in</item>
+            <item>interface</item>
+            <item>is</item>
+            <item>library</item>
+            <item>mixin</item>
+            <item>new</item>
+            <item>on</item>
+            <item>operator</item>
+            <item>part</item>
+            <item>return</item>
+            <item>set</item>
+            <item>show</item>
+            <item>super</item>
+            <item>sync</item>
+            <item>this</item>
+            <item>typedef</item>
+            <item>with</item>
+            <item>yield</item>
+            <item>@pragma</item>
+            <item>@override</item>
+            <item>@deprecated</item>
+        </list>
+        <list name="controlflow">
+            <item>break</item>
+            <item>case</item>
+            <item>catch</item>
+            <item>continue</item>
+            <item>default</item>
+            <item>do</item>
+            <item>else</item>
+            <item>finally</item>
+            <item>for</item>
+            <item>if</item>
+            <item>rethrow</item>
+            <item>switch</item>
+            <item>throw</item>
+            <item>try</item>
+            <item>when</item>
+            <item>while</item>
+        </list>
+        <list name="modifiers">
+            <item>async</item>
+            <item>await</item>
+            <item>const</item>
+            <item>dynamic</item>
+            <item>final</item>
+            <item>late</item>
+            <item>sealed</item>
+            <item>static</item>
+        </list>
+        <list name="types">
+            <item>Future</item>
+            <item>Iterable</item>
+            <item>List</item>
+            <item>Map</item>
+            <item>Never</item>
+            <item>Object</item>
+            <item>Set</item>
+            <item>Stream</item>
+            <item>String</item>
+            <item>bool</item>
+            <item>double</item>
+            <item>int</item>
+            <item>var</item>
+            <item>void</item>
+        </list>
+        <list name="literals">
+            <item>true</item>
+            <item>false</item>
+            <item>null</item>
+        </list>
+        <list name="exceptions">
+            <item>AbstractClassInstantiationError</item>
+            <item>ArgumentError</item>
+            <item>AssertionError</item>
+            <item>CastError</item>
+            <item>ConcurrentModificationError</item>
+            <item>CyclicInitializationError</item>
+            <item>Error</item>
+            <item>Exception</item>
+            <item>FallThroughError</item>
+            <item>FormatException</item>
+            <item>IndexError</item>
+            <item>IntegerDivisionByZeroException</item>
+            <item>JsonCyclicError</item>
+            <item>JsonUnsupportedObjectError</item>
+            <item>NoSuchMethodError</item>
+            <item>NullThrownError</item>
+            <item>OutOfMemoryError</item>
+            <item>RangeError</item>
+            <item>StackOverflowError</item>
+            <item>StateError</item>
+            <item>TypeError</item>
+            <item>UnimplementedError</item>
+            <item>UnsupportedError</item>
+        </list>
+        <list name="thiskeyword">
+            <item>this</item>
+        </list>
+        <contexts>
+            <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+                <DetectSpaces/>
+                <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
+                <keyword attribute="Keyword" context="#stay" String="keywords"/>
+                <keyword attribute="Data Type" context="#stay" String="types"/>
+                <keyword attribute="Modifiers" context="#stay" String="modifiers"/>
+                <keyword attribute="Constant" context="#stay" String="literals"/>
+                <keyword attribute="Exceptions" context="#stay" String="exceptions"/>
+                <WordDetect attribute="This Keyword" context="#stay" String="this"/>
+                <DetectIdentifier/>
+                <Float attribute="Float" context="#stay"/>
+                <Int attribute="Decimal" context="#stay"/>
+                <HlCHex attribute="Hex" context="#stay"/>
+                <HlCOct attribute="Octal" context="#stay"/>
+                <StringDetect attribute="String" String="'''" context="SMultilineString" beginRegion="MultilineStringRegion"/>
+                <StringDetect attribute="String" String="&quot;&quot;&quot;" context="SMultilineString" beginRegion="MultilineStringRegion"/>
+                <DetectChar attribute="String" context="DoubleQuoteString" char="&quot;"/>
+                <DetectChar attribute="String" context="SingleQuoteString" char="'"/>
+                <IncludeRules context="FindComments"/>
+                <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
+                <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
+                <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?|~^"/>
+            </context>
+            <!-- Strings -->
+            <context attribute="String" lineEndContext="#pop" name="DoubleQuoteString">
+                <DetectSpaces attribute="String"/>
+                <DetectIdentifier attribute="String"/>
+                <LineContinue attribute="String" context="#stay"/>
+                <HlCStringChar attribute="String Char" context="#stay"/>
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+            </context>
+            <context attribute="String" lineEndContext="#pop" name="SingleQuoteString">
+                <DetectSpaces attribute="String"/>
+                <DetectIdentifier attribute="String"/>
+                <HlCStringChar attribute="String Char" context="#stay"/>
+                <DetectChar attribute="String" context="#pop" char="'"/>
+            </context>
+            <!-- Comments -->
+            <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
+                <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+                <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true"/>
+            </context>
+            <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+                <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true"/>
+                <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true"/>
+                <IncludeRules context="##Doxygen"/>
+                <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/"/>
+                <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment"/>
+            </context>
+            <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+            </context>
+            <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+                <DetectSpaces attribute="Comment"/>
+                <LineContinue attribute="Comment" context="#stay"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier attribute="Comment"/>
+            </context>
+            <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+                <DetectSpaces attribute="Comment"/>
+                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier attribute="Comment"/>
+            </context>
+            <!-- multiline string -->
+            <context attribute="String" lineEndContext="#stay" name="SMultilineString">
+                <DetectSpaces attribute="String"/>
+                <HlCStringChar attribute="String Char" context="#stay"/>
+                <StringDetect attribute="String" String="'''" context="#pop" endRegion="MultilineStringRegion"/>
+                <StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop" endRegion="MultilineStringRegion"/>
+            </context>
+        </contexts>
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Exceptions" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+            <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
+            <itemData name="Constant" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+            <itemData name="Modifiers" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="String Char" defStyleNum="dsSpecialChar"/>
+            <itemData name="Comment" defStyleNum="dsComment"/>
+            <itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="This Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+    <general>
+        <comments>
+            <comment name="singleLine" start="//" position="afterwhitespace"/>
+            <comment name="multiLine" start="/*" end="*/" region="Comment"/>
+        </comments>
+        <keywords casesensitive="true"/>
+    </general>
+</language>
diff --git a/xml/debiancontrol.xml b/xml/debiancontrol.xml
new file mode 100644
--- /dev/null
+++ b/xml/debiancontrol.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="Debian Control" version="4" kateversion="5.0" section="Other" extensions="control" mimetype="">
+    <highlighting>
+        <contexts>
+            <context attribute="Normal Text" lineEndContext="#stay" name="INIT">
+                <StringDetect attribute="Keyword" context="DependencyField" String="Depends:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Recommends:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Suggests:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Conflicts:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Provides:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Replaces:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Enhances:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Pre-Depends:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Build-Depends:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Build-Depends-Indep:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Build-Conflicts:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Build-Conflicts-Indep:"/>
+                <StringDetect attribute="Keyword" context="DependencyField" String="Breaks:"/>
+                <RegExpr attribute="Keyword" context="Field" minimal="true" String="^[^ ]*:" column="0"/>
+                <DetectChar attribute="Value" context="Field" char=" " column="0"/>
+            </context>
+
+            <context attribute="Value" lineEndContext="#pop" name="Field">
+                <RegExpr attribute="Email" context="#stay" String="&lt;.*@.*&gt;" minimal="true"/>
+                <Detect2Chars attribute="Keyword" context="Variable" char="$" char1="{"/>
+            </context>
+
+            <context attribute="Variable" lineEndContext="#pop" name="Variable">
+                <DetectChar attribute="Keyword" context="#pop" char="}"/>
+            </context>
+
+            <context attribute="Value" lineEndContext="#pop" name="DependencyField">
+                <RegExpr attribute="Email" context="#stay" String="&lt;.*@.*&gt;" minimal="true"/>
+                <Detect2Chars attribute="Keyword" context="Variable" char="$" char1="{"/>
+                <AnyChar attribute="Keyword" context="#stay" String=",|"/>
+                <AnyChar attribute="Keyword" context="Constrain" String="(["/>
+            </context>
+
+            <context attribute="Version" lineEndContext="#stay" name="Constrain">
+                <Detect2Chars attribute="Keyword" context="Variable" char="$" char1="{"/>
+                <AnyChar attribute="Keyword" context="#stay" String="!&lt;=&gt;"/>
+                <AnyChar attribute="Keyword" context="#pop" String=")]"/>
+            </context>
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal"/>
+            <itemData name="Keyword"  defStyleNum="dsKeyword"/>
+            <itemData name="Version"  defStyleNum="dsDecVal"/>
+            <itemData name="Value"  defStyleNum="dsDataType"/>
+            <itemData name="Variable" defStyleNum="dsVariable"/>
+            <itemData name="Email" defStyleNum="dsOthers"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <keywords casesensitive="1" />
+    </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/desktop.xml b/xml/desktop.xml
new file mode 100644
--- /dev/null
+++ b/xml/desktop.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name=".desktop" version="6" kateversion="5.0"
+          section="Configuration" extensions="*.desktop;*.kdelnk;*.desktop.cmake"
+          mimetype="application/x-desktop">
+  <highlighting>
+    <contexts>
+      <context attribute="Key" lineEndContext="#stay" name="Normal">
+        <RegExpr String="^\[.*\]$" attribute="Section" context="#stay" beginRegion="Section" endRegion="Section" column="0"/>
+        <RegExpr String="\[.*\]" attribute="Language" context="Value"/>
+        <DetectChar char="#" attribute="Comment" context="Comment" firstNonSpace="true"/>
+        <DetectChar char="=" attribute="Normal Text" context="Value"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Value"/>
+      <context attribute="Comment"     lineEndContext="#pop" name="Comment">
+        <DetectSpaces />
+        <IncludeRules context="##Comments"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Section"  defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Key"  defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Language"  defStyleNum="dsDecVal" bold="1" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#"/>
+    </comments>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/diff.xml b/xml/diff.xml
--- a/xml/diff.xml
+++ b/xml/diff.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-  <!ENTITY file  "(====|\*\*\*|\-\-\-|diff|Only in .*:).*$">
+  <!ENTITY file  "(====|\*\*\*|\-\-\-|diff|Only in [^:]*:).*$">
 ]>
 <!--
     2006-08-02: 1.10 Matthew Woehlke <mw_triad@sourceforge.net>
@@ -12,7 +12,7 @@
     2008-02-13: 1.11 Eduardo Robles Elvira <edulix AT gmail DOT com>
      Fixed folding.
 -->
-<language name="Diff" version="7" kateversion="5.62" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
+<language name="Diff" version="9" kateversion="5.62" section="Other" extensions="*.diff;*patch;*.rej" mimetype="text/x-patch">
 
   <highlighting>
 
@@ -22,7 +22,7 @@
         <Detect2Chars attribute="Header" context="AttrHeader_Chunk" char="@" char1="@" beginRegion="chunk" column="0"/>
         <AnyChar attribute="Header" context="AttrHeader_Chunk" String="0123456789" beginRegion="chunk" column="0"/>
         <RegExpr attribute="Header" context="RChunk" String="^\*+$" beginRegion="chunk" column="0"/>
-        <RegExpr attribute="File" context="#stay" String="^Only in .*:.*$" column="0"/>
+        <RegExpr attribute="File" context="#stay" String="^Only in [^:]*:.*$" column="0"/>
         <StringDetect attribute="File" context="AttrFile_RFile" String="diff" beginRegion="chunk" column="0"/>
         <StringDetect attribute="File" context="AttrFile" String="====" column="0"/>
         <StringDetect attribute="File" context="AttrFile_File" String="***" beginRegion="chunk" column="0"/>
@@ -66,7 +66,7 @@
 
       <!-- block contexts (diff -r) -->
       <context attribute="Normal Text" lineEndContext="#stay" name="RFile" fallthroughContext="AttrNormal">
-        <RegExpr attribute="File" context="#pop" String="^(diff|Only in .*:).*$" endRegion="chunk" lookAhead="true" column="0"/>
+        <RegExpr attribute="File" context="#pop" String="^(diff|Only in [^:]*:)" endRegion="chunk" lookAhead="true" column="0"/>
         <RegExpr attribute="Header" context="#stay" String="^&file;" column="0"/>
         <RegExpr attribute="Header" context="RChunkInFile" String="^\*+$" beginRegion="chunk" column="0"/>
         <IncludeRules context="File"/>
@@ -115,13 +115,13 @@
     </contexts>
 
     <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="File"  defStyleNum="dsKeyword"/>
-      <itemData name="Header"  defStyleNum="dsDataType"/>
-      <itemData name="Removed line"  defStyleNum="dsString" />
-      <itemData name="Added line"  defStyleNum="dsVariable"/>
-      <itemData name="Changed line (old)"  defStyleNum="dsString"/>
-      <itemData name="Changed line (new)"  defStyleNum="dsVariable"/>
+      <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="File"  defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Header"  defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Removed line"  defStyleNum="dsString" spellChecking="false"/>
+      <itemData name="Added line"  defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Changed line (old)"  defStyleNum="dsString" spellChecking="false"/>
+      <itemData name="Changed line (new)"  defStyleNum="dsVariable" spellChecking="false"/>
     </itemDatas>
 
   </highlighting>
diff --git a/xml/djangotemplate.xml b/xml/djangotemplate.xml
--- a/xml/djangotemplate.xml
+++ b/xml/djangotemplate.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="Django HTML Template" version="7" kateversion="5.53" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
+<language name="Django HTML Template" version="9" kateversion="5.79" section="Markup" extensions="*.htm;*.html" mimetype="text/html"  author="Matthew Marshall (matthew@matthewmarshall.org)" license="LGPL" priority="9">
 
 <!--
     Based off of the katepart html syntax highlighting by Wilbert Berendsen.
@@ -131,17 +131,17 @@
     <DetectIdentifier/>
     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
     <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
+    <WordDetect attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE" beginRegion="doctype" />
     <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
-    <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
-    <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;pre\b" insensitive="true" beginRegion="pre" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;div\b" insensitive="true" beginRegion="div" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;table\b" insensitive="true" beginRegion="table" />
+    <WordDetect attribute="Element" context="CSS" String="&lt;style" insensitive="true" beginRegion="style" />
+    <WordDetect attribute="Element" context="JS" String="&lt;script" insensitive="true" beginRegion="script" />
+    <WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />
+    <WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />
+    <WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" />
     <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/pre\b" insensitive="true" endRegion="pre" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/div\b" insensitive="true" endRegion="div" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/table\b" insensitive="true" endRegion="table" />
+    <WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />
+    <WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />
+    <WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" />
     <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
     <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
     <IncludeRules context="FindEntityRefs" />
@@ -159,8 +159,8 @@
   </context>
 
   <context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Attribute" context="#stay" String="^&name;|\s+&name;" />
     <DetectChar attribute="Attribute" context="Value" char="=" />
+    <RegExpr attribute="Attribute" context="#stay" String="^&name;|\s+&name;" />
   </context>
 
   <context name="FindDTDRules" attribute="Normal Text" lineEndContext="#stay">
@@ -174,14 +174,12 @@
     <IncludeRules context="FindTemplate" />
     <DetectIdentifier/>
     <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
-    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
   </context>
 
   <context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
     <DetectSpaces/>
     <DetectIdentifier/>
     <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
-    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
   </context>
 
   <context name="PI" attribute="Normal Text" lineEndContext="#stay">
@@ -217,71 +215,61 @@
     <IncludeRules context="FindPEntityRefs" />
   </context>
 
-  <context name="El Open" attribute="Normal Text" lineEndContext="#stay">
+  <context name="El Open" attribute="Error" lineEndContext="#stay">
     <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
     <DetectChar attribute="Element" context="#pop" char="&gt;" />
     <IncludeRules context="FindAttributes" />
+    <DetectSpaces attribute="Normal Text"/>
     <IncludeRules context="FindTemplate" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
-  <context name="El Close" attribute="Normal Text" lineEndContext="#stay">
+  <context name="El Close" attribute="Error" lineEndContext="#stay">
     <DetectChar attribute="Element" context="#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+    <DetectSpaces attribute="Normal Text"/>
   </context>
 
-  <context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+  <context name="CSS" attribute="Error" lineEndContext="#stay">
     <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
     <DetectChar attribute="Element" context="CSS content" char="&gt;" />
     <IncludeRules context="FindAttributes" />
     <IncludeRules context="FindTemplate" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+    <DetectSpaces attribute="Normal Text"/>
   </context>
 
   <context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="true" endRegion="style" />
+    <WordDetect attribute="Element" context="#pop#pop!El Close" String="&lt;/style" insensitive="true" endRegion="style" />
     <IncludeRules context="FindTemplate" />
     <IncludeRules context="##CSS" includeAttrib="true"/>
   </context>
 
-  <context name="JS" attribute="Normal Text" lineEndContext="#stay">
+  <context name="JS" attribute="Error" lineEndContext="#stay">
     <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
     <DetectChar attribute="Element" context="JS content" char="&gt;" />
     <IncludeRules context="FindTemplate" />
     <IncludeRules context="FindAttributes" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+    <DetectSpaces attribute="Normal Text"/>
   </context>
 
   <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <WordDetect attribute="Element" context="#pop#pop!El Close" String="&lt;/script" insensitive="true" endRegion="script" />
     <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
     <IncludeRules context="FindTemplate" />
     <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
   </context>
 
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
-    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <WordDetect attribute="Element" context="#pop#pop#pop!El Close" String="&lt;/script" insensitive="true" endRegion="script" />
     <IncludeRules context="FindTemplate" />
     <IncludeRules context="##Comments" />
   </context>
 
-  <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+  <context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Value NQ">
     <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
     <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
     <DetectSpaces />
   </context>
 
-  <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+  <context name="Value NQ" attribute="Normal Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
     <IncludeRules context="FindEntityRefs" />
     <IncludeRules context="FindTemplate" />
     <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
diff --git a/xml/dockerfile.xml b/xml/dockerfile.xml
--- a/xml/dockerfile.xml
+++ b/xml/dockerfile.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
     This file is part of KDE's kate project.
 
@@ -11,9 +11,9 @@
 <language
     name="Dockerfile"
     section="Other"
-    version="10"
+    version="11"
     kateversion="5.79"
-    extensions="Dockerfile"
+    extensions="Dockerfile;Containerfile"
     author="James Turnbull (james@lovedthanlost.net)"
     license="MIT"
   >
diff --git a/xml/dosbat.xml b/xml/dosbat.xml
new file mode 100644
--- /dev/null
+++ b/xml/dosbat.xml
@@ -0,0 +1,644 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language
+[
+  <!ENTITY label    "[^\s]+">
+  <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_.]*">             <!-- valid character in a variable name -->
+  <!ENTITY varname_set "&varname;(?=(\[(&#37;&#37;)?(&varname;|\d+)\]|!&varname;!)?(=|\s*$))|&#37;~?\d|&#37;&#37;(&varname;|[0-9*#])">   <!-- variable in set cmd -->
+  <!ENTITY eop      "(?=([\s\\;&quot;&#37;]|$))">         <!-- end of path -->
+  <!ENTITY pathpart "[^\s\\&#37;!;/:*?&quot;&gt;&lt;|&amp;]">   <!-- valid character in a file name -->
+]>
+<language name="MS-DOS Batch" version="9" kateversion="5.62" section="Scripts" extensions="*.bat;*.cmd" mimetype="application/x-dos" casesensitive="0" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
+
+<!-- (c) 2006, 2009, 2010 Matthew Woehlke (mw_triad@users.sourceforge.net)
+    Released under the LGPL -->
+
+  <highlighting>
+    <list name="builtins">
+      <item>assoc</item>
+      <item>break</item>
+      <item>cd</item>
+      <item>chdir</item>
+      <item>cls</item>
+      <item>color</item>
+      <item>copy</item>
+      <item>date</item>
+      <item>del</item>
+      <item>dir</item>
+      <item>endlocal</item>
+      <item>erase</item>
+      <item>exit</item>
+      <item>ftype</item>
+      <item>md</item>
+      <item>mkdir</item>
+      <item>move</item>
+      <item>path</item>
+      <item>pause</item>
+      <item>popd</item>
+      <item>prompt</item>
+      <item>pushd</item>
+      <item>rd</item>
+      <item>ren</item>
+      <item>rename</item>
+      <item>rmdir</item>
+      <item>runas</item>
+      <item>setlocal</item>
+      <item>shift</item>
+      <item>start</item>
+      <item>time</item>
+      <item>title</item>
+      <item>type</item>
+      <item>ver</item>
+      <item>verify</item>
+      <item>vol</item>
+    </list>
+
+    <!-- these need special handling -->
+    <list name="special commands">
+      <item>call</item>
+      <item>echo</item>
+      <item>else</item>
+      <item>for</item>
+      <item>in</item>
+      <item>do</item>
+      <item>goto</item>
+      <item>if</item>
+      <item>not</item>
+      <item>rem</item>
+      <item>set</item>
+    </list>
+
+    <list name="commands">
+      <!-- the basics -->
+      <item>at</item>
+      <item>attrib</item>
+      <item>break</item>
+      <item>cacls</item>
+      <item>chcp</item>
+      <item>chkdsk</item>
+      <item>chkntfs</item>
+      <item>cmd</item>
+      <item>comp</item>
+      <item>compact</item>
+      <item>convert</item>
+      <item>diskcomp</item>
+      <item>diskcopy</item>
+      <item>doskey</item>
+      <item>fc</item>
+      <item>find</item>
+      <item>findstr</item>
+      <item>format</item>
+      <item>graftabl</item>
+      <item>help</item>
+      <item>label</item>
+      <item>mode</item>
+      <item>more</item>
+      <item>print</item>
+      <item>recover</item>
+      <item>replace</item>
+      <item>sort</item>
+      <item>subst</item>
+      <item>tree</item>
+      <item>xcopy</item>
+    </list>
+
+    <list name="comparators">
+      <item>EQU</item>
+      <item>NEQ</item>
+      <item>LSS</item>
+      <item>LEQ</item>
+      <item>GTR</item>
+      <item>GEQ</item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Start">
+        <DetectSpaces/>
+        <!-- general syntactical stuff -->
+        <keyword attribute="Builtin" context="Command" String="builtins"/>
+        <keyword attribute="Command" context="Command" String="commands"/>
+        <!-- special built-ins -->
+        <WordDetect attribute="Builtin" context="CmdSet" String="set" insensitive="1"/>
+        <WordDetect attribute="Builtin" context="CmdEcho" String="echo" insensitive="1" lookAhead="1"/>
+        <WordDetect attribute="ControlFlow" context="CmdIf" String="if" insensitive="1"/>
+        <WordDetect attribute="ControlFlow" context="#stay" String="else" insensitive="1"/>
+        <WordDetect attribute="ControlFlow" context="CmdFor" String="for" insensitive="1"/>
+        <WordDetect attribute="ControlFlow" context="CmdGoto" String="goto" insensitive="1"/>
+        <WordDetect attribute="Builtin" context="CmdCall" String="call" insensitive="1"/>
+        <WordDetect attribute="Comment" context="Comment" String="rem" insensitive="1"/>
+        <DetectChar attribute="Keyword" context="#stay" char="@"/>
+        <!-- other syntaxes -->
+        <StringDetect attribute="Comment" context="Comment" String="::"/>
+        <DetectChar attribute="Label" context="Label" char=":" firstNonSpace="true"/>
+        <DetectChar attribute="Keyword" context="NestedStart" char="(" beginRegion="body"/>
+        <IncludeRules context="FindRedirections"/>
+        <RegExpr attribute="Path" context="Command" String="[^\s&#37;!;*?&quot;&gt;&lt;|&amp;]+"/>
+        <StringDetect attribute="Keyword" String="||"/>
+        <StringDetect attribute="Keyword" String="&amp;&amp;"/>
+        <DetectChar attribute="Redirection" char="|"/>
+        <DetectChar attribute="Keyword" char="&amp;"/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="NestedStart">
+        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="body"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindBranches">
+        <StringDetect attribute="Keyword" context="#pop" String="||"/>
+        <StringDetect attribute="Keyword" context="#pop" String="&amp;&amp;"/>
+        <DetectChar attribute="Redirection" context="#pop" char="|"/>
+        <DetectChar attribute="Keyword" context="#pop" char="&amp;"/>
+        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="body"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindRedirections">
+        <RegExpr attribute="Redirection" context="Redirection" String="[0-9]*(>>?|&lt;)"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Redirection" fallthroughContext="#pop!Path">
+        <DetectSpaces context="#pop!Path"/>
+        <RegExpr attribute="Redirection" context="#pop" String="&amp;[0-9]+|"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindStrings">
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindSubstitutions">
+        <Detect2Chars attribute="Escape" context="Substitution" char="%" char1="%"/>
+        <IncludeRules context="FindVariables"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Substitution" fallthroughContext="#pop">
+        <RegExpr attribute="Variable Expansion" context="#pop!SubstitutionVariable" String="&varname;(\[(%%)?(&varname;|\d+)\])*(:~(%%&varname;|-?[0-9]+)(,(%%&varname;|-?[0-9]+))?|:[^=]+=[^%]*)?%|[0-9*#]|~[fdpnxsatz]*(\$&varname;:)?[0-9#]|" lookAhead="1"/>
+        <DetectIdentifier attribute="Variable" context="#pop"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstitutionVariable" fallthroughContext="#pop!VariableRegular1">
+        <DetectChar attribute="Variable Expansion" char="~" context="#pop!VariableModificator"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindVariables">
+        <!--
+          %var%
+          %var:~N,N%
+          %var:old=new%
+          %~n1
+          %~$var:1
+          %1
+          %*
+          !var!
+          !var:~N,N!
+          !var:old=new!
+          !%...%!
+
+          prefix:
+          [%!]var[...]
+          [%!]var%%
+        -->
+        <RegExpr attribute="Variable Expansion" context="Variable" String="%(&varname;(\[(%%)?(&varname;|\d+)\])*(:~(%%&varname;|-?[0-9]+)(,(%%&varname;|-?[0-9]+))?|:[^=]+=[^%]*)?%|[0-9*#])|%~[fdpnxsatz]*(\$&varname;:)?[0-9#]|!%(&varname;(\[(%%)?(&varname;|\d+)\]|%%&varname;)*%|[0-9*#])!|!&varname;(\[(%%)?(&varname;|\d+)\]|%%&varname;)*(:~(%%&varname;|-?[0-9]+)(,(%%&varname;|-?[0-9]+))?|:[^=]+=[^!]*)?!" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Variable">
+        <StringDetect attribute="Variable Expansion" String="%~" context="#pop!VariableModificator"/>
+        <DetectChar attribute="Variable Expansion" char="%" context="#pop!VariableRegular1"/>
+        <DetectChar attribute="Variable Expansion" char="!" context="#pop!VariableRegular2"/>
+      </context>
+      <!-- %~ -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableModificator">
+        <AnyChar attribute="Variable Expansion" String="fdpnxsatz"/>
+        <DetectChar attribute="Variable Expansion" char="$" context="#pop!VariableFind"/>
+        <AnyChar attribute="Variable" String="0123456789#" context="#pop"/>
+      </context>
+      <!-- %~$ -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableFind">
+        <DetectIdentifier attribute="Variable"/>
+        <DetectChar attribute="Variable Expansion" char=":"/>
+        <AnyChar attribute="Variable" String="0123456789#" context="#pop"/>
+        <DetectChar attribute="Variable" char="."/>
+      </context>
+      <!-- % -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableRegular1">
+        <DetectChar attribute="Variable Expansion" char="%" context="#pop"/>
+        <DetectIdentifier attribute="Variable"/>
+        <AnyChar attribute="Variable" String="0123456789*#" context="#pop"/>
+        <StringDetect attribute="Variable Expansion" String=":~" context="#pop!VariableSub"/>
+        <DetectChar attribute="Variable Expansion" char=":" context="#pop!VariableReplace1"/>
+        <IncludeRules context="FindVariableRegularKey"/>
+        <DetectChar attribute="Variable" char="."/>
+      </context>
+      <!-- ! -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableRegular2">
+        <DetectChar attribute="Variable Expansion" char="!" context="#pop"/>
+        <DetectIdentifier attribute="Variable"/>
+        <StringDetect attribute="Variable Expansion" String=":~" context="#pop!VariableSub"/>
+        <DetectChar attribute="Variable Expansion" char=":" context="#pop!VariableReplace2"/>
+        <IncludeRules context="FindVariableRegularKey"/>
+        <IncludeRules context="FindVariableRegularEscaped"/>
+        <DetectChar attribute="Variable Expansion" char="%" context="VariableRegular1"/>
+        <DetectChar attribute="Variable" char="."/>
+      </context>
+      <!-- %% in !var1%%var2! -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindVariableRegularEscaped">
+        <StringDetect attribute="Escape" String="%%" context="VariableRegularEscaped"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableRegularEscaped">
+        <DetectIdentifier attribute="Variable" context="#pop"/>
+      </context>
+      <!-- for [ ... ] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindVariableRegularKey">
+        <DetectChar attribute="Symbol" char="[" context="VariableRegularKey"/>
+      </context>
+      <!-- [ -->
+      <context attribute="String" lineEndContext="#stay" name="VariableRegularKey">
+        <DetectChar attribute="Symbol" char="]" context="#pop"/>
+        <StringDetect attribute="Escape" String="%%" context="VariableRegularKeyVar"/>
+        <IncludeRules context="FindNumber"/>
+        <DetectIdentifier attribute="String"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VariableRegularKeyVar" fallthroughContext="#pop">
+        <DetectIdentifier attribute="Variable" context="#pop"/>
+      </context>
+      <!-- %var:~ and !var:~ -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableSub">
+        <StringDetect attribute="Escape" String="%%"/>
+        <AnyChar attribute="Variable Expansion" String="%!" context="#pop"/>
+        <IncludeRules context="FindNumber"/>
+        <DetectIdentifier attribute="Variable"/>
+        <DetectChar attribute="Number" char="-"/>
+        <DetectChar attribute="Variable Expansion" char=","/>
+        <DetectChar attribute="Variable" char="."/>
+      </context>
+      <!-- %var: -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace1">
+        <RegExpr attribute="String" String="[^=]+" context="#pop!VariableReplace1Sep"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace1Sep">
+        <DetectChar attribute="Variable Expansion" char="=" context="#pop!VariableReplace1P2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace1P2">
+        <DetectChar attribute="Variable Expansion" char="%" context="#pop"/>
+        <RegExpr attribute="String" String="[^%]+"/>
+      </context>
+      <!-- !var: -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace2">
+        <RegExpr attribute="String" String="[^=]+" context="#pop!VariableReplace2Sep"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace2Sep">
+        <DetectChar attribute="Variable Expansion" char="=" context="#pop!VariableReplace2P2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableReplace2P2">
+        <DetectChar attribute="Variable Expansion" char="!" context="#pop"/>
+        <RegExpr attribute="String" String="[^!]+"/>
+      </context>
+
+      <!-- basic sub-contexts -->
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+        <IncludeRules context="FindUnquotedStringEscape"/>
+        <AnyChar attribute="Error" String="&amp;|^&lt;>()"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <DetectSpaces attribute="String"/>
+        <Detect2Chars attribute="Escape" char="\" char1="&quot;"/>
+        <Detect2Chars attribute="Escape" char="\" char1="\"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <DetectIdentifier attribute="String"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Command">
+        <DetectSpaces/>
+        <IncludeRules context="FindUnquotedString"/>
+        <IncludeRules context="FindSpecialCommandOption"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindSpecialCommandOption">
+        <RegExpr attribute="Option" context="#stay" String="[/-][A-Za-z0-9][A-Za-z0-9_]*:?"/>
+        <RegExpr attribute="Path" context="#stay" String="[.]+&eop;|[A-Za-z][A-Za-z.]*:(\\+&pathpart;*)*|&pathpart;*(\\+&pathpart;*)+"/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="Label">
+        <RegExpr attribute="Label" context="Comment" String="&label;"/>
+      </context>
+
+      <context attribute="Path" lineEndContext="#pop" name="Path">
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <AnyChar attribute="Normal Text" context="#pop" String=" &#9;\%/:*?&quot;&gt;&lt;|&amp;" lookAhead="true"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="Error">
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindNumber">
+        <HlCHex attribute="Hex"/>
+        <HlCOct attribute="Octal"/>
+        <Int attribute="Number"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindUnquotedStringEscape">
+        <LineContinue attribute="Escape" char="^"/>
+        <RegExpr attribute="Escape" context="#stay" String="\^."/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindUnquotedString">
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <IncludeRules context="FindUnquotedStringEscape"/>
+        <IncludeRules context="FindRedirections"/>
+        <IncludeRules context="FindBranches"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="UnquotedString">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <IncludeRules context="FindUnquotedString"/>
+      </context>
+
+      <!-- special sub-contexts -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdSet" fallthroughContext="#pop!Error">
+        <IncludeRules context="CmdSetVar"/>
+        <WordDetect attribute="Option" context="#pop!CmdSetVar" String="/p" insensitive="1"/>
+        <WordDetect attribute="Option" context="#pop!CmdSetExpr" String="/a" insensitive="1"/>
+      </context>
+      <context attribute="Error" lineEndContext="#pop" name="CmdSetVar" fallthroughContext="#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="String" context="#pop!CmdSetQuotedVar" char="&quot;"/>
+        <RegExpr attribute="Variable" context="#pop!CmdSetVar=" String="&varname_set;"/>
+        <DetectChar attribute="Symbol" context="#pop!UnquotedString" char="="/>
+      </context>
+      <!-- set var -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdSetVar=">
+        <DetectChar attribute="Symbol" context="#pop!UnquotedString" char="="/>
+        <IncludeRules context="FindCmdSetVarSuffix"/>
+      </context>
+      <context attribute="Error" lineEndContext="#pop" name="FindCmdSetVarSuffix">
+        <DetectChar attribute="Variable Expansion" char="!"/>
+        <DetectIdentifier attribute="Variable"/>
+        <IncludeRules context="FindVariableRegularKey"/>
+      </context>
+      <!-- set " -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdSetQuotedVar" fallthroughContext="#pop!Error">
+        <RegExpr attribute="Variable" context="#pop!CmdSetQuotedVar=" String="&varname_set;"/>
+        <DetectChar attribute="Symbol" context="#pop!String" char="="/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <!-- set "var -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdSetQuotedVar=">
+        <DetectChar attribute="Symbol" context="#pop!String" char="="/>
+        <IncludeRules context="FindCmdSetVarSuffix"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <!-- set /a -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdSetExpr" fallthroughContext="#pop!CmdSetUnquotedExpr">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="String" context="CmdSetQuotedExpr" char="&quot;"/>
+        <DetectIdentifier attribute="Variable" context="CmdSetUnquotedExpr"/>
+        <DetectChar attribute="Keyword" char=","/>
+      </context>
+      <context attribute="Error" lineEndContext="#pop" name="CmdSetQuotedExpr">
+        <IncludeRules context="FindVariables"/>
+        <StringDetect attribute="Operator" String="%%"/>
+        <AnyChar attribute="Operator" String="=*/%+-&amp;^|!~"/>
+        <AnyChar attribute="Symbol" String="()[],"/>
+        <DetectIdentifier attribute="Variable"/>
+        <StringDetect attribute="Operator" String="&lt;&lt;"/>
+        <StringDetect attribute="Operator" String=">>"/>
+        <IncludeRules context="FindNumber"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Error" lineEndContext="#pop" name="CmdSetUnquotedExpr">
+        <AnyChar attribute="Symbol" String="()[]"/>
+        <IncludeRules context="FindUnquotedString"/>
+        <AnyChar attribute="Operator" String="=+-/^*!"/>
+        <DetectChar attribute="Keyword" context="#pop" char=","/>
+        <DetectIdentifier attribute="Variable"/>
+        <IncludeRules context="FindNumber"/>
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <!-- echo -->
+      <context attribute="Echoed Text" lineEndContext="#pop" name="CmdEcho">
+        <RegExpr attribute="Builtin" context="#pop" String="echo\s+o(ff|n)\s*(?=[&amp;|]|$)" insensitive="1"/>
+        <StringDetect attribute="Builtin" context="#pop!CmdEcho2" String="echo" insensitive="1"/>
+      </context>
+      <context attribute="Echoed Text" lineEndContext="#pop" name="CmdEcho2">
+        <DetectSpaces/>
+        <IncludeRules context="FindSubstitutions"/>
+        <IncludeRules context="FindUnquotedStringEscape"/>
+        <IncludeRules context="FindRedirections"/>
+        <IncludeRules context="FindBranches"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- goto -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdGoto">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Label" char=":"/>
+        <RegExpr attribute="Label" context="#pop" String="&label;"/>
+      </context>
+
+      <!-- call -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdCall" fallthroughContext="#pop!Command">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Label" char=":"/>
+        <RegExpr attribute="Label" context="#pop!Command" String="&label;"/>
+      </context>
+
+
+      <!-- if -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIf" fallthroughContext="CmdIfCond">
+        <DetectSpaces/>
+        <StringDetect attribute="Option" String="/i" insensitive="1"/>
+        <WordDetect attribute="Keyword" String="not" insensitive="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCond" fallthroughContext="CmdIfCondCmp">
+        <WordDetect attribute="Option" context="CmdIfCondExist" String="exist" insensitive="1"/>
+        <WordDetect attribute="Option" context="CmdIfCondDefined" String="defined" insensitive="1"/>
+        <WordDetect attribute="Option" context="CmdIfCondNum" String="errorlevel" insensitive="1"/>
+        <WordDetect attribute="Option" context="CmdIfCondNum" String="cmdextversion" insensitive="1"/>
+      </context>
+
+      <!-- if exist -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondExist" fallthroughContext="#pop#pop#pop">
+        <DetectSpaces context="CmdIfCondExistPath"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="CmdIfCondExistPath" fallthroughContext="#pop#pop#pop#pop">
+        <DetectSpaces context="#pop#pop#pop#pop" attribute="Normal Text"/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- if defined -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondDefined" fallthroughContext="#pop#pop#pop">
+        <DetectSpaces/>
+        <DetectIdentifier context="#pop#pop#pop" attribute="Variable"/>
+      </context>
+
+      <!-- if errorlevel | if cmdextversion -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondNum" fallthroughContext="#pop#pop#pop">
+        <DetectSpaces/>
+        <Int context="#pop#pop#pop" attribute="Number"/>
+        <IncludeRules context="FindVariables"/>
+      </context>
+
+      <!-- For
+        if xxx op yyy
+        and
+        if xxx==yyy
+      -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmp">
+        <DetectSpaces context="#pop!CmdIfCondCmpOp"/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <DetectIdentifier/>
+        <StringDetect String="==" attribute="Keyword" context="CmdIfCondCmpOperand2"/>
+      </context>
+      <!-- fallthroughContext for operand as option: if %CasseSensitive% "%a%"=="x" -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmpOp" fallthroughContext="#pop#pop">
+        <keyword context="CmdIfCondCmpOpSpace" String="comparators" attribute="Keyword"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmpOpSpace">
+        <DetectSpaces context="#pop!CmdIfCondCmpOperand2"/>
+        <RegExpr String="[^\s]+" attribute="Error" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdIfCondCmpOperand2">
+        <DetectSpaces context="#pop#pop#pop#pop"/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <DetectIdentifier/>
+      </context>
+
+
+      <!-- 'for' sub-contexts -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdFor">
+        <DetectSpaces attribute="Normal Text"/>
+        <RegExpr attribute="Variable" context="CmdForIn" String="%%[a-z#$@]" insensitive="1"/>
+        <StringDetect attribute="Option" context="#stay" String="/d" insensitive="1"/>
+        <StringDetect attribute="Option" context="CmdForR" String="/r" insensitive="1"/>
+        <StringDetect attribute="Option" context="CmdForR" String="/f" insensitive="1"/>
+        <StringDetect attribute="Option" context="CmdForL" String="/l" insensitive="1"/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="CmdForIn">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Keyword" context="CmdForList" String="in" insensitive="1"/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="CmdForList">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="CmdForListBody" char="("/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBody" fallthroughContext="#pop!CmdForListBodyText">
+        <DetectSpaces/>
+        <AnyChar String="`'" context="#pop!CmdForListBodyStartCmd"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBodyStartCmd" fallthroughContext="#pop!CmdForListBodyText">
+        <DetectSpaces/>
+        <keyword attribute="Builtin" context="#pop!CmdForListBodyCmd" String="builtins"/>
+        <keyword attribute="Command" context="#pop!CmdForListBodyCmd" String="commands"/>
+        <RegExpr attribute="Path" context="#pop!CmdForListBodyCmd" String="[^\s&#37;!;*?&quot;&gt;&lt;|&amp;]+"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBodyCmd">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <StringDetect attribute="Escape" context="#pop!CmdForListBodyStartCmd" String="^|"/>
+        <StringDetect attribute="Escape" context="#pop!CmdForListBodyStartCmd" String="^&amp;"/>
+        <IncludeRules context="FindUnquotedStringEscape"/>
+        <IncludeRules context="FindRedirections"/>
+        <IncludeRules context="FindSpecialCommandOption"/>
+        <DetectChar attribute="Keyword" context="CmdForDo" char=")"/>
+        <AnyChar attribute="Error" String="&amp;|^&lt;>()"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdForListBodyText">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindSubstitutions"/>
+        <DetectChar attribute="Keyword" context="CmdForDo" char=")"/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="CmdForDo">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Keyword" context="#pop#pop#pop#pop#pop" String="do" insensitive="1"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="CmdForR">
+        <DetectSpaces attribute="Normal Text"/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindUnquotedStringEscape"/>
+        <RegExpr attribute="Path" String="([a-z][a-z.]*:)?[.]*\\*[^^\s\\&#37;!;/:*?&quot;&gt;&lt;|&amp;%]*&eop;" insensitive="1"/>
+        <DetectIdentifier attribute="Normal Text"/>
+        <RegExpr attribute="Variable" context="#pop!CmdForIn" String="%%[a-z#$@](?=[$\s])" insensitive="1"/>
+        <IncludeRules context="FindSubstitutions"/>
+      </context>
+
+      <!-- 'for /L' sub-contexts -->
+      <context attribute="Error" lineEndContext="#pop" name="CmdForL">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <RegExpr attribute="Variable" context="CmdForLIn" String="%%[a-z#$@]" insensitive="1"/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="CmdForLIn">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Keyword" context="CmdForLRange" String="in" insensitive="1"/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="CmdForLRange">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="CmdForLStart" char="("/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop" name="CmdForLStart">
+        <DetectSpaces attribute="Normal Text"/>
+        <AnyChar attribute="Keyword" String=";,="/>
+        <DetectChar attribute="Number" char="-"/>
+        <IncludeRules context="FindNumber"/>
+        <IncludeRules context="FindVariables"/>
+        <DetectChar attribute="Keyword" context="#pop!CmdForDo" char=")"/>
+        <DetectIdentifier attribute="String"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="ControlFlow"   defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Number"       defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="Label"        defStyleNum="dsOthers"/>
+      <itemData name="Builtin"      defStyleNum="dsBuiltIn"/>
+      <itemData name="Command"      defStyleNum="dsKeyword"/>
+      <itemData name="Redirection"  defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="Escape"       defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="Echoed Text"  defStyleNum="dsNormal"/>
+      <itemData name="Variable"     defStyleNum="dsVariable"/>
+      <itemData name="Variable Expansion"     defStyleNum="dsPreprocessor" spellChecking="false"/>
+      <itemData name="Path"         defStyleNum="dsNormal"/>
+      <itemData name="Option"       defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Error"        defStyleNum="dsError" spellChecking="false"/>
+			<itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Symbol"       defStyleNum="dsNormal" spellChecking="false"/>
+			<itemData name="Operator"     defStyleNum="dsOperator" spellChecking="false"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="rem "/>
+    </comments>
+    <keywords casesensitive="0" additionalDeliminator="@"/>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/dot.xml b/xml/dot.xml
--- a/xml/dot.xml
+++ b/xml/dot.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- Adapted from the VIM highlighter, by Markus Mottl (markus@oefai.at) -->
-<language name="dot" version="5" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">
+<language name="dot" alternativeNames="Graphviz" version="6" kateversion="5.0" section="Scientific" extensions="*.dot" mimetype="text/x-dot" author="Postula Loïs (lois.postula@live.be)" priority="0">
 
   <highlighting>
 
@@ -74,10 +74,6 @@
       <item>label</item>
       <item>URL</item>
       <!-- Shared attributes (nodes and edges) -->
-      <item>fontcolor</item>
-      <item>fontname</item>
-      <item>fontsize</item>
-      <item>layer</item>
       <item>style</item>
     </list>
 
diff --git a/xml/doxygen.xml b/xml/doxygen.xml
--- a/xml/doxygen.xml
+++ b/xml/doxygen.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY wordsep "(?:[][,?;()]|\.$|\.?\s|$)">   <!-- things that end a TagWord -->
     <!ENTITY sl_word ".*?(?=&wordsep;)">
     <!ENTITY ml_word ".*?(?=&wordsep;|\*/)">
 ]>
 <language name="Doxygen"
-          version="14"
+          version="15"
           kateversion="5.0"
           section="Markup"
           extensions="*.dox;*.doxygen"
@@ -586,7 +586,7 @@
         <Detect2Chars attribute="Tags" context="#pop!LanguageId" char="@" char1="~" />
         <keyword attribute="Error" context="#pop" String="TagEnd" />
         <RegExpr attribute="Error" context="#pop" String="[@\\]f[]}]" />
-        <RegExpr attribute="Tags" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.]|::|---?)(?=&wordsep;)" />
+        <RegExpr attribute="Escape sequence" context="#pop" String="[@\\](?:[#$%&amp;&lt;&gt;&quot;@\\.~=|]|::|---?)" />
         <RegExpr attribute="Custom Tags" context="#pop" String="[@\\](?:[^@\\ \t\*]|\*(?!/))+" />
         <AnyChar attribute="Comment" context="#pop" String="\@" />
       </context>
@@ -598,6 +598,7 @@
   </contexts>
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal" />
+      <itemData name="Escape sequence" defStyleNum="dsSpecialChar" />
       <itemData name="Tags"         defStyleNum="dsAnnotation" bold="1" />
       <itemData name="Custom Tags"  defStyleNum="dsAnnotation" />
       <itemData name="Word"         defStyleNum="dsCommentVar" bold="1" italic="0" />
diff --git a/xml/dtd.xml b/xml/dtd.xml
--- a/xml/dtd.xml
+++ b/xml/dtd.xml
@@ -1,11 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"[
-  <!ENTITY nmtoken "[\-\w\d\.:_]+">
-  <!ENTITY entref  "(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);">
+<!DOCTYPE language[
+  <!ENTITY nmtoken "[-\w.:]+">
+  <!ENTITY entity  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&nmtoken;);">
 ]>
-<language name="DTD" version="4" kateversion="5.0" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">
+<language name="DTD" version="5" kateversion="5.62" section="Markup" extensions="*.dtd" mimetype="application/xml-dtd" author="Andriy Lesyuk (s-andy@in.if.ua)" license="LGPL">
   <highlighting>
 
+    <!--
+      https://www.w3.org/TR/REC-xml/#ext-Subset
+    -->
+
     <list name="Category">
       <item>EMPTY</item>
       <item>ANY</item>
@@ -39,41 +43,82 @@
         <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ATTLIST" beginRegion="declaration" />
         <StringDetect attribute="Declaration" context="Declaration" String="&lt;!NOTATION" beginRegion="declaration" />
         <StringDetect attribute="Declaration" context="Declaration" String="&lt;!ENTITY" beginRegion="declaration" />
+        <RegExpr attribute="Entity" context="#stay" String="%&nmtoken;;" />
+        <StringDetect attribute="Conditional Section" context="conditionalSect" String="&lt;![" beginRegion="section"/>
         <DetectIdentifier />
       </context>
 
       <context name="Comment" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
-        <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+        <StringDetect context="EndComment" String="--" lookAhead="1"/>
         <IncludeRules context="##Comments" />
         <DetectIdentifier />
       </context>
+      <context name="EndComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect attribute="Comment" context="#pop#pop" String="-->" endRegion="comment" />
+        <DetectChar attribute="Error" char="-" />
+      </context>
 
       <context name="PI" attribute="Other" lineEndContext="#stay">
         <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
       </context>
 
-      <context name="Declaration" attribute="Other" lineEndContext="#stay">
+      <context name="Declaration" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
         <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
-        <Detect2Chars attribute="Comment" context="InlineComment" char="-" char1="-" />
         <DetectChar attribute="Declaration" context="#pop" char="&gt;" endRegion="declaration" />
-        <DetectChar attribute="String" context="String" char="&quot;" />
-        <RegExpr attribute="Declaration" context="#stay" String="(-|O)\s(-|O)" />
+        <DetectChar attribute="String" context="StringDQ" char="&quot;" />
+        <DetectChar attribute="String" context="StringSQ" char="'" />
+        <Detect2Chars attribute="Comment" context="InlineComment" char="-" char1="-" />
+        <RegExpr attribute="Declaration" context="#stay" String="[-O]\s[-O]" />
         <AnyChar attribute="Delimiter" context="#stay" String="(|)," />
-        <RegExpr attribute="Entity" context="#stay" String="(%|&amp;)&entref;" />
         <AnyChar attribute="Symbol" context="#stay" String="?*+-&amp;" />
-        <RegExpr attribute="Local" context="#stay" String="%\s" />
+        <IncludeRules context="FindReference"/>
+        <StringDetect attribute="Local" context="#stay" String="% " />
+        <StringDetect attribute="Local" context="#stay" String="%&#9;" />
         <keyword attribute="Keyword" context="#stay" String="Category" />
         <keyword attribute="Keyword" context="#stay" String="Keywords" />
         <RegExpr attribute="Name" context="#stay" String="\b&nmtoken;\b" />
       </context>
 
-      <context name="String" attribute="String" lineEndContext="#stay">
-        <DetectSpaces />
+      <context name="StringDQ" attribute="String" lineEndContext="#stay">
         <DetectChar attribute="String" context="#pop" char="&quot;" />
-        <RegExpr attribute="Entity" context="#stay" String="%&nmtoken;;" />
+        <IncludeRules context="InString"/>
       </context>
 
+      <context name="StringSQ" attribute="String" lineEndContext="#stay">
+        <DetectChar attribute="String" context="#pop" char="'" />
+        <IncludeRules context="InString"/>
+      </context>
+
+      <context name="InString" attribute="String" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <IncludeRules context="FindReference"/>
+      </context>
+
+      <context name="FindReference" attribute="String" lineEndContext="#stay">
+        <RegExpr attribute="Entity" context="#stay" String="&entity;|%&nmtoken;;" />
+      </context>
+
+      <context name="conditionalSect" attribute="Conditional Section" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <WordDetect attribute="Conditional Section" context="conditionalContraint" String="INCLUDE" />
+        <WordDetect attribute="Conditional Section" context="conditionalContraint" String="IGNORE" />
+        <RegExpr attribute="Entity" context="conditionalContraint" String="%&nmtoken;;" />
+      </context>
+
+      <context name="conditionalContraint" attribute="Conditional Section" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Conditional Section" context="section" char="["/>
+      </context>
+
+      <context name="section" attribute="Normal">
+        <StringDetect attribute="Conditional Section" context="#pop#pop#pop" String="]]>" endRegion="section"/>
+        <IncludeRules context="Normal"/>
+      </context>
+
+      <!-- SGML -->
       <context name="InlineComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="-" char1="-" />
@@ -96,6 +141,8 @@
       <itemData name="String" defStyleNum="dsString" spellChecking="false" />
       <itemData name="Entity" defStyleNum="dsDecVal" spellChecking="false" />
       <itemData name="Local" defStyleNum="dsDecVal" bold="1" spellChecking="false" />
+      <itemData name="Conditional Section" defStyleNum="dsControlFlow" spellChecking="false" />
+      <itemData name="Error" defStyleNum="dsError" spellChecking="false" />
     </itemDatas>
   </highlighting>
 
diff --git a/xml/eiffel.xml b/xml/eiffel.xml
--- a/xml/eiffel.xml
+++ b/xml/eiffel.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
 Eiffel syntax highlighting for Kate and Kwrite editors
 
@@ -10,7 +10,7 @@
 
 Author of version 1.02: Sebastian Vuorinen
 -->
-<language name="Eiffel" version="4" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
+<language name="Eiffel" version="5" kateversion="5.0" section="Sources" extensions="*.e" mimetype="text/x-eiffel-src" author="Sebastian Vuorinen" license="">
 	<highlighting>
 		<list name="keywords">
 			<item>agent</item>
@@ -81,12 +81,14 @@
 
 		<contexts>
 			<context name = "Normal" attribute = "Normal Text" lineEndContext="#stay">
+				<DetectSpaces attribute = "Normal Text" />
 				<keyword attribute = "Keyword" String = "keywords" context="#stay" />
 				<keyword attribute = "Predefined entities" String = "predefined-entities" context="#stay" />
 				<keyword attribute = "Assertions" String = "assertions" context="#stay" />
+				<DetectIdentifier attribute = "Normal Text" />
 
-				<Int attribute = "Decimal" context="#stay" />
 				<Float attribute = "Float" context="#stay" />
+				<Int attribute = "Decimal" context="#stay" />
 				<HlCChar attribute = "Char" context="#stay" />
 				<DetectChar attribute = "String" char = "&quot;" context="Quoted String" />
 
@@ -100,6 +102,7 @@
 			<context name = "Documentation" attribute="Comment" lineEndContext="#pop">
 				<DetectSpaces />
 				<IncludeRules context="##Comments" />
+				<DetectIdentifier />
 			</context>
 		</contexts>
 
diff --git a/xml/elixir-eex.xml b/xml/elixir-eex.xml
new file mode 100644
--- /dev/null
+++ b/xml/elixir-eex.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY identifier "[a-z][a-zA-Z0-9_]*[!?]?">
+]>
+<language author="Jade Pfeiffer (jade@pfeiffer.codes)"
+          extensions="*.eex"
+          indenter="none"
+          kateversion="5.79"
+          license="MIT"
+          mimetype="text/x-elixir+eex"
+          name="Elixir/EEx"
+          section="Scripts"
+          style="eex"
+          version="1">
+  <highlighting>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Text">
+        <!-- Search document using only 2 characters before matching -->
+        <Detect2Chars char="&lt;" char1="%" context="Tag" lookAhead="true"/>
+      </context>
+      <context attribute="Normal Text" name="Tag">
+        <!-- Comments: they are discarded from source -->
+        <StringDetect String="&lt;%!--" attribute="Comment" context="#pop!Comment" beginRegion="comment" />
+        <!-- EEx Quotation: returns the contents inside the tag as is -->
+        <StringDetect String="&lt;%%" attribute="Quotation" context="#pop!Quotation" />
+        <!-- Elixir expression: executes code and prints result -->
+        <StringDetect String="&lt;%=" attribute="Tag" context="#pop!Expression" />
+        <!-- Additional tags that are supported but don't have special meaning by default -->
+        <StringDetect String="&lt;%|" attribute="Tag" context="#pop!Expression" />
+        <StringDetect String="&lt;%/" attribute="Tag" context="#pop!Expression" />
+        <!-- Elixir Expression: executes code but discards output -->
+        <Detect2Chars char="&lt;" char1="%" attribute="Tag" context="#pop!Expression" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Expression">
+        <Detect2Chars char="%" char1="&gt;" attribute="Tag" context="#pop"/>
+        <RegExpr String="@&identifier;" attribute="Assigns" context="#stay" />
+        <IncludeRules context="Normal##Elixir" />
+      </context>
+      <context attribute="Quotation" lineEndContext="#stay" name="Quotation">
+        <Detect2Chars char="%" char1="&gt;" attribute="Quotation" context="#pop"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Comment">
+        <StringDetect String="--%&gt;" attribute="Comment" context="#pop" endRegion="comment" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData defStyleNum="dsNormal"         name="Normal Text" spellChecking="false"/>
+      <itemData defStyleNum="dsBuiltIn"        name="Tag"/>
+      <itemData defStyleNum="dsVerbatimString" name="Quotation"/>
+      <itemData defStyleNum="dsComment"        name="Comment"/>
+      <itemData defStyleNum="dsFunction"       name="Assigns"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="multiLine" start="&lt;%!--" end="--%&gt;" region="comment" />
+    </comments>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/elixir-heex.xml b/xml/elixir-heex.xml
new file mode 100644
--- /dev/null
+++ b/xml/elixir-heex.xml
@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY identifier "[a-z][a-zA-Z0-9_]*[!?]?">
+  <!ENTITY module "[A-Z][a-zA-Z0-9_]*">
+  <!ENTITY attributename "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">
+  <!ENTITY htmltag "[A-Za-z_:][\w.:_-]*">
+]>
+<language author="Jade Pfeiffer (jade@pfeiffer.codes)"
+          extensions="*.html.heex;*.heex"
+          indenter="xml"
+          kateversion="5.79"
+          license="MIT"
+          mimetype="text/x-elixir+heex"
+          name="Elixir/HEEx"
+          section="Scripts"
+          style="heex"
+          version="1">
+  <highlighting>
+    <list name="comprehensions">
+      <item>let</item>
+      <item>for</item>
+      <item>if</item>
+    </list>
+    <list name="phx-variables">
+      <item>assigns</item>
+    </list>
+    <list name="phx-bindings">
+      <item>phx-click</item>
+      <item>phx-click-away</item>
+      <item>phx-change</item>
+      <item>phx-submit</item>
+      <item>phx-disable-with</item>
+      <item>phx-trigger-action</item>
+      <item>phx-auto-recover</item>
+      <item>phx-blur</item>
+      <item>phx-focus</item>
+      <item>phx-window-blur</item>
+      <item>phx-window-focus</item>
+      <item>phx-keydown</item>
+      <item>phx-keyup</item>
+      <item>phx-window-keydown</item>
+      <item>phx-window-keyup</item>
+      <item>phx-key</item>
+      <item>phx-viewport-top</item>
+      <item>phx-viewport-bottom</item>
+      <item>phx-update</item>
+      <item>phx-mounted</item>
+      <item>phx-remove</item>
+      <item>phx-hook</item>
+      <item>phx-connected</item>
+      <item>phx-disconnected</item>
+      <item>phx-debounce</item>
+      <item>phx-throttle</item>
+      <item>phx-track-static</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Text">
+        <DetectChar char="&lt;" context="Tags" lookAhead="true"/>
+        <IncludeRules context="Interpolated" />
+        <DetectSpaces />
+      </context>
+
+      <context attribute="Normal Text" name="Tags">
+        <!-- Hook into existing HTML definitions here so there is still control over attributes -->
+        <Detect2Chars char="&lt;" char1="!" context="#pop!HTML Special" lookAhead="true" />
+        <Detect2Chars char="&lt;" char1="/" attribute="Symbol" context="#pop!End Tags" />
+        <!-- HEEx is still an EEx template, those rules can be inherited -->
+        <IncludeRules context="Tag##Elixir/EEx" />
+        <!-- Now Match -->
+        <Detect2Chars char="&lt;" char1="." attribute="Symbol" context="#pop!Tag Name Component" />
+        <Detect2Chars char="&lt;" char1=":" attribute="Symbol" context="#pop!Tag Name Slot" />
+        <DetectChar char="&lt;" context="#pop!Tag Name" attribute="Symbol" />
+      </context>
+      <context attribute="Symbol" fallthroughContext="#pop!Tag Name End" name="End Tags">
+        <DetectChar char="." attribute="Symbol" context="#pop!Tag Name End Component" />
+        <DetectChar char=":" attribute="Symbol" context="#pop!Tag Name End Slot" />
+      </context>
+
+      <!-- Tag Name handling -->
+      <context attribute="Element" name="Tag Name">
+        <RegExpr String="&module;" attribute="Module" context="#pop!Tag Name Module"/>
+        <WordDetect String="script" attribute="Element" context="#pop!Script Tag" />
+        <WordDetect String="style" attribute="Element" context="#pop!Style Tag" />
+        <RegExpr String="&htmltag;" attribute="Element" context="#pop!Tag Body" />
+      </context>
+      <context attribute="Element" name="Tag Name End">
+        <RegExpr String="&module;" attribute="Module" context="#pop!Tag Name End Module"/>
+        <RegExpr String="&htmltag;" attribute="Element" context="#pop!Tag End" />
+      </context>
+
+      <!-- Tag Module Name -->
+      <context attribute="Normal Text" name="Tag Module">
+        <DetectChar char="." context="#stay" />
+        <RegExpr String="&module;" attribute="Module" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" fallthroughContext="#pop!Tag Body" name="Tag Name Module">
+        <IncludeRules context="Tag Module" />
+        <IncludeRules context="Tag Name Component" />
+      </context>
+      <context attribute="Normal Text" fallthroughContext="#pop!Tag End" name="Tag Name End Module">
+        <IncludeRules context="Tag Module" />
+        <IncludeRules context="Tag Name End Component" />
+      </context>
+
+      <!-- Tag Component -->
+      <context attribute="Normal Text" fallthroughContext="#pop!Tag Body" name="Tag Name Component">
+        <RegExpr String="&identifier;" attribute="Function" context="#pop!Tag Body" />
+      </context>
+      <context attribute="Normal Text" fallthroughContext="#pop!Tag End" name="Tag Name End Component">
+        <RegExpr String="&identifier;" attribute="Function" context="#pop!Tag End" />
+      </context>
+      <!-- Tag Component Slot -->
+      <context attribute="Normal Text" fallthroughContext="#pop!Tag Body" name="Tag Name Slot">
+        <RegExpr String="&identifier;" attribute="Symbol" context="#pop!Tag Body" />
+      </context>
+      <context attribute="Normal Text" fallthroughContext="#pop!Tag End" name="Tag Name End Slot">
+        <RegExpr String="&identifier;" attribute="Symbol" context="#pop!Tag End" />
+      </context>
+
+      <!-- Tag Body -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Tag Body">
+        <IncludeRules context="Tag End" />
+        <IncludeRules context="Attributes" />
+        <IncludeRules context="Interpolated" />
+        <DetectSpaces />
+      </context>
+
+      <!-- End Tag, include-only -->
+      <context attribute="Normal Text" name="Tag End">
+        <Detect2Chars char="/" char1="&gt;" attribute="Symbol" context="#pop"/>
+        <DetectChar char="&gt;" attribute="Symbol" context="#pop" />
+      </context>
+
+      <!-- <script> Tags -->
+      <context attribute="Normal Text" name="Script Tag">
+        <Detect2Chars char="/" char1="&gt;" attribute="Symbol" context="#pop"/>
+        <DetectChar char="&gt;" attribute="Symbol" context="#pop!Script" />
+        <IncludeRules context="Attributes" />
+        <IncludeRules context="Interpolated" />
+        <DetectSpaces />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Script">
+        <StringDetect String="&lt;/script>" context="#pop!Script Tag End" lookAhead="true" />
+        <IncludeRules context="Text##Elixir/EEx" />
+        <DetectChar attribute="String" context="Script String" char="&quot;" />
+        <IncludeRules context="Normal##JavaScript" />
+      </context>
+      <context attribute="Normal Text" name="Script Tag End">
+        <Detect2Chars char="&lt;" char1="/" attribute="Symbol" context="#stay" />
+        <StringDetect String="script" attribute="Element" context="#stay" />
+        <DetectChar char="&gt;" attribute="Symbol" context="#pop" />
+      </context>
+      <context attribute="Normal Text" name="Script String">
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+        <IncludeRules context="Text##Elixir/EEx" />
+        <IncludeRules context="String##JavaScript" />
+      </context>
+
+      <!-- <style> Tags -->
+      <context attribute="Normal Text" name="Style Tag">
+        <Detect2Chars char="/" char1="&gt;" attribute="Symbol" context="#pop"/>
+        <DetectChar char="&gt;" attribute="Symbol" context="#pop!Style" />
+        <IncludeRules context="Attributes" />
+        <IncludeRules context="Interpolated" />
+        <DetectSpaces />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Style">
+        <StringDetect String="&lt;/style>" context="#pop!Style Tag End" lookAhead="true" />
+        <IncludeRules context="Text##Elixir/EEx" />
+        <IncludeRules context="Base##CSS" />
+      </context>
+      <context attribute="Normal Text" name="Style Tag End">
+        <Detect2Chars char="&lt;" char1="/" attribute="Symbol" context="#stay" />
+        <StringDetect String="style" attribute="Element" context="#stay" />
+        <DetectChar char="&gt;" attribute="Symbol" context="#pop" />
+      </context>
+
+      <!-- Tag Attributes -->
+      <context attribute="Attribute" name="Attributes">
+        <DetectChar char=":" attribute="Control Flow" context="Attribute BuiltIn" />
+        <StringDetect String="phx-" context="Phoenix Binding" lookAhead="true" />
+        <RegExpr String="&attributename;" attribute="Attribute" context="Attribute Equals" />
+      </context>
+      <context attribute="Control Flow" name="Attribute BuiltIn" fallthroughContext="#pop!Attribute Equals">
+        <keyword String="comprehensions" attribute="Control Flow" context="#pop!Attribute Equals" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop"  name="Attribute Equals">
+        <DetectChar char="=" attribute="Operator" context="#pop!Attribute Value" />
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Attribute Value">
+        <DetectChar char="&quot;" context="#pop!Attribute Value Quote" />
+        <DetectChar char="{" attribute="String" context="#pop!Interpolate" beginRegion="interpolate"/>
+        <DetectSpaces />
+      </context>
+      <context attribute="String" name="Attribute Value Quote">
+        <DetectChar char="&quot;" attribute="String" context="#pop" />
+        <IncludeRules context="FindEntityRefs##HTML" />
+      </context>
+      <context attribute="Symbol" name="Phoenix Binding">
+        <keyword String="phx-bindings" attribute="Symbol" context="#pop!Attribute Equals" />
+        <RegExpr String="phx-value-&attributename;" attribute="Symbol" context="#pop!Attribute Equals" />
+        <RegExpr String="phx-(&attributename;)?" attribute="Normal Text" context="#pop!Attribute Equals" />
+      </context>
+
+      <context attribute="Normal Text" name="HTML Special">
+        <IncludeRules context="FindHTML##HTML" />
+      </context>
+
+      <context attribute="Normal Text" name="Interpolated">
+        <DetectChar char="{" attribute="String" context="Interpolate" beginRegion="interpolate"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Interpolate">
+        <!-- Add Phoenix-specific terms for the template -->
+        <RegExpr String="@&identifier;" attribute="Assigns" context="#stay" />
+        <keyword String="phx-variables" attribute="Assigns" context="#stay"/>
+
+        <DetectChar char="{" beginRegion="map_or_struct_or_tuple" attribute="Braces" context="Interpolate Scope"/>
+        <DetectChar char="}" attribute="String" context="#pop" endRegion="interpolate" />
+        <IncludeRules context="Normal##Elixir" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Interpolate Scope">
+        <DetectChar char="}" attribute="String" context="#pop" endRegion="map_or_struct_or_tuple" />
+        <IncludeRules context="Interpolate" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData defStyleNum="dsNormal"    name="Normal Text" spellChecking="false"/>
+      <itemData defStyleNum="dsNormal"    name="Braces"/>
+      <itemData defStyleNum="dsBuiltIn"   name="Symbol"/>
+      <itemData defStyleNum="dsKeyword"   name="Element"/>
+      <itemData defStyleNum="dsOperator"  name="Operator"/>
+      <itemData defStyleNum="dsExtension" name="Control Flow"/>
+      <itemData defStyleNum="dsString"    name="String"/>
+      <itemData defStyleNum="dsNormal"    name="Module"/>
+      <itemData defStyleNum="dsFunction"  name="Function"/>
+      <itemData defStyleNum="dsOthers"    name="Assigns"/>
+      <itemData defStyleNum="dsNormal"    name="Attribute"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <!-- Same comments from Elixir/EEx -->
+      <comment name="multiLine" start="&lt;%!--" end="--%&gt;" region="comment" />
+    </comments>
+    <keywords weakDeliminator=":-" />
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/elixir.xml b/xml/elixir.xml
--- a/xml/elixir.xml
+++ b/xml/elixir.xml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language
-  SYSTEM 'language.dtd' [
-
-  <!ENTITY symbols "(?:@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?">
+<!DOCTYPE language [
+  <!ENTITY identifier "[a-z][a-zA-Z0-9_]*">
+  <!ENTITY module "[A-Z][a-zA-Z0-9_]*">
 ]>
 <!--
   Elixir syntax highlighting definition for Kate.
 
   Copyright (C) 2014  by Rubén Caro (ruben.caro.estevez@gmail.com)
   Copyright (C) 2016  by Boris Egorov (egorov@linux.com)
+  Copyright (C) 2025  by Jade Pfeiffer (jade@pfeiffer.codes)
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
@@ -24,8 +24,8 @@
   Boston, MA  02110-1301, USA.
 -->
 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
-<language author="Rubén Caro (ruben.caro.estevez@gmail.com), Boris Egorov (egorov@linux.com)"
-          extensions="*.ex;*.exs;*.eex;*.xml.eex;*.js.eex"
+<language author="Rubén Caro (ruben.caro.estevez@gmail.com), Boris Egorov (egorov@linux.com), Jade Pfeiffer (jade@pfeiffer.codes)"
+          extensions="*.ex;*.exs"
           indenter="elixir"
           kateversion="5.79"
           license="LGPLv2+"
@@ -33,7 +33,8 @@
           name="Elixir"
           section="Sources"
           style="elixir"
-          version="11">
+          version="16"
+          priority="2">
   <highlighting>
     <list name="control-flow">
       <item>catch</item>
@@ -41,54 +42,50 @@
       <item>else</item>
       <item>if</item>
       <item>raise</item>
+      <item>reraise</item>
       <item>rescue</item>
       <item>throw</item>
       <item>try</item>
       <item>unless</item>
     </list>
     <list name="keywords">
-      <item>do</item>
-      <item>end</item>
       <item>case</item>
-      <item>bc</item>
-      <item>lc</item>
+      <item>with</item>
       <item>for</item>
       <item>receive</item>
-      <item>exit</item>
       <item>after</item>
       <item>quote</item>
       <item>unquote</item>
+      <item>unquote_splicing</item>
       <item>super</item>
       <item>and</item>
       <item>not</item>
       <item>or</item>
       <item>when</item>
-      <item>xor</item>
       <item>in</item>
-      <item>inlist</item>
-      <item>inbits</item>
     </list>
-    <list name="pseudo-variables">
+    <list name="atoms">
       <item>nil</item>
       <item>true</item>
       <item>false</item>
     </list>
     <list name="definitions">
-      <item>fn</item>
       <item>defmodule</item>
-      <item>def</item>
-      <item>defp</item>
       <item>defprotocol</item>
       <item>defimpl</item>
       <item>defrecord</item>
       <item>defstruct</item>
+      <item>defexception</item>
+      <item>defoverridable</item>
+    </list>
+    <list name="def-functions">
+      <item>def</item>
+      <item>defp</item>
       <item>defmacro</item>
       <item>defmacrop</item>
+      <item>defguard</item>
+      <item>defguardp</item>
       <item>defdelegate</item>
-      <item>defcallback</item>
-      <item>defmacrocallback</item>
-      <item>defexception</item>
-      <item>defoverridable</item>
     </list>
     <list name="mixin-macros">
       <item>import</item>
@@ -96,130 +93,435 @@
       <item>alias</item>
       <item>use</item>
     </list>
+    <list name="special-forms">
+      <item>__MODULE__</item>
+      <item>__ENV__</item>
+      <item>__DIR__</item>
+      <item>__STACKTRACE__</item>
+      <item>__CALLER__</item>
+    </list>
+    <list name="module-attributes">
+      <item>after_compile</item>
+      <item>after_verify</item>
+      <item>before_compile</item>
+      <item>behaviour</item>
+      <item>callback</item>
+      <item>compile</item>
+      <item>deprecated</item>
+      <item>dialyzer</item>
+      <item>external_resource</item>
+      <item>file</item>
+      <item>impl</item>
+      <item>nifs</item>
+      <item>on_definition</item>
+      <item>on_load</item>
+      <item>vsn</item>
+    </list>
+    <list name="struct-attributes">
+      <item>derive</item>
+      <item>enforce_keys</item>
+    </list>
+    <list name="typespec-attributes">
+      <item>type</item>
+      <item>typep</item>
+      <item>opaque</item>
+      <item>spec</item>
+      <item>callback</item>
+      <item>macrocallback</item>
+      <item>optional_callbacks</item>
+    </list>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <!-- "shebang" line -->
-        <RegExpr String="^#!\/.*" attribute="Keyword" column="0" context="#stay"/>
+        <!-- Lists -->
+        <DetectChar char="[" beginRegion="list" attribute="Braces"/>
+        <DetectChar char="]" endRegion="list" attribute="Braces"/>
 
+        <!-- Maps, Structs and Tuples -->
+        <DetectChar char="%" attribute="Braces" context="Map Or Struct"/>
+        <DetectChar char="{" beginRegion="map_or_struct_or_tuple" attribute="Braces"/>
+        <DetectChar char="}" endRegion="map_or_struct_or_tuple" attribute="Braces"/>
+
+        <!-- Function calls and definitions -->
+        <DetectChar char="(" beginRegion="parameters" attribute="Braces"/>
+        <DetectChar char=")" endRegion="parameters" attribute="Braces"/>
+
         <!-- Defined words -->
         <keyword String="keywords" attribute="Keyword" context="#stay"/>
         <keyword String="control-flow" attribute="Control Flow" context="#stay"/>
         <keyword String="definitions" attribute="Definition" context="#stay"/>
-        <keyword String="pseudo-variables" attribute="Pseudo variable" context="#stay"/>
+        <keyword String="def-functions" attribute="Definition" context="Function Definition"/>
+        <keyword String="atoms" attribute="Atom" context="#stay"/>
         <keyword String="mixin-macros" attribute="Mixin macros" context="#stay"/>
+        <keyword String="special-forms" attribute="Built In" context="#stay"/>
 
-        <!-- special-character globals -->
-        <RegExpr String="\b[_A-Z]+[A-Z_0-9]+\b" attribute="Global Constant" context="#stay"/>
+        <!-- Numeric values. -->
+        <DetectChar char="0" context="Numeric" lookAhead="true"/>
+        <AnyChar String="123456789" context="Int" lookAhead="true"/>
 
+        <DetectChar char="," attribute="Normal Text" context="#stay"/>
+        <DetectChar char="?" context="CharacterLiteral" lookAhead="true"/>
+        <IncludeRules context="Sigils"/>
+        <Detect2Chars char=":" char1=":" attribute="Operator" context="#stay"/>
+        <DetectChar char=":" attribute="Atom" context="AtomValue"/>
+
+        <AnyChar String=".=+-*/\!^:|&amp;&lt;&gt;" context="Operators" lookAhead="true"/>
+        <StringDetect String="&quot;&quot;&quot;" attribute="String" context="Heredoc"/>
+        <DetectChar char="&quot;" attribute="String" context="Bitstring" lookAhead="true"/>
+        <DetectChar char="'" attribute="Charlist" context="Charlist"/>
+        <DetectChar char="#" attribute="Comment" context="Line Comment"/>
+        <DetectChar char="@" context="Module Attribute" lookAhead="true"/>
+
+        <!-- Identifiers -->
+        <DetectChar char="_" context="Underscore" lookAhead="true"/>
         <!-- Generally a module or class name like "File", "MyModule_1", .. -->
-        <RegExpr String="\b[A-Z]+_*(?:[0-9]|[a-z])[_a-zA-Z0-9]*\b" attribute="Constant" context="#stay"/>
+        <RegExpr String="&module;" attribute="Module" context="#stay"/>
+        <RegExpr String="(&identifier;[?!]?)" context="Identifier" lookAhead="true"/>
+        <DetectSpaces/>
+      </context>
 
-        <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->
-        <RegExpr String="\b\-?0[xX](?:[0-9a-fA-F]|_[0-9a-fA-F])+" attribute="Hex" context="#stay"/>
-        <RegExpr String="\b\-?0[bB](?:[01]|_[01])+" attribute="Bin" context="#stay"/>
-        <RegExpr String="\b\-?0[1-7](?:[0-7]|_[0-7])*" attribute="Octal" context="#stay"/>
-        <RegExpr String="\b\-?[0-9](?:[0-9]|_[0-9])*\.[0-9](?:[0-9]|_[0-9])*(?:[eE]\-?[1-9](?:[0-9]|_[0-9])*(?:\.[0-9]*)?)?" attribute="Float" context="#stay"/>
-        <RegExpr String="\b\-?[1-9](?:[0-9]|_[0-9])*\b" attribute="Dec" context="#stay"/>
-        <Int attribute="Dec" context="#stay"/>
-        <HlCChar attribute="Char" context="#stay"/>
-        <DetectChar attribute="Operator" char="." context="#stay"/>
-        <Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
-        <Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
-        <!-- \s!|/=\s is regexp hack -->
-        <RegExpr String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=/]+|\s!|/=\s" attribute="Operator" context="#stay"/>
-        <Detect2Chars char="%" char1="=" attribute="Operator" context="#stay"/>
-        <RegExpr String=":&symbols;|\b&symbols;:|:\[\]=?" attribute="Symbol" context="#stay"/>
-        <RegExpr String="@(?:module)?doc\s+&quot;&quot;&quot;" attribute="Attribute" context="Documentation"/>
-        <StringDetect String="&quot;&quot;&quot;" attribute="String" context="Triple Quoted String"/>
-        <DetectChar attribute="String" char="&quot;" context="Quoted String"/>
-        <DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
-        <Detect2Chars char="?" char1="#" attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Comment" char="#" context="General Comment"/>
-        <AnyChar attribute="Delimiter" String="[]" context="#stay"/>
-        <RegExpr String="@[a-zA-Z_0-9]+" attribute="Attribute" context="#stay"/>
-        <!-- handle the different regular expression formats -->
-        <DetectChar attribute="Normal Text" char=")" context="#stay"/>
-        <DetectIdentifier attribute="Normal Text" context="#stay"/>
+      <context attribute="Normal Text" fallthroughContext="#pop" name="Map Or Struct">
+        <DetectChar char="{" context="#pop" lookAhead="true"/>
+        <keyword String="special-forms" attribute="Built In" context="#stay"/>
+        <RegExpr String="_*&module;" attribute="Module" context="#stay"/>
       </context>
-      <context attribute="DocComment" lineEndContext="#stay" name="Documentation">
-        <StringDetect String="&quot;&quot;&quot;" attribute="Attribute" context="#pop"/>
-        <RegExpr attribute="MarkdownHead" String="^\s*#+\s.*[#]?$" column="0"/>
-        <RegExpr attribute="MarkdownBullet" String="^\s*[\*\+\-]\s" column="0"/>
-        <RegExpr attribute="MarkdownNumlist" String="^\s*[\d]+\.\s" column="0"/>
-        <RegExpr attribute="MarkdownCode" context="Markdown Code" String="^\s*\`\`\`\s*$" column="0"/>
-        <DetectSpaces />
-        <IncludeRules context="Normal Text##Markdown"/>
+
+      <!-- Operators -->
+      <context attribute="Operator" fallthroughContext="#pop" name="Operators">
+        <Detect2Chars char="=" char1=">" attribute="Operator" context="#pop"/>
+        <Detect2Chars char=":" char1=":" attribute="Operator" context="#pop"/>
+        <AnyChar String="&lt;&gt;" context="Arrows" lookAhead="true"/>
+        <StringDetect String="..." attribute="Operator" context="#pop"/>
+        <Detect2Chars char="." char1="." attribute="Operator" context="#pop"/>
+        <DetectChar char="." attribute="Normal Text" context="#pop"/>
+        <AnyChar String="=+-*/\!^:|&amp;~" context="Atomable Operators" lookAhead="true"/>
       </context>
-      <context attribute="String" lineEndContext="#stay" name="Triple Quoted String">
+      <context attribute="Error" fallthroughContext="#pop" name="Atomable Operators">
+        <Detect2Chars char="*" char1="*" context="#pop"/>
+        <Detect2Chars char="=" char1="~" context="#pop"/>
+        <Detect2Chars char="\" char1="\" context="#pop"/>
+        <Detect2Chars char="|" char1="&gt;" context="#pop"/>
+        <Detect2Chars char="-" char1="&gt;" context="#pop"/>
+        <Detect2Chars char="&gt;" char1="=" context="#pop"/>
+        <AnyChar String="*/^" context="#pop"/>
+        <RegExpr String="([\+\-\=\|\!\&amp;])(?:\1\1?)?|&lt;(?:&lt;&lt;|~?&gt;|&lt;?~|[-=])?|(?:[~&gt;]&gt;&gt;|[~=]?&gt;)" context="#pop"/>
+      </context>
+      <context attribute="Operator" fallthroughContext="#pop!Atomable Operators" name="Arrows">
+        <StringDetect String="&lt;&lt;&lt;" attribute="Operator" context="#pop"/>
+        <StringDetect String="&gt;&gt;&gt;" attribute="Operator" context="#pop"/>
+        <StringDetect String="&lt;&lt;" attribute="Braces" context="#pop" beginRegion="bitstring"/>
+        <StringDetect String="&gt;&gt;" attribute="Braces" context="#pop" endRegion="bitstring"/>
+      </context>
+
+      <!-- Numeric Literals -->
+      <context attribute="Integer" lineEndContext="#pop" fallthroughContext="#pop" name="Numeric">
+        <Detect2Chars char="0" char1="b" attribute="Bin" context="#pop!Base Bin"/>
+        <Detect2Chars char="0" char1="x" attribute="Hex" context="#pop!Base Hex"/>
+        <Detect2Chars char="0" char1="o" attribute="Octal" context="#pop!Base Oct"/>
+        <Detect2Chars char="0" char1="." attribute="Float" context="#pop!Float Point"/>
+        <DetectChar char="0" attribute="Integer" context="#pop!Int" lookAhead="true"/>
+      </context>
+      <context attribute="Hex" lineEndContext="#pop" fallthroughContext="#pop" name="Base Hex">
+        <AnyChar String="0123456789ABCDEFabcdef" context="#stay"/>
+        <RegExpr String="_[\dA-F]+" insensitive="true" context="#stay"/>
+      </context>
+      <context attribute="Octal" lineEndContext="#pop" fallthroughContext="#pop" name="Base Oct">
+        <AnyChar String="01234567" context="#stay"/>
+        <RegExpr String="_[0-7]+" context="#stay"/>
+      </context>
+      <context attribute="Bin" lineEndContext="#pop" fallthroughContext="#pop" name="Base Bin">
+        <AnyChar String="01" context="#stay"/>
+        <Detect2Chars char="_" char1="1" context="#stay"/>
+        <Detect2Chars char="_" char1="0" context="#stay"/>
+      </context>
+
+      <context attribute="Integer" lineEndContext="#pop" fallthroughContext="#pop" name="Int">
+        <RegExpr String="\d+(_\d+)*\.[^\.]" attribute="Float" context="#pop!Float Point"/>
+        <AnyChar String="0123456789" context="#stay"/>
+        <RegExpr String="_\d+" context="#stay"/>
+        <Detect2Chars char="." char1="." context="#pop!Operators"/>
+        <DetectChar char="." context="#pop!Float Point"/>
+      </context>
+      <context attribute="Float" lineEndContext="#pop" fallthroughContext="#pop" name="Float Point">
+        <AnyChar String="0123456789" context="#stay"/>
+        <RegExpr String="_\d+" context="#stay"/>
+        <Detect2Chars char="e" char1="-" context="#pop!Scientific Notation"/>
+        <DetectChar char="e" context="#pop!Scientific Notation"/>
+      </context>
+      <context attribute="Float" lineEndContext="#pop" fallthroughContext="#pop" name="Scientific Notation">
+        <AnyChar String="0123456789" context="#stay"/>
+        <RegExpr String="_\d+" context="#stay"/>
+      </context>
+
+      <context attribute="Char Literal" fallthroughContext="#pop" name="CharacterLiteral">
+        <RegExpr String="\?(\\\S|[^\s\\])" attribute="Char Literal" context="#pop"/>
+        <Detect2Chars char="?" char1="\" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- Variables, Functions, Keywords -->
+      <context attribute="Variable Underscore" name="Underscore">
+        <RegExpr String="_*&identifier;[?!]?" attribute="Variable Underscore" context="#pop"/>
+        <DetectChar char="_" attribute="Variable Underscore" context="#pop"/>
+      </context>
+      <context attribute="Variable" fallthroughContext="#pop" name="Identifier">
+        <RegExpr String="(%1)\(" context="#pop!Function" lookAhead="true" dynamic="true"/>
+        <RegExpr String="%1:(?!:)" attribute="Atom" context="#pop" dynamic="true"/>
+
+        <!-- End terminated blocks -->
+        <WordDetect String="do" attribute="Keyword" beginRegion="doend_block"/>
+        <WordDetect String="fn" attribute="Keyword" beginRegion="doend_block"/>
+        <WordDetect String="end" attribute="Keyword" endRegion="doend_block"/>
+
+        <StringDetect String="%1" attribute="Variable" context="#pop" dynamic="true"/>
+        <DetectSpaces lookAhead="true" context="#pop"/>
+      </context>
+      <context attribute="Function" fallthroughContext="#pop" name="Function">
+        <StringDetect String="%1" attribute="Function" context="#pop" dynamic="true"/>
+        <DetectChar char="(" context="#pop" beginRegion="parameters" attribute="Braces"/>
+      </context>
+      <context attribute="Function" fallthroughContext="#pop" name="Function Definition">
+        <RegExpr String="_*&identifier;[?!]?" attribute="Function" context="#pop"/>
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <context attribute="Attribute" lineEndContext="#pop" name="Module Attribute">
+        <RegExpr String="(@(?:module|type)?doc)" context="#pop!Doc" lookAhead="true"/>
+        <DetectChar char="@" attribute="Normal Text" context="#stay"/>
+        <keyword String="module-attributes" attribute="Built In" context="#stay"/>
+        <keyword String="struct-attributes" attribute="Built In" context="#stay"/>
+        <keyword String="typespec-attributes" attribute="Built In" context="#stay"/>
+        <RegExpr String="(&identifier;[?!]?)" attribute="Normal Text" context="#pop"/>
+        <DetectSpaces context="#pop"/>
+      </context>
+
+      <!-- @moduledoc, @typedoc, and @doc -->
+      <context attribute="Attribute" lineEndContext="#pop" fallthroughContext="#pop" name="Doc">
+        <RegExpr String="%1 (?:~[Ss])?(&quot;(?:&quot;&quot;)?)" context="#pop!Doc Interp" beginRegion="doc_comment" dynamic="true"/>
+        <StringDetect String="%1" context="#pop" dynamic="true"/>
+      </context>
+      <context attribute="DocComment" lineEndContext="#stay" name="Doc Interp">
+        <StringDetect String="%1" attribute="DocComment" context="#pop" endRegion="doc_comment" dynamic="true"/>
+        <IncludeRules context="Interpolated"/>
+        <IncludeRules context="Markdown"/>
+      </context>
+
+      <!-- Atoms (keys: and :values) -->
+      <context attribute="Atom" fallthroughContext="#pop!AtomOperator" name="AtomValue">
+        <RegExpr String="(&quot;|')" attribute="Atom" context="#pop!Quoted Atom"/>
+        <RegExpr String="(?:_|&identifier;)" attribute="Atom" context="#pop!AtomNodeName"/>
+      </context>
+      <context attribute="Atom" lineEndContext="#pop" fallthroughContext="#pop" name="AtomNodeName">
+        <!-- Used for Node names -->
+        <AnyChar String="!?" attribute="Atom" context="#pop"/>
+        <RegExpr String="&identifier;|@[a-zA-Z0-9_]*(\.&identifier;)*" attribute="Atom" context="#stay"/>
+      </context>
+      <context attribute="Atom" lineEndContext="#pop" fallthroughContext="#pop" name="AtomOperator">
+        <DetectChar char="@" attribute="Atom" context="#pop"/>
+        <Detect2Chars char="{" char1="}" attribute="Atom" context="#pop"/>
+        <StringDetect String="%{}" attribute="Atom" context="#pop"/>
+        <StringDetect String="&lt;&lt;&gt;&gt;" attribute="Atom" context="#pop"/>
+        <StringDetect String="..." attribute="Atom" context="#pop"/>
+        <Detect2Chars char="." char1="." attribute="Atom" context="#pop"/>
+        <DetectChar char="." attribute="Atom" context="#pop"/>
+        <AnyChar String=".=+-*/\!^~:|&amp;&lt;&gt;" context="AtomValue Operator" lookAhead="true"/>
+      </context>
+      <context attribute="Error" fallthroughContext="#pop"  name="AtomValue Operator">
+        <IncludeRules context="Atomable Operators"/>
+      </context>
+      <context attribute="Atom" lineEndContext="#stay" name="Quoted Atom">
+        <StringDetect String="%1" attribute="Atom" context="#pop" dynamic="true"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+      <context attribute="Atom" name="Atom Bitstring Key">
+        <DetectChar char="&quot;" attribute="Atom" context="#pop!Atom Bitstring Key Body"/>
+      </context>
+      <context attribute="Atom" name="Atom Bitstring Key Body">
+        <Detect2Chars char="&quot;" char1=":" attribute="Atom" context="#pop"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+
+      <context attribute="DocComment" name="Markdown">
+        <RegExpr String="^(\s*)#{1,7}\s" context="Markdown Header" column="0" lookAhead="true"/>
+        <RegExpr String="^\s*([\+\-\*]|\d+\.)\s" attribute="MarkdownMark" column="0"/>
+        <RegExpr String="`.+`" context="Markdown Code" minimal="true" lookAhead="true"/>
+        <DetectSpaces/>
+      </context>
+      <context attribute="MarkdownHead" lineEndContext="#pop" name="Markdown Header">
+        <StringDetect String="%1" attribute="Normal Text" dynamic="true"/>
+        <DetectSpaces/>
+      </context>
+      <context attribute="Normal Text" name="Markdown Code">
+        <DetectChar char="`" attribute="DocComment" context="#pop!Markdown Code Body"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Markdown Code Body">
+        <DetectChar char="`" context="#pop"/>
+        <IncludeRules context="Normal"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="Heredoc">
         <StringDetect String="&quot;&quot;&quot;" attribute="String" context="#pop"/>
       </context>
-      <context attribute="String" lineEndContext="#stay" name="Quoted String">
-        <Detect2Chars char="\" char1="\" attribute="String" context="#stay"/>
-        <Detect2Chars char="\" char1="&quot;" attribute="String" context="#stay"/>
-        <RegExpr String="#@{1,2}" attribute="Substitution" context="Short Subst"/>
-        <Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-        <DetectChar attribute="String" char="&quot;" context="#pop"/>
+      <context attribute="String" name="Bitstring">
+        <!-- Atom keys can also have interpolatation if they are a "String" -->
+        <RegExpr String="&quot;(?:\\.|#\{.+\}|[^&quot;])*&quot;:\s" attribute="Atom" context="#pop!Atom Bitstring Key" minimal="true" lookAhead="true"/>
+        <DetectChar char="&quot;" attribute="String" context="#pop!Bitstring Body"/>
       </context>
-      <context attribute="Raw String" lineEndContext="#stay" name="Apostrophed String">
-        <Detect2Chars char="\" char1="\" attribute="String" context="#stay"/>
-        <Detect2Chars char="\" char1="'" attribute="String" context="#stay"/>
-        <DetectChar attribute="Raw String" char="'" context="#pop"/>
+      <context attribute="String" lineEndContext="#stay" name="Bitstring Body">
+        <DetectChar char="&quot;" attribute="String" context="#pop"/>
+        <IncludeRules context="Interpolated"/>
       </context>
-      <!-- Substitutions can be nested -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="Subst">
-        <DetectChar attribute="Substitution" char="}" context="#pop"/>
-        <!-- Highlight substitution as code. -->
+      <context attribute="Charlist" lineEndContext="#stay" name="Charlist">
+        <DetectChar char="'" attribute="Charlist" context="#pop"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+
+      <!-- Sigils -->
+      <context attribute="String" name="Sigils">
+        <StringDetect String="~H&quot;" context="Sigil HEEx" lookAhead="true"/>
+        <RegExpr String="~(?:[a-z]|[A-Z][A-Z\d]*)[/|&quot;'\(\{\[\&lt;]" attribute="String" context="Sigil" lookAhead="true"/>
+        <DetectChar char="~" attribute="Operator" context="Operators" lookAhead="true"/>
+      </context>
+      <context attribute="String" name="Sigil">
+        <DetectChar char="~" attribute="String" context="#stay"/>
+        <RegExpr String="[a-z]" attribute="String" context="#pop!Sigil Delimeter Interp"/>
+        <RegExpr String="[A-Z]" attribute="String" context="#pop!Sigil Delimeter Raw"/>
+      </context>
+
+      <context attribute="String" name="Sigil HEEx">
+        <DetectChar char="~" attribute="String" context="#stay" beginRegion="sigil_heex"/>
+        <DetectChar char="H" attribute="String" context="#stay"/>
+        <RegExpr String="(&quot;&quot;&quot;|[/|&quot;'])" attribute="String" context="#pop!Sigil Interp HEEx" beginRegion="sigil"/>
+      </context>
+      <context attribute="Normal Text" name="Sigil Interp HEEx">
+        <StringDetect String="%1" attribute="String" context="#pop" dynamic="true"/>
+        <IncludeRules context="Text##Elixir/HEEx"/>
+      </context>
+
+      <!-- Sigils, Interpolated -->
+      <context attribute="String" name="Sigil Delimeter Interp">
+        <DetectChar char="[" attribute="String" context="#pop!Sigil Interp Square" beginRegion="sigil"/>
+        <DetectChar char="(" attribute="String" context="#pop!Sigil Interp Paren" beginRegion="sigil"/>
+        <DetectChar char="{" attribute="String" context="#pop!Sigil Interp Curly" beginRegion="sigil"/>
+        <DetectChar char="&lt;" attribute="String" context="#pop!Sigil Interp Angle" beginRegion="sigil"/>
+        <RegExpr String="(&quot;&quot;&quot;|[/|&quot;'])" attribute="String" context="#pop!Sigil Interp Match" beginRegion="sigil"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Interp Square">
+        <IncludeRules context="Sigil Square"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Interp Paren">
+        <IncludeRules context="Sigil Paren"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Interp Curly">
+        <IncludeRules context="Sigil Curly"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Interp Angle">
+        <IncludeRules context="Sigil Angle"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Interp Match">
+        <IncludeRules context="Sigil Match"/>
+        <IncludeRules context="Interpolated"/>
+      </context>
+
+      <!-- Sigils, Non-Interpolated -->
+      <context attribute="String" name="Sigil Delimeter Raw">
+        <DetectChar char="[" attribute="String" context="#pop!Sigil Square" beginRegion="sigil"/>
+        <DetectChar char="(" attribute="String" context="#pop!Sigil Paren" beginRegion="sigil"/>
+        <DetectChar char="{" attribute="String" context="#pop!Sigil Curly" beginRegion="sigil"/>
+        <DetectChar char="&lt;" attribute="String" context="#pop!Sigil Angle" beginRegion="sigil"/>
+        <RegExpr String="(&quot;&quot;&quot;|[/|&quot;'])" attribute="String" context="#pop!Sigil Match" beginRegion="sigil"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Square">
+        <DetectChar char="]" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Paren">
+        <DetectChar char=")" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Curly">
+        <DetectChar char="}" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Angle">
+        <DetectChar char="&gt;" attribute="String" context="#pop!Sigil Delimeter Modifiers" endRegion="sigil"/>
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="Sigil Match">
+        <StringDetect String="%1" attribute="String" context="#pop!Sigil Delimeter Modifiers" dynamic="true" endRegion="sigil"/>
+      </context>
+
+      <context attribute="Normal Text" fallthroughContext="#pop" lineEndContext="#pop" name="Sigil Delimeter Modifiers">
+        <!-- Captures modifiers after delimeter -->
+        <RegExpr String="[a-zA-Z]*" attribute="String" context="#pop"/>
+      </context>
+
+      <!-- Interpolatation format -->
+      <context attribute="Interpolation" name="Interpolated">
+        <!-- Escapes can only happen in the same context as Interpolated strings -->
+        <DetectChar char="\" context="Escape Sequence" lookAhead="true"/>
+        <Detect2Chars char="#" char1="{" attribute="Interpolation" context="Interp"/>
+      </context>
+      <!-- Interpolations can be nested -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Interp">
+        <DetectChar char="}" attribute="Interpolation" context="#pop"/>
+        <!-- Highlight interpolation as code. -->
         <IncludeRules context="Normal"/>
       </context>
-      <context attribute="Substitution" lineEndContext="#pop" name="Short Subst">
-        <!-- Check for e.g.: "#@var#@@xy" -->
-        <RegExpr String="#@{1,2}" attribute="Substitution" context="#stay"/>
-        <RegExpr String="\w(?!\w)" attribute="Substitution" context="#pop"/>
+      <context attribute="Special Char" name="Escape Sequence">
+        <RegExpr String="\\(?:.|x[\dA-F]{2}|u(?:[\dA-F]{4}|\{[\dA-F]+\}))" attribute="Special Char" insensitive="true" context="#pop"/>
       </context>
-      <context attribute="Comment" lineEndContext="#pop" name="General Comment">
-        <DetectSpaces />
+
+      <context attribute="Comment" lineEndContext="#pop" name="Line Comment">
+        <DetectSpaces/>
         <IncludeRules context="##Comments"/>
       </context>
-      <context attribute="MarkdownCode" lineEndContext="#stay" name="Markdown Code">
-        <RegExpr String="^\s*```\s*$" attribute="MarkdownCode" context="#pop" column="0"/>
-      </context>
+
     </contexts>
     <itemDatas>
-      <itemData name="Global Constant" defStyleNum="dsConstant"/>
-      <itemData name="Constant" defStyleNum="dsConstant"/>
-      <itemData defStyleNum="dsNormal" name="Normal Text"/>
-      <itemData defStyleNum="dsKeyword" name="Keyword"/>
+      <itemData defStyleNum="dsNormal"      name="Normal Text"/>
+      <itemData defStyleNum="dsNormal"      name="Braces"/>
+      <itemData defStyleNum="dsOperator"    name="Operator"/>
+      <itemData defStyleNum="dsKeyword"     name="Keyword"/>
       <itemData defStyleNum="dsControlFlow" name="Control Flow"/>
-      <itemData defStyleNum="dsKeyword" name="Definition"/>
-      <itemData defStyleNum="dsImport" name="Mixin macros"/>
-      <itemData defStyleNum="dsConstant" name="Pseudo variable"/>
-      <itemData defStyleNum="dsDecVal" name="Dec"/>
-      <itemData defStyleNum="dsFloat" name="Float"/>
-      <itemData defStyleNum="dsChar" name="Char"/>
-      <itemData defStyleNum="dsBaseN" name="Octal"/>
-      <itemData defStyleNum="dsBaseN" name="Hex"/>
-      <itemData defStyleNum="dsBaseN" name="Bin"/>
-      <itemData defStyleNum="dsVariable" name="Symbol"/>
-      <itemData defStyleNum="dsString" name="String"/>
-      <itemData defStyleNum="dsVerbatimString" name="Raw String"/>
-      <itemData defStyleNum="dsOthers" name="Substitution"/>
-      <itemData defStyleNum="dsOthers" name="Attribute"/>
-      <itemData defStyleNum="dsComment" name="Comment"/>
-      <itemData defStyleNum="dsComment" name="DocComment"/>
+      <itemData defStyleNum="dsKeyword"     name="Definition"/>
+      <itemData defStyleNum="dsImport"      name="Mixin macros"/>
+      <itemData defStyleNum="dsNormal"      name="Variable"/>
+      <itemData defStyleNum="dsComment"     name="Variable Underscore"/>
+      <itemData defStyleNum="dsNormal"      name="Module"/>
+      <itemData defStyleNum="dsNormal"      name="Attribute"/>
+      <itemData defStyleNum="dsBuiltIn"     name="Built In"/>
+      <itemData defStyleNum="dsFunction"    name="Function"/>
+      <itemData defStyleNum="dsVariable"    name="Atom"/>
+
+      <!-- Literals -->
+      <itemData defStyleNum="dsDecVal" name="Integer"/>
+      <itemData defStyleNum="dsFloat"  name="Float"/>
+      <itemData defStyleNum="dsBaseN"  name="Octal"/>
+      <itemData defStyleNum="dsBaseN"  name="Hex"/>
+      <itemData defStyleNum="dsBaseN"  name="Bin"/>
+
+      <itemData defStyleNum="dsChar"   name="Char Literal"/>
+
+      <itemData defStyleNum="dsString"         name="String" spellChecking="true"/>
+      <itemData defStyleNum="dsVerbatimString" name="Charlist"/>
+      <itemData defStyleNum="dsSpecialChar"    name="Special Char"/>
+      <itemData defStyleNum="dsFunction"       name="Interpolation"/>
+
+      <!-- Comments and Documentation -->
+      <itemData defStyleNum="dsComment"       name="Comment"/>
+      <itemData defStyleNum="dsDocumentation" name="DocComment"/>
+
+      <itemData defStyleNum="dsDocumentation" name="MarkdownHead" bold="true" underline="true"/>
+      <itemData defStyleNum="dsDocumentation" name="MarkdownMark" bold="true"/>
+
       <!-- use these to mark errors and alerts things -->
-      <itemData color="#FF9FEC" defStyleNum="dsNormal" name="Delimiter"/>
-      <itemData defStyleNum="dsOperator" name="Operator"/>
-      <itemData name="MarkdownHead" defStyleNum="dsFunction" bold="true"/>
-      <itemData name="MarkdownBullet" defStyleNum="dsFunction"/>
-      <itemData name="MarkdownNumlist" defStyleNum="dsFunction"/>
-      <itemData name="MarkdownCode" defStyleNum="dsFunction"/>
+      <itemData defStyleNum="dsError" name="Error"/>
     </itemDatas>
   </highlighting>
   <general>
     <comments>
       <comment name="singleLine" start="#"/>
     </comments>
-    <keywords casesensitive="1" weakDeliminator="!?"/>
+    <keywords casesensitive="1" weakDeliminator="!?:"/>
   </general>
 </language>
 <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/elm.xml b/xml/elm.xml
--- a/xml/elm.xml
+++ b/xml/elm.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Elm" version="8" kateversion="5.0" section="Sources" extensions="*.elm" author="Bonghyun Kim (bonghyun.d.kim@gmail.com)" license="MIT" style="elm">
   <highlighting>
     <list name="declarations">
diff --git a/xml/email.xml b/xml/email.xml
--- a/xml/email.xml
+++ b/xml/email.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Email" version="7" kateversion="5.0" extensions="*.eml;*.email;*.emlx;*.mbox;*.mbx" section="Other" mimetype="message/rfc822" casesensitive="0" author="Volker Krause (vkrause@kde.org)" license="MIT">
     <highlighting>
         <list name="header-names">
diff --git a/xml/erlang.xml b/xml/erlang.xml
--- a/xml/erlang.xml
+++ b/xml/erlang.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
           <!ENTITY atomstr    "\b[a-z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)" >
           <!ENTITY varstr    "\b[_A-Z][_a-z@-Z0-9]*(?:(?=[^_a-z@-Z0-9])|$)" >
@@ -36,7 +36,7 @@
                                    - fixed highlighting problem when '@' at end of atom/variable
 -->
 
-<language name="Erlang" version="6" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">
+<language name="Erlang" alternativeNames="Erl" version="7" kateversion="5.0" section="Scripts" extensions="*.erl" mimetype="" author="Bill Ross (bill@emailme.net.au)" license="LGPLv2">
   <highlighting>
     <list name="keywords">
       <!-- ====== s3.8 p 24 of erlang spec ===== -->
diff --git a/xml/fasm.xml b/xml/fasm.xml
--- a/xml/fasm.xml
+++ b/xml/fasm.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY float "[0-9]++(?:\.[0-9]*+(?:e[-+]?[0-9]*+)?|(?=f\b)|e[-+]?[0-9]++\b)">
 
@@ -185,11 +185,6 @@
       <item>loopw</item>
       <item>loopz</item>
       <item>loopzd</item>
-      <item>loopzw</item>
-      <item>loopnz</item>
-      <item>loopnzd</item>
-      <item>loopnzw</item>
-      <item>loopz</item>
       <item>loopzw</item>
       <item>ret</item>
       <item>retd</item>
diff --git a/xml/fortran-fixed.xml b/xml/fortran-fixed.xml
--- a/xml/fortran-fixed.xml
+++ b/xml/fortran-fixed.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd" [
+<!DOCTYPE language [
   <!-- Integers with optional kind specifier -->
   <!ENTITY integer "\b[0-9]++(?:[_](?:[0-9]++|[a-zA-Z][\w_]*))?">
   <!-- Integers in binary, octal and hexadecimal notations -->
@@ -9,7 +9,7 @@
   <!ENTITY float2 "\b[0-9]++\.[0-9]*+(?:[de][+-]?[0-9]+)?(?:[_](?:[0-9]++|[a-z][\w_]*))?(?![a-z])">
   <!ENTITY float3 "\b[0-9]++[de][+-]?[0-9]++(?:[_](?:[0-9]++|[a-z][\w_]*))?">
 ]>
-<language name="Fortran (Fixed Format)" version="10" kateversion="5.44" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.fpp;*.FPP;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="MIT" priority="9">
+<language name="Fortran (Fixed Format)" version="11" kateversion="5.44" section="Sources" extensions="*.f;*.F;*.for;*.FOR;*.fpp;*.FPP;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it)" license="MIT" priority="9">
 <!-- by Franchin Matteo, fnch@libero.it -->
 <!-- NOTE: Keep in sync with the "Fortran (Free Format)" highlighter! (fortran-free.xml) -->
   <highlighting>
@@ -411,7 +411,7 @@
         <Detect2Chars attribute="Operator" context="#stay" char="/" char1="="/>
         <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="="/>
         <Detect2Chars attribute="Operator" context="#stay" char="&gt;" char1="="/>
-        <AnyChar attribute="Operator" context="#stay" String="&lt;&gt;"/>
+        <AnyChar attribute="Operator" context="#stay" String="&lt;&gt;%"/>
       </context>
 
 <!-- This context highlights comments -->
diff --git a/xml/fortran-free.xml b/xml/fortran-free.xml
--- a/xml/fortran-free.xml
+++ b/xml/fortran-free.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Fortran (Free Format)" version="5" kateversion="5.53" section="Sources" extensions="*.f90;*.F90;*.f95;*.F95;*.f03;*.F03;*.f08;*.F08;" mimetype="text/x-fortran-src" casesensitive="0" author="Franchin Matteo (fnch@libero.it), Janus Weil" license="MIT" priority="10">
 <!-- Original author: Franchin Matteo (fnch@libero.it).
      Adaptation to free & fixed format: Janus Weil.
diff --git a/xml/fsharp.xml b/xml/fsharp.xml
--- a/xml/fsharp.xml
+++ b/xml/fsharp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- Kate syntax highlighting for F# based on the OCAML syntax by Glyn Webster (glyn@wave.co.nz). -->
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 <!-- Regular expresion constants: -->
 <!ENTITY LETTER "A-Za-z\300-\326\330-\366\370-\377">                <!-- Latin-1 letters. -->
diff --git a/xml/gap.xml b/xml/gap.xml
new file mode 100644
--- /dev/null
+++ b/xml/gap.xml
@@ -0,0 +1,7838 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<!--
+	====================================================================
+	GAP syntax highlighting file for the KDE editors Kate and Kwrite
+	====================================================================
+
+	The Strings, Two Char Operators, Variable, Number and Operator1
+	(and commentary color) rules were taken from the octave syntax highlighting
+	file by Luis Silvestre and Federico Zenith.
+	Thanks go to them!
+
+	Author: Jose Joao Morais
+	-->
+
+
+<language name="GAP" section="Scientific" extensions="*.gd;*.gi;*.g" mimetype="text/gap" version="5" kateversion="5.0" author="Jose Joao Morais" license="GPL">
+
+	<highlighting>
+
+		<!-- Reserved keywords in GAP -->
+
+		<list name="controlstatements">
+			<item>break</item>
+			<item>continue</item>
+			<item>do</item>
+			<item>elif</item>
+			<item>else</item>
+			<!-- <item>fi</item> -->
+			<!-- <item>for</item> -->
+			<!-- <item>if</item> -->
+			<!-- <item>od</item> -->
+			<!-- <item>repeat</item> -->
+			<item>then</item>
+			<!-- <item>until</item> -->
+			<!-- <item>while</item> -->
+		</list>
+
+		<list name="logicoperators">
+			<item>and</item>
+			<item>fail</item>
+			<item>false</item>
+			<item>not</item>
+			<item>or</item>
+			<item>true</item>
+		</list>
+
+		<list name="gapkeywords">
+			<!-- <item>function</item> -->
+			<!-- <item>end</item> -->
+			<item>in</item>
+			<item>local</item>
+			<item>rec</item>
+			<item>return</item>
+		</list>
+
+		<list name="mathoperators">
+			<item>mod</item>
+		</list>
+
+		<list name="builtinfunctions">
+			<item>AClosVecLib</item>
+			<item>AClosestVectorCombinationsMatFFEVecFFE</item>
+			<item>AClosestVectorCombinationsMatFFEVecFFECoords</item>
+			<item>AClosestVectorDriver</item>
+			<item>ANFAutomorphism</item>
+			<item>ANonReesCongruenceOfSemigroup</item>
+			<item>APolyProd</item>
+			<item>AbelianGroup</item>
+			<item>AbelianGroupCons</item>
+			<item>AbelianInvariants</item>
+			<item>AbelianInvariantsMultiplier</item>
+			<item>AbelianInvariantsNormalClosureFpGroup</item>
+			<item>AbelianInvariantsNormalClosureFpGroupRrs</item>
+			<item>AbelianInvariantsOfList</item>
+			<item>AbelianInvariantsSubgroupFpGroup</item>
+			<item>AbelianInvariantsSubgroupFpGroupMtc</item>
+			<item>AbelianInvariantsSubgroupFpGroupRrs</item>
+			<item>AbelianNumberField</item>
+			<item>AbelianNumberFieldByReducedGaloisStabilizerInfo</item>
+			<item>AbelianPQuotient</item>
+			<item>AbelianSubfactorAction</item>
+			<item>AbsAndIrredModules</item>
+			<item>AbsInt</item>
+			<item>AbsolutIrreducibleModules</item>
+			<item>AbsoluteIrreducibleModules</item>
+			<item>AbsoluteValue</item>
+			<item>AbstractWordTietzeWord</item>
+			<item>AbstractWordTzWord</item>
+			<item>ActingAlgebra</item>
+			<item>ActingDomain</item>
+			<item>Action</item>
+			<item>ActionAbelianCSPG</item>
+			<item>ActionHomomorphism</item>
+			<item>ActionHomomorphismAttr</item>
+			<item>ActionHomomorphismConstructor</item>
+			<item>ActionKernelExternalSet</item>
+			<item>ActionSubspacesElementaryAbelianGroup</item>
+			<item>ActorOfExternalSet</item>
+			<item>Add</item>
+			<item>AddAbelianRelator</item>
+			<item>AddCoeffs</item>
+			<item>AddCosetInfoStabChain</item>
+			<item>AddDictionary</item>
+			<item>AddEquationsSQ</item>
+			<item>AddGenerator</item>
+			<item>AddGenerators</item>
+			<item>AddGeneratorsExtendSchreierTree</item>
+			<item>AddGeneratorsGenimagesExtendSchreierTree</item>
+			<item>AddHashEntry</item>
+			<item>AddImage</item>
+			<item>AddImageNC</item>
+			<item>AddNaturalHomomorphismsPool</item>
+			<item>AddNormalizingElementPcgs</item>
+			<item>AddPageNumbersToSix</item>
+			<item>AddParagraphNumbersGapDocTree</item>
+			<item>AddRefinement</item>
+			<item>AddRelator</item>
+			<item>AddRootParseTree</item>
+			<item>AddRowVector</item>
+			<item>AddRule</item>
+			<item>AddRuleReduced</item>
+			<item>AddSet</item>
+			<item>AddToListEntries</item>
+			<item>AddVectorLTM</item>
+			<item>AddendumSCTable</item>
+			<item>AdditiveCoset</item>
+			<item>AdditiveElementAsMultiplicativeElement</item>
+			<item>AdditiveElementsAsMultiplicativeElementsFamily</item>
+			<item>AdditiveGroup</item>
+			<item>AdditiveGroupByGenerators</item>
+			<item>AdditiveInverse</item>
+			<item>AdditiveInverseAttr</item>
+			<item>AdditiveInverseImmutable</item>
+			<item>AdditiveInverseMutable</item>
+			<item>AdditiveInverseOp</item>
+			<item>AdditiveInverseSM</item>
+			<item>AdditiveInverseSameMutability</item>
+			<item>AdditiveMagma</item>
+			<item>AdditiveMagmaByGenerators</item>
+			<item>AdditiveMagmaWithInverses</item>
+			<item>AdditiveMagmaWithInversesByGenerators</item>
+			<item>AdditiveMagmaWithZero</item>
+			<item>AdditiveMagmaWithZeroByGenerators</item>
+			<item>AdditiveNeutralElement</item>
+			<item>AdditivelyActingDomain</item>
+			<item>AdjointAssociativeAlgebra</item>
+			<item>AdjointBasis</item>
+			<item>AdjointMatrix</item>
+			<item>AdjointModule</item>
+			<item>AffineAction</item>
+			<item>AffineActionByMatrixGroup</item>
+			<item>AffineActionLayer</item>
+			<item>AffineOperation</item>
+			<item>AffineOperationLayer</item>
+			<item>Agemo</item>
+			<item>AgemoAbove</item>
+			<item>AgemoOp</item>
+			<item>AlgExtElm</item>
+			<item>AlgExtEmbeddedPol</item>
+			<item>AlgExtFactSQFree</item>
+			<item>AlgExtSquareHensel</item>
+			<item>AlgFacUPrep</item>
+			<item>Algebra</item>
+			<item>AlgebraByGenerators</item>
+			<item>AlgebraByStructureConstants</item>
+			<item>AlgebraByStructureConstantsArg</item>
+			<item>AlgebraGeneralMappingByImages</item>
+			<item>AlgebraHomomorphismByImages</item>
+			<item>AlgebraHomomorphismByImagesNC</item>
+			<item>AlgebraWithOne</item>
+			<item>AlgebraWithOneByGenerators</item>
+			<item>AlgebraWithOneGeneralMappingByImages</item>
+			<item>AlgebraWithOneHomomorphismByImages</item>
+			<item>AlgebraWithOneHomomorphismByImagesNC</item>
+			<item>AlgebraicElementsFamilies</item>
+			<item>AlgebraicElementsFamily</item>
+			<item>AlgebraicExtension</item>
+			<item>AlgebraicPolynomialModP</item>
+			<item>AllBlocks</item>
+			<item>AllGroups</item>
+			<item>AllIrreducibleMonicPolynomialCoeffsOfDegree</item>
+			<item>AllIrreducibleMonicPolynomials</item>
+			<item>AllIrreducibleSolvableGroups</item>
+			<item>AllLibTomNames</item>
+			<item>AllModulesSQ</item>
+			<item>AllMonicPolynomialCoeffsOfDegree</item>
+			<item>AllPrimitiveGroups</item>
+			<item>AllSmallGroups</item>
+			<item>AllTransitiveGroups</item>
+			<item>AllowableSubgroup</item>
+			<item>Alpha</item>
+			<item>AlternatingDegree</item>
+			<item>AlternatingGroup</item>
+			<item>AlternatingGroupCons</item>
+			<item>AlternatingSubgroup</item>
+			<item>AntiSymmetricParts</item>
+			<item>Append</item>
+			<item>AppendCollectedList</item>
+			<item>AppendTo</item>
+			<item>ApplicableMethod</item>
+			<item>ApplicableMethodTypes</item>
+			<item>Apply</item>
+			<item>ApplyGeneratorsToPoint</item>
+			<item>ApplyGeneratorsToPointsList</item>
+			<item>ApplyRel</item>
+			<item>ApplySimpleReflection</item>
+			<item>ApplyToNodesParseTree</item>
+			<item>ApproxRational</item>
+			<item>ApproxRootBound</item>
+			<item>ApproximateRoot</item>
+			<item>ApproximateSuborbitsStabilizerPermGroup</item>
+			<item>ArithmeticElementCreator</item>
+			<item>Arrangements</item>
+			<item>ArrangementsA</item>
+			<item>ArrangementsK</item>
+			<item>AsAlgebra</item>
+			<item>AsAlgebraWithOne</item>
+			<item>AsBinaryRelationOnPoints</item>
+			<item>AsBlockMatrix</item>
+			<item>AsCharacterMorphismFunction</item>
+			<item>AsDivisionRing</item>
+			<item>AsDuplicateFreeList</item>
+			<item>AsFLMLOR</item>
+			<item>AsFLMLORWithOne</item>
+			<item>AsField</item>
+			<item>AsFreeLeftModule</item>
+			<item>AsGroup</item>
+			<item>AsGroupGeneralMappingByImages</item>
+			<item>AsInducedPcgs</item>
+			<item>AsLeftIdeal</item>
+			<item>AsLeftMagmaIdeal</item>
+			<item>AsLeftModule</item>
+			<item>AsLeftModuleGeneralMappingByImages</item>
+			<item>AsLieAlgebra</item>
+			<item>AsList</item>
+			<item>AsListOfFreeLeftModule</item>
+			<item>AsListSorted</item>
+			<item>AsMagma</item>
+			<item>AsMagmaIdeal</item>
+			<item>AsMonoid</item>
+			<item>AsNearRing</item>
+			<item>AsPerm</item>
+			<item>AsPlist</item>
+			<item>AsPolynomial</item>
+			<item>AsRightIdeal</item>
+			<item>AsRightMagmaIdeal</item>
+			<item>AsRing</item>
+			<item>AsSSortedList</item>
+			<item>AsSSortedListList</item>
+			<item>AsSSortedListNonstored</item>
+			<item>AsSemigroup</item>
+			<item>AsSemiring</item>
+			<item>AsSemiringWithOne</item>
+			<item>AsSemiringWithOneAndZero</item>
+			<item>AsSemiringWithZero</item>
+			<item>AsSet</item>
+			<item>AsSortedList</item>
+			<item>AsSubFLMLOR</item>
+			<item>AsSubFLMLORWithOne</item>
+			<item>AsSubalgebra</item>
+			<item>AsSubalgebraWithOne</item>
+			<item>AsSubgroup</item>
+			<item>AsSubgroupOfWholeGroupByQuotient</item>
+			<item>AsSubmagma</item>
+			<item>AsSubmonoid</item>
+			<item>AsSubsemigroup</item>
+			<item>AsSubspace</item>
+			<item>AsTransformation</item>
+			<item>AsTransformationNC</item>
+			<item>AsTwoSidedIdeal</item>
+			<item>AsVectorSpace</item>
+			<item>AscendingChain</item>
+			<item>AscendingChainOp</item>
+			<item>Assert</item>
+			<item>AssertionLevel</item>
+			<item>AssignGeneratorVariables</item>
+			<item>AssignNiceMonomorphismAutomorphismGroup</item>
+			<item>AssocBWorLetRepPow</item>
+			<item>AssocWWorLetRepPow</item>
+			<item>AssocWord</item>
+			<item>AssocWordByLetterRep</item>
+			<item>AssociatedPartition</item>
+			<item>AssociatedReesMatrixSemigroupOfDClass</item>
+			<item>AssociatedSemigroup</item>
+			<item>Associates</item>
+			<item>AtlasIrrationality</item>
+			<item>AttributeMethodByNiceMonomorphism</item>
+			<item>AttributeMethodByNiceMonomorphismCollColl</item>
+			<item>AttributeMethodByNiceMonomorphismCollElm</item>
+			<item>AttributeMethodByNiceMonomorphismElmColl</item>
+			<item>AttributeValueNotSet</item>
+			<item>AugmentationIdeal</item>
+			<item>AugmentedCosetTableInWholeGroup</item>
+			<item>AugmentedCosetTableMtc</item>
+			<item>AugmentedCosetTableMtcInWholeGroup</item>
+			<item>AugmentedCosetTableNormalClosure</item>
+			<item>AugmentedCosetTableNormalClosureInWholeGroup</item>
+			<item>AugmentedCosetTableRrs</item>
+			<item>AugmentedCosetTableRrsInWholeGroup</item>
+			<item>AutoloadPackages</item>
+			<item>AutomorphismDomain</item>
+			<item>AutomorphismGroup</item>
+			<item>AutomorphismGroupAbelianGroup</item>
+			<item>AutomorphismGroupElAbGroup</item>
+			<item>AutomorphismGroupFrattFreeGroup</item>
+			<item>AutomorphismGroupPermGroup</item>
+			<item>AutomorphismGroupSolvableGroup</item>
+			<item>AutomorphismRepresentingGroup</item>
+			<item>AutomorphismsOfTable</item>
+			<item>AvoidedLayers</item>
+			<item>BPolyProd</item>
+			<item>BagStats</item>
+			<item>BarPartitions</item>
+			<item>BaseFixedSpace</item>
+			<item>BaseImage</item>
+			<item>BaseIntMat</item>
+			<item>BaseIntersectionIntMats</item>
+			<item>BaseMat</item>
+			<item>BaseMatDestructive</item>
+			<item>BaseOfBasicImageGroup</item>
+			<item>BaseOfElt</item>
+			<item>BaseOfGroup</item>
+			<item>BaseOrthogonalSpaceMat</item>
+			<item>BasePoint</item>
+			<item>BasePointOfSchreierTransversal</item>
+			<item>BaseShortVectors</item>
+			<item>BaseStabChain</item>
+			<item>BaseSteinitzVectors</item>
+			<item>BasicImageEltRepFamily</item>
+			<item>BasicImageGroup</item>
+			<item>BasicImageGroupElement</item>
+			<item>BasicWreathProductOrdering</item>
+			<item>BasicWreathProductOrderingNC</item>
+			<item>Basis</item>
+			<item>BasisForFreeModuleByNiceBasis</item>
+			<item>BasisNC</item>
+			<item>BasisNullspaceModN</item>
+			<item>BasisOfAlgebraModule</item>
+			<item>BasisOfHomCosetAddMatrixGroup</item>
+			<item>BasisOfHomCosetAddMatrixGroupFnc</item>
+			<item>BasisOfMonomialSpace</item>
+			<item>BasisOfSparseRowSpace</item>
+			<item>BasisOfWeightRepSpace</item>
+			<item>BasisVectors</item>
+			<item>BasisVectorsForMatrixAction</item>
+			<item>BasisWithReplacedLeftModule</item>
+			<item>BaumClausenInfo</item>
+			<item>BaumClausenInfoDebug</item>
+			<item>BeauzamyBound</item>
+			<item>BeauzamyBoundGcd</item>
+			<item>Bell</item>
+			<item>Bernoulli</item>
+			<item>BestQuoInt</item>
+			<item>BestSplittingMatrix</item>
+			<item>BetaSet</item>
+			<item>BiAlgebraModule</item>
+			<item>BiAlgebraModuleByGenerators</item>
+			<item>BilinearFormMat</item>
+			<item>BinaryRelationByElements</item>
+			<item>BinaryRelationByListOfImages</item>
+			<item>BinaryRelationByListOfImagesNC</item>
+			<item>BinaryRelationOnPoints</item>
+			<item>BinaryRelationOnPointsNC</item>
+			<item>BinaryRelationTransformation</item>
+			<item>BindGlobal</item>
+			<item>Binomial</item>
+			<item>BlistList</item>
+			<item>BlistStringDecode</item>
+			<item>BlockMatrix</item>
+			<item>BlockStabilizer</item>
+			<item>Blocks</item>
+			<item>BlocksAttr</item>
+			<item>BlocksInfo</item>
+			<item>BlocksOp</item>
+			<item>BlowUpCocycleSQ</item>
+			<item>BlowUpIsomorphism</item>
+			<item>BlownUpMat</item>
+			<item>BlownUpMatrix</item>
+			<item>BlownUpModule</item>
+			<item>BlownUpVector</item>
+			<item>BombieriNorm</item>
+			<item>BooleanFamily</item>
+			<item>BrauerCharacterValue</item>
+			<item>BrauerTable</item>
+			<item>BrauerTableOp</item>
+			<item>BravaisGroup</item>
+			<item>BravaisSubgroups</item>
+			<item>BravaisSupergroups</item>
+			<item>BuildIsomorphismReesMatrixSemigroupWithMap</item>
+			<item>CIUnivPols</item>
+			<item>COAffineBlocks</item>
+			<item>COComplements</item>
+			<item>COComplementsMain</item>
+			<item>CONextCentral</item>
+			<item>CONextCentralizer</item>
+			<item>CONextCocycles</item>
+			<item>CONextComplements</item>
+			<item>CalcDoubleCosets</item>
+			<item>CalcOrder</item>
+			<item>CallFuncList</item>
+			<item>CallFuncTrapError</item>
+			<item>CanComputeIndex</item>
+			<item>CanComputeIsSubset</item>
+			<item>CanComputeSize</item>
+			<item>CanComputeSizeAnySubgroup</item>
+			<item>CanEasilyCompareElements</item>
+			<item>CanEasilyCompareElementsFamily</item>
+			<item>CanEasilyComputePcgs</item>
+			<item>CanEasilySortElements</item>
+			<item>CanEasilySortElementsFamily</item>
+			<item>CanEasilyTestMembership</item>
+			<item>CanFindGeneratorOfCyclicGroup</item>
+			<item>CanFindNilpotentClassTwoElement</item>
+			<item>CanonicalBasis</item>
+			<item>CanonicalElt</item>
+			<item>CanonicalGenerators</item>
+			<item>CanonicalNiceMonomorphism</item>
+			<item>CanonicalPcElement</item>
+			<item>CanonicalPcgs</item>
+			<item>CanonicalPcgsByGeneratorsWithImages</item>
+			<item>CanonicalPcgsWrtFamilyPcgs</item>
+			<item>CanonicalPcgsWrtHomePcgs</item>
+			<item>CanonicalPcgsWrtSpecialPcgs</item>
+			<item>CanonicalRelator</item>
+			<item>CanonicalRepresentativeDeterminatorOfExternalSet</item>
+			<item>CanonicalRepresentativeOfExternalSet</item>
+			<item>CanonicalRightCosetElement</item>
+			<item>CanonicalSubgroupRepresentativePcGroup</item>
+			<item>CartanMatrix</item>
+			<item>CartanSubalgebra</item>
+			<item>Cartesian</item>
+			<item>CasesCSPG</item>
+			<item>CategoriesOfObject</item>
+			<item>CategoryCollections</item>
+			<item>CategoryFamily</item>
+			<item>CayleyGraphDualSemigroup</item>
+			<item>CayleyGraphSemigroup</item>
+			<item>Cell</item>
+			<item>CellNoPoint</item>
+			<item>CellNoPoints</item>
+			<item>Cells</item>
+			<item>Center</item>
+			<item>CenterOfCharacter</item>
+			<item>CentralCharacter</item>
+			<item>CentralIdempotentsOfAlgebra</item>
+			<item>CentralIdempotentsOfSemiring</item>
+			<item>CentralNormalSeriesByPcgs</item>
+			<item>CentralProductOfMatrixGroups</item>
+			<item>CentralRelations</item>
+			<item>CentralStelClEANSNonsolv</item>
+			<item>CentralStepClEANS</item>
+			<item>CentralStepConjugatingElement</item>
+			<item>CentralStepRatClPGroup</item>
+			<item>Centralizer</item>
+			<item>CentralizerInAssociativeGaussianMatrixAlgebra</item>
+			<item>CentralizerInFiniteDimensionalAlgebra</item>
+			<item>CentralizerInGLnZ</item>
+			<item>CentralizerInParent</item>
+			<item>CentralizerModulo</item>
+			<item>CentralizerNormalCSPG</item>
+			<item>CentralizerNormalTransCSPG</item>
+			<item>CentralizerOp</item>
+			<item>CentralizerOrder</item>
+			<item>CentralizerSizeLimitConsiderFunction</item>
+			<item>CentralizerSolvableGroup</item>
+			<item>CentralizerTransSymmCSPG</item>
+			<item>CentralizerWreath</item>
+			<item>Centre</item>
+			<item>CentreFromSCTable</item>
+			<item>CentreOfCharacter</item>
+			<item>CentrePcGroup</item>
+			<item>ChaNuPol</item>
+			<item>ChainHomomorphicImage</item>
+			<item>ChainStatistics</item>
+			<item>ChainSubgroup</item>
+			<item>ChainSubgroupByDirectProduct</item>
+			<item>ChainSubgroupByHomomorphism</item>
+			<item>ChainSubgroupByPSubgroupOfAbelian</item>
+			<item>ChainSubgroupByProjectionFunction</item>
+			<item>ChainSubgroupBySiftFunction</item>
+			<item>ChainSubgroupByStabiliser</item>
+			<item>ChainSubgroupByStabilizer</item>
+			<item>ChainSubgroupByTrivialSubgroup</item>
+			<item>ChainSubgroupQuotient</item>
+			<item>ChangeStabChain</item>
+			<item>ChangeTypeObj</item>
+			<item>ChangedBaseGroup</item>
+			<item>CharTableAlternating</item>
+			<item>CharTableDoubleCoverAlternating</item>
+			<item>CharTableDoubleCoverSymmetric</item>
+			<item>CharTableSymmetric</item>
+			<item>CharTableWeylB</item>
+			<item>CharTableWeylD</item>
+			<item>CharValueDoubleCoverSymmetric</item>
+			<item>CharValueSymmetric</item>
+			<item>CharValueWeylB</item>
+			<item>CharValueWreathSymmetric</item>
+			<item>Character</item>
+			<item>CharacterDegreePool</item>
+			<item>CharacterDegrees</item>
+			<item>CharacterMorphismGroup</item>
+			<item>CharacterMorphismOrbits</item>
+			<item>CharacterNames</item>
+			<item>CharacterParameters</item>
+			<item>CharacterString</item>
+			<item>CharacterTable</item>
+			<item>CharacterTableDirectProduct</item>
+			<item>CharacterTableDisplayPrintLegendDefault</item>
+			<item>CharacterTableDisplayStringEntryDataDefault</item>
+			<item>CharacterTableDisplayStringEntryDefault</item>
+			<item>CharacterTableFactorGroup</item>
+			<item>CharacterTableFromLibrary</item>
+			<item>CharacterTableHeadOfFactorGroupByFusion</item>
+			<item>CharacterTableIsoclinic</item>
+			<item>CharacterTableOfNormalSubgroup</item>
+			<item>CharacterTableQuaternionic</item>
+			<item>CharacterTableRegular</item>
+			<item>CharacterTableWithSortedCharacters</item>
+			<item>CharacterTableWithSortedClasses</item>
+			<item>CharacterTableWreathSymmetric</item>
+			<item>Characteristic</item>
+			<item>CharacteristicPolynomial</item>
+			<item>CharacteristicPolynomialMatrixNC</item>
+			<item>CharsFamily</item>
+			<item>CheckAndCleanGapDocTree</item>
+			<item>CheckAuto</item>
+			<item>CheckCompletionFiles</item>
+			<item>CheckConsistencyOfDefinitions</item>
+			<item>CheckCosetTableFpGroup</item>
+			<item>CheckFixedPoints</item>
+			<item>CheckForHandlingByNiceBasis</item>
+			<item>CheckGlobalName</item>
+			<item>CheckPackageLoading</item>
+			<item>CheckPermChar</item>
+			<item>CheckSchreierTreeInternalConsistency</item>
+			<item>ChevalleyBasis</item>
+			<item>ChiefNormalSeriesByPcgs</item>
+			<item>ChiefSeries</item>
+			<item>ChiefSeriesOfGroup</item>
+			<item>ChiefSeriesThrough</item>
+			<item>ChiefSeriesUnderAction</item>
+			<item>ChineseRem</item>
+			<item>Chomp</item>
+			<item>ChooseNextBasePoint</item>
+			<item>ClassComparison</item>
+			<item>ClassElementLargeGroup</item>
+			<item>ClassElementLattice</item>
+			<item>ClassElementSmallGroup</item>
+			<item>ClassFunction</item>
+			<item>ClassFunctionSameType</item>
+			<item>ClassMultiplicationCoefficient</item>
+			<item>ClassNames</item>
+			<item>ClassNamesTom</item>
+			<item>ClassNumbersElements</item>
+			<item>ClassOrbit</item>
+			<item>ClassParameters</item>
+			<item>ClassPermutation</item>
+			<item>ClassPositionsOfAgemo</item>
+			<item>ClassPositionsOfCentre</item>
+			<item>ClassPositionsOfDerivedSubgroup</item>
+			<item>ClassPositionsOfDirectProductDecompositions</item>
+			<item>ClassPositionsOfElementaryAbelianSeries</item>
+			<item>ClassPositionsOfFittingSubgroup</item>
+			<item>ClassPositionsOfKernel</item>
+			<item>ClassPositionsOfLowerCentralSeries</item>
+			<item>ClassPositionsOfMaximalNormalSubgroups</item>
+			<item>ClassPositionsOfNormalClosure</item>
+			<item>ClassPositionsOfNormalSubgroup</item>
+			<item>ClassPositionsOfNormalSubgroups</item>
+			<item>ClassPositionsOfSolvableResiduum</item>
+			<item>ClassPositionsOfSupersolvableResiduum</item>
+			<item>ClassPositionsOfUpperCentralSeries</item>
+			<item>ClassRepsPermutedTuples</item>
+			<item>ClassRoots</item>
+			<item>ClassStructureCharTable</item>
+			<item>ClassTypesTom</item>
+			<item>ClassesSolvableGroup</item>
+			<item>CleanedTailPcElement</item>
+			<item>ClearCacheStats</item>
+			<item>ClearCentralRelations</item>
+			<item>ClearDefinitionNC</item>
+			<item>ClearPQuotientStatistics</item>
+			<item>ClearProfile</item>
+			<item>CloseMutableBasis</item>
+			<item>CloseNaturalHomomorphismsPool</item>
+			<item>CloseStream</item>
+			<item>ClosedStreamType</item>
+			<item>ClosureAdditiveGroup</item>
+			<item>ClosureAdditiveMagmaDefault</item>
+			<item>ClosureAdditiveMagmaWithInverses</item>
+			<item>ClosureAlgebra</item>
+			<item>ClosureDivisionRing</item>
+			<item>ClosureField</item>
+			<item>ClosureGroup</item>
+			<item>ClosureGroupAddElm</item>
+			<item>ClosureGroupCompare</item>
+			<item>ClosureGroupDefault</item>
+			<item>ClosureGroupIntest</item>
+			<item>ClosureLeftModule</item>
+			<item>ClosureLeftOperatorRing</item>
+			<item>ClosureMagmaDefault</item>
+			<item>ClosureNearAdditiveGroup</item>
+			<item>ClosureNearAdditiveMagmaWithInverses</item>
+			<item>ClosureRandomPermGroup</item>
+			<item>ClosureRing</item>
+			<item>ClosureSemiring</item>
+			<item>ClosureSubgroup</item>
+			<item>ClosureSubgroupNC</item>
+			<item>CntOp</item>
+			<item>CoKernel</item>
+			<item>CoKernelGensIterator</item>
+			<item>CoKernelGensPermHom</item>
+			<item>CoKernelOfAdditiveGeneralMapping</item>
+			<item>CoKernelOfMultiplicativeGeneralMapping</item>
+			<item>CoSuFp</item>
+			<item>Coboundaries</item>
+			<item>CocGroup</item>
+			<item>Cochain</item>
+			<item>CochainSpace</item>
+			<item>CocycleSQ</item>
+			<item>CocycleToRelVector</item>
+			<item>Cocycles</item>
+			<item>CodeGenerators</item>
+			<item>CodePcGroup</item>
+			<item>CodePcgs</item>
+			<item>CoefficientTaylorSeries</item>
+			<item>Coefficients</item>
+			<item>CoefficientsAndMagmaElements</item>
+			<item>CoefficientsFamily</item>
+			<item>CoefficientsMultiadic</item>
+			<item>CoefficientsOfLaurentPolynomial</item>
+			<item>CoefficientsOfUnivariateLaurentPolynomial</item>
+			<item>CoefficientsOfUnivariatePolynomial</item>
+			<item>CoefficientsOfUnivariateRationalFunction</item>
+			<item>CoefficientsOfVector</item>
+			<item>CoefficientsQadic</item>
+			<item>CoefficientsRing</item>
+			<item>CoeffsCyc</item>
+			<item>CoeffsMod</item>
+			<item>CollFamRangeEqFamElms</item>
+			<item>CollFamSourceEqFamElms</item>
+			<item>CollapsedMat</item>
+			<item>CollectPolycyclic</item>
+			<item>CollectUEALatticeElement</item>
+			<item>CollectWord</item>
+			<item>CollectWordOrFail</item>
+			<item>Collected</item>
+			<item>CollectedPartition</item>
+			<item>CollectedWordSQ</item>
+			<item>CollectionsFamily</item>
+			<item>CollectorSQ</item>
+			<item>ColorPrompt</item>
+			<item>ColumnIndexOfReesMatrixSemigroupElement</item>
+			<item>ColumnIndexOfReesZeroMatrixSemigroupElement</item>
+			<item>ColumnsOfReesMatrixSemigroup</item>
+			<item>ColumnsOfReesZeroMatrixSemigroup</item>
+			<item>Combinations</item>
+			<item>CombinationsA</item>
+			<item>CombinationsK</item>
+			<item>CombinatorialCollector</item>
+			<item>CombinatorialCollectorByGenerators</item>
+			<item>CombinatoricSplit</item>
+			<item>Comm</item>
+			<item>CommutGenImgs</item>
+			<item>CommutativeDiagram</item>
+			<item>CommutatorFactorGroup</item>
+			<item>CommutatorLength</item>
+			<item>CommutatorSubgroup</item>
+			<item>Compacted</item>
+			<item>CompanionMat</item>
+			<item>CompareVersionNumbers</item>
+			<item>CompatibleConjugacyClasses</item>
+			<item>CompatibleConjugacyClassesDefault</item>
+			<item>CompatiblePairs</item>
+			<item>CompileFunc</item>
+			<item>ComplementIntMat</item>
+			<item>ComplementSystem</item>
+			<item>Complementclasses</item>
+			<item>ComplementclassesEA</item>
+			<item>ComplementclassesSolvableNC</item>
+			<item>ComplementclassesSolvableWBG</item>
+			<item>CompleteChain</item>
+			<item>CompleteGaloisGroupPElement</item>
+			<item>CompleteOrdersOfRws</item>
+			<item>CompleteSchreierTransversal</item>
+			<item>CompletionBar</item>
+			<item>ComplexConjugate</item>
+			<item>ComplexificationQuat</item>
+			<item>ComponentsOfTuplesFamily</item>
+			<item>ComposedXMLString</item>
+			<item>CompositionMapping</item>
+			<item>CompositionMaps</item>
+			<item>CompositionOfStraightLinePrograms</item>
+			<item>CompositionSeries</item>
+			<item>Compress</item>
+			<item>ComputeTails</item>
+			<item>ComputedAgemos</item>
+			<item>ComputedAscendingChains</item>
+			<item>ComputedBrauerTables</item>
+			<item>ComputedClassFusions</item>
+			<item>ComputedCyclicExtensionsTom</item>
+			<item>ComputedHallSubgroups</item>
+			<item>ComputedIndicators</item>
+			<item>ComputedIsPNilpotents</item>
+			<item>ComputedIsPSolvableCharacterTables</item>
+			<item>ComputedIsPSolvables</item>
+			<item>ComputedOmegas</item>
+			<item>ComputedPCentralSeriess</item>
+			<item>ComputedPCores</item>
+			<item>ComputedPRumps</item>
+			<item>ComputedPowerMaps</item>
+			<item>ComputedPrimeBlockss</item>
+			<item>ComputedSylowComplements</item>
+			<item>ComputedSylowSubgroups</item>
+			<item>ConcatSubos</item>
+			<item>Concatenation</item>
+			<item>Conductor</item>
+			<item>ConfluentRws</item>
+			<item>Congruences</item>
+			<item>ConjugacyClass</item>
+			<item>ConjugacyClassSubgroups</item>
+			<item>ConjugacyClasses</item>
+			<item>ConjugacyClassesByOrbits</item>
+			<item>ConjugacyClassesByRandomSearch</item>
+			<item>ConjugacyClassesFittingFreeGroup</item>
+			<item>ConjugacyClassesForSmallGroup</item>
+			<item>ConjugacyClassesMaximalSubgroups</item>
+			<item>ConjugacyClassesOfNaturalGroup</item>
+			<item>ConjugacyClassesPerfectSubgroups</item>
+			<item>ConjugacyClassesSubgroups</item>
+			<item>ConjugacyClassesSubwreath</item>
+			<item>ConjugacyClassesTry</item>
+			<item>ConjugacyClassesViaRadical</item>
+			<item>ConjugateDominantWeight</item>
+			<item>ConjugateDominantWeightWithWord</item>
+			<item>ConjugateGroup</item>
+			<item>ConjugateMatrixActionToLinearAction</item>
+			<item>ConjugateMatrixGroupToLinearAction</item>
+			<item>ConjugateMatrixGroupToLinearGroup</item>
+			<item>ConjugateStabChain</item>
+			<item>ConjugateSubgroup</item>
+			<item>ConjugateSubgroups</item>
+			<item>ConjugatedModule</item>
+			<item>Conjugates</item>
+			<item>ConjugatingElement</item>
+			<item>ConjugatorAutomorphism</item>
+			<item>ConjugatorAutomorphismNC</item>
+			<item>ConjugatorInnerAutomorphism</item>
+			<item>ConjugatorIsomorphism</item>
+			<item>ConjugatorOfConjugatorIsomorphism</item>
+			<item>ConnectGroupAndCharacterTable</item>
+			<item>ConsiderKernels</item>
+			<item>ConsiderSmallerPowerMaps</item>
+			<item>ConsiderStructureConstants</item>
+			<item>ConsiderTableAutomorphisms</item>
+			<item>ConstantInBaseRingPol</item>
+			<item>ConstantTimeAccessList</item>
+			<item>ConstituentsCompositionMapping</item>
+			<item>ConstituentsOfCharacter</item>
+			<item>ConstituentsPolynomial</item>
+			<item>ContainedCharacters</item>
+			<item>ContainedDecomposables</item>
+			<item>ContainedMaps</item>
+			<item>ContainedPossibleCharacters</item>
+			<item>ContainedPossibleVirtualCharacters</item>
+			<item>ContainedSpecialVectors</item>
+			<item>ContainedTom</item>
+			<item>ContainingTom</item>
+			<item>ContinuedFractionApproximationOfRoot</item>
+			<item>ContinuedFractionExpansionOfRoot</item>
+			<item>ConvertBasicImageGroupElement</item>
+			<item>ConvertToCharacterTable</item>
+			<item>ConvertToCharacterTableNC</item>
+			<item>ConvertToLibTom</item>
+			<item>ConvertToLibraryCharacterTableNC</item>
+			<item>ConvertToMatrixRep</item>
+			<item>ConvertToMatrixRepNC</item>
+			<item>ConvertToNormalFormMonomialElement</item>
+			<item>ConvertToRangeRep</item>
+			<item>ConvertToSiftGroup</item>
+			<item>ConvertToStringRep</item>
+			<item>ConvertToTableOfMarks</item>
+			<item>ConvertToVectorRep</item>
+			<item>ConvertToVectorRepNC</item>
+			<item>ConwayCandidates</item>
+			<item>ConwayPol</item>
+			<item>ConwayPolynomial</item>
+			<item>CopiedAugmentedCosetTable</item>
+			<item>CopyMappingAttributes</item>
+			<item>CopyOptionsDefaults</item>
+			<item>CopyRel</item>
+			<item>CopyStabChain</item>
+			<item>Core</item>
+			<item>CoreInParent</item>
+			<item>CoreOp</item>
+			<item>CorestEval</item>
+			<item>CorrectConjugacyClass</item>
+			<item>CorrespondingGeneratorsByModuloPcgs</item>
+			<item>CorrespondingPermutations</item>
+			<item>CosetLeadersInner</item>
+			<item>CosetLeadersMatFFE</item>
+			<item>CosetNumber</item>
+			<item>CosetRepAsWord</item>
+			<item>CosetTable</item>
+			<item>CosetTableBySubgroup</item>
+			<item>CosetTableDefaultLimit</item>
+			<item>CosetTableDefaultMaxLimit</item>
+			<item>CosetTableFpHom</item>
+			<item>CosetTableFromGensAndRels</item>
+			<item>CosetTableInWholeGroup</item>
+			<item>CosetTableNormalClosure</item>
+			<item>CosetTableNormalClosureInWholeGroup</item>
+			<item>CosetTableOfFpSemigroup</item>
+			<item>CosetTableStandard</item>
+			<item>CoveringTriplesCharacters</item>
+			<item>CrcFile</item>
+			<item>CreateAllCycleStructures</item>
+			<item>CreateCompletionFiles</item>
+			<item>CreateKnuthBendixRewritingSystem</item>
+			<item>CreateOrderingByLtFunction</item>
+			<item>CreateOrderingByLteqFunction</item>
+			<item>CrystGroupDefaultAction</item>
+			<item>CurrentAssertionLevel</item>
+			<item>CycList</item>
+			<item>Cycle</item>
+			<item>CycleByPosOp</item>
+			<item>CycleIndex</item>
+			<item>CycleIndexOp</item>
+			<item>CycleLength</item>
+			<item>CycleLengthOp</item>
+			<item>CycleLengthPermInt</item>
+			<item>CycleLengths</item>
+			<item>CycleLengthsOp</item>
+			<item>CycleOp</item>
+			<item>CyclePermInt</item>
+			<item>CycleStructureClass</item>
+			<item>CycleStructurePerm</item>
+			<item>CycleStructuresGroup</item>
+			<item>Cycles</item>
+			<item>CyclesOp</item>
+			<item>CyclicExtensionsTom</item>
+			<item>CyclicExtensionsTomOp</item>
+			<item>CyclicGroup</item>
+			<item>CyclicGroupCons</item>
+			<item>CyclicTopExtensions</item>
+			<item>CyclotomicField</item>
+			<item>CyclotomicPol</item>
+			<item>CyclotomicPolynomial</item>
+			<item>Cyclotomics</item>
+			<item>CyclotomicsFamily</item>
+			<item>DMYDay</item>
+			<item>DMYhmsSeconds</item>
+			<item>DTCommutator</item>
+			<item>DTConjugate</item>
+			<item>DTMultiply</item>
+			<item>DTPower</item>
+			<item>DTQuotient</item>
+			<item>DTSolution</item>
+			<item>DataObj</item>
+			<item>DataType</item>
+			<item>DayDMY</item>
+			<item>DaysInMonth</item>
+			<item>DaysInYear</item>
+			<item>DeclareAttribute</item>
+			<item>DeclareAttributeKernel</item>
+			<item>DeclareAttributeSuppCT</item>
+			<item>DeclareAutoPackage</item>
+			<item>DeclareAutoreadableVariables</item>
+			<item>DeclareCategory</item>
+			<item>DeclareCategoryCollections</item>
+			<item>DeclareCategoryFamily</item>
+			<item>DeclareCategoryKernel</item>
+			<item>DeclareComponent</item>
+			<item>DeclareConstructor</item>
+			<item>DeclareConstructorKernel</item>
+			<item>DeclareFilter</item>
+			<item>DeclareGlobalFunction</item>
+			<item>DeclareGlobalVariable</item>
+			<item>DeclareHandlingByNiceBasis</item>
+			<item>DeclareInfoClass</item>
+			<item>DeclareOperation</item>
+			<item>DeclareOperationKernel</item>
+			<item>DeclarePackage</item>
+			<item>DeclarePackageAutoDocumentation</item>
+			<item>DeclarePackageDocumentation</item>
+			<item>DeclareProperty</item>
+			<item>DeclarePropertyKernel</item>
+			<item>DeclarePropertySuppCT</item>
+			<item>DeclareRepresentation</item>
+			<item>DeclareRepresentationKernel</item>
+			<item>DeclareSynonym</item>
+			<item>DeclareSynonymAttr</item>
+			<item>DecodeTree</item>
+			<item>DecodedTreeEntry</item>
+			<item>DecomposeEltIntoPElts</item>
+			<item>DecomposeTensorProduct</item>
+			<item>DecomposedFixedPointVector</item>
+			<item>DecomposedRationalClass</item>
+			<item>Decomposition</item>
+			<item>DecompositionInt</item>
+			<item>DecompositionMatrix</item>
+			<item>DecompositionTypes</item>
+			<item>DecompositionTypesOfGroup</item>
+			<item>Decreased</item>
+			<item>DeepThoughtCollector</item>
+			<item>DeepThoughtCollectorByGenerators</item>
+			<item>DefaultField</item>
+			<item>DefaultFieldByGenerators</item>
+			<item>DefaultFieldOfMatrix</item>
+			<item>DefaultFieldOfMatrixGroup</item>
+			<item>DefaultHashLength</item>
+			<item>DefaultPackageBannerString</item>
+			<item>DefaultRing</item>
+			<item>DefaultRingByGenerators</item>
+			<item>DefaultSparseHashRepType</item>
+			<item>DefaultSparseHashWithIKRepType</item>
+			<item>DefaultStabChainOptions</item>
+			<item>DefectApproximation</item>
+			<item>DefineNewGenerators</item>
+			<item>DefiningPcgs</item>
+			<item>DefiningPolynomial</item>
+			<item>DefiningQuotientHomomorphism</item>
+			<item>Degree</item>
+			<item>DegreeAction</item>
+			<item>DegreeFFE</item>
+			<item>DegreeIndeterminate</item>
+			<item>DegreeNaturalHomomorphismsPool</item>
+			<item>DegreeOfBinaryRelation</item>
+			<item>DegreeOfCharacter</item>
+			<item>DegreeOfLaurentPolynomial</item>
+			<item>DegreeOfMatrixGroup</item>
+			<item>DegreeOfTransformation</item>
+			<item>DegreeOfTransformationSemigroup</item>
+			<item>DegreeOfUnivariateLaurentPolynomial</item>
+			<item>DegreeOperation</item>
+			<item>DegreeOverPrimeField</item>
+			<item>DeleteImage</item>
+			<item>Delta</item>
+			<item>DenominatorCyc</item>
+			<item>DenominatorOfModuloPcgs</item>
+			<item>DenominatorOfRationalFunction</item>
+			<item>DenominatorRat</item>
+			<item>DenseHashTable</item>
+			<item>DenseIntKey</item>
+			<item>DepthOfPcElement</item>
+			<item>DepthOfUpperTriangularMatrix</item>
+			<item>DepthSchreierTrees</item>
+			<item>Derangements</item>
+			<item>DerangementsK</item>
+			<item>Derivations</item>
+			<item>Derivative</item>
+			<item>DerivedLength</item>
+			<item>DerivedSeries</item>
+			<item>DerivedSeriesOfGroup</item>
+			<item>DerivedSubgroup</item>
+			<item>DerivedSubgroupTom</item>
+			<item>DerivedSubgroupsTom</item>
+			<item>DerivedSubgroupsTomPossible</item>
+			<item>DerivedSubgroupsTomUnique</item>
+			<item>DescendingListWithElementRemoved</item>
+			<item>DescriptionOfNormalizedUEAElement</item>
+			<item>DescriptionOfRootOfUnity</item>
+			<item>Determinant</item>
+			<item>DeterminantIntMat</item>
+			<item>DeterminantMat</item>
+			<item>DeterminantMatDestructive</item>
+			<item>DeterminantMatDivFree</item>
+			<item>DeterminantOfCharacter</item>
+			<item>DiagonalMat</item>
+			<item>DiagonalOfMat</item>
+			<item>DiagonalSocleAction</item>
+			<item>DiagonalizeIntMat</item>
+			<item>DiagonalizeIntMatNormDriven</item>
+			<item>DiagonalizeMat</item>
+			<item>DictionariesFamily</item>
+			<item>DictionaryByList</item>
+			<item>DictionaryByPosition</item>
+			<item>DictionaryBySort</item>
+			<item>DiffCoc</item>
+			<item>Difference</item>
+			<item>DifferenceBlist</item>
+			<item>DifferenceLists</item>
+			<item>DifferenceOfPcElement</item>
+			<item>DigitsNumber</item>
+			<item>DihedralGenerators</item>
+			<item>DihedralGroup</item>
+			<item>DihedralGroupCons</item>
+			<item>Dimension</item>
+			<item>DimensionOfHighestWeightModule</item>
+			<item>DimensionOfMatrixGroup</item>
+			<item>DimensionOfVectors</item>
+			<item>DimensionsLoewyFactors</item>
+			<item>DimensionsMat</item>
+			<item>DirProdTransversal</item>
+			<item>DirectFactorsOfGroup</item>
+			<item>DirectProduct</item>
+			<item>DirectProductDecompositionsLocal</item>
+			<item>DirectProductInfo</item>
+			<item>DirectProductOp</item>
+			<item>DirectSumDecomposition</item>
+			<item>DirectSumMat</item>
+			<item>DirectSumOfAlgebraModules</item>
+			<item>DirectSumOfAlgebras</item>
+			<item>DirectoriesFamily</item>
+			<item>DirectoriesLibrary</item>
+			<item>DirectoriesPackageLibrary</item>
+			<item>DirectoriesPackagePrograms</item>
+			<item>DirectoriesSystemPrograms</item>
+			<item>Directory</item>
+			<item>DirectoryContents</item>
+			<item>DirectoryCurrent</item>
+			<item>DirectoryTemporary</item>
+			<item>DirectoryType</item>
+			<item>DisableAttributeValueStoring</item>
+			<item>Discriminant</item>
+			<item>Display</item>
+			<item>DisplayCacheStats</item>
+			<item>DisplayCompositionSeries</item>
+			<item>DisplayEggBoxOfDClass</item>
+			<item>DisplayImfInvariants</item>
+			<item>DisplayImfReps</item>
+			<item>DisplayInformationPerfectGroups</item>
+			<item>DisplayOptions</item>
+			<item>DisplayOptionsStack</item>
+			<item>DisplayProfile</item>
+			<item>DisplayRevision</item>
+			<item>DisplaySemigroup</item>
+			<item>DisplayXMLStructure</item>
+			<item>DistVecClosVecLib</item>
+			<item>DistanceVecFFE</item>
+			<item>DistancesDistributionMatFFEVecFFE</item>
+			<item>DistancesDistributionVecFFEsVecFFE</item>
+			<item>DivisionRingByGenerators</item>
+			<item>DivisorsInt</item>
+			<item>DivisorsIntCache</item>
+			<item>DixonInit</item>
+			<item>DixonRecord</item>
+			<item>DixonRepChi</item>
+			<item>DixonRepGHchi</item>
+			<item>DixonSplit</item>
+			<item>DixontinI</item>
+			<item>DnLattice</item>
+			<item>DnLatticeIterative</item>
+			<item>DoAlgebraicExt</item>
+			<item>DoCentralSeriesPcgsIfNilpot</item>
+			<item>DoCheapActionImages</item>
+			<item>DoCheapOperationImages</item>
+			<item>DoClosurePrmGp</item>
+			<item>DoEASLS</item>
+			<item>DoExponentsConjLayerFampcgs</item>
+			<item>DoFactorCosetAction</item>
+			<item>DoGaloisType</item>
+			<item>DoImmutableMatrix</item>
+			<item>DoInducedPcgsByPcSequenceNC</item>
+			<item>DoLogModRho</item>
+			<item>DoLowIndexSubgroupsFpGroup</item>
+			<item>DoMulExt</item>
+			<item>DoNFIM</item>
+			<item>DoNormalClosurePermGroup</item>
+			<item>DoNormalizerSA</item>
+			<item>DoPcgsElementaryAbelianSeries</item>
+			<item>DoPcgsOrbitOp</item>
+			<item>DoPrintUnivariateLaurent</item>
+			<item>DoReadPkg</item>
+			<item>DoRereadPkg</item>
+			<item>DoRightTransversalPc</item>
+			<item>DoShortwordBasepoint</item>
+			<item>DoSnAnGiantTest</item>
+			<item>DoSparseActionHomomorphism</item>
+			<item>DoSparseLinearActionOnFaithfulSubset</item>
+			<item>DoTest</item>
+			<item>DoUnivTestRatfun</item>
+			<item>Domain</item>
+			<item>DomainByGenerators</item>
+			<item>DomainForAction</item>
+			<item>DominantCharacter</item>
+			<item>DominantWeights</item>
+			<item>DoubleCentralizerOrbit</item>
+			<item>DoubleCoset</item>
+			<item>DoubleCosetRepsAndSizes</item>
+			<item>DoubleCosets</item>
+			<item>DoubleCosetsNC</item>
+			<item>DoubleCosetsPcGroup</item>
+			<item>DoubleHashArraySize</item>
+			<item>DoubleHashDictSize</item>
+			<item>DownEnv</item>
+			<item>DualGModule</item>
+			<item>DumpWorkspace</item>
+			<item>DuplicateFreeList</item>
+			<item>DxActiveCols</item>
+			<item>DxCalcAllPowerMaps</item>
+			<item>DxCalcPrimeClasses</item>
+			<item>DxDegreeCandidates</item>
+			<item>DxEigenbase</item>
+			<item>DxFrobSchurInd</item>
+			<item>DxGaloisOrbits</item>
+			<item>DxGeneratePrimeCyclotomic</item>
+			<item>DxIncludeIrreducibles</item>
+			<item>DxIsInSpace</item>
+			<item>DxLiftCharacter</item>
+			<item>DxLinearCharacters</item>
+			<item>DxModProduct</item>
+			<item>DxModularValuePol</item>
+			<item>DxNiceBasis</item>
+			<item>DxPreparation</item>
+			<item>DxRegisterModularChar</item>
+			<item>DxSplitDegree</item>
+			<item>EANormalSeriesByPcgs</item>
+			<item>EAPrimeLayerSQ</item>
+			<item>ERepAssWorInv</item>
+			<item>ERepAssWorProd</item>
+			<item>ERepLettWord</item>
+			<item>Earns</item>
+			<item>Edit</item>
+			<item>EggBoxOfDClass</item>
+			<item>EichlerTransformation</item>
+			<item>Eigenspaces</item>
+			<item>Eigenvalues</item>
+			<item>EigenvaluesChar</item>
+			<item>Eigenvectors</item>
+			<item>ElementByRws</item>
+			<item>ElementOfFpAlgebra</item>
+			<item>ElementOfFpGroup</item>
+			<item>ElementOfFpMonoid</item>
+			<item>ElementOfFpSemigroup</item>
+			<item>ElementOfMagmaRing</item>
+			<item>ElementOrdersPowerMap</item>
+			<item>ElementProperty</item>
+			<item>ElementTestFunction</item>
+			<item>ElementaryAbelianGroup</item>
+			<item>ElementaryAbelianGroupCons</item>
+			<item>ElementaryAbelianSeries</item>
+			<item>ElementaryAbelianSeriesLargeSteps</item>
+			<item>ElementaryAbelianSubseries</item>
+			<item>ElementaryDivisorsMat</item>
+			<item>ElementaryDivisorsMatDestructive</item>
+			<item>Elements</item>
+			<item>ElementsFamily</item>
+			<item>ElementsStabChain</item>
+			<item>EliminatedWord</item>
+			<item>EliminationOrdering</item>
+			<item>ElmDivRingElm</item>
+			<item>ElmTimesRingElm</item>
+			<item>ElmWPObj</item>
+			<item>ElsymsPowersums</item>
+			<item>Embedding</item>
+			<item>EmptyBinaryRelation</item>
+			<item>EmptyMatrix</item>
+			<item>EmptyRBase</item>
+			<item>EmptyRowVector</item>
+			<item>EmptySCTable</item>
+			<item>EmptyStabChain</item>
+			<item>EmptyTuplesFamily</item>
+			<item>EnableAttributeValueStoring</item>
+			<item>End</item>
+			<item>EndoMappingByTransformation</item>
+			<item>EnumerateIndependentAbelianProducts</item>
+			<item>Enumerator</item>
+			<item>EnumeratorByBasis</item>
+			<item>EnumeratorByFunctions</item>
+			<item>EnumeratorByPcgs</item>
+			<item>EnumeratorOfAdditiveMagma</item>
+			<item>EnumeratorOfGroup</item>
+			<item>EnumeratorOfIdeal</item>
+			<item>EnumeratorOfMagma</item>
+			<item>EnumeratorOfMagmaIdeal</item>
+			<item>EnumeratorOfNormedRowVectors</item>
+			<item>EnumeratorOfPrimeField</item>
+			<item>EnumeratorOfRing</item>
+			<item>EnumeratorOfSemigroupIdeal</item>
+			<item>EnumeratorOfSubset</item>
+			<item>EnumeratorOfTrivialAdditiveMagmaWithZero</item>
+			<item>EnumeratorOfTrivialMagmaWithOne</item>
+			<item>EnumeratorOfTuples</item>
+			<item>EnumeratorOfZmodnZ</item>
+			<item>EnumeratorSorted</item>
+			<item>EnvelopingAlgebra</item>
+			<item>EpiPcByModpcgs</item>
+			<item>EpimorphismNilpotentQuotient</item>
+			<item>EpimorphismNilpotentQuotientOp</item>
+			<item>EpimorphismPGroup</item>
+			<item>EpimorphismQuotientSystem</item>
+			<item>EpimorphismSchurCover</item>
+			<item>EqualBoxedObj</item>
+			<item>EquivalenceClassOfElement</item>
+			<item>EquivalenceClassOfElementNC</item>
+			<item>EquivalenceClassRelation</item>
+			<item>EquivalenceClasses</item>
+			<item>EquivalenceRelationByPairs</item>
+			<item>EquivalenceRelationByPairsNC</item>
+			<item>EquivalenceRelationByPartition</item>
+			<item>EquivalenceRelationByPartitionNC</item>
+			<item>EquivalenceRelationByProperty</item>
+			<item>EquivalenceRelationByRelation</item>
+			<item>EquivalenceRelationPartition</item>
+			<item>EquivalenceType</item>
+			<item>Error</item>
+			<item>ErrorCount</item>
+			<item>EspaceBasePoints</item>
+			<item>EuclideanDegree</item>
+			<item>EuclideanQuotient</item>
+			<item>EuclideanRemainder</item>
+			<item>EulerianFunction</item>
+			<item>EulerianFunctionByTom</item>
+			<item>EvalF</item>
+			<item>EvalFpCoc</item>
+			<item>EvalStraightLineProgElm</item>
+			<item>EvalString</item>
+			<item>EvaluateConsistency</item>
+			<item>EvaluateOverlapANA</item>
+			<item>EvaluateOverlapBAN</item>
+			<item>EvaluateOverlapBNA</item>
+			<item>EvaluateOverlapCBA</item>
+			<item>EvaluateRelation</item>
+			<item>EvaluateRelators</item>
+			<item>EvectBasePoints</item>
+			<item>ExactSizeConsiderFunction</item>
+			<item>ExcludeFromAutoload</item>
+			<item>ExcludedOrders</item>
+			<item>Exec</item>
+			<item>ExecuteProcess</item>
+			<item>ExpPcElmSortedFun</item>
+			<item>Exponent</item>
+			<item>ExponentOfPcElement</item>
+			<item>ExponentOfPowering</item>
+			<item>ExponentSumWord</item>
+			<item>ExponentSums</item>
+			<item>ExponentSyllable</item>
+			<item>ExponentsConjugateLayer</item>
+			<item>ExponentsOfCommutator</item>
+			<item>ExponentsOfConjugate</item>
+			<item>ExponentsOfPcElement</item>
+			<item>ExponentsOfPcElementPermGroup</item>
+			<item>ExponentsOfRelativePower</item>
+			<item>ExportToKernelFinished</item>
+			<item>ExtOrbStabDom</item>
+			<item>ExtRepByTailVector</item>
+			<item>ExtRepDenominatorRatFun</item>
+			<item>ExtRepNumeratorRatFun</item>
+			<item>ExtRepOfObj</item>
+			<item>ExtRepPolynomialRatFun</item>
+			<item>ExtendRepresentation</item>
+			<item>ExtendSchreierTransversal</item>
+			<item>ExtendSchreierTransversalShortCube</item>
+			<item>ExtendSchreierTransversalShortTree</item>
+			<item>ExtendSeriesPermGroup</item>
+			<item>ExtendStabChain</item>
+			<item>ExtendToBasis</item>
+			<item>ExtendedGroup</item>
+			<item>ExtendedIntersectionSumPcgs</item>
+			<item>ExtendedPcgs</item>
+			<item>ExtendedT</item>
+			<item>ExtendedVectors</item>
+			<item>Extension</item>
+			<item>ExtensionNC</item>
+			<item>ExtensionOnBlocks</item>
+			<item>ExtensionRepresentatives</item>
+			<item>ExtensionSQ</item>
+			<item>Extensions</item>
+			<item>ExtensionsOfModule</item>
+			<item>ExteriorPower</item>
+			<item>ExteriorPowerOfAlgebraModule</item>
+			<item>ExternalOrbit</item>
+			<item>ExternalOrbitOp</item>
+			<item>ExternalOrbits</item>
+			<item>ExternalOrbitsStabilizers</item>
+			<item>ExternalSet</item>
+			<item>ExternalSetByFilterConstructor</item>
+			<item>ExternalSetByTypeConstructor</item>
+			<item>ExternalSubset</item>
+			<item>ExternalSubsetOp</item>
+			<item>Extract</item>
+			<item>ExtraspecialGroup</item>
+			<item>ExtraspecialGroupCons</item>
+			<item>FFEFamily</item>
+			<item>FFPFactors</item>
+			<item>FFPOrderKnownDividend</item>
+			<item>FFPPowerModCheck</item>
+			<item>FFPUpperBoundOrder</item>
+			<item>FLMLORByGenerators</item>
+			<item>FLMLORFromFFE</item>
+			<item>FLMLORWithOne</item>
+			<item>FLMLORWithOneByGenerators</item>
+			<item>FMRRemoveZero</item>
+			<item>FactorCosetAction</item>
+			<item>FactorCosetOperation</item>
+			<item>FactorFreeAlgebraByRelators</item>
+			<item>FactorFreeGroupByRelators</item>
+			<item>FactorFreeMonoidByRelations</item>
+			<item>FactorFreeSemigroupByRelations</item>
+			<item>FactorGroup</item>
+			<item>FactorGroupFpGroupByRels</item>
+			<item>FactorGroupNC</item>
+			<item>FactorGroupNormalSubgroupClasses</item>
+			<item>FactorGroupTom</item>
+			<item>FactorSemigroup</item>
+			<item>FactorSemigroupByClosure</item>
+			<item>Factorial</item>
+			<item>Factorization</item>
+			<item>Factors</item>
+			<item>FactorsCommonDegreePol</item>
+			<item>FactorsInt</item>
+			<item>FactorsOfDirectProduct</item>
+			<item>FactorsRho</item>
+			<item>FactorsSquarefree</item>
+			<item>FaithfulModule</item>
+			<item>FamElmEqFamRange</item>
+			<item>FamElmEqFamSource</item>
+			<item>FamMapFamSourceFamRange</item>
+			<item>FamRangeEqFamElm</item>
+			<item>FamRangeNotEqFamElm</item>
+			<item>FamSourceEqFamElm</item>
+			<item>FamSourceNotEqFamElm</item>
+			<item>FamSourceRgtEqFamsLft</item>
+			<item>FamiliesOfGeneralMappingsAndRanges</item>
+			<item>FamiliesOfRows</item>
+			<item>FamilyForOrdering</item>
+			<item>FamilyForRewritingSystem</item>
+			<item>FamilyObj</item>
+			<item>FamilyOfFamilies</item>
+			<item>FamilyOfTypes</item>
+			<item>FamilyPcgs</item>
+			<item>FamilyRange</item>
+			<item>FamilySource</item>
+			<item>FamilyType</item>
+			<item>FastExtSQ</item>
+			<item>Fibonacci</item>
+			<item>FibonacciGroup</item>
+			<item>Field</item>
+			<item>FieldByGenerators</item>
+			<item>FieldExtension</item>
+			<item>FieldOfMatrixGroup</item>
+			<item>FieldOfMatrixList</item>
+			<item>FieldOverItselfByGenerators</item>
+			<item>FileDescriptorOfStream</item>
+			<item>FileString</item>
+			<item>Filename</item>
+			<item>FilterSGMLMarkup</item>
+			<item>Filtered</item>
+			<item>FilteredOp</item>
+			<item>FinIndexCyclicSubgroupGenerator</item>
+			<item>FindActionKernel</item>
+			<item>FindBag</item>
+			<item>FindLayer</item>
+			<item>FindNewReps</item>
+			<item>FindNormalCSPG</item>
+			<item>FindOperationKernel</item>
+			<item>FindRegularNormalCSPG</item>
+			<item>FindWindowId</item>
+			<item>Fingerprint</item>
+			<item>FingerprintFF</item>
+			<item>FingerprintLarge</item>
+			<item>FingerprintMedium</item>
+			<item>FingerprintPerm</item>
+			<item>FingerprintSmall</item>
+			<item>FiniteField</item>
+			<item>First</item>
+			<item>FirstOp</item>
+			<item>FittingSubgroup</item>
+			<item>FixcellPoint</item>
+			<item>Fixcells</item>
+			<item>FixcellsCell</item>
+			<item>FixedPointSpace</item>
+			<item>FixpointCellNo</item>
+			<item>FlagsFamily</item>
+			<item>FlagsObj</item>
+			<item>FlagsType</item>
+			<item>Flat</item>
+			<item>FlatBlockMat</item>
+			<item>FlatHashParams</item>
+			<item>FloatsFamily</item>
+			<item>FlushCaches</item>
+			<item>ForAll</item>
+			<item>ForAllOp</item>
+			<item>ForAny</item>
+			<item>ForAnyOp</item>
+			<item>FormatParagraph</item>
+			<item>FormattedString</item>
+			<item>FpAlgebraByGeneralizedCartanMatrix</item>
+			<item>FpElmComparisonMethod</item>
+			<item>FpElmEqualityMethod</item>
+			<item>FpElmKBRWS</item>
+			<item>FpGroupPcGroupSQ</item>
+			<item>FpGroupPresentation</item>
+			<item>FpGrpMonSmgOfFpGrpMonSmgElement</item>
+			<item>FpLieAlgebraByCartanMatrix</item>
+			<item>FpLieAlgebraEnumeration</item>
+			<item>FpMonoidOfElementOfFpMonoid</item>
+			<item>FpOfModules</item>
+			<item>FpSemigroupOfElementOfFpSemigroup</item>
+			<item>FptoSCAMorphismImageElm</item>
+			<item>FrattiniSubgroup</item>
+			<item>FrattinifactorId</item>
+			<item>FrattinifactorSize</item>
+			<item>FreeAlgebra</item>
+			<item>FreeAlgebraConstructor</item>
+			<item>FreeAlgebraOfFpAlgebra</item>
+			<item>FreeAlgebraWithOne</item>
+			<item>FreeAssociativeAlgebra</item>
+			<item>FreeAssociativeAlgebraWithOne</item>
+			<item>FreeGeneratorsOfFpAlgebra</item>
+			<item>FreeGeneratorsOfFpGroup</item>
+			<item>FreeGeneratorsOfFpMonoid</item>
+			<item>FreeGeneratorsOfFpSemigroup</item>
+			<item>FreeGeneratorsOfWholeGroup</item>
+			<item>FreeGroup</item>
+			<item>FreeGroupOfBasicImageGroup</item>
+			<item>FreeGroupOfElt</item>
+			<item>FreeGroupOfFpGroup</item>
+			<item>FreeLeftModule</item>
+			<item>FreeLieAlgebra</item>
+			<item>FreeMagma</item>
+			<item>FreeMagmaRing</item>
+			<item>FreeMagmaWithOne</item>
+			<item>FreeMonoid</item>
+			<item>FreeMonoidNatHomByGeneratorsNC</item>
+			<item>FreeMonoidOfFpMonoid</item>
+			<item>FreeMonoidOfRewritingSystem</item>
+			<item>FreeSemigroup</item>
+			<item>FreeSemigroupNatHomByGeneratorsNC</item>
+			<item>FreeSemigroupOfFpSemigroup</item>
+			<item>FreeSemigroupOfRewritingSystem</item>
+			<item>FreeStructureOfRewritingSystem</item>
+			<item>FrobeniusAutomorphism</item>
+			<item>FrobeniusAutomorphismI</item>
+			<item>FrobeniusCharacterValue</item>
+			<item>FullMatrixAlgebra</item>
+			<item>FullMatrixAlgebraCentralizer</item>
+			<item>FullMatrixFLMLOR</item>
+			<item>FullMatrixLieAlgebra</item>
+			<item>FullMatrixLieFLMLOR</item>
+			<item>FullMatrixModule</item>
+			<item>FullMatrixSpace</item>
+			<item>FullRowModule</item>
+			<item>FullRowSpace</item>
+			<item>FullSparseRowSpace</item>
+			<item>FullTransformationSemigroup</item>
+			<item>FunctionAction</item>
+			<item>FunctionsFamily</item>
+			<item>FusionCharTableTom</item>
+			<item>FusionConjugacyClasses</item>
+			<item>FusionConjugacyClassesOp</item>
+			<item>FusionRationalClassesPSubgroup</item>
+			<item>FusionsAllowedByRestrictions</item>
+			<item>FusionsOfLibTom</item>
+			<item>FusionsToLibTom</item>
+			<item>FusionsTom</item>
+			<item>GAPDocManualLab</item>
+			<item>GAPInfo</item>
+			<item>GInverses</item>
+			<item>GLDegree</item>
+			<item>GLUnderlyingField</item>
+			<item>GModuleByMats</item>
+			<item>GPartitions</item>
+			<item>GPartitionsEasy</item>
+			<item>GPartitionsGreatestEQ</item>
+			<item>GPartitionsGreatestEQHelper</item>
+			<item>GPartitionsGreatestLE</item>
+			<item>GPartitionsGreatestLEEasy</item>
+			<item>GPartitionsNrParts</item>
+			<item>GPartitionsNrPartsHelper</item>
+			<item>GQuotients</item>
+			<item>GaloisConjugates</item>
+			<item>GaloisCyc</item>
+			<item>GaloisDiffResolvent</item>
+			<item>GaloisField</item>
+			<item>GaloisGroup</item>
+			<item>GaloisMat</item>
+			<item>GaloisSetResolvent</item>
+			<item>GaloisStabilizer</item>
+			<item>GaloisType</item>
+			<item>GapInputPcGroup</item>
+			<item>GapInputSCTable</item>
+			<item>GasmanLimits</item>
+			<item>GasmanMessageStatus</item>
+			<item>GasmanStatistics</item>
+			<item>GaussianIntegers</item>
+			<item>GaussianRationals</item>
+			<item>Gcd</item>
+			<item>GcdCoeffs</item>
+			<item>GcdInt</item>
+			<item>GcdOp</item>
+			<item>GcdRepresentation</item>
+			<item>GcdRepresentationOp</item>
+			<item>Gcdex</item>
+			<item>GeneralLinearGroup</item>
+			<item>GeneralLinearGroupCons</item>
+			<item>GeneralMappingByElements</item>
+			<item>GeneralMappingsFamily</item>
+			<item>GeneralOrthogonalGroup</item>
+			<item>GeneralOrthogonalGroupCons</item>
+			<item>GeneralStepClEANS</item>
+			<item>GeneralStepClEANSNonsolv</item>
+			<item>GeneralUnitaryGroup</item>
+			<item>GeneralUnitaryGroupCons</item>
+			<item>GeneralisedEigenspaces</item>
+			<item>GeneralisedEigenvalues</item>
+			<item>GeneralizedEigenspaces</item>
+			<item>GeneralizedEigenvalues</item>
+			<item>GeneralizedPcgs</item>
+			<item>GeneratingPairsOfLeftMagmaCongruence</item>
+			<item>GeneratingPairsOfMagmaCongruence</item>
+			<item>GeneratingPairsOfRightMagmaCongruence</item>
+			<item>GeneratingPairsOfSemigroupCongruence</item>
+			<item>GeneratingSetIsComplete</item>
+			<item>GeneratorNumberOfQuotient</item>
+			<item>GeneratorOfCyclicGroup</item>
+			<item>GeneratorSyllable</item>
+			<item>GeneratorTranslationAugmentedCosetTable</item>
+			<item>GeneratorsCenterPGroup</item>
+			<item>GeneratorsCentrePGroup</item>
+			<item>GeneratorsListTom</item>
+			<item>GeneratorsOfAdditiveGroup</item>
+			<item>GeneratorsOfAdditiveMagma</item>
+			<item>GeneratorsOfAdditiveMagmaWithInverses</item>
+			<item>GeneratorsOfAdditiveMagmaWithZero</item>
+			<item>GeneratorsOfAlgebra</item>
+			<item>GeneratorsOfAlgebraModule</item>
+			<item>GeneratorsOfAlgebraWithOne</item>
+			<item>GeneratorsOfDivisionRing</item>
+			<item>GeneratorsOfDomain</item>
+			<item>GeneratorsOfEquivalenceRelationPartition</item>
+			<item>GeneratorsOfExtASet</item>
+			<item>GeneratorsOfExtLSet</item>
+			<item>GeneratorsOfExtRSet</item>
+			<item>GeneratorsOfExtUSet</item>
+			<item>GeneratorsOfFLMLOR</item>
+			<item>GeneratorsOfFLMLORWithOne</item>
+			<item>GeneratorsOfField</item>
+			<item>GeneratorsOfGroup</item>
+			<item>GeneratorsOfIdeal</item>
+			<item>GeneratorsOfLayer</item>
+			<item>GeneratorsOfLeftIdeal</item>
+			<item>GeneratorsOfLeftMagmaIdeal</item>
+			<item>GeneratorsOfLeftModule</item>
+			<item>GeneratorsOfLeftOperatorAdditiveGroup</item>
+			<item>GeneratorsOfLeftOperatorRing</item>
+			<item>GeneratorsOfLeftOperatorRingWithOne</item>
+			<item>GeneratorsOfLeftVectorSpace</item>
+			<item>GeneratorsOfMagma</item>
+			<item>GeneratorsOfMagmaIdeal</item>
+			<item>GeneratorsOfMagmaWithInverses</item>
+			<item>GeneratorsOfMagmaWithOne</item>
+			<item>GeneratorsOfMonoid</item>
+			<item>GeneratorsOfNearAdditiveGroup</item>
+			<item>GeneratorsOfNearAdditiveMagma</item>
+			<item>GeneratorsOfNearAdditiveMagmaWithInverses</item>
+			<item>GeneratorsOfNearAdditiveMagmaWithZero</item>
+			<item>GeneratorsOfPresentation</item>
+			<item>GeneratorsOfRightIdeal</item>
+			<item>GeneratorsOfRightMagmaIdeal</item>
+			<item>GeneratorsOfRightModule</item>
+			<item>GeneratorsOfRightOperatorAdditiveGroup</item>
+			<item>GeneratorsOfRing</item>
+			<item>GeneratorsOfRingForIdeal</item>
+			<item>GeneratorsOfRingWithOne</item>
+			<item>GeneratorsOfRws</item>
+			<item>GeneratorsOfSemigroup</item>
+			<item>GeneratorsOfSemiring</item>
+			<item>GeneratorsOfSemiringWithOne</item>
+			<item>GeneratorsOfSemiringWithOneAndZero</item>
+			<item>GeneratorsOfSemiringWithZero</item>
+			<item>GeneratorsOfTwoSidedIdeal</item>
+			<item>GeneratorsOfVectorSpace</item>
+			<item>GeneratorsOverIntersection</item>
+			<item>GeneratorsPrimeResidues</item>
+			<item>GeneratorsSmallest</item>
+			<item>GeneratorsSmallestStab</item>
+			<item>GeneratorsSubgroupsTom</item>
+			<item>GenericFindActionKernel</item>
+			<item>GetChars</item>
+			<item>GetCommutatorNC</item>
+			<item>GetConjugateNC</item>
+			<item>GetDefinitionNC</item>
+			<item>GetETag</item>
+			<item>GetElement</item>
+			<item>GetEnt</item>
+			<item>GetFusionMap</item>
+			<item>GetHashEntry</item>
+			<item>GetHashEntryAtLastIndex</item>
+			<item>GetHashEntryIndex</item>
+			<item>GetMax</item>
+			<item>GetNaturalHomomorphismsPool</item>
+			<item>GetNumRight</item>
+			<item>GetPols</item>
+			<item>GetPowerNC</item>
+			<item>GetSTag</item>
+			<item>GetWord</item>
+			<item>GiveNumbersNIndeterminates</item>
+			<item>GlasbyCover</item>
+			<item>GlasbyIntersection</item>
+			<item>GlasbyShift</item>
+			<item>GlasbyStabilizer</item>
+			<item>GlobalPartitionOfClasses</item>
+			<item>Grading</item>
+			<item>GreensDClassOfElement</item>
+			<item>GreensDClasses</item>
+			<item>GreensDRelation</item>
+			<item>GreensHClassOfElement</item>
+			<item>GreensHClasses</item>
+			<item>GreensHRelation</item>
+			<item>GreensJClassOfElement</item>
+			<item>GreensJClasses</item>
+			<item>GreensJRelation</item>
+			<item>GreensLClassOfElement</item>
+			<item>GreensLClasses</item>
+			<item>GreensLRelation</item>
+			<item>GreensRClassOfElement</item>
+			<item>GreensRClasses</item>
+			<item>GreensRRelation</item>
+			<item>GroebnerBasis</item>
+			<item>GroebnerBasisNC</item>
+			<item>Group</item>
+			<item>GroupByGenerators</item>
+			<item>GroupByMultiplicationTable</item>
+			<item>GroupByNiceMonomorphism</item>
+			<item>GroupByPcgs</item>
+			<item>GroupByPrimeResidues</item>
+			<item>GroupByQuotientSystem</item>
+			<item>GroupByRws</item>
+			<item>GroupByRwsNC</item>
+			<item>GroupFromAdditiveGroup</item>
+			<item>GroupGeneralMappingByImages</item>
+			<item>GroupHClassOfGreensDClass</item>
+			<item>GroupHomomorphismByFunction</item>
+			<item>GroupHomomorphismByImages</item>
+			<item>GroupHomomorphismByImagesNC</item>
+			<item>GroupMethodByNiceMonomorphism</item>
+			<item>GroupMethodByNiceMonomorphismCollColl</item>
+			<item>GroupMethodByNiceMonomorphismCollElm</item>
+			<item>GroupMethodByNiceMonomorphismCollOther</item>
+			<item>GroupOfPcgs</item>
+			<item>GroupOnSubgroupsOrbit</item>
+			<item>GroupRing</item>
+			<item>GroupSeriesMethodByNiceMonomorphism</item>
+			<item>GroupSeriesMethodByNiceMonomorphismCollColl</item>
+			<item>GroupSeriesMethodByNiceMonomorphismCollElm</item>
+			<item>GroupSeriesMethodByNiceMonomorphismCollOther</item>
+			<item>GroupStabChain</item>
+			<item>GroupString</item>
+			<item>GroupToAdditiveGroupHomomorphismByFunction</item>
+			<item>GroupWithGenerators</item>
+			<item>HMSMSec</item>
+			<item>HallSubgroup</item>
+			<item>HallSubgroupOp</item>
+			<item>HallSystem</item>
+			<item>HasANonReesCongruenceOfSemigroup</item>
+			<item>HasAbelianFactorGroup</item>
+			<item>HasAbelianInvariants</item>
+			<item>HasAbelianInvariantsOfList</item>
+			<item>HasAbsoluteValue</item>
+			<item>HasActingDomain</item>
+			<item>HasActionHomomorphismAttr</item>
+			<item>HasActionKernelExternalSet</item>
+			<item>HasActorOfExternalSet</item>
+			<item>HasAdditiveElementAsMultiplicativeElement</item>
+			<item>HasAdditiveElementsAsMultiplicativeElementsFamily</item>
+			<item>HasAdditiveInverse</item>
+			<item>HasAdditiveInverseAttr</item>
+			<item>HasAdditiveInverseImmutable</item>
+			<item>HasAdditiveNeutralElement</item>
+			<item>HasAdditivelyActingDomain</item>
+			<item>HasAdjointBasis</item>
+			<item>HasAdjointModule</item>
+			<item>HasAlgebraicElementsFamilies</item>
+			<item>HasAllBlocks</item>
+			<item>HasAlpha</item>
+			<item>HasAlternatingDegree</item>
+			<item>HasAlternatingSubgroup</item>
+			<item>HasAsDuplicateFreeList</item>
+			<item>HasAsGroup</item>
+			<item>HasAsGroupGeneralMappingByImages</item>
+			<item>HasAsLeftModuleGeneralMappingByImages</item>
+			<item>HasAsList</item>
+			<item>HasAsMagma</item>
+			<item>HasAsMonoid</item>
+			<item>HasAsNearRing</item>
+			<item>HasAsPolynomial</item>
+			<item>HasAsRing</item>
+			<item>HasAsSSortedList</item>
+			<item>HasAsSemigroup</item>
+			<item>HasAsSemiring</item>
+			<item>HasAsSemiringWithOne</item>
+			<item>HasAsSemiringWithOneAndZero</item>
+			<item>HasAsSemiringWithZero</item>
+			<item>HasAsSortedList</item>
+			<item>HasAsSubgroupOfWholeGroupByQuotient</item>
+			<item>HasAssociatedReesMatrixSemigroupOfDClass</item>
+			<item>HasAssociatedSemigroup</item>
+			<item>HasAugmentationIdeal</item>
+			<item>HasAugmentedCosetTableMtcInWholeGroup</item>
+			<item>HasAugmentedCosetTableNormalClosureInWholeGroup</item>
+			<item>HasAugmentedCosetTableRrsInWholeGroup</item>
+			<item>HasAutomorphismDomain</item>
+			<item>HasAutomorphismGroup</item>
+			<item>HasAutomorphismsOfTable</item>
+			<item>HasBaseIntMat</item>
+			<item>HasBaseMat</item>
+			<item>HasBaseOfBasicImageGroup</item>
+			<item>HasBaseOfGroup</item>
+			<item>HasBaseOrthogonalSpaceMat</item>
+			<item>HasBasis</item>
+			<item>HasBasisOfHomCosetAddMatrixGroup</item>
+			<item>HasBasisVectors</item>
+			<item>HasBaumClausenInfo</item>
+			<item>HasBilinearFormMat</item>
+			<item>HasBlocksAttr</item>
+			<item>HasBlocksInfo</item>
+			<item>HasBrauerCharacterValue</item>
+			<item>HasBravaisGroup</item>
+			<item>HasBravaisSubgroups</item>
+			<item>HasBravaisSupergroups</item>
+			<item>HasCanEasilyCompareElements</item>
+			<item>HasCanEasilySortElements</item>
+			<item>HasCanFindNilpotentClassTwoElement</item>
+			<item>HasCanonicalBasis</item>
+			<item>HasCanonicalElt</item>
+			<item>HasCanonicalGenerators</item>
+			<item>HasCanonicalNiceMonomorphism</item>
+			<item>HasCanonicalPcgs</item>
+			<item>HasCanonicalPcgsWrtFamilyPcgs</item>
+			<item>HasCanonicalPcgsWrtHomePcgs</item>
+			<item>HasCanonicalPcgsWrtSpecialPcgs</item>
+			<item>HasCanonicalRepresentativeDeterminatorOfExternalSet</item>
+			<item>HasCanonicalRepresentativeOfExternalSet</item>
+			<item>HasCartanMatrix</item>
+			<item>HasCartanSubalgebra</item>
+			<item>HasCayleyGraphDualSemigroup</item>
+			<item>HasCayleyGraphSemigroup</item>
+			<item>HasCenter</item>
+			<item>HasCentralCharacter</item>
+			<item>HasCentralIdempotentsOfSemiring</item>
+			<item>HasCentralNormalSeriesByPcgs</item>
+			<item>HasCentralizerInGLnZ</item>
+			<item>HasCentralizerInParent</item>
+			<item>HasCentre</item>
+			<item>HasCentreOfCharacter</item>
+			<item>HasChainHomomorphicImage</item>
+			<item>HasChainSubgroup</item>
+			<item>HasChainSubgroupQuotient</item>
+			<item>HasCharacterDegrees</item>
+			<item>HasCharacterNames</item>
+			<item>HasCharacterParameters</item>
+			<item>HasCharacteristic</item>
+			<item>HasCharacteristicPolynomial</item>
+			<item>HasChevalleyBasis</item>
+			<item>HasChiefNormalSeriesByPcgs</item>
+			<item>HasChiefSeries</item>
+			<item>HasClassNames</item>
+			<item>HasClassNamesTom</item>
+			<item>HasClassParameters</item>
+			<item>HasClassPermutation</item>
+			<item>HasClassPositionsOfCentre</item>
+			<item>HasClassPositionsOfDerivedSubgroup</item>
+			<item>HasClassPositionsOfDirectProductDecompositions</item>
+			<item>HasClassPositionsOfElementaryAbelianSeries</item>
+			<item>HasClassPositionsOfFittingSubgroup</item>
+			<item>HasClassPositionsOfKernel</item>
+			<item>HasClassPositionsOfLowerCentralSeries</item>
+			<item>HasClassPositionsOfMaximalNormalSubgroups</item>
+			<item>HasClassPositionsOfNormalSubgroups</item>
+			<item>HasClassPositionsOfSolvableResiduum</item>
+			<item>HasClassPositionsOfSupersolvableResiduum</item>
+			<item>HasClassPositionsOfUpperCentralSeries</item>
+			<item>HasClassRoots</item>
+			<item>HasClassTypesTom</item>
+			<item>HasCoKernelOfAdditiveGeneralMapping</item>
+			<item>HasCoKernelOfMultiplicativeGeneralMapping</item>
+			<item>HasCoefficientsAndMagmaElements</item>
+			<item>HasCoefficientsFamily</item>
+			<item>HasCoefficientsOfLaurentPolynomial</item>
+			<item>HasCoefficientsOfUnivariatePolynomial</item>
+			<item>HasCoefficientsOfUnivariateRationalFunction</item>
+			<item>HasCoefficientsRing</item>
+			<item>HasCollectionsFamily</item>
+			<item>HasColumnIndexOfReesMatrixSemigroupElement</item>
+			<item>HasColumnIndexOfReesZeroMatrixSemigroupElement</item>
+			<item>HasColumnsOfReesMatrixSemigroup</item>
+			<item>HasColumnsOfReesZeroMatrixSemigroup</item>
+			<item>HasCommutatorFactorGroup</item>
+			<item>HasCommutatorLength</item>
+			<item>HasComplementSystem</item>
+			<item>HasComplexConjugate</item>
+			<item>HasComponentsOfTuplesFamily</item>
+			<item>HasCompositionSeries</item>
+			<item>HasComputedAgemos</item>
+			<item>HasComputedAscendingChains</item>
+			<item>HasComputedBrauerTables</item>
+			<item>HasComputedClassFusions</item>
+			<item>HasComputedCyclicExtensionsTom</item>
+			<item>HasComputedHallSubgroups</item>
+			<item>HasComputedIndicators</item>
+			<item>HasComputedIsPNilpotents</item>
+			<item>HasComputedIsPSolvableCharacterTables</item>
+			<item>HasComputedIsPSolvables</item>
+			<item>HasComputedOmegas</item>
+			<item>HasComputedPCentralSeriess</item>
+			<item>HasComputedPCores</item>
+			<item>HasComputedPRumps</item>
+			<item>HasComputedPowerMaps</item>
+			<item>HasComputedPrimeBlockss</item>
+			<item>HasComputedSylowComplements</item>
+			<item>HasComputedSylowSubgroups</item>
+			<item>HasConductor</item>
+			<item>HasConfluentRws</item>
+			<item>HasConjugacyClasses</item>
+			<item>HasConjugacyClassesMaximalSubgroups</item>
+			<item>HasConjugacyClassesPerfectSubgroups</item>
+			<item>HasConjugacyClassesSubgroups</item>
+			<item>HasConjugates</item>
+			<item>HasConjugatorInnerAutomorphism</item>
+			<item>HasConjugatorOfConjugatorIsomorphism</item>
+			<item>HasConstantTimeAccessList</item>
+			<item>HasConstituentsOfCharacter</item>
+			<item>HasConvertBasicImageGroupElement</item>
+			<item>HasCoreInParent</item>
+			<item>HasCosetTableFpHom</item>
+			<item>HasCosetTableInWholeGroup</item>
+			<item>HasCosetTableNormalClosureInWholeGroup</item>
+			<item>HasCosetTableOfFpSemigroup</item>
+			<item>HasCycleStructurePerm</item>
+			<item>HasCyclicExtensionsTom</item>
+			<item>HasDecompositionMatrix</item>
+			<item>HasDecompositionTypesOfGroup</item>
+			<item>HasDefaultFieldOfMatrix</item>
+			<item>HasDefaultFieldOfMatrixGroup</item>
+			<item>HasDefectApproximation</item>
+			<item>HasDefiningPcgs</item>
+			<item>HasDefiningPolynomial</item>
+			<item>HasDegreeAction</item>
+			<item>HasDegreeOfBinaryRelation</item>
+			<item>HasDegreeOfCharacter</item>
+			<item>HasDegreeOfLaurentPolynomial</item>
+			<item>HasDegreeOfMatrixGroup</item>
+			<item>HasDegreeOfTransformation</item>
+			<item>HasDegreeOfTransformationSemigroup</item>
+			<item>HasDegreeOperation</item>
+			<item>HasDegreeOverPrimeField</item>
+			<item>HasDelta</item>
+			<item>HasDenominatorOfModuloPcgs</item>
+			<item>HasDenominatorOfRationalFunction</item>
+			<item>HasDepthOfUpperTriangularMatrix</item>
+			<item>HasDerivations</item>
+			<item>HasDerivative</item>
+			<item>HasDerivedLength</item>
+			<item>HasDerivedSeriesOfGroup</item>
+			<item>HasDerivedSubgroup</item>
+			<item>HasDerivedSubgroupsTomPossible</item>
+			<item>HasDerivedSubgroupsTomUnique</item>
+			<item>HasDeterminantMat</item>
+			<item>HasDeterminantOfCharacter</item>
+			<item>HasDihedralGenerators</item>
+			<item>HasDimension</item>
+			<item>HasDimensionOfMatrixGroup</item>
+			<item>HasDimensionOfVectors</item>
+			<item>HasDimensionsLoewyFactors</item>
+			<item>HasDimensionsMat</item>
+			<item>HasDirectFactorsOfGroup</item>
+			<item>HasDirectProductInfo</item>
+			<item>HasDirectSumDecomposition</item>
+			<item>HasDisplayOptions</item>
+			<item>HasDixonRecord</item>
+			<item>HasEANormalSeriesByPcgs</item>
+			<item>HasEarns</item>
+			<item>HasEggBoxOfDClass</item>
+			<item>HasElementTestFunction</item>
+			<item>HasElementaryAbelianFactorGroup</item>
+			<item>HasElementaryAbelianSeries</item>
+			<item>HasElementaryAbelianSeriesLargeSteps</item>
+			<item>HasElementaryAbelianSubseries</item>
+			<item>HasElementsFamily</item>
+			<item>HasEmptyRowVector</item>
+			<item>HasEnumerator</item>
+			<item>HasEnumeratorByBasis</item>
+			<item>HasEnumeratorSorted</item>
+			<item>HasEquivalenceClassRelation</item>
+			<item>HasEquivalenceClasses</item>
+			<item>HasEquivalenceRelationPartition</item>
+			<item>HasExponent</item>
+			<item>HasExponentOfPowering</item>
+			<item>HasExtRepDenominatorRatFun</item>
+			<item>HasExtRepNumeratorRatFun</item>
+			<item>HasExtRepPolynomialRatFun</item>
+			<item>HasExternalOrbits</item>
+			<item>HasExternalOrbitsStabilizers</item>
+			<item>HasExternalSet</item>
+			<item>HasFactorsOfDirectProduct</item>
+			<item>HasFaithfulModule</item>
+			<item>HasFamiliesOfGeneralMappingsAndRanges</item>
+			<item>HasFamilyForOrdering</item>
+			<item>HasFamilyForRewritingSystem</item>
+			<item>HasFamilyPcgs</item>
+			<item>HasFamilyRange</item>
+			<item>HasFamilySource</item>
+			<item>HasFieldOfMatrixGroup</item>
+			<item>HasFittingSubgroup</item>
+			<item>HasFpElmComparisonMethod</item>
+			<item>HasFpElmEqualityMethod</item>
+			<item>HasFpElmKBRWS</item>
+			<item>HasFrattiniSubgroup</item>
+			<item>HasFrattinifactorId</item>
+			<item>HasFrattinifactorSize</item>
+			<item>HasFreeAlgebraOfFpAlgebra</item>
+			<item>HasFreeGeneratorsOfFpAlgebra</item>
+			<item>HasFreeGeneratorsOfFpGroup</item>
+			<item>HasFreeGeneratorsOfFpMonoid</item>
+			<item>HasFreeGeneratorsOfFpSemigroup</item>
+			<item>HasFreeGroupOfBasicImageGroup</item>
+			<item>HasFreeGroupOfFpGroup</item>
+			<item>HasFreeMonoidOfFpMonoid</item>
+			<item>HasFreeMonoidOfRewritingSystem</item>
+			<item>HasFreeSemigroupOfFpSemigroup</item>
+			<item>HasFreeSemigroupOfRewritingSystem</item>
+			<item>HasFrobeniusAutomorphism</item>
+			<item>HasFunctionAction</item>
+			<item>HasFusionConjugacyClassesOp</item>
+			<item>HasFusionsOfLibTom</item>
+			<item>HasFusionsToLibTom</item>
+			<item>HasFusionsTom</item>
+			<item>HasGLDegree</item>
+			<item>HasGLUnderlyingField</item>
+			<item>HasGaloisGroup</item>
+			<item>HasGaloisMat</item>
+			<item>HasGaloisStabilizer</item>
+			<item>HasGaloisType</item>
+			<item>HasGeneralizedPcgs</item>
+			<item>HasGeneratingPairsOfLeftMagmaCongruence</item>
+			<item>HasGeneratingPairsOfMagmaCongruence</item>
+			<item>HasGeneratingPairsOfRightMagmaCongruence</item>
+			<item>HasGeneratingSetIsComplete</item>
+			<item>HasGeneratorOfCyclicGroup</item>
+			<item>HasGeneratorsOfAdditiveGroup</item>
+			<item>HasGeneratorsOfAdditiveMagma</item>
+			<item>HasGeneratorsOfAdditiveMagmaWithInverses</item>
+			<item>HasGeneratorsOfAdditiveMagmaWithZero</item>
+			<item>HasGeneratorsOfAlgebra</item>
+			<item>HasGeneratorsOfAlgebraModule</item>
+			<item>HasGeneratorsOfAlgebraWithOne</item>
+			<item>HasGeneratorsOfDivisionRing</item>
+			<item>HasGeneratorsOfDomain</item>
+			<item>HasGeneratorsOfEquivalenceRelationPartition</item>
+			<item>HasGeneratorsOfExtASet</item>
+			<item>HasGeneratorsOfExtLSet</item>
+			<item>HasGeneratorsOfExtRSet</item>
+			<item>HasGeneratorsOfExtUSet</item>
+			<item>HasGeneratorsOfFLMLOR</item>
+			<item>HasGeneratorsOfFLMLORWithOne</item>
+			<item>HasGeneratorsOfField</item>
+			<item>HasGeneratorsOfGroup</item>
+			<item>HasGeneratorsOfIdeal</item>
+			<item>HasGeneratorsOfLeftIdeal</item>
+			<item>HasGeneratorsOfLeftMagmaIdeal</item>
+			<item>HasGeneratorsOfLeftModule</item>
+			<item>HasGeneratorsOfLeftOperatorAdditiveGroup</item>
+			<item>HasGeneratorsOfLeftOperatorRing</item>
+			<item>HasGeneratorsOfLeftOperatorRingWithOne</item>
+			<item>HasGeneratorsOfLeftVectorSpace</item>
+			<item>HasGeneratorsOfMagma</item>
+			<item>HasGeneratorsOfMagmaIdeal</item>
+			<item>HasGeneratorsOfMagmaWithInverses</item>
+			<item>HasGeneratorsOfMagmaWithOne</item>
+			<item>HasGeneratorsOfMonoid</item>
+			<item>HasGeneratorsOfNearAdditiveGroup</item>
+			<item>HasGeneratorsOfNearAdditiveMagma</item>
+			<item>HasGeneratorsOfNearAdditiveMagmaWithInverses</item>
+			<item>HasGeneratorsOfNearAdditiveMagmaWithZero</item>
+			<item>HasGeneratorsOfRightIdeal</item>
+			<item>HasGeneratorsOfRightMagmaIdeal</item>
+			<item>HasGeneratorsOfRightModule</item>
+			<item>HasGeneratorsOfRightOperatorAdditiveGroup</item>
+			<item>HasGeneratorsOfRing</item>
+			<item>HasGeneratorsOfRingWithOne</item>
+			<item>HasGeneratorsOfRws</item>
+			<item>HasGeneratorsOfSemigroup</item>
+			<item>HasGeneratorsOfSemiring</item>
+			<item>HasGeneratorsOfSemiringWithOne</item>
+			<item>HasGeneratorsOfSemiringWithOneAndZero</item>
+			<item>HasGeneratorsOfSemiringWithZero</item>
+			<item>HasGeneratorsOfTwoSidedIdeal</item>
+			<item>HasGeneratorsOfVectorSpace</item>
+			<item>HasGeneratorsSmallest</item>
+			<item>HasGeneratorsSubgroupsTom</item>
+			<item>HasGlobalPartitionOfClasses</item>
+			<item>HasGrading</item>
+			<item>HasGreensDRelation</item>
+			<item>HasGreensHRelation</item>
+			<item>HasGreensJRelation</item>
+			<item>HasGreensLRelation</item>
+			<item>HasGreensRRelation</item>
+			<item>HasGroupByPcgs</item>
+			<item>HasGroupHClassOfGreensDClass</item>
+			<item>HasGroupOfPcgs</item>
+			<item>HasHallSystem</item>
+			<item>HasHirschLength</item>
+			<item>HasHomCosetFamily</item>
+			<item>HasHomFromFreeOfBasicImageGroup</item>
+			<item>HasHomeEnumerator</item>
+			<item>HasHomePcgs</item>
+			<item>HasIBr</item>
+			<item>HasIdGroup</item>
+			<item>HasIdempotents</item>
+			<item>HasIdempotentsTom</item>
+			<item>HasIdempotentsTomInfo</item>
+			<item>HasIdentificationOfConjugacyClasses</item>
+			<item>HasIdentifier</item>
+			<item>HasIdentity</item>
+			<item>HasIdentityMapping</item>
+			<item>HasImageElt</item>
+			<item>HasImageListOfTransformation</item>
+			<item>HasImageSetOfTransformation</item>
+			<item>HasImagesSmallestGenerators</item>
+			<item>HasImagesSource</item>
+			<item>HasImfRecord</item>
+			<item>HasIndependentGeneratorsOfAbelianGroup</item>
+			<item>HasIndependentGeneratorsOfAbelianMatrixGroup</item>
+			<item>HasIndeterminateName</item>
+			<item>HasIndeterminateNumberOfLaurentPolynomial</item>
+			<item>HasIndeterminateNumberOfUnivariateLaurentPolynomial</item>
+			<item>HasIndeterminateNumberOfUnivariateRationalFunction</item>
+			<item>HasIndeterminateOfUnivariateRationalFunction</item>
+			<item>HasIndeterminatesOfPolynomialRing</item>
+			<item>HasIndexInParent</item>
+			<item>HasIndexInWholeGroup</item>
+			<item>HasIndicesCentralNormalSteps</item>
+			<item>HasIndicesChiefNormalSteps</item>
+			<item>HasIndicesEANormalSteps</item>
+			<item>HasIndicesInvolutaryGenerators</item>
+			<item>HasIndicesNormalSteps</item>
+			<item>HasIndicesOfAdjointBasis</item>
+			<item>HasIndicesPCentralNormalStepsPGroup</item>
+			<item>HasInducedPcgsWrtFamilyPcgs</item>
+			<item>HasInducedPcgsWrtHomePcgs</item>
+			<item>HasInducedPcgsWrtSpecialPcgs</item>
+			<item>HasInfoText</item>
+			<item>HasInjectionZeroMagma</item>
+			<item>HasInnerAutomorphismsAutomorphismGroup</item>
+			<item>HasInt</item>
+			<item>HasInternalRepresentative</item>
+			<item>HasInvariantBilinearForm</item>
+			<item>HasInvariantConjugateSubgroup</item>
+			<item>HasInvariantForm</item>
+			<item>HasInvariantLattice</item>
+			<item>HasInvariantQuadraticForm</item>
+			<item>HasInvariantSesquilinearForm</item>
+			<item>HasInverse</item>
+			<item>HasInverseAttr</item>
+			<item>HasInverseClasses</item>
+			<item>HasInverseGeneralMapping</item>
+			<item>HasInverseImmutable</item>
+			<item>HasIrr</item>
+			<item>HasIrrBaumClausen</item>
+			<item>HasIrrConlon</item>
+			<item>HasIrrDixonSchneider</item>
+			<item>HasIrrFacsPol</item>
+			<item>HasIrreducibleRepresentations</item>
+			<item>HasIsAbelian</item>
+			<item>HasIsAbelianNumberField</item>
+			<item>HasIsAbelianTom</item>
+			<item>HasIsAdditiveGroupGeneralMapping</item>
+			<item>HasIsAdditiveGroupHomomorphism</item>
+			<item>HasIsAdditiveGroupToGroupGeneralMapping</item>
+			<item>HasIsAdditiveGroupToGroupHomomorphism</item>
+			<item>HasIsAdditivelyCommutative</item>
+			<item>HasIsAlgebraGeneralMapping</item>
+			<item>HasIsAlgebraHomomorphism</item>
+			<item>HasIsAlgebraModule</item>
+			<item>HasIsAlgebraWithOneGeneralMapping</item>
+			<item>HasIsAlgebraWithOneHomomorphism</item>
+			<item>HasIsAlternatingGroup</item>
+			<item>HasIsAnticommutative</item>
+			<item>HasIsAntisymmetricBinaryRelation</item>
+			<item>HasIsAssociative</item>
+			<item>HasIsAutomorphismGroup</item>
+			<item>HasIsBasicWreathProductOrdering</item>
+			<item>HasIsBergerCondition</item>
+			<item>HasIsBijective</item>
+			<item>HasIsBravaisGroup</item>
+			<item>HasIsBuiltFromAdditiveMagmaWithInverses</item>
+			<item>HasIsBuiltFromGroup</item>
+			<item>HasIsBuiltFromMagma</item>
+			<item>HasIsBuiltFromMagmaWithInverses</item>
+			<item>HasIsBuiltFromMagmaWithOne</item>
+			<item>HasIsBuiltFromMonoid</item>
+			<item>HasIsBuiltFromSemigroup</item>
+			<item>HasIsCanonicalBasis</item>
+			<item>HasIsCanonicalBasisFullMatrixModule</item>
+			<item>HasIsCanonicalBasisFullRowModule</item>
+			<item>HasIsCanonicalBasisFullSCAlgebra</item>
+			<item>HasIsCanonicalNiceMonomorphism</item>
+			<item>HasIsCanonicalPcgs</item>
+			<item>HasIsCanonicalPcgsWrtSpecialPcgs</item>
+			<item>HasIsChainTypeGroup</item>
+			<item>HasIsCharacter</item>
+			<item>HasIsCharacteristicMatrixPGroup</item>
+			<item>HasIsCommutative</item>
+			<item>HasIsCommutativeFamily</item>
+			<item>HasIsConfluent</item>
+			<item>HasIsConjugatorAutomorphism</item>
+			<item>HasIsConjugatorIsomorphism</item>
+			<item>HasIsConstantRationalFunction</item>
+			<item>HasIsConstantTimeAccessGeneralMapping</item>
+			<item>HasIsCycInt</item>
+			<item>HasIsCyclic</item>
+			<item>HasIsCyclicTom</item>
+			<item>HasIsCyclotomicField</item>
+			<item>HasIsDihedralGroup</item>
+			<item>HasIsDistributive</item>
+			<item>HasIsDivisionRing</item>
+			<item>HasIsDuplicateFree</item>
+			<item>HasIsDuplicateFreeList</item>
+			<item>HasIsElementaryAbelian</item>
+			<item>HasIsEmpty</item>
+			<item>HasIsEndoGeneralMapping</item>
+			<item>HasIsEndoMapping</item>
+			<item>HasIsEquivalenceRelation</item>
+			<item>HasIsFFEMatrixGroupOverLargeSpace</item>
+			<item>HasIsFamilyPcgs</item>
+			<item>HasIsField</item>
+			<item>HasIsFieldHomomorphism</item>
+			<item>HasIsFinite</item>
+			<item>HasIsFiniteDimensional</item>
+			<item>HasIsFiniteOrdersPcgs</item>
+			<item>HasIsFiniteSemigroupGreensRelation</item>
+			<item>HasIsFinitelyGeneratedGroup</item>
+			<item>HasIsFrattiniFree</item>
+			<item>HasIsFreeMonoid</item>
+			<item>HasIsFreeSemigroup</item>
+			<item>HasIsFullFpAlgebra</item>
+			<item>HasIsFullHomModule</item>
+			<item>HasIsFullMatrixModule</item>
+			<item>HasIsFullRowModule</item>
+			<item>HasIsFullSCAlgebra</item>
+			<item>HasIsFullSubgroupGLorSLRespectingBilinearForm</item>
+			<item>HasIsFullSubgroupGLorSLRespectingQuadraticForm</item>
+			<item>HasIsFullSubgroupGLorSLRespectingSesquilinearForm</item>
+			<item>HasIsFullTransformationSemigroup</item>
+			<item>HasIsGL</item>
+			<item>HasIsGeneralLinearGroup</item>
+			<item>HasIsGeneralizedCartanMatrix</item>
+			<item>HasIsGeneratorsOfMagmaWithInverses</item>
+			<item>HasIsGreensClass</item>
+			<item>HasIsGreensDClass</item>
+			<item>HasIsGreensDRelation</item>
+			<item>HasIsGreensHClass</item>
+			<item>HasIsGreensHRelation</item>
+			<item>HasIsGreensJClass</item>
+			<item>HasIsGreensJRelation</item>
+			<item>HasIsGreensLClass</item>
+			<item>HasIsGreensLRelation</item>
+			<item>HasIsGreensRClass</item>
+			<item>HasIsGreensRRelation</item>
+			<item>HasIsGreensRelation</item>
+			<item>HasIsGroupGeneralMapping</item>
+			<item>HasIsGroupHClass</item>
+			<item>HasIsGroupHomomorphism</item>
+			<item>HasIsGroupOfAutomorphisms</item>
+			<item>HasIsGroupOfAutomorphismsFiniteGroup</item>
+			<item>HasIsGroupRing</item>
+			<item>HasIsGroupToAdditiveGroupGeneralMapping</item>
+			<item>HasIsGroupToAdditiveGroupHomomorphism</item>
+			<item>HasIsHandledByNiceMonomorphism</item>
+			<item>HasIsHasseDiagram</item>
+			<item>HasIsHomCosetOfAdditiveElt</item>
+			<item>HasIsHomCosetOfFp</item>
+			<item>HasIsHomCosetOfMatrix</item>
+			<item>HasIsHomCosetOfPerm</item>
+			<item>HasIsHomCosetOfTuple</item>
+			<item>HasIsIdealInParent</item>
+			<item>HasIsIdempotent</item>
+			<item>HasIsImpossible</item>
+			<item>HasIsInducedFromNormalSubgroup</item>
+			<item>HasIsInducedPcgsWrtSpecialPcgs</item>
+			<item>HasIsInjective</item>
+			<item>HasIsInnerAutomorphism</item>
+			<item>HasIsIntegerMatrixGroup</item>
+			<item>HasIsIntegralBasis</item>
+			<item>HasIsIntegralCyclotomic</item>
+			<item>HasIsIntegralRing</item>
+			<item>HasIsIrreducibleCharacter</item>
+			<item>HasIsJacobianRing</item>
+			<item>HasIsLDistributive</item>
+			<item>HasIsLatticeOrderBinaryRelation</item>
+			<item>HasIsLaurentPolynomial</item>
+			<item>HasIsLeftActedOnByDivisionRing</item>
+			<item>HasIsLeftAlgebraModule</item>
+			<item>HasIsLeftIdealInParent</item>
+			<item>HasIsLeftModuleGeneralMapping</item>
+			<item>HasIsLeftModuleHomomorphism</item>
+			<item>HasIsLeftSemigroupCongruence</item>
+			<item>HasIsLeftSemigroupIdeal</item>
+			<item>HasIsLieAbelian</item>
+			<item>HasIsLieAlgebra</item>
+			<item>HasIsLieNilpotent</item>
+			<item>HasIsLieSolvable</item>
+			<item>HasIsLinearlyPrimitive</item>
+			<item>HasIsMagmaHomomorphism</item>
+			<item>HasIsMapping</item>
+			<item>HasIsMatrixModule</item>
+			<item>HasIsMinimalNonmonomial</item>
+			<item>HasIsMonoid</item>
+			<item>HasIsMonomialCharacter</item>
+			<item>HasIsMonomialCharacterTable</item>
+			<item>HasIsMonomialGroup</item>
+			<item>HasIsMonomialMatrix</item>
+			<item>HasIsMonomialNumber</item>
+			<item>HasIsNaturalAlternatingGroup</item>
+			<item>HasIsNaturalGL</item>
+			<item>HasIsNaturalSL</item>
+			<item>HasIsNaturalSymmetricGroup</item>
+			<item>HasIsNearRing</item>
+			<item>HasIsNearRingWithOne</item>
+			<item>HasIsNilpQuotientSystem</item>
+			<item>HasIsNilpotentCharacterTable</item>
+			<item>HasIsNilpotentGroup</item>
+			<item>HasIsNilpotentTom</item>
+			<item>HasIsNonTrivial</item>
+			<item>HasIsNoncharacteristicMatrixPGroup</item>
+			<item>HasIsNormalBasis</item>
+			<item>HasIsNormalForm</item>
+			<item>HasIsNormalInParent</item>
+			<item>HasIsNumberField</item>
+			<item>HasIsNumeratorParentPcgsFamilyPcgs</item>
+			<item>HasIsOne</item>
+			<item>HasIsOrderingOnFamilyOfAssocWords</item>
+			<item>HasIsPGroup</item>
+			<item>HasIsPQuotientSystem</item>
+			<item>HasIsPSL</item>
+			<item>HasIsParentPcgsFamilyPcgs</item>
+			<item>HasIsPartialOrderBinaryRelation</item>
+			<item>HasIsPcgsCentralSeries</item>
+			<item>HasIsPcgsChiefSeries</item>
+			<item>HasIsPcgsElementaryAbelianSeries</item>
+			<item>HasIsPcgsPCentralSeriesPGroup</item>
+			<item>HasIsPerfectCharacterTable</item>
+			<item>HasIsPerfectGroup</item>
+			<item>HasIsPerfectTom</item>
+			<item>HasIsPolycyclicGroup</item>
+			<item>HasIsPolynomial</item>
+			<item>HasIsPositionsList</item>
+			<item>HasIsPreOrderBinaryRelation</item>
+			<item>HasIsPrimeField</item>
+			<item>HasIsPrimeOrdersPcgs</item>
+			<item>HasIsPrimitive</item>
+			<item>HasIsPrimitiveAffine</item>
+			<item>HasIsPrimitiveCharacter</item>
+			<item>HasIsPrimitiveMatrixGroup</item>
+			<item>HasIsPseudoCanonicalBasisFullHomModule</item>
+			<item>HasIsQuasiDihedralGroup</item>
+			<item>HasIsQuasiPrimitive</item>
+			<item>HasIsQuaternionGroup</item>
+			<item>HasIsRDistributive</item>
+			<item>HasIsRationalMatrixGroup</item>
+			<item>HasIsRectangularTable</item>
+			<item>HasIsReduced</item>
+			<item>HasIsReesCongruence</item>
+			<item>HasIsReesCongruenceSemigroup</item>
+			<item>HasIsReesMatrixSemigroup</item>
+			<item>HasIsReesZeroMatrixSemigroup</item>
+			<item>HasIsReflexiveBinaryRelation</item>
+			<item>HasIsRegular</item>
+			<item>HasIsRegularDClass</item>
+			<item>HasIsRegularSemigroup</item>
+			<item>HasIsRelativelySM</item>
+			<item>HasIsRestrictedLieAlgebra</item>
+			<item>HasIsRightAlgebraModule</item>
+			<item>HasIsRightIdealInParent</item>
+			<item>HasIsRightSemigroupCongruence</item>
+			<item>HasIsRightSemigroupIdeal</item>
+			<item>HasIsRing</item>
+			<item>HasIsRingGeneralMapping</item>
+			<item>HasIsRingHomomorphism</item>
+			<item>HasIsRingWithOne</item>
+			<item>HasIsRingWithOneGeneralMapping</item>
+			<item>HasIsRingWithOneHomomorphism</item>
+			<item>HasIsRowModule</item>
+			<item>HasIsSL</item>
+			<item>HasIsSSortedList</item>
+			<item>HasIsSemiEchelonized</item>
+			<item>HasIsSemiRegular</item>
+			<item>HasIsSemigroup</item>
+			<item>HasIsSemigroupCongruence</item>
+			<item>HasIsSemigroupIdeal</item>
+			<item>HasIsSemiring</item>
+			<item>HasIsSemiringWithOne</item>
+			<item>HasIsSemiringWithOneAndZero</item>
+			<item>HasIsSemiringWithZero</item>
+			<item>HasIsShortLexOrdering</item>
+			<item>HasIsSimpleAlgebra</item>
+			<item>HasIsSimpleCharacterTable</item>
+			<item>HasIsSimpleGroup</item>
+			<item>HasIsSimpleSemigroup</item>
+			<item>HasIsSingleValued</item>
+			<item>HasIsSkewFieldFamily</item>
+			<item>HasIsSmallList</item>
+			<item>HasIsSolvableCharacterTable</item>
+			<item>HasIsSolvableGroup</item>
+			<item>HasIsSolvableTom</item>
+			<item>HasIsSortedList</item>
+			<item>HasIsSpecialLinearGroup</item>
+			<item>HasIsSpecialPcgs</item>
+			<item>HasIsSporadicSimpleCharacterTable</item>
+			<item>HasIsSporadicSimpleGroup</item>
+			<item>HasIsStabChainViaChainSubgroup</item>
+			<item>HasIsSubgroupSL</item>
+			<item>HasIsSubmonoidFpMonoid</item>
+			<item>HasIsSubnormallyMonomial</item>
+			<item>HasIsSubsemigroupFpSemigroup</item>
+			<item>HasIsSubsemigroupReesMatrixSemigroup</item>
+			<item>HasIsSubsemigroupReesZeroMatrixSemigroup</item>
+			<item>HasIsSubsetLocallyFiniteGroup</item>
+			<item>HasIsSupersolvableCharacterTable</item>
+			<item>HasIsSupersolvableGroup</item>
+			<item>HasIsSurjective</item>
+			<item>HasIsSymmetricBinaryRelation</item>
+			<item>HasIsSymmetricGroup</item>
+			<item>HasIsTotal</item>
+			<item>HasIsTotalOrdering</item>
+			<item>HasIsTransformationMonoid</item>
+			<item>HasIsTransformationSemigroup</item>
+			<item>HasIsTransitive</item>
+			<item>HasIsTransitiveBinaryRelation</item>
+			<item>HasIsTranslationInvariantOrdering</item>
+			<item>HasIsTrivial</item>
+			<item>HasIsTwoSidedIdealInParent</item>
+			<item>HasIsUFDFamily</item>
+			<item>HasIsUniformMatrixGroup</item>
+			<item>HasIsUnivariatePolynomial</item>
+			<item>HasIsUnivariateRationalFunction</item>
+			<item>HasIsVectorSpaceHomomorphism</item>
+			<item>HasIsVirtualCharacter</item>
+			<item>HasIsWeightLexOrdering</item>
+			<item>HasIsWellFoundedOrdering</item>
+			<item>HasIsWeylGroup</item>
+			<item>HasIsWholeFamily</item>
+			<item>HasIsWreathProductOrdering</item>
+			<item>HasIsZero</item>
+			<item>HasIsZeroGroup</item>
+			<item>HasIsZeroMultiplicationRing</item>
+			<item>HasIsZeroRationalFunction</item>
+			<item>HasIsZeroSimpleSemigroup</item>
+			<item>HasIsZeroSquaredRing</item>
+			<item>HasIsomorphismFpAlgebra</item>
+			<item>HasIsomorphismFpFLMLOR</item>
+			<item>HasIsomorphismFpGroup</item>
+			<item>HasIsomorphismFpMonoid</item>
+			<item>HasIsomorphismFpSemigroup</item>
+			<item>HasIsomorphismMatrixAlgebra</item>
+			<item>HasIsomorphismMatrixFLMLOR</item>
+			<item>HasIsomorphismPcGroup</item>
+			<item>HasIsomorphismPermGroup</item>
+			<item>HasIsomorphismReesMatrixSemigroup</item>
+			<item>HasIsomorphismRefinedPcGroup</item>
+			<item>HasIsomorphismSCAlgebra</item>
+			<item>HasIsomorphismSCFLMLOR</item>
+			<item>HasIsomorphismSimplifiedFpGroup</item>
+			<item>HasIsomorphismSpecialPcGroup</item>
+			<item>HasIsomorphismTransformationSemigroup</item>
+			<item>HasJenningsLieAlgebra</item>
+			<item>HasJenningsSeries</item>
+			<item>HasJordanDecomposition</item>
+			<item>HasKernelOfAdditiveGeneralMapping</item>
+			<item>HasKernelOfCharacter</item>
+			<item>HasKernelOfMultiplicativeGeneralMapping</item>
+			<item>HasKernelOfTransformation</item>
+			<item>HasKillingMatrix</item>
+			<item>HasKnowsHowToDecompose</item>
+			<item>HasLClassOfHClass</item>
+			<item>HasLGFirst</item>
+			<item>HasLGHeads</item>
+			<item>HasLGLayers</item>
+			<item>HasLGLength</item>
+			<item>HasLGTails</item>
+			<item>HasLGWeights</item>
+			<item>HasLargestElementGroup</item>
+			<item>HasLargestMovedPoint</item>
+			<item>HasLargestMovedPointPerm</item>
+			<item>HasLatticeGeneratorsInUEA</item>
+			<item>HasLatticeSubgroups</item>
+			<item>HasLeadCoeffsIGS</item>
+			<item>HasLeftActingAlgebra</item>
+			<item>HasLeftActingDomain</item>
+			<item>HasLeftActingGroup</item>
+			<item>HasLeftActingRingOfIdeal</item>
+			<item>HasLeftDerivations</item>
+			<item>HasLength</item>
+			<item>HasLengthsTom</item>
+			<item>HasLessThanFunction</item>
+			<item>HasLessThanOrEqualFunction</item>
+			<item>HasLetterRepWordsLessFunc</item>
+			<item>HasLevelsOfGenerators</item>
+			<item>HasLeviMalcevDecomposition</item>
+			<item>HasLieAlgebraByDomain</item>
+			<item>HasLieCenter</item>
+			<item>HasLieCentralizerInParent</item>
+			<item>HasLieCentre</item>
+			<item>HasLieDerivedSeries</item>
+			<item>HasLieDerivedSubalgebra</item>
+			<item>HasLieFamily</item>
+			<item>HasLieLowerCentralSeries</item>
+			<item>HasLieNilRadical</item>
+			<item>HasLieNormalizerInParent</item>
+			<item>HasLieObject</item>
+			<item>HasLieSolvableRadical</item>
+			<item>HasLieUpperCentralSeries</item>
+			<item>HasLinearActionBasis</item>
+			<item>HasLinearCharacters</item>
+			<item>HasLinesOfStraightLineProgram</item>
+			<item>HasLongestWeylWordPerm</item>
+			<item>HasLowerCentralSeriesOfGroup</item>
+			<item>HasMagmaGeneratorsOfFamily</item>
+			<item>HasMappingGeneratorsImages</item>
+			<item>HasMappingOfWhichItIsAsGGMBI</item>
+			<item>HasMarksTom</item>
+			<item>HasMatTom</item>
+			<item>HasMatrixByBlockMatrix</item>
+			<item>HasMatrixDimension</item>
+			<item>HasMaximalAbelianQuotient</item>
+			<item>HasMaximalBlocksAttr</item>
+			<item>HasMaximalNormalSubgroups</item>
+			<item>HasMaximalSubgroupClassReps</item>
+			<item>HasMaximalSubgroups</item>
+			<item>HasMaximalSubgroupsLattice</item>
+			<item>HasMaximalSubgroupsTom</item>
+			<item>HasMinimalBlockDimension</item>
+			<item>HasMinimalGeneratingSet</item>
+			<item>HasMinimalNormalSubgroups</item>
+			<item>HasMinimalStabChain</item>
+			<item>HasMinimalSupergroupsLattice</item>
+			<item>HasMinimizedBombieriNorm</item>
+			<item>HasModuleOfExtension</item>
+			<item>HasModulusOfZmodnZObj</item>
+			<item>HasMoebiusTom</item>
+			<item>HasMolienSeriesInfo</item>
+			<item>HasMonoidOfRewritingSystem</item>
+			<item>HasMonomialComparisonFunction</item>
+			<item>HasMonomialExtrepComparisonFun</item>
+			<item>HasMovedPoints</item>
+			<item>HasMultiplicationTable</item>
+			<item>HasMultiplicativeNeutralElement</item>
+			<item>HasMultiplicativeZero</item>
+			<item>HasName</item>
+			<item>HasNameIsomorphismClass</item>
+			<item>HasNamesLibTom</item>
+			<item>HasNamesOfFusionSources</item>
+			<item>HasNaturalCharacter</item>
+			<item>HasNaturalHomomorphismByNormalSubgroupNCInParent</item>
+			<item>HasNaturalHomomorphismsPool</item>
+			<item>HasNegativeRootVectors</item>
+			<item>HasNegativeRoots</item>
+			<item>HasNestingDepthA</item>
+			<item>HasNestingDepthM</item>
+			<item>HasNiceAlgebraMonomorphism</item>
+			<item>HasNiceBasis</item>
+			<item>HasNiceFreeLeftModule</item>
+			<item>HasNiceFreeLeftModuleInfo</item>
+			<item>HasNiceMonomorphism</item>
+			<item>HasNiceNormalFormByExtRepFunction</item>
+			<item>HasNiceObject</item>
+			<item>HasNilpotencyClassOfGroup</item>
+			<item>HasNilpotentClassTwoElement</item>
+			<item>HasNonLieNilpotentElement</item>
+			<item>HasNonNilpotentElement</item>
+			<item>HasNorm</item>
+			<item>HasNormalBase</item>
+			<item>HasNormalClosureInParent</item>
+			<item>HasNormalMaximalSubgroups</item>
+			<item>HasNormalSeriesByPcgs</item>
+			<item>HasNormalSubgroupClassesInfo</item>
+			<item>HasNormalSubgroups</item>
+			<item>HasNormalizerInGLnZ</item>
+			<item>HasNormalizerInGLnZBravaisGroup</item>
+			<item>HasNormalizerInHomePcgs</item>
+			<item>HasNormalizerInParent</item>
+			<item>HasNormalizersTom</item>
+			<item>HasNormedRowVector</item>
+			<item>HasNormedRowVectors</item>
+			<item>HasNormedVectors</item>
+			<item>HasNotifiedFusionsOfLibTom</item>
+			<item>HasNotifiedFusionsToLibTom</item>
+			<item>HasNrConjugacyClasses</item>
+			<item>HasNrInputsOfStraightLineProgram</item>
+			<item>HasNrMovedPoints</item>
+			<item>HasNrMovedPointsPerm</item>
+			<item>HasNrSubsTom</item>
+			<item>HasNrSyllables</item>
+			<item>HasNullAlgebra</item>
+			<item>HasNullspaceIntMat</item>
+			<item>HasNullspaceMat</item>
+			<item>HasNumberGeneratorsOfRws</item>
+			<item>HasNumberSyllables</item>
+			<item>HasNumeratorOfModuloPcgs</item>
+			<item>HasNumeratorOfRationalFunction</item>
+			<item>HasONanScottType</item>
+			<item>HasOccuringVariableIndices</item>
+			<item>HasOmegaAndLowerPCentralSeries</item>
+			<item>HasOmegaSeries</item>
+			<item>HasOne</item>
+			<item>HasOneAttr</item>
+			<item>HasOneImmutable</item>
+			<item>HasOneOfPcgs</item>
+			<item>HasOperatorOfExternalSet</item>
+			<item>HasOrbitGeneratorsOfGroup</item>
+			<item>HasOrbitLengths</item>
+			<item>HasOrbitLengthsDomain</item>
+			<item>HasOrbitStabilizingParentGroup</item>
+			<item>HasOrbits</item>
+			<item>HasOrbitsDomain</item>
+			<item>HasOrder</item>
+			<item>HasOrderingOfRewritingSystem</item>
+			<item>HasOrderingOnGenerators</item>
+			<item>HasOrderingsFamily</item>
+			<item>HasOrdersClassRepresentatives</item>
+			<item>HasOrdersTom</item>
+			<item>HasOrdinaryCharacterTable</item>
+			<item>HasOrthogonalSpaceInFullRowSpace</item>
+			<item>HasPCentralLieAlgebra</item>
+			<item>HasPCentralNormalSeriesByPcgsPGroup</item>
+			<item>HasPClassPGroup</item>
+			<item>HasPSLDegree</item>
+			<item>HasPSLUnderlyingField</item>
+			<item>HasParent</item>
+			<item>HasParentAttr</item>
+			<item>HasParentPcgs</item>
+			<item>HasPartialClosureOfCongruence</item>
+			<item>HasPartialOrderOfHasseDiagram</item>
+			<item>HasPcGroupWithPcgs</item>
+			<item>HasPcSeries</item>
+			<item>HasPcgs</item>
+			<item>HasPcgsCentralSeries</item>
+			<item>HasPcgsChiefSeries</item>
+			<item>HasPcgsElementaryAbelianSeries</item>
+			<item>HasPcgsPCentralSeriesPGroup</item>
+			<item>HasPerfectIdentification</item>
+			<item>HasPerfectResiduum</item>
+			<item>HasPermutationTom</item>
+			<item>HasPositiveRootVectors</item>
+			<item>HasPositiveRoots</item>
+			<item>HasPositiveRootsAsWeights</item>
+			<item>HasPowerS</item>
+			<item>HasPowerSubalgebraSeries</item>
+			<item>HasPreBasis</item>
+			<item>HasPreImagesRange</item>
+			<item>HasPreferredGenerators</item>
+			<item>HasPrefrattiniSubgroup</item>
+			<item>HasPresentation</item>
+			<item>HasPrimaryGeneratorWords</item>
+			<item>HasPrimeField</item>
+			<item>HasPrimePGroup</item>
+			<item>HasPrimePowerComponents</item>
+			<item>HasPrimitiveElement</item>
+			<item>HasPrimitiveIdentification</item>
+			<item>HasPrimitiveRoot</item>
+			<item>HasProjectiveOrder</item>
+			<item>HasPseudoRandomSeed</item>
+			<item>HasPthPowerImages</item>
+			<item>HasQuasiDihedralGenerators</item>
+			<item>HasQuaternionGenerators</item>
+			<item>HasQuotientGroup</item>
+			<item>HasQuotientGroupHom</item>
+			<item>HasQuotientSemigroupCongruence</item>
+			<item>HasQuotientSemigroupHomomorphism</item>
+			<item>HasQuotientSemigroupPreimage</item>
+			<item>HasRClassOfHClass</item>
+			<item>HasRadicalGroup</item>
+			<item>HasRadicalOfAlgebra</item>
+			<item>HasRange</item>
+			<item>HasRankAction</item>
+			<item>HasRankMat</item>
+			<item>HasRankOfTransformation</item>
+			<item>HasRankPGroup</item>
+			<item>HasRat</item>
+			<item>HasRationalClasses</item>
+			<item>HasRationalFunctionsFamily</item>
+			<item>HasRationalizedMat</item>
+			<item>HasRealClasses</item>
+			<item>HasRecNames</item>
+			<item>HasReducedConfluentRewritingSystem</item>
+			<item>HasReesCongruenceOfSemigroupIdeal</item>
+			<item>HasReesZeroMatrixSemigroupElementIsZero</item>
+			<item>HasRefinedPcGroup</item>
+			<item>HasRegularActionHomomorphism</item>
+			<item>HasRelationsOfFpMonoid</item>
+			<item>HasRelationsOfFpSemigroup</item>
+			<item>HasRelativeOrders</item>
+			<item>HasRelatorsOfFpAlgebra</item>
+			<item>HasRelatorsOfFpGroup</item>
+			<item>HasRepresentative</item>
+			<item>HasRepresentativeSmallest</item>
+			<item>HasRepresentativesContainedRightCosets</item>
+			<item>HasRepresentativesMinimalBlocksAttr</item>
+			<item>HasRepresentativesPerfectSubgroups</item>
+			<item>HasRepresentativesSimpleSubgroups</item>
+			<item>HasRespectsAddition</item>
+			<item>HasRespectsAdditiveInverses</item>
+			<item>HasRespectsInverses</item>
+			<item>HasRespectsMultiplication</item>
+			<item>HasRespectsOne</item>
+			<item>HasRespectsScalarMultiplication</item>
+			<item>HasRespectsZero</item>
+			<item>HasRightActingAlgebra</item>
+			<item>HasRightActingDomain</item>
+			<item>HasRightActingGroup</item>
+			<item>HasRightActingRingOfIdeal</item>
+			<item>HasRightDerivations</item>
+			<item>HasRightTransversalInParent</item>
+			<item>HasRootOfDefiningPolynomial</item>
+			<item>HasRootSystem</item>
+			<item>HasRowIndexOfReesMatrixSemigroupElement</item>
+			<item>HasRowIndexOfReesZeroMatrixSemigroupElement</item>
+			<item>HasRowsOfReesMatrixSemigroup</item>
+			<item>HasRowsOfReesZeroMatrixSemigroup</item>
+			<item>HasRules</item>
+			<item>HasSLDegree</item>
+			<item>HasSLUnderlyingField</item>
+			<item>HasSandwichMatrixOfReesMatrixSemigroup</item>
+			<item>HasSandwichMatrixOfReesZeroMatrixSemigroup</item>
+			<item>HasSemiEchelonBasis</item>
+			<item>HasSemiEchelonMat</item>
+			<item>HasSemiEchelonMatTransformation</item>
+			<item>HasSemiSimpleType</item>
+			<item>HasSemidirectFactorsOfGroup</item>
+			<item>HasSemidirectProductInfo</item>
+			<item>HasSemigroupOfRewritingSystem</item>
+			<item>HasSiftFunction</item>
+			<item>HasSiftGroup</item>
+			<item>HasSignPerm</item>
+			<item>HasSimpleSystem</item>
+			<item>HasSimsNo</item>
+			<item>HasSize</item>
+			<item>HasSizesCentralizers</item>
+			<item>HasSizesConjugacyClasses</item>
+			<item>HasSmallGeneratingSet</item>
+			<item>HasSmallestGeneratorPerm</item>
+			<item>HasSmallestMovedPoint</item>
+			<item>HasSmallestMovedPointPerm</item>
+			<item>HasSocle</item>
+			<item>HasSocleComplement</item>
+			<item>HasSocleDimensions</item>
+			<item>HasSocleTypePrimitiveGroup</item>
+			<item>HasSortingPerm</item>
+			<item>HasSource</item>
+			<item>HasSparseCartanMatrix</item>
+			<item>HasSpecialPcgs</item>
+			<item>HasSplittingField</item>
+			<item>HasStabChainImmutable</item>
+			<item>HasStabChainMutable</item>
+			<item>HasStabChainOptions</item>
+			<item>HasStabilizerOfExternalSet</item>
+			<item>HasStandardGeneratorsInfo</item>
+			<item>HasStoredExcludedOrders</item>
+			<item>HasStoredGroebnerBasis</item>
+			<item>HasStraightLineProgElmType</item>
+			<item>HasStraightLineProgramsTom</item>
+			<item>HasString</item>
+			<item>HasStructureConstantsTable</item>
+			<item>HasStructureDescription</item>
+			<item>HasSubdirectProductInfo</item>
+			<item>HasSubfields</item>
+			<item>HasSubnormalSeriesInParent</item>
+			<item>HasSubsTom</item>
+			<item>HasSubspaces</item>
+			<item>HasSubspacesAll</item>
+			<item>HasSuccessors</item>
+			<item>HasSupersolvableResiduum</item>
+			<item>HasSurjectiveActionHomomorphismAttr</item>
+			<item>HasSylowSystem</item>
+			<item>HasSymmetricDegree</item>
+			<item>HasSymmetricParentGroup</item>
+			<item>HasTableOfMarks</item>
+			<item>HasTestMonomial</item>
+			<item>HasTestMonomialQuick</item>
+			<item>HasTestQuasiPrimitive</item>
+			<item>HasTestRelativelySM</item>
+			<item>HasTestSubnormallyMonomial</item>
+			<item>HasTietzeOrigin</item>
+			<item>HasTrace</item>
+			<item>HasTranformsOneIntoZero</item>
+			<item>HasTransformationRepresentation</item>
+			<item>HasTransformsAdditionIntoMultiplication</item>
+			<item>HasTransformsAdditiveInversesIntoInverses</item>
+			<item>HasTransformsInversesIntoAdditiveInverses</item>
+			<item>HasTransformsMultiplicationIntoAddition</item>
+			<item>HasTransformsZeroIntoOne</item>
+			<item>HasTransitiveIdentification</item>
+			<item>HasTransitivity</item>
+			<item>HasTransposedMat</item>
+			<item>HasTransposedMatAttr</item>
+			<item>HasTransposedMatImmutable</item>
+			<item>HasTransposedMatrixGroup</item>
+			<item>HasTransversal</item>
+			<item>HasTriangulizedNullspaceMat</item>
+			<item>HasTrivialCharacter</item>
+			<item>HasTrivialSubFLMLOR</item>
+			<item>HasTrivialSubadditiveMagmaWithZero</item>
+			<item>HasTrivialSubalgebra</item>
+			<item>HasTrivialSubgroup</item>
+			<item>HasTrivialSubmagmaWithOne</item>
+			<item>HasTrivialSubmodule</item>
+			<item>HasTrivialSubmonoid</item>
+			<item>HasTrivialSubnearAdditiveMagmaWithZero</item>
+			<item>HasTrivialSubspace</item>
+			<item>HasTwoClosure</item>
+			<item>HasTzOptions</item>
+			<item>HasTzRules</item>
+			<item>HasUnderlyingCharacterTable</item>
+			<item>HasUnderlyingCharacteristic</item>
+			<item>HasUnderlyingCollection</item>
+			<item>HasUnderlyingElementOfReesMatrixSemigroupElement</item>
+			<item>HasUnderlyingElementOfReesZeroMatrixSemigroupElement</item>
+			<item>HasUnderlyingExternalSet</item>
+			<item>HasUnderlyingFamily</item>
+			<item>HasUnderlyingField</item>
+			<item>HasUnderlyingGeneralMapping</item>
+			<item>HasUnderlyingGroup</item>
+			<item>HasUnderlyingLeftModule</item>
+			<item>HasUnderlyingLieAlgebra</item>
+			<item>HasUnderlyingMagma</item>
+			<item>HasUnderlyingRelation</item>
+			<item>HasUnderlyingSemigroupOfReesMatrixSemigroup</item>
+			<item>HasUnderlyingSemigroupOfReesZeroMatrixSemigroup</item>
+			<item>HasUnderlyingVectorSpace</item>
+			<item>HasUnits</item>
+			<item>HasUniversalEnvelopingAlgebra</item>
+			<item>HasUpperActingDomain</item>
+			<item>HasUpperCentralSeriesOfGroup</item>
+			<item>HasValuesOfClassFunction</item>
+			<item>HasWeightOfGenerators</item>
+			<item>HasWeightsTom</item>
+			<item>HasWeylGroup</item>
+			<item>HasWreathProductInfo</item>
+			<item>HasZClassRepsQClass</item>
+			<item>HasZero</item>
+			<item>HasZeroAttr</item>
+			<item>HasZeroCoefficient</item>
+			<item>HasZeroImmutable</item>
+			<item>HasZuppos</item>
+			<item>HashDictAddDictionary</item>
+			<item>HashFunct</item>
+			<item>HashKeyBag</item>
+			<item>HashKeyEnumerator</item>
+			<item>HashTable</item>
+			<item>HasnpeGL</item>
+			<item>HasnpePSL</item>
+			<item>HasnpeSL</item>
+			<item>HasseDiagramBinaryRelation</item>
+			<item>HeadPcElementByNumber</item>
+			<item>HeadsInfoOfSemiEchelonizedMat</item>
+			<item>HeadsInfoOfSemiEchelonizedMats</item>
+			<item>HenselBound</item>
+			<item>HermiteNormalFormIntegerMat</item>
+			<item>HermiteNormalFormIntegerMatTransform</item>
+			<item>HermiteNormalFormIntegerMatTransforms</item>
+			<item>HeuGcdIntPolsCoeffs</item>
+			<item>HeuGcdIntPolsExtRep</item>
+			<item>HeuristicCancelPolynomialsExtRep</item>
+			<item>HexBlistSetup</item>
+			<item>HexStringBlist</item>
+			<item>HexStringBlistEncode</item>
+			<item>HexStringInt</item>
+			<item>HideGlobalVariables</item>
+			<item>HighestWeightModule</item>
+			<item>HirschLength</item>
+			<item>Hom</item>
+			<item>HomCoset</item>
+			<item>HomCosetFamily</item>
+			<item>HomCosetWithImage</item>
+			<item>HomFromFree</item>
+			<item>HomFromFreeOfBasicImageGroup</item>
+			<item>HomTransversal</item>
+			<item>HomeEnumerator</item>
+			<item>HomePcgs</item>
+			<item>HomomorphicCanonicalPcgs</item>
+			<item>HomomorphicInducedPcgs</item>
+			<item>Homomorphism</item>
+			<item>HomomorphismFactorSemigroup</item>
+			<item>HomomorphismFactorSemigroupByClosure</item>
+			<item>HomomorphismQuotientSemigroup</item>
+			<item>HomomorphismTransformationSemigroup</item>
+			<item>HomomorphismsSeries</item>
+			<item>HumanReadableDefinition</item>
+			<item>IBr</item>
+			<item>IMFList</item>
+			<item>IMFLoad</item>
+			<item>IMFRec</item>
+			<item>IdFunc</item>
+			<item>IdGroup</item>
+			<item>IdSmallGroup</item>
+			<item>Ideal</item>
+			<item>IdealByGenerators</item>
+			<item>IdealByGeneratorsForLieAlgebra</item>
+			<item>IdealNC</item>
+			<item>Idempotents</item>
+			<item>IdempotentsTom</item>
+			<item>IdempotentsTomInfo</item>
+			<item>IdentificationGenericGroup</item>
+			<item>IdentificationOfConjugacyClasses</item>
+			<item>IdentificationPermGroup</item>
+			<item>IdentificationSolvableGroup</item>
+			<item>Identifier</item>
+			<item>IdentifierLetters</item>
+			<item>Identity</item>
+			<item>IdentityBinaryRelation</item>
+			<item>IdentityFromSCTable</item>
+			<item>IdentityMapping</item>
+			<item>IdentityMat</item>
+			<item>IdentityTransformation</item>
+			<item>IdsOfAllGroups</item>
+			<item>IdsOfAllSmallGroups</item>
+			<item>Ignore</item>
+			<item>Image</item>
+			<item>ImageElm</item>
+			<item>ImageElmActionHomomorphism</item>
+			<item>ImageElt</item>
+			<item>ImageGroup</item>
+			<item>ImageInWord</item>
+			<item>ImageKernelBlocksHomomorphism</item>
+			<item>ImageListOfTransformation</item>
+			<item>ImageMat</item>
+			<item>ImageOnAbelianCSPG</item>
+			<item>ImageSetOfTransformation</item>
+			<item>ImageSiftedBaseImage</item>
+			<item>ImageUnderWord</item>
+			<item>Images</item>
+			<item>ImagesElm</item>
+			<item>ImagesListOfBinaryRelation</item>
+			<item>ImagesRepresentative</item>
+			<item>ImagesRepresentativeGMBIByElementsList</item>
+			<item>ImagesSet</item>
+			<item>ImagesSmallestGenerators</item>
+			<item>ImagesSource</item>
+			<item>ImfInvariants</item>
+			<item>ImfMatrixGroup</item>
+			<item>ImfNumberQClasses</item>
+			<item>ImfNumberQQClasses</item>
+			<item>ImfNumberZClasses</item>
+			<item>ImfPositionNumber</item>
+			<item>ImfRecord</item>
+			<item>ImgElmSLP</item>
+			<item>ImgElmSLPNonrecursive</item>
+			<item>ImmediateImplicationsIdentityMapping</item>
+			<item>ImmediateImplicationsZeroMapping</item>
+			<item>Immutable</item>
+			<item>ImmutableBasis</item>
+			<item>ImmutableMatrix</item>
+			<item>ImproveActionDegreeByBlocks</item>
+			<item>ImproveMaps</item>
+			<item>ImproveOperationDegreeByBlocks</item>
+			<item>InParentFOA</item>
+			<item>IncorporateCentralRelations</item>
+			<item>IncreaseCounter</item>
+			<item>IndPcgsWrtSpecFromFamOrHome</item>
+			<item>IndependentGeneratorsAbelianPPermGroup</item>
+			<item>IndependentGeneratorsOfAbelianGroup</item>
+			<item>IndependentGeneratorsOfAbelianMatrixGroup</item>
+			<item>Indeterminate</item>
+			<item>IndeterminateName</item>
+			<item>IndeterminateNumberOfLaurentPolynomial</item>
+			<item>IndeterminateNumberOfUnivariateLaurentPolynomial</item>
+			<item>IndeterminateNumberOfUnivariateRationalFunction</item>
+			<item>IndeterminateOfLaurentPolynomial</item>
+			<item>IndeterminateOfUnivariateRationalFunction</item>
+			<item>Indeterminateness</item>
+			<item>IndeterminatenessInfo</item>
+			<item>IndeterminatesOfPolynomialRing</item>
+			<item>Index</item>
+			<item>IndexCosetTab</item>
+			<item>IndexInParent</item>
+			<item>IndexInWholeGroup</item>
+			<item>IndexNC</item>
+			<item>IndexOp</item>
+			<item>Indicator</item>
+			<item>IndicatorOp</item>
+			<item>IndicesCentralNormalSteps</item>
+			<item>IndicesChiefNormalSteps</item>
+			<item>IndicesEANormalSteps</item>
+			<item>IndicesInvolutaryGenerators</item>
+			<item>IndicesNormalSteps</item>
+			<item>IndicesOfAdjointBasis</item>
+			<item>IndicesPCentralNormalStepsPGroup</item>
+			<item>IndicesStabChain</item>
+			<item>Indirected</item>
+			<item>Induced</item>
+			<item>InducedActionAutGroup</item>
+			<item>InducedActionFactor</item>
+			<item>InducedAutomorphism</item>
+			<item>InducedClassFunction</item>
+			<item>InducedClassFunctions</item>
+			<item>InducedClassFunctionsByFusionMap</item>
+			<item>InducedCyclic</item>
+			<item>InducedGModule</item>
+			<item>InducedLinearAction</item>
+			<item>InducedModule</item>
+			<item>InducedModuleByFieldReduction</item>
+			<item>InducedPcgs</item>
+			<item>InducedPcgsByGenerators</item>
+			<item>InducedPcgsByGeneratorsNC</item>
+			<item>InducedPcgsByGeneratorsWithImages</item>
+			<item>InducedPcgsByPcSequence</item>
+			<item>InducedPcgsByPcSequenceAndGenerators</item>
+			<item>InducedPcgsByPcSequenceNC</item>
+			<item>InducedPcgsWrtFamilyPcgs</item>
+			<item>InducedPcgsWrtHomePcgs</item>
+			<item>InducedPcgsWrtSpecialPcgs</item>
+			<item>InducedRepFpGroup</item>
+			<item>InducedRepresentation</item>
+			<item>InducedRepresentationImagesRepresentative</item>
+			<item>InduciblePairs</item>
+			<item>InductionScheme</item>
+			<item>Inequalities</item>
+			<item>InertiaSubgroup</item>
+			<item>InfiniteListOfGenerators</item>
+			<item>InfiniteListOfNames</item>
+			<item>Inflated</item>
+			<item>Info</item>
+			<item>InfoAction</item>
+			<item>InfoAlgebra</item>
+			<item>InfoAttributes</item>
+			<item>InfoAutGrp</item>
+			<item>InfoBasicImage</item>
+			<item>InfoBckt</item>
+			<item>InfoChain</item>
+			<item>InfoCharacterTable</item>
+			<item>InfoClassFamily</item>
+			<item>InfoClasses</item>
+			<item>InfoCoh</item>
+			<item>InfoCompPairs</item>
+			<item>InfoComplement</item>
+			<item>InfoConfluence</item>
+			<item>InfoCoset</item>
+			<item>InfoData</item>
+			<item>InfoDebug</item>
+			<item>InfoDecision</item>
+			<item>InfoDoPrint</item>
+			<item>InfoExtReps</item>
+			<item>InfoFactor</item>
+			<item>InfoFpGroup</item>
+			<item>InfoGalois</item>
+			<item>InfoGlobal</item>
+			<item>InfoGroebner</item>
+			<item>InfoGroup</item>
+			<item>InfoHash</item>
+			<item>InfoHashTables</item>
+			<item>InfoHomClass</item>
+			<item>InfoIdgroup</item>
+			<item>InfoImf</item>
+			<item>InfoKnuthBendix</item>
+			<item>InfoLattice</item>
+			<item>InfoLevel</item>
+			<item>InfoMatInt</item>
+			<item>InfoMatOrb</item>
+			<item>InfoMatrix</item>
+			<item>InfoMeatAxe</item>
+			<item>InfoMethodSelection</item>
+			<item>InfoMonomial</item>
+			<item>InfoMorph</item>
+			<item>InfoNumtheor</item>
+			<item>InfoOperation</item>
+			<item>InfoOptions</item>
+			<item>InfoOverGr</item>
+			<item>InfoPcGroup</item>
+			<item>InfoPcNormalizer</item>
+			<item>InfoPcSubgroup</item>
+			<item>InfoPerformance</item>
+			<item>InfoPoly</item>
+			<item>InfoPrimeInt</item>
+			<item>InfoQuotientGroup</item>
+			<item>InfoQuotientSystem</item>
+			<item>InfoRSS</item>
+			<item>InfoRandIso</item>
+			<item>InfoSQ</item>
+			<item>InfoSchur</item>
+			<item>InfoSearchTable</item>
+			<item>InfoSpecPcgs</item>
+			<item>InfoTeaching</item>
+			<item>InfoText</item>
+			<item>InfoTiming</item>
+			<item>InfoTom</item>
+			<item>InfoTransversal</item>
+			<item>InfoTuples</item>
+			<item>InfoWarning</item>
+			<item>InfoZLattice</item>
+			<item>InitAbsAndIrredModules</item>
+			<item>InitEpimorphismSQ</item>
+			<item>InitFusion</item>
+			<item>InitPowerMap</item>
+			<item>InitialiseCentralRelations</item>
+			<item>InitializePackagesInfoRecords</item>
+			<item>InitializeSchreierTree</item>
+			<item>Injection</item>
+			<item>InjectionZeroMagma</item>
+			<item>InnerAutomorphism</item>
+			<item>InnerAutomorphismNC</item>
+			<item>InnerAutomorphismsAutomorphismGroup</item>
+			<item>InnerSubdirectProducts</item>
+			<item>InputLogTo</item>
+			<item>InputOutputLocalProcess</item>
+			<item>InputOutputStreamByPtyDefaultType</item>
+			<item>InputTextFile</item>
+			<item>InputTextFileStillOpen</item>
+			<item>InputTextFileType</item>
+			<item>InputTextNone</item>
+			<item>InputTextNoneType</item>
+			<item>InputTextString</item>
+			<item>InputTextStringType</item>
+			<item>InputTextUser</item>
+			<item>Insert</item>
+			<item>InsertElmList</item>
+			<item>InsertTrivialStabilizer</item>
+			<item>InstallAccessToGenerators</item>
+			<item>InstallAtExit</item>
+			<item>InstallAttributeFunction</item>
+			<item>InstallAttributeMethodByGroupGeneralMappingByImages</item>
+			<item>InstallCharReadHookFunc</item>
+			<item>InstallEqMethodForMappingsFromGenerators</item>
+			<item>InstallFactorMaintenance</item>
+			<item>InstallFlushableValue</item>
+			<item>InstallGlobalFunction</item>
+			<item>InstallHandlingByNiceBasis</item>
+			<item>InstallHiddenTrueMethod</item>
+			<item>InstallImmediateMethod</item>
+			<item>InstallIsomorphismMaintenance</item>
+			<item>InstallIsomorphismMaintenanceFunction</item>
+			<item>InstallMethod</item>
+			<item>InstallMonomialOrdering</item>
+			<item>InstallOtherMethod</item>
+			<item>InstallPcgsSeriesFromIndices</item>
+			<item>InstallSubsetMaintenance</item>
+			<item>InstallTrueMethod</item>
+			<item>InstallTrueMethodNewFilter</item>
+			<item>InstallValue</item>
+			<item>InstalledPackageVersion</item>
+			<item>Int</item>
+			<item>IntFFE</item>
+			<item>IntFFESymm</item>
+			<item>IntHexString</item>
+			<item>IntScalarProducts</item>
+			<item>IntVecFFE</item>
+			<item>Integers</item>
+			<item>IntegralizedMat</item>
+			<item>IntegratedStraightLineProgram</item>
+			<item>IntermediateGroup</item>
+			<item>IntermediateSubgroups</item>
+			<item>InternalRepresentative</item>
+			<item>InterpolatedPolynomial</item>
+			<item>IntersectBlist</item>
+			<item>IntersectSet</item>
+			<item>Intersection</item>
+			<item>IntersectionBlist</item>
+			<item>IntersectionNormalClosurePermGroup</item>
+			<item>IntersectionSet</item>
+			<item>IntersectionSumPcgs</item>
+			<item>IntersectionsTom</item>
+			<item>InvariantBilinearForm</item>
+			<item>InvariantElementaryAbelianSeries</item>
+			<item>InvariantForm</item>
+			<item>InvariantLattice</item>
+			<item>InvariantQuadraticForm</item>
+			<item>InvariantSesquilinearForm</item>
+			<item>InvariantSubgroupsElementaryAbelianGroup</item>
+			<item>InvariantSubspaceOrCyclicGroup</item>
+			<item>InvariantSubspaceOrUniformCyclicPGroup</item>
+			<item>Inverse</item>
+			<item>InverseAsWord</item>
+			<item>InverseAttr</item>
+			<item>InverseClasses</item>
+			<item>InverseGeneralMapping</item>
+			<item>InverseImmutable</item>
+			<item>InverseMap</item>
+			<item>InverseMatMod</item>
+			<item>InverseMutable</item>
+			<item>InverseOp</item>
+			<item>InversePcgs</item>
+			<item>InverseRepresentative</item>
+			<item>InverseRepresentativeWord</item>
+			<item>InverseSLPElm</item>
+			<item>InverseSM</item>
+			<item>InverseSameMutability</item>
+			<item>Irr</item>
+			<item>IrrBaumClausen</item>
+			<item>IrrConlon</item>
+			<item>IrrDixonSchneider</item>
+			<item>IrrFacsPol</item>
+			<item>IrredSolGroupList</item>
+			<item>IrredSolJSGens</item>
+			<item>IrreducibleDifferences</item>
+			<item>IrreducibleModules</item>
+			<item>IrreducibleRepresentations</item>
+			<item>IrreducibleRepresentationsByBaumClausen</item>
+			<item>IrreducibleRepresentationsDixon</item>
+			<item>IrreducibleSolvableGroup</item>
+			<item>IrreducibleSolvableGroupMS</item>
+			<item>IsANFAutomorphism</item>
+			<item>IsANFAutomorphismRep</item>
+			<item>IsAbelian</item>
+			<item>IsAbelianNumberField</item>
+			<item>IsAbelianNumberFieldPolynomialRing</item>
+			<item>IsAbelianTom</item>
+			<item>IsActionHomomorphism</item>
+			<item>IsActionHomomorphismAutomGroup</item>
+			<item>IsActionHomomorphismByActors</item>
+			<item>IsActionHomomorphismByBase</item>
+			<item>IsActionHomomorphismSubset</item>
+			<item>IsAdditiveCoset</item>
+			<item>IsAdditiveCosetDefaultRep</item>
+			<item>IsAdditiveElement</item>
+			<item>IsAdditiveElementAsMultiplicativeElementRep</item>
+			<item>IsAdditiveElementCollColl</item>
+			<item>IsAdditiveElementCollCollColl</item>
+			<item>IsAdditiveElementCollection</item>
+			<item>IsAdditiveElementList</item>
+			<item>IsAdditiveElementTable</item>
+			<item>IsAdditiveElementWithInverse</item>
+			<item>IsAdditiveElementWithInverseCollColl</item>
+			<item>IsAdditiveElementWithInverseCollCollColl</item>
+			<item>IsAdditiveElementWithInverseCollection</item>
+			<item>IsAdditiveElementWithInverseList</item>
+			<item>IsAdditiveElementWithInverseTable</item>
+			<item>IsAdditiveElementWithZero</item>
+			<item>IsAdditiveElementWithZeroCollColl</item>
+			<item>IsAdditiveElementWithZeroCollCollColl</item>
+			<item>IsAdditiveElementWithZeroCollection</item>
+			<item>IsAdditiveElementWithZeroList</item>
+			<item>IsAdditiveElementWithZeroTable</item>
+			<item>IsAdditiveGroup</item>
+			<item>IsAdditiveGroupGeneralMapping</item>
+			<item>IsAdditiveGroupHomomorphism</item>
+			<item>IsAdditiveGroupToGroupGeneralMapping</item>
+			<item>IsAdditiveGroupToGroupHomomorphism</item>
+			<item>IsAdditiveMagma</item>
+			<item>IsAdditiveMagmaWithInverses</item>
+			<item>IsAdditiveMagmaWithZero</item>
+			<item>IsAdditivelyCommutative</item>
+			<item>IsAdditivelyCommutativeElement</item>
+			<item>IsAdditivelyCommutativeElementCollColl</item>
+			<item>IsAdditivelyCommutativeElementCollection</item>
+			<item>IsAdditivelyCommutativeElementFamily</item>
+			<item>IsAlgBFRep</item>
+			<item>IsAlgExtRep</item>
+			<item>IsAlgebra</item>
+			<item>IsAlgebraGeneralMapping</item>
+			<item>IsAlgebraGeneralMappingByImagesDefaultRep</item>
+			<item>IsAlgebraHomomorphism</item>
+			<item>IsAlgebraHomomorphismFromFpRep</item>
+			<item>IsAlgebraModule</item>
+			<item>IsAlgebraModuleElement</item>
+			<item>IsAlgebraModuleElementCollection</item>
+			<item>IsAlgebraModuleElementFamily</item>
+			<item>IsAlgebraWithOne</item>
+			<item>IsAlgebraWithOneGeneralMapping</item>
+			<item>IsAlgebraWithOneHomomorphism</item>
+			<item>IsAlgebraicElement</item>
+			<item>IsAlgebraicElementCollColl</item>
+			<item>IsAlgebraicElementCollCollColl</item>
+			<item>IsAlgebraicElementCollection</item>
+			<item>IsAlgebraicElementFamily</item>
+			<item>IsAlgebraicExtension</item>
+			<item>IsAlgebraicExtensionDefaultRep</item>
+			<item>IsAlgebraicExtensionPolynomialRing</item>
+			<item>IsAlphaChar</item>
+			<item>IsAlternatingGroup</item>
+			<item>IsAnticommutative</item>
+			<item>IsAntisymmetricBinaryRelation</item>
+			<item>IsAssocWord</item>
+			<item>IsAssocWordCollection</item>
+			<item>IsAssocWordFamily</item>
+			<item>IsAssocWordWithInverse</item>
+			<item>IsAssocWordWithInverseCollection</item>
+			<item>IsAssocWordWithInverseFamily</item>
+			<item>IsAssocWordWithOne</item>
+			<item>IsAssocWordWithOneCollection</item>
+			<item>IsAssocWordWithOneFamily</item>
+			<item>IsAssociated</item>
+			<item>IsAssociative</item>
+			<item>IsAssociativeAOpDSum</item>
+			<item>IsAssociativeAOpESum</item>
+			<item>IsAssociativeElement</item>
+			<item>IsAssociativeElementCollColl</item>
+			<item>IsAssociativeElementCollection</item>
+			<item>IsAssociativeLOpDProd</item>
+			<item>IsAssociativeLOpEProd</item>
+			<item>IsAssociativeROpDProd</item>
+			<item>IsAssociativeROpEProd</item>
+			<item>IsAssociativeUOpDProd</item>
+			<item>IsAssociativeUOpEProd</item>
+			<item>IsAttributeStoringRep</item>
+			<item>IsAttributeStoringRepFlags</item>
+			<item>IsAutomorphismGroup</item>
+			<item>IsBLetterAssocWordRep</item>
+			<item>IsBLetterWordsFamily</item>
+			<item>IsBasicImageEltRep</item>
+			<item>IsBasicImageEltRepCollection</item>
+			<item>IsBasicImageGroup</item>
+			<item>IsBasicWreathLessThanOrEqual</item>
+			<item>IsBasicWreathProductOrdering</item>
+			<item>IsBasis</item>
+			<item>IsBasisByNiceBasis</item>
+			<item>IsBasisFiniteFieldRep</item>
+			<item>IsBasisOfAlgebraModuleElementSpace</item>
+			<item>IsBasisOfMonomialSpaceRep</item>
+			<item>IsBasisOfSparseRowSpaceRep</item>
+			<item>IsBasisOfWeightRepElementSpace</item>
+			<item>IsBasisWithReplacedLeftModuleRep</item>
+			<item>IsBergerCondition</item>
+			<item>IsBijective</item>
+			<item>IsBinaryRelation</item>
+			<item>IsBinaryRelationDefaultRep</item>
+			<item>IsBinaryRelationOnPointsRep</item>
+			<item>IsBlist</item>
+			<item>IsBlistRep</item>
+			<item>IsBlockMatrixRep</item>
+			<item>IsBlocksHomomorphism</item>
+			<item>IsBlocksOfActionHomomorphism</item>
+			<item>IsBlowUpIsomorphism</item>
+			<item>IsBool</item>
+			<item>IsBound</item>
+			<item>IsBoundElmWPObj</item>
+			<item>IsBoundGlobal</item>
+			<item>IsBracketRep</item>
+			<item>IsBrauerTable</item>
+			<item>IsBravaisGroup</item>
+			<item>IsBuiltFromAdditiveMagmaWithInverses</item>
+			<item>IsBuiltFromGroup</item>
+			<item>IsBuiltFromMagma</item>
+			<item>IsBuiltFromMagmaWithInverses</item>
+			<item>IsBuiltFromMagmaWithOne</item>
+			<item>IsBuiltFromMonoid</item>
+			<item>IsBuiltFromSemigroup</item>
+			<item>IsCanonicalBasis</item>
+			<item>IsCanonicalBasisAbelianNumberFieldRep</item>
+			<item>IsCanonicalBasisAlgebraicExtension</item>
+			<item>IsCanonicalBasisCyclotomicFieldRep</item>
+			<item>IsCanonicalBasisFreeMagmaRingRep</item>
+			<item>IsCanonicalBasisFullMatrixModule</item>
+			<item>IsCanonicalBasisFullRowModule</item>
+			<item>IsCanonicalBasisFullSCAlgebra</item>
+			<item>IsCanonicalBasisGaussianIntegersRep</item>
+			<item>IsCanonicalBasisIntegersRep</item>
+			<item>IsCanonicalBasisRationals</item>
+			<item>IsCanonicalNiceMonomorphism</item>
+			<item>IsCanonicalPcgs</item>
+			<item>IsCanonicalPcgsWrtSpecialPcgs</item>
+			<item>IsCentral</item>
+			<item>IsCentralFromGenerators</item>
+			<item>IsChainTypeGroup</item>
+			<item>IsChar</item>
+			<item>IsCharCollection</item>
+			<item>IsCharacter</item>
+			<item>IsCharacterTable</item>
+			<item>IsCharacterTableInProgress</item>
+			<item>IsCharacteristicMatrixPGroup</item>
+			<item>IsCharacteristicSubgroup</item>
+			<item>IsCheapConwayPolynomial</item>
+			<item>IsClassFunction</item>
+			<item>IsClassFunctionsSpace</item>
+			<item>IsClassFusionOfNormalSubgroup</item>
+			<item>IsClosedStream</item>
+			<item>IsCochain</item>
+			<item>IsCochainCollection</item>
+			<item>IsCochainsSpace</item>
+			<item>IsCocycle</item>
+			<item>IsCoeffsElms</item>
+			<item>IsCollCollsElms</item>
+			<item>IsCollCollsElmsElms</item>
+			<item>IsCollCollsElmsElmsX</item>
+			<item>IsCollLieCollsElms</item>
+			<item>IsCollection</item>
+			<item>IsCollectionFamily</item>
+			<item>IsCollsCollsElms</item>
+			<item>IsCollsCollsElmsX</item>
+			<item>IsCollsCollsElmsXX</item>
+			<item>IsCollsElms</item>
+			<item>IsCollsElmsColls</item>
+			<item>IsCollsElmsElms</item>
+			<item>IsCollsElmsElmsElms</item>
+			<item>IsCollsElmsElmsX</item>
+			<item>IsCollsElmsX</item>
+			<item>IsCollsElmsXElms</item>
+			<item>IsCollsElmsXX</item>
+			<item>IsCollsXElms</item>
+			<item>IsCollsXElmsX</item>
+			<item>IsCombinatorialCollectorRep</item>
+			<item>IsCommutative</item>
+			<item>IsCommutativeElement</item>
+			<item>IsCommutativeElementCollColl</item>
+			<item>IsCommutativeElementCollection</item>
+			<item>IsCommutativeFamily</item>
+			<item>IsCommutativeFromGenerators</item>
+			<item>IsCompatiblePair</item>
+			<item>IsComponentObjectRep</item>
+			<item>IsCompositionMappingRep</item>
+			<item>IsConfluent</item>
+			<item>IsCongruenceClass</item>
+			<item>IsConjugacyClassGroupRep</item>
+			<item>IsConjugacyClassPermGroupRep</item>
+			<item>IsConjugacyClassSubgroupsByStabilizerRep</item>
+			<item>IsConjugacyClassSubgroupsRep</item>
+			<item>IsConjugate</item>
+			<item>IsConjugatorAutomorphism</item>
+			<item>IsConjugatorIsomorphism</item>
+			<item>IsConsistentPolynomial</item>
+			<item>IsConstantRationalFunction</item>
+			<item>IsConstantTimeAccessGeneralMapping</item>
+			<item>IsConstantTimeAccessList</item>
+			<item>IsConstituentHomomorphism</item>
+			<item>IsContainedInSpan</item>
+			<item>IsCopyable</item>
+			<item>IsCyc</item>
+			<item>IsCycInt</item>
+			<item>IsCyclic</item>
+			<item>IsCyclicTom</item>
+			<item>IsCyclotomic</item>
+			<item>IsCyclotomicCollColl</item>
+			<item>IsCyclotomicCollCollColl</item>
+			<item>IsCyclotomicCollection</item>
+			<item>IsCyclotomicField</item>
+			<item>IsCyclotomicMatrixGroup</item>
+			<item>IsDataObjectRep</item>
+			<item>IsDeepThoughtCollectorRep</item>
+			<item>IsDefaultGeneralMappingRep</item>
+			<item>IsDefaultRhsTypeSingleCollector</item>
+			<item>IsDefaultTupleRep</item>
+			<item>IsDenseCoeffVectorRep</item>
+			<item>IsDenseHashRep</item>
+			<item>IsDenseList</item>
+			<item>IsDiagonalMat</item>
+			<item>IsDictionary</item>
+			<item>IsDictionaryDefaultRep</item>
+			<item>IsDigitChar</item>
+			<item>IsDihedralGroup</item>
+			<item>IsDirectSumElement</item>
+			<item>IsDirectSumElementCollection</item>
+			<item>IsDirectSumElementFamily</item>
+			<item>IsDirectSumElementsSpace</item>
+			<item>IsDirectory</item>
+			<item>IsDirectoryPath</item>
+			<item>IsDirectoryRep</item>
+			<item>IsDistributive</item>
+			<item>IsDistributiveLOpDProd</item>
+			<item>IsDistributiveLOpDSum</item>
+			<item>IsDistributiveLOpEProd</item>
+			<item>IsDistributiveLOpESum</item>
+			<item>IsDistributiveROpDProd</item>
+			<item>IsDistributiveROpDSum</item>
+			<item>IsDistributiveROpEProd</item>
+			<item>IsDistributiveROpESum</item>
+			<item>IsDistributiveUOpDProd</item>
+			<item>IsDistributiveUOpDSum</item>
+			<item>IsDistributiveUOpEProd</item>
+			<item>IsDistributiveUOpESum</item>
+			<item>IsDivisionRing</item>
+			<item>IsDocumentedVariable</item>
+			<item>IsDomain</item>
+			<item>IsDoneIterator</item>
+			<item>IsDoubleCoset</item>
+			<item>IsDoubleCosetDefaultRep</item>
+			<item>IsDuplicateFree</item>
+			<item>IsDuplicateFreeCollection</item>
+			<item>IsDuplicateFreeList</item>
+			<item>IsDxLargeGroup</item>
+			<item>IsElementFinitePolycyclicGroup</item>
+			<item>IsElementFinitePolycyclicGroupCollection</item>
+			<item>IsElementOfFpAlgebra</item>
+			<item>IsElementOfFpAlgebraCollection</item>
+			<item>IsElementOfFpAlgebraFamily</item>
+			<item>IsElementOfFpGroup</item>
+			<item>IsElementOfFpGroupCollection</item>
+			<item>IsElementOfFpGroupFamily</item>
+			<item>IsElementOfFpMonoid</item>
+			<item>IsElementOfFpMonoidCollection</item>
+			<item>IsElementOfFpMonoidFamily</item>
+			<item>IsElementOfFpSemigroup</item>
+			<item>IsElementOfFpSemigroupCollection</item>
+			<item>IsElementOfFpSemigroupFamily</item>
+			<item>IsElementOfFreeGroup</item>
+			<item>IsElementOfFreeGroupFamily</item>
+			<item>IsElementOfFreeMagmaRing</item>
+			<item>IsElementOfFreeMagmaRingCollection</item>
+			<item>IsElementOfFreeMagmaRingFamily</item>
+			<item>IsElementOfMagmaRingModuloRelations</item>
+			<item>IsElementOfMagmaRingModuloRelationsCollection</item>
+			<item>IsElementOfMagmaRingModuloRelationsFamily</item>
+			<item>IsElementOfMagmaRingModuloSpanOfZeroFamily</item>
+			<item>IsElementaryAbelian</item>
+			<item>IsElementsFamilyByRws</item>
+			<item>IsElmsCoeffs</item>
+			<item>IsElmsCollColls</item>
+			<item>IsElmsCollCollsX</item>
+			<item>IsElmsCollLieColls</item>
+			<item>IsElmsColls</item>
+			<item>IsElmsCollsX</item>
+			<item>IsElmsCollsXX</item>
+			<item>IsElmsLieColls</item>
+			<item>IsEmbeddingDirectProductPermGroup</item>
+			<item>IsEmbeddingImprimitiveWreathProductPermGroup</item>
+			<item>IsEmbeddingMagmaMagmaRing</item>
+			<item>IsEmbeddingProductActionWreathProductPermGroup</item>
+			<item>IsEmbeddingRingMagmaRing</item>
+			<item>IsEmbeddingWreathProductPermGroup</item>
+			<item>IsEmpty</item>
+			<item>IsEmptyRowVectorRep</item>
+			<item>IsEmptyString</item>
+			<item>IsEndOfStream</item>
+			<item>IsEndoGeneralMapping</item>
+			<item>IsEndoMapping</item>
+			<item>IsEnumeratorByFunctions</item>
+			<item>IsEnumeratorByFunctionsRep</item>
+			<item>IsEnumeratorByPcgsRep</item>
+			<item>IsEqualSet</item>
+			<item>IsEquivalenceClass</item>
+			<item>IsEquivalenceClassDefaultRep</item>
+			<item>IsEquivalenceRelation</item>
+			<item>IsEquivalenceRelationDefaultRep</item>
+			<item>IsEquivalentByFp</item>
+			<item>IsEuclideanRing</item>
+			<item>IsEvenInt</item>
+			<item>IsExecutableFile</item>
+			<item>IsExistingFile</item>
+			<item>IsExtAElement</item>
+			<item>IsExtAElementCollColl</item>
+			<item>IsExtAElementCollection</item>
+			<item>IsExtAElementList</item>
+			<item>IsExtAElementTable</item>
+			<item>IsExtASet</item>
+			<item>IsExtLElement</item>
+			<item>IsExtLElementCollColl</item>
+			<item>IsExtLElementCollection</item>
+			<item>IsExtLElementList</item>
+			<item>IsExtLElementTable</item>
+			<item>IsExtLSet</item>
+			<item>IsExtRElement</item>
+			<item>IsExtRElementCollColl</item>
+			<item>IsExtRElementCollection</item>
+			<item>IsExtRElementList</item>
+			<item>IsExtRElementTable</item>
+			<item>IsExtRSet</item>
+			<item>IsExtUSet</item>
+			<item>IsExtensibleGeneralMapping</item>
+			<item>IsExtensiblePartialMapping</item>
+			<item>IsExternalOrbit</item>
+			<item>IsExternalOrbitByStabilizerRep</item>
+			<item>IsExternalSet</item>
+			<item>IsExternalSetByActorsRep</item>
+			<item>IsExternalSetByOperatorsRep</item>
+			<item>IsExternalSetByPcgs</item>
+			<item>IsExternalSetDefaultRep</item>
+			<item>IsExternalSubset</item>
+			<item>IsFFE</item>
+			<item>IsFFECollColl</item>
+			<item>IsFFECollCollColl</item>
+			<item>IsFFECollection</item>
+			<item>IsFFEFamily</item>
+			<item>IsFFEMatrixGroup</item>
+			<item>IsFFEMatrixGroupOverLargeSpace</item>
+			<item>IsFLMLOR</item>
+			<item>IsFLMLORWithOne</item>
+			<item>IsFamFamFam</item>
+			<item>IsFamFamFamX</item>
+			<item>IsFamFamX</item>
+			<item>IsFamFamXY</item>
+			<item>IsFamLieFam</item>
+			<item>IsFamXFam</item>
+			<item>IsFamXFamY</item>
+			<item>IsFamXYFamZ</item>
+			<item>IsFamily</item>
+			<item>IsFamilyDefaultRep</item>
+			<item>IsFamilyElementOfFreeLieAlgebra</item>
+			<item>IsFamilyOfFamilies</item>
+			<item>IsFamilyOfTypes</item>
+			<item>IsFamilyOverFullCoefficientsFamily</item>
+			<item>IsFamilyPcgs</item>
+			<item>IsField</item>
+			<item>IsFieldControlledByGaloisGroup</item>
+			<item>IsFieldElementsSpace</item>
+			<item>IsFieldHomomorphism</item>
+			<item>IsFilter</item>
+			<item>IsFinite</item>
+			<item>IsFiniteBasisDefault</item>
+			<item>IsFiniteDimensional</item>
+			<item>IsFiniteFieldPolynomialRing</item>
+			<item>IsFiniteOrderElement</item>
+			<item>IsFiniteOrderElementCollColl</item>
+			<item>IsFiniteOrderElementCollection</item>
+			<item>IsFiniteOrdersPcgs</item>
+			<item>IsFiniteSemigroupGreensRelation</item>
+			<item>IsFinitelyGeneratedGroup</item>
+			<item>IsFixedStabilizer</item>
+			<item>IsFlatHashTable</item>
+			<item>IsFlexibleGeneralMapping</item>
+			<item>IsFlexiblePartialMapping</item>
+			<item>IsFpAlgebraElementsSpace</item>
+			<item>IsFpGroup</item>
+			<item>IsFpMonoid</item>
+			<item>IsFpSemigroup</item>
+			<item>IsFptoSCAMorphism</item>
+			<item>IsFrattiniFree</item>
+			<item>IsFreeGroup</item>
+			<item>IsFreeLeftModule</item>
+			<item>IsFreeMagma</item>
+			<item>IsFreeMagmaRing</item>
+			<item>IsFreeMagmaRingWithOne</item>
+			<item>IsFreeMonoid</item>
+			<item>IsFreeSemigroup</item>
+			<item>IsFrobeniusAutomorphism</item>
+			<item>IsFromFpGroupGeneralMapping</item>
+			<item>IsFromFpGroupGeneralMappingByImages</item>
+			<item>IsFromFpGroupHomomorphism</item>
+			<item>IsFromFpGroupHomomorphismByImages</item>
+			<item>IsFromFpGroupStdGensGeneralMappingByImages</item>
+			<item>IsFromFpGroupStdGensHomomorphismByImages</item>
+			<item>IsFullFpAlgebra</item>
+			<item>IsFullHomModule</item>
+			<item>IsFullMatrixModule</item>
+			<item>IsFullRowModule</item>
+			<item>IsFullSCAlgebra</item>
+			<item>IsFullSubgroupGLorSLRespectingBilinearForm</item>
+			<item>IsFullSubgroupGLorSLRespectingQuadraticForm</item>
+			<item>IsFullSubgroupGLorSLRespectingSesquilinearForm</item>
+			<item>IsFullTransformationSemigroup</item>
+			<item>IsFunction</item>
+			<item>IsGL</item>
+			<item>IsGaussInt</item>
+			<item>IsGaussRat</item>
+			<item>IsGaussianIntegers</item>
+			<item>IsGaussianMatrixSpace</item>
+			<item>IsGaussianRationals</item>
+			<item>IsGaussianRowSpace</item>
+			<item>IsGaussianSpace</item>
+			<item>IsGeneralLinearGroup</item>
+			<item>IsGeneralMapping</item>
+			<item>IsGeneralMappingCollection</item>
+			<item>IsGeneralMappingFamily</item>
+			<item>IsGeneralPcgs</item>
+			<item>IsGeneralizedCartanMatrix</item>
+			<item>IsGeneralizedDomain</item>
+			<item>IsGeneralizedRowVector</item>
+			<item>IsGeneratorsOfMagmaWithInverses</item>
+			<item>IsGenericCharacterTableRep</item>
+			<item>IsGenericFiniteSpace</item>
+			<item>IsGreensClass</item>
+			<item>IsGreensDClass</item>
+			<item>IsGreensDRelation</item>
+			<item>IsGreensHClass</item>
+			<item>IsGreensHRelation</item>
+			<item>IsGreensJClass</item>
+			<item>IsGreensJRelation</item>
+			<item>IsGreensLClass</item>
+			<item>IsGreensLRelation</item>
+			<item>IsGreensLessThanOrEqual</item>
+			<item>IsGreensRClass</item>
+			<item>IsGreensRRelation</item>
+			<item>IsGreensRelation</item>
+			<item>IsGroup</item>
+			<item>IsGroupGeneralMapping</item>
+			<item>IsGroupGeneralMappingByAsGroupGeneralMappingByImages</item>
+			<item>IsGroupGeneralMappingByImages</item>
+			<item>IsGroupGeneralMappingByPcgs</item>
+			<item>IsGroupHClass</item>
+			<item>IsGroupHomomorphism</item>
+			<item>IsGroupOfAutomorphisms</item>
+			<item>IsGroupOfAutomorphismsFiniteGroup</item>
+			<item>IsGroupOfFamily</item>
+			<item>IsGroupRing</item>
+			<item>IsGroupToAdditiveGroupGeneralMapping</item>
+			<item>IsGroupToAdditiveGroupHomomorphism</item>
+			<item>IsHandledByNiceBasis</item>
+			<item>IsHandledByNiceMonomorphism</item>
+			<item>IsHash</item>
+			<item>IsHashTable</item>
+			<item>IsHasseDiagram</item>
+			<item>IsHomCoset</item>
+			<item>IsHomCosetCollection</item>
+			<item>IsHomCosetOfAdditiveElt</item>
+			<item>IsHomCosetOfFp</item>
+			<item>IsHomCosetOfMatrix</item>
+			<item>IsHomCosetOfPerm</item>
+			<item>IsHomCosetOfTuple</item>
+			<item>IsHomCosetToAdditiveElt</item>
+			<item>IsHomCosetToAdditiveEltCollection</item>
+			<item>IsHomCosetToAdditiveEltRep</item>
+			<item>IsHomCosetToFp</item>
+			<item>IsHomCosetToFpCollection</item>
+			<item>IsHomCosetToFpRep</item>
+			<item>IsHomCosetToMatrix</item>
+			<item>IsHomCosetToMatrixCollection</item>
+			<item>IsHomCosetToMatrixRep</item>
+			<item>IsHomCosetToObjectRep</item>
+			<item>IsHomCosetToPerm</item>
+			<item>IsHomCosetToPermCollection</item>
+			<item>IsHomCosetToPermRep</item>
+			<item>IsHomCosetToTuple</item>
+			<item>IsHomCosetToTupleCollection</item>
+			<item>IsHomCosetToTupleRep</item>
+			<item>IsHomQuotientGroup</item>
+			<item>IsHomogeneousList</item>
+			<item>IsIdeal</item>
+			<item>IsIdealInParent</item>
+			<item>IsIdealOp</item>
+			<item>IsIdempotent</item>
+			<item>IsIdenticalObj</item>
+			<item>IsIdenticalObjFamiliesColObjObj</item>
+			<item>IsIdenticalObjFamiliesColObjObjObj</item>
+			<item>IsIdenticalObjFamiliesColXXXObj</item>
+			<item>IsIdenticalObjFamiliesColXXXXXXObj</item>
+			<item>IsIdenticalObjFamiliesRwsObj</item>
+			<item>IsIdenticalObjFamiliesRwsObjObj</item>
+			<item>IsIdenticalObjFamiliesRwsObjXXX</item>
+			<item>IsIdenticalObjObjObjX</item>
+			<item>IsIdenticalObjObjXObj</item>
+			<item>IsImfMatrixGroup</item>
+			<item>IsImpossible</item>
+			<item>IsInBasicOrbit</item>
+			<item>IsInCenter</item>
+			<item>IsInCentre</item>
+			<item>IsInChain</item>
+			<item>IsIncomparableUnder</item>
+			<item>IsInducedFromNormalSubgroup</item>
+			<item>IsInducedPcgs</item>
+			<item>IsInducedPcgsRep</item>
+			<item>IsInducedPcgsWrtSpecialPcgs</item>
+			<item>IsInfBitsAssocWord</item>
+			<item>IsInfBitsFamily</item>
+			<item>IsInfiniteListOfGeneratorsRep</item>
+			<item>IsInfiniteListOfNamesRep</item>
+			<item>IsInfinity</item>
+			<item>IsInfoClass</item>
+			<item>IsInfoClassCollection</item>
+			<item>IsInfoClassListRep</item>
+			<item>IsInfoSelector</item>
+			<item>IsInjective</item>
+			<item>IsInnerAutomorphism</item>
+			<item>IsInputOutputStream</item>
+			<item>IsInputOutputStreamByPtyRep</item>
+			<item>IsInputStream</item>
+			<item>IsInputTextFileRep</item>
+			<item>IsInputTextNone</item>
+			<item>IsInputTextNoneRep</item>
+			<item>IsInputTextStream</item>
+			<item>IsInputTextStringRep</item>
+			<item>IsInt</item>
+			<item>IsIntegerMatrixGroup</item>
+			<item>IsIntegers</item>
+			<item>IsIntegralBasis</item>
+			<item>IsIntegralCyclotomic</item>
+			<item>IsIntegralRing</item>
+			<item>IsInternalRep</item>
+			<item>IsInternallyConsistent</item>
+			<item>IsInverseGeneralMappingRep</item>
+			<item>IsIrreducible</item>
+			<item>IsIrreducibleCharacter</item>
+			<item>IsIrreducibleRingElement</item>
+			<item>IsIterator</item>
+			<item>IsIteratorByFunctions</item>
+			<item>IsIteratorByFunctionsRep</item>
+			<item>IsJacobianElement</item>
+			<item>IsJacobianElementCollColl</item>
+			<item>IsJacobianElementCollection</item>
+			<item>IsJacobianRing</item>
+			<item>IsKernelPcWord</item>
+			<item>IsKnuthBendixRewritingSystem</item>
+			<item>IsKnuthBendixRewritingSystemRep</item>
+			<item>IsLDistributive</item>
+			<item>IsLatticeOrderBinaryRelation</item>
+			<item>IsLatticeSubgroupsRep</item>
+			<item>IsLaurentPolynomial</item>
+			<item>IsLaurentPolynomialDefaultRep</item>
+			<item>IsLaurentPolynomialsFamily</item>
+			<item>IsLaurentPolynomialsFamilyElement</item>
+			<item>IsLeftActedOnByDivisionRing</item>
+			<item>IsLeftActedOnByRing</item>
+			<item>IsLeftActedOnBySuperset</item>
+			<item>IsLeftAlgebraModule</item>
+			<item>IsLeftAlgebraModuleElement</item>
+			<item>IsLeftAlgebraModuleElementCollection</item>
+			<item>IsLeftIdeal</item>
+			<item>IsLeftIdealFromGenerators</item>
+			<item>IsLeftIdealInParent</item>
+			<item>IsLeftIdealOp</item>
+			<item>IsLeftMagmaCongruence</item>
+			<item>IsLeftMagmaIdeal</item>
+			<item>IsLeftModule</item>
+			<item>IsLeftModuleGeneralMapping</item>
+			<item>IsLeftModuleHomomorphism</item>
+			<item>IsLeftOperatorAdditiveGroup</item>
+			<item>IsLeftOperatorRing</item>
+			<item>IsLeftOperatorRingWithOne</item>
+			<item>IsLeftSemigroupCongruence</item>
+			<item>IsLeftSemigroupIdeal</item>
+			<item>IsLeftVectorSpace</item>
+			<item>IsLessThanOrEqualUnder</item>
+			<item>IsLessThanUnder</item>
+			<item>IsLetterAssocWordRep</item>
+			<item>IsLetterWordsFamily</item>
+			<item>IsLexicographicallyLess</item>
+			<item>IsLibTomRep</item>
+			<item>IsLibraryCharacterTableRep</item>
+			<item>IsLieAbelian</item>
+			<item>IsLieAlgebra</item>
+			<item>IsLieEmbeddingRep</item>
+			<item>IsLieFamFam</item>
+			<item>IsLieMatrix</item>
+			<item>IsLieNilpotent</item>
+			<item>IsLieNilpotentElement</item>
+			<item>IsLieObject</item>
+			<item>IsLieObjectCollection</item>
+			<item>IsLieObjectsModule</item>
+			<item>IsLieSolvable</item>
+			<item>IsLinearActionHomomorphism</item>
+			<item>IsLinearGeneralMappingByImagesDefaultRep</item>
+			<item>IsLinearMapping</item>
+			<item>IsLinearMappingByMatrixDefaultRep</item>
+			<item>IsLinearMappingsModule</item>
+			<item>IsLinearlyIndependent</item>
+			<item>IsLinearlyPrimitive</item>
+			<item>IsList</item>
+			<item>IsListDefault</item>
+			<item>IsListDictionary</item>
+			<item>IsListHashTable</item>
+			<item>IsListLookupDictionary</item>
+			<item>IsListOrCollection</item>
+			<item>IsLockedRepresentationVector</item>
+			<item>IsLookupDictionary</item>
+			<item>IsLowerAlphaChar</item>
+			<item>IsLowerTriangularMat</item>
+			<item>IsMagma</item>
+			<item>IsMagmaByMultiplicationTableObj</item>
+			<item>IsMagmaCollsMagmaRingColls</item>
+			<item>IsMagmaCongruence</item>
+			<item>IsMagmaHomomorphism</item>
+			<item>IsMagmaIdeal</item>
+			<item>IsMagmaRingModuloRelations</item>
+			<item>IsMagmaRingModuloSpanOfZero</item>
+			<item>IsMagmaRingObjDefaultRep</item>
+			<item>IsMagmaRingsMagmas</item>
+			<item>IsMagmaRingsRings</item>
+			<item>IsMagmaWithInverses</item>
+			<item>IsMagmaWithInversesIfNonzero</item>
+			<item>IsMagmaWithMultiplicativeZeroAdjoinedElementRep</item>
+			<item>IsMagmaWithOne</item>
+			<item>IsMagmasMagmaRings</item>
+			<item>IsMapping</item>
+			<item>IsMappingByFunctionRep</item>
+			<item>IsMappingByFunctionWithInverseRep</item>
+			<item>IsMatchingSublist</item>
+			<item>IsMatrix</item>
+			<item>IsMatrixCollection</item>
+			<item>IsMatrixFLMLOR</item>
+			<item>IsMatrixGroup</item>
+			<item>IsMatrixModule</item>
+			<item>IsMatrixSpace</item>
+			<item>IsMemberPcSeriesPermGroup</item>
+			<item>IsMinimalNonmonomial</item>
+			<item>IsModuloPcgs</item>
+			<item>IsModuloPcgsFpGroupRep</item>
+			<item>IsModuloPcgsPermGroupRep</item>
+			<item>IsModuloPcgsRep</item>
+			<item>IsModuloTailPcgsByListRep</item>
+			<item>IsModuloTailPcgsRep</item>
+			<item>IsModulusRep</item>
+			<item>IsMonoid</item>
+			<item>IsMonomial</item>
+			<item>IsMonomialCharacter</item>
+			<item>IsMonomialCharacterTable</item>
+			<item>IsMonomialElement</item>
+			<item>IsMonomialElementCollection</item>
+			<item>IsMonomialElementFamily</item>
+			<item>IsMonomialElementRep</item>
+			<item>IsMonomialGroup</item>
+			<item>IsMonomialMatrix</item>
+			<item>IsMonomialNumber</item>
+			<item>IsMonomialOrdering</item>
+			<item>IsMonomialOrderingDefaultRep</item>
+			<item>IsMultiplicativeElement</item>
+			<item>IsMultiplicativeElementCollColl</item>
+			<item>IsMultiplicativeElementCollCollColl</item>
+			<item>IsMultiplicativeElementCollection</item>
+			<item>IsMultiplicativeElementList</item>
+			<item>IsMultiplicativeElementTable</item>
+			<item>IsMultiplicativeElementWithInverse</item>
+			<item>IsMultiplicativeElementWithInverseByPolycyclicCollector</item>
+			<item>IsMultiplicativeElementWithInverseByPolycyclicCollectorCollection</item>
+			<item>IsMultiplicativeElementWithInverseByRws</item>
+			<item>IsMultiplicativeElementWithInverseCollColl</item>
+			<item>IsMultiplicativeElementWithInverseCollCollColl</item>
+			<item>IsMultiplicativeElementWithInverseCollection</item>
+			<item>IsMultiplicativeElementWithInverseList</item>
+			<item>IsMultiplicativeElementWithInverseTable</item>
+			<item>IsMultiplicativeElementWithOne</item>
+			<item>IsMultiplicativeElementWithOneCollColl</item>
+			<item>IsMultiplicativeElementWithOneCollCollColl</item>
+			<item>IsMultiplicativeElementWithOneCollection</item>
+			<item>IsMultiplicativeElementWithOneList</item>
+			<item>IsMultiplicativeElementWithOneTable</item>
+			<item>IsMultiplicativeElementWithZero</item>
+			<item>IsMultiplicativeElementWithZeroCollection</item>
+			<item>IsMultiplicativeGeneralizedRowVector</item>
+			<item>IsMultiplicativeZero</item>
+			<item>IsMutable</item>
+			<item>IsMutableBasis</item>
+			<item>IsMutableBasisByImmutableBasisRep</item>
+			<item>IsMutableBasisOfGaussianMatrixSpaceRep</item>
+			<item>IsMutableBasisOfGaussianRowSpaceRep</item>
+			<item>IsMutableBasisViaNiceMutableBasisRep</item>
+			<item>IsMutableBasisViaUnderlyingMutableBasisRep</item>
+			<item>IsNBitsPcWordRep</item>
+			<item>IsNameOfNoninstalledTableOfMarks</item>
+			<item>IsNaturalAlternatingGroup</item>
+			<item>IsNaturalGL</item>
+			<item>IsNaturalGLnZ</item>
+			<item>IsNaturalHomomorphismPcGroupRep</item>
+			<item>IsNaturalSL</item>
+			<item>IsNaturalSLnZ</item>
+			<item>IsNaturalSymmetricGroup</item>
+			<item>IsNearAdditiveElement</item>
+			<item>IsNearAdditiveElementCollColl</item>
+			<item>IsNearAdditiveElementCollCollColl</item>
+			<item>IsNearAdditiveElementCollection</item>
+			<item>IsNearAdditiveElementList</item>
+			<item>IsNearAdditiveElementTable</item>
+			<item>IsNearAdditiveElementWithInverse</item>
+			<item>IsNearAdditiveElementWithInverseCollColl</item>
+			<item>IsNearAdditiveElementWithInverseCollCollColl</item>
+			<item>IsNearAdditiveElementWithInverseCollection</item>
+			<item>IsNearAdditiveElementWithInverseList</item>
+			<item>IsNearAdditiveElementWithInverseTable</item>
+			<item>IsNearAdditiveElementWithZero</item>
+			<item>IsNearAdditiveElementWithZeroCollColl</item>
+			<item>IsNearAdditiveElementWithZeroCollCollColl</item>
+			<item>IsNearAdditiveElementWithZeroCollection</item>
+			<item>IsNearAdditiveElementWithZeroList</item>
+			<item>IsNearAdditiveElementWithZeroTable</item>
+			<item>IsNearAdditiveGroup</item>
+			<item>IsNearAdditiveMagma</item>
+			<item>IsNearAdditiveMagmaWithInverses</item>
+			<item>IsNearAdditiveMagmaWithZero</item>
+			<item>IsNearRing</item>
+			<item>IsNearRingElement</item>
+			<item>IsNearRingElementCollColl</item>
+			<item>IsNearRingElementCollCollColl</item>
+			<item>IsNearRingElementCollection</item>
+			<item>IsNearRingElementFamily</item>
+			<item>IsNearRingElementList</item>
+			<item>IsNearRingElementTable</item>
+			<item>IsNearRingElementWithInverse</item>
+			<item>IsNearRingElementWithInverseCollColl</item>
+			<item>IsNearRingElementWithInverseCollCollColl</item>
+			<item>IsNearRingElementWithInverseCollection</item>
+			<item>IsNearRingElementWithInverseList</item>
+			<item>IsNearRingElementWithInverseTable</item>
+			<item>IsNearRingElementWithOne</item>
+			<item>IsNearRingElementWithOneCollColl</item>
+			<item>IsNearRingElementWithOneCollCollColl</item>
+			<item>IsNearRingElementWithOneCollection</item>
+			<item>IsNearRingElementWithOneList</item>
+			<item>IsNearRingElementWithOneTable</item>
+			<item>IsNearRingWithOne</item>
+			<item>IsNearlyCharacterTable</item>
+			<item>IsNegInt</item>
+			<item>IsNegRat</item>
+			<item>IsNiceMonomorphism</item>
+			<item>IsNilpQuotientSystem</item>
+			<item>IsNilpotent</item>
+			<item>IsNilpotentCharacterTable</item>
+			<item>IsNilpotentElement</item>
+			<item>IsNilpotentGroup</item>
+			<item>IsNilpotentTom</item>
+			<item>IsNoImmediateMethodsObject</item>
+			<item>IsNonGaussianMatrixSpace</item>
+			<item>IsNonGaussianRowSpace</item>
+			<item>IsNonSPGeneralMapping</item>
+			<item>IsNonSPMappingByFunctionRep</item>
+			<item>IsNonSPMappingByFunctionWithInverseRep</item>
+			<item>IsNonTrivial</item>
+			<item>IsNonassocWord</item>
+			<item>IsNonassocWordCollection</item>
+			<item>IsNonassocWordFamily</item>
+			<item>IsNonassocWordWithOne</item>
+			<item>IsNonassocWordWithOneCollection</item>
+			<item>IsNonassocWordWithOneFamily</item>
+			<item>IsNoncharacteristicMatrixPGroup</item>
+			<item>IsNonnegativeIntegers</item>
+			<item>IsNormal</item>
+			<item>IsNormalBasis</item>
+			<item>IsNormalForm</item>
+			<item>IsNormalInParent</item>
+			<item>IsNormalOp</item>
+			<item>IsNotElmsColls</item>
+			<item>IsNotIdenticalObj</item>
+			<item>IsNullMapMatrix</item>
+			<item>IsNumberField</item>
+			<item>IsNumeratorParentForExponentsRep</item>
+			<item>IsNumeratorParentPcgsFamilyPcgs</item>
+			<item>IsObjToBePrinted</item>
+			<item>IsObject</item>
+			<item>IsOddAdditiveNestingDepthFamily</item>
+			<item>IsOddAdditiveNestingDepthObject</item>
+			<item>IsOddInt</item>
+			<item>IsOne</item>
+			<item>IsOperation</item>
+			<item>IsOperationAlgebraHomomorphismDefaultRep</item>
+			<item>IsOrdering</item>
+			<item>IsOrderingOnFamilyOfAssocWords</item>
+			<item>IsOrdinaryMatrix</item>
+			<item>IsOrdinaryMatrixCollection</item>
+			<item>IsOrdinaryTable</item>
+			<item>IsOutputStream</item>
+			<item>IsOutputTextFileRep</item>
+			<item>IsOutputTextNone</item>
+			<item>IsOutputTextNoneRep</item>
+			<item>IsOutputTextStream</item>
+			<item>IsOutputTextStringRep</item>
+			<item>IsPGroup</item>
+			<item>IsPNilpotent</item>
+			<item>IsPNilpotentOp</item>
+			<item>IsPQuotientSystem</item>
+			<item>IsPSL</item>
+			<item>IsPSolvable</item>
+			<item>IsPSolvableCharacterTable</item>
+			<item>IsPSolvableCharacterTableOp</item>
+			<item>IsPSolvableOp</item>
+			<item>IsPackedElementDefaultRep</item>
+			<item>IsPadicExtensionNumber</item>
+			<item>IsPadicExtensionNumberFamily</item>
+			<item>IsPadicNumber</item>
+			<item>IsPadicNumberCollColl</item>
+			<item>IsPadicNumberCollection</item>
+			<item>IsPadicNumberFamily</item>
+			<item>IsPadicNumberList</item>
+			<item>IsPadicNumberTable</item>
+			<item>IsParentPcgsFamilyPcgs</item>
+			<item>IsPartialOrderBinaryRelation</item>
+			<item>IsPartition</item>
+			<item>IsPcGroup</item>
+			<item>IsPcGroupGeneralMappingByImages</item>
+			<item>IsPcGroupHomomorphismByImages</item>
+			<item>IsPcgs</item>
+			<item>IsPcgsCentralSeries</item>
+			<item>IsPcgsChiefSeries</item>
+			<item>IsPcgsDefaultRep</item>
+			<item>IsPcgsElementaryAbelianSeries</item>
+			<item>IsPcgsFamily</item>
+			<item>IsPcgsPCentralSeriesPGroup</item>
+			<item>IsPcgsPermGroupRep</item>
+			<item>IsPcgsToPcgsGeneralMappingByImages</item>
+			<item>IsPcgsToPcgsHomomorphism</item>
+			<item>IsPerfect</item>
+			<item>IsPerfectCharacterTable</item>
+			<item>IsPerfectGroup</item>
+			<item>IsPerfectLibraryGroup</item>
+			<item>IsPerfectTom</item>
+			<item>IsPerm</item>
+			<item>IsPermCollColl</item>
+			<item>IsPermCollection</item>
+			<item>IsPermGroup</item>
+			<item>IsPermGroupGeneralMappingByImages</item>
+			<item>IsPermGroupHomomorphismByImages</item>
+			<item>IsPermOnEnumerator</item>
+			<item>IsPlistRep</item>
+			<item>IsPolycyclicCollector</item>
+			<item>IsPolycyclicGroup</item>
+			<item>IsPolynomial</item>
+			<item>IsPolynomialDefaultRep</item>
+			<item>IsPolynomialFunction</item>
+			<item>IsPolynomialFunctionCollection</item>
+			<item>IsPolynomialFunctionsFamily</item>
+			<item>IsPolynomialFunctionsFamilyElement</item>
+			<item>IsPolynomialRing</item>
+			<item>IsPolynomialRingIdeal</item>
+			<item>IsPosInt</item>
+			<item>IsPosRat</item>
+			<item>IsPositionDictionary</item>
+			<item>IsPositionLookupDictionary</item>
+			<item>IsPositionalObjectRep</item>
+			<item>IsPositionsList</item>
+			<item>IsPositiveIntegers</item>
+			<item>IsPowerCommutatorCollector</item>
+			<item>IsPowerConjugateCollector</item>
+			<item>IsPreOrderBinaryRelation</item>
+			<item>IsPreimagesByAsGroupGeneralMappingByImages</item>
+			<item>IsPresentation</item>
+			<item>IsPresentationDefaultRep</item>
+			<item>IsPrimGrpIterRep</item>
+			<item>IsPrime</item>
+			<item>IsPrimeField</item>
+			<item>IsPrimeInt</item>
+			<item>IsPrimeOrdersPcgs</item>
+			<item>IsPrimePowerInt</item>
+			<item>IsPrimitive</item>
+			<item>IsPrimitiveAffine</item>
+			<item>IsPrimitiveCharacter</item>
+			<item>IsPrimitiveMatrixGroup</item>
+			<item>IsPrimitivePolynomial</item>
+			<item>IsPrimitiveRootMod</item>
+			<item>IsProbablyPrimeInt</item>
+			<item>IsProbablyPrimeIntWithFail</item>
+			<item>IsProjectionDirectProductPermGroup</item>
+			<item>IsProjectionSubdirectProductPermGroup</item>
+			<item>IsPseudoCanonicalBasisFullHomModule</item>
+			<item>IsPurePadicNumber</item>
+			<item>IsPurePadicNumberFamily</item>
+			<item>IsQuasiDihedralGroup</item>
+			<item>IsQuasiPrimitive</item>
+			<item>IsQuaternion</item>
+			<item>IsQuaternionCollColl</item>
+			<item>IsQuaternionCollection</item>
+			<item>IsQuaternionGroup</item>
+			<item>IsQuickPositionList</item>
+			<item>IsQuotientSemigroup</item>
+			<item>IsQuotientSystem</item>
+			<item>IsQuotientToAdditiveGroup</item>
+			<item>IsQuotientToFpGroup</item>
+			<item>IsQuotientToMatrixGroup</item>
+			<item>IsQuotientToPermGroup</item>
+			<item>IsQuotientToTupleGroup</item>
+			<item>IsRDistributive</item>
+			<item>IsRange</item>
+			<item>IsRangeRep</item>
+			<item>IsRat</item>
+			<item>IsRationalClassGroupRep</item>
+			<item>IsRationalClassPermGroupRep</item>
+			<item>IsRationalFunction</item>
+			<item>IsRationalFunctionCollection</item>
+			<item>IsRationalFunctionDefaultRep</item>
+			<item>IsRationalFunctionOverField</item>
+			<item>IsRationalFunctionsFamily</item>
+			<item>IsRationalFunctionsFamilyElement</item>
+			<item>IsRationalMatrixGroup</item>
+			<item>IsRationals</item>
+			<item>IsRationalsPolynomialRing</item>
+			<item>IsReadOnlyGVar</item>
+			<item>IsReadOnlyGlobal</item>
+			<item>IsReadableFile</item>
+			<item>IsRecord</item>
+			<item>IsRecordCollColl</item>
+			<item>IsRecordCollection</item>
+			<item>IsRectangularTable</item>
+			<item>IsRectangularTablePlist</item>
+			<item>IsReduced</item>
+			<item>IsReducedConfluentRewritingSystem</item>
+			<item>IsReducedForm</item>
+			<item>IsReductionOrdering</item>
+			<item>IsReesCongruence</item>
+			<item>IsReesCongruenceSemigroup</item>
+			<item>IsReesMatrixSemigroup</item>
+			<item>IsReesMatrixSemigroupElement</item>
+			<item>IsReesMatrixSemigroupElementCollection</item>
+			<item>IsReesMatrixSemigroupElementRep</item>
+			<item>IsReesZeroMatrixSemigroup</item>
+			<item>IsReesZeroMatrixSemigroupElement</item>
+			<item>IsReesZeroMatrixSemigroupElementCollection</item>
+			<item>IsReflexiveBinaryRelation</item>
+			<item>IsRegular</item>
+			<item>IsRegularDClass</item>
+			<item>IsRegularSemigroup</item>
+			<item>IsRegularSemigroupElement</item>
+			<item>IsRelativeBasisDefaultRep</item>
+			<item>IsRelativelySM</item>
+			<item>IsRestrictedLieAlgebra</item>
+			<item>IsRewritingSystem</item>
+			<item>IsRightActedOnByDivisionRing</item>
+			<item>IsRightActedOnByRing</item>
+			<item>IsRightActedOnBySuperset</item>
+			<item>IsRightAlgebraModule</item>
+			<item>IsRightAlgebraModuleElement</item>
+			<item>IsRightAlgebraModuleElementCollection</item>
+			<item>IsRightCoset</item>
+			<item>IsRightCosetDefaultRep</item>
+			<item>IsRightIdeal</item>
+			<item>IsRightIdealFromGenerators</item>
+			<item>IsRightIdealInParent</item>
+			<item>IsRightIdealOp</item>
+			<item>IsRightMagmaCongruence</item>
+			<item>IsRightMagmaIdeal</item>
+			<item>IsRightModule</item>
+			<item>IsRightOperatorAdditiveGroup</item>
+			<item>IsRightSemigroupCongruence</item>
+			<item>IsRightSemigroupIdeal</item>
+			<item>IsRightTransversal</item>
+			<item>IsRightTransversalCollection</item>
+			<item>IsRightTransversalFpGroupRep</item>
+			<item>IsRightTransversalPcGroupRep</item>
+			<item>IsRightTransversalPermGroupRep</item>
+			<item>IsRightTransversalRep</item>
+			<item>IsRightTransversalViaCosetsRep</item>
+			<item>IsRing</item>
+			<item>IsRingCollsMagmaRingColls</item>
+			<item>IsRingElement</item>
+			<item>IsRingElementCollColl</item>
+			<item>IsRingElementCollCollColl</item>
+			<item>IsRingElementCollection</item>
+			<item>IsRingElementFamily</item>
+			<item>IsRingElementList</item>
+			<item>IsRingElementTable</item>
+			<item>IsRingElementWithInverse</item>
+			<item>IsRingElementWithInverseCollColl</item>
+			<item>IsRingElementWithInverseCollCollColl</item>
+			<item>IsRingElementWithInverseCollection</item>
+			<item>IsRingElementWithInverseList</item>
+			<item>IsRingElementWithInverseTable</item>
+			<item>IsRingElementWithOne</item>
+			<item>IsRingElementWithOneCollColl</item>
+			<item>IsRingElementWithOneCollCollColl</item>
+			<item>IsRingElementWithOneCollection</item>
+			<item>IsRingElementWithOneList</item>
+			<item>IsRingElementWithOneTable</item>
+			<item>IsRingGeneralMapping</item>
+			<item>IsRingHomomorphism</item>
+			<item>IsRingWithOne</item>
+			<item>IsRingWithOneGeneralMapping</item>
+			<item>IsRingWithOneHomomorphism</item>
+			<item>IsRingsMagmaRings</item>
+			<item>IsRootSystem</item>
+			<item>IsRootSystemFromLieAlgebra</item>
+			<item>IsRowModule</item>
+			<item>IsRowSpace</item>
+			<item>IsRowVector</item>
+			<item>IsSCAlgebraObj</item>
+			<item>IsSCAlgebraObjCollColl</item>
+			<item>IsSCAlgebraObjCollCollColl</item>
+			<item>IsSCAlgebraObjCollection</item>
+			<item>IsSCAlgebraObjFamily</item>
+			<item>IsSCAlgebraObjSpace</item>
+			<item>IsSL</item>
+			<item>IsSPGeneralMapping</item>
+			<item>IsSPMappingByFunctionRep</item>
+			<item>IsSPMappingByFunctionWithInverseRep</item>
+			<item>IsSSortedList</item>
+			<item>IsScalar</item>
+			<item>IsScalarCollColl</item>
+			<item>IsScalarCollection</item>
+			<item>IsScalarList</item>
+			<item>IsScalarTable</item>
+			<item>IsSearchTable</item>
+			<item>IsSemiEchelonBasisOfGaussianMatrixSpaceRep</item>
+			<item>IsSemiEchelonBasisOfGaussianRowSpaceRep</item>
+			<item>IsSemiEchelonized</item>
+			<item>IsSemiRegular</item>
+			<item>IsSemigroup</item>
+			<item>IsSemigroupCongruence</item>
+			<item>IsSemigroupIdeal</item>
+			<item>IsSemiring</item>
+			<item>IsSemiringWithOne</item>
+			<item>IsSemiringWithOneAndZero</item>
+			<item>IsSemiringWithZero</item>
+			<item>IsSet</item>
+			<item>IsShortLexLessThanOrEqual</item>
+			<item>IsShortLexOrdering</item>
+			<item>IsSimple</item>
+			<item>IsSimpleAlgebra</item>
+			<item>IsSimpleCharacterTable</item>
+			<item>IsSimpleGroup</item>
+			<item>IsSimpleSemigroup</item>
+			<item>IsSingleCollectorRep</item>
+			<item>IsSingleValued</item>
+			<item>IsSkewFieldFamily</item>
+			<item>IsSlicedPerm</item>
+			<item>IsSlicedPermInv</item>
+			<item>IsSmallIntRep</item>
+			<item>IsSmallList</item>
+			<item>IsSolvable</item>
+			<item>IsSolvableCharacterTable</item>
+			<item>IsSolvableGroup</item>
+			<item>IsSolvableTom</item>
+			<item>IsSortDictionary</item>
+			<item>IsSortLookupDictionary</item>
+			<item>IsSortedList</item>
+			<item>IsSortedPcgsRep</item>
+			<item>IsSpaceOfElementsOfMagmaRing</item>
+			<item>IsSpaceOfRationalFunctions</item>
+			<item>IsSpaceOfUEAElements</item>
+			<item>IsSparseHashRep</item>
+			<item>IsSparseRowSpaceElement</item>
+			<item>IsSparseRowSpaceElementCollection</item>
+			<item>IsSparseRowSpaceElementFamily</item>
+			<item>IsSpecialLinearGroup</item>
+			<item>IsSpecialPcgs</item>
+			<item>IsSporadicSimple</item>
+			<item>IsSporadicSimpleCharacterTable</item>
+			<item>IsSporadicSimpleGroup</item>
+			<item>IsStabChainViaChainSubgroup</item>
+			<item>IsStandardGeneratorsOfGroup</item>
+			<item>IsStandardized</item>
+			<item>IsStraightLineProgElm</item>
+			<item>IsStraightLineProgram</item>
+			<item>IsStream</item>
+			<item>IsString</item>
+			<item>IsStringRep</item>
+			<item>IsSubalgebraFpAlgebra</item>
+			<item>IsSubgroup</item>
+			<item>IsSubgroupFgGroup</item>
+			<item>IsSubgroupFpGroup</item>
+			<item>IsSubgroupOfWholeGroupByQuotientRep</item>
+			<item>IsSubgroupSL</item>
+			<item>IsSubmonoidFpMonoid</item>
+			<item>IsSubnormal</item>
+			<item>IsSubnormallyMonomial</item>
+			<item>IsSubsemigroupFpSemigroup</item>
+			<item>IsSubsemigroupReesMatrixSemigroup</item>
+			<item>IsSubsemigroupReesZeroMatrixSemigroup</item>
+			<item>IsSubset</item>
+			<item>IsSubsetBlist</item>
+			<item>IsSubsetInducedNumeratorModuloTailPcgsRep</item>
+			<item>IsSubsetInducedPcgsRep</item>
+			<item>IsSubsetLocallyFiniteGroup</item>
+			<item>IsSubsetSet</item>
+			<item>IsSubspace</item>
+			<item>IsSubspacesFullRowSpaceDefaultRep</item>
+			<item>IsSubspacesVectorSpace</item>
+			<item>IsSubspacesVectorSpaceDefaultRep</item>
+			<item>IsSupersolvable</item>
+			<item>IsSupersolvableCharacterTable</item>
+			<item>IsSupersolvableGroup</item>
+			<item>IsSurjective</item>
+			<item>IsSyllableAssocWordRep</item>
+			<item>IsSyllableWordsFamily</item>
+			<item>IsSymmetricBinaryRelation</item>
+			<item>IsSymmetricGroup</item>
+			<item>IsSymmetricPowerElement</item>
+			<item>IsSymmetricPowerElementCollection</item>
+			<item>IsTable</item>
+			<item>IsTableOfMarks</item>
+			<item>IsTableOfMarksWithGens</item>
+			<item>IsTailInducedPcgsRep</item>
+			<item>IsTensorElement</item>
+			<item>IsTensorElementCollection</item>
+			<item>IsToBeDefinedObj</item>
+			<item>IsToFpGroupGeneralMappingByImages</item>
+			<item>IsToFpGroupHomomorphismByImages</item>
+			<item>IsToPcGroupGeneralMappingByImages</item>
+			<item>IsToPcGroupHomomorphismByImages</item>
+			<item>IsToPermGroupGeneralMappingByImages</item>
+			<item>IsToPermGroupHomomorphismByImages</item>
+			<item>IsTotal</item>
+			<item>IsTotalOrdering</item>
+			<item>IsTransformation</item>
+			<item>IsTransformationCollection</item>
+			<item>IsTransformationMonoid</item>
+			<item>IsTransformationRep</item>
+			<item>IsTransformationRepOfEndo</item>
+			<item>IsTransformationSemigroup</item>
+			<item>IsTransitive</item>
+			<item>IsTransitiveBinaryRelation</item>
+			<item>IsTranslationInvariantOrdering</item>
+			<item>IsTransvByDirProd</item>
+			<item>IsTransvByDirProdCollection</item>
+			<item>IsTransvByHomomorphism</item>
+			<item>IsTransvByHomomorphismCollection</item>
+			<item>IsTransvBySchreierTree</item>
+			<item>IsTransvBySchreierTreeCollection</item>
+			<item>IsTransvBySiftFunct</item>
+			<item>IsTransvBySiftFunctCollection</item>
+			<item>IsTransvByTrivSubgrp</item>
+			<item>IsTransvByTrivSubgrpCollection</item>
+			<item>IsTrivial</item>
+			<item>IsTrivialAOpEZero</item>
+			<item>IsTrivialHomCoset</item>
+			<item>IsTrivialLOpEOne</item>
+			<item>IsTrivialLOpEZero</item>
+			<item>IsTrivialRBase</item>
+			<item>IsTrivialROpEOne</item>
+			<item>IsTrivialROpEZero</item>
+			<item>IsTrivialUOpEOne</item>
+			<item>IsTrivialUOpEZero</item>
+			<item>IsTuple</item>
+			<item>IsTupleCollection</item>
+			<item>IsTupleFamily</item>
+			<item>IsTwoSidedIdeal</item>
+			<item>IsTwoSidedIdealInParent</item>
+			<item>IsTwoSidedIdealOp</item>
+			<item>IsType</item>
+			<item>IsTypeDefaultRep</item>
+			<item>IsUEALatticeElement</item>
+			<item>IsUEALatticeElementCollection</item>
+			<item>IsUEALatticeElementFamily</item>
+			<item>IsUFDFamily</item>
+			<item>IsUniformMatrixGroup</item>
+			<item>IsUniqueFactorizationRing</item>
+			<item>IsUnit</item>
+			<item>IsUnivariatePolynomial</item>
+			<item>IsUnivariatePolynomialRing</item>
+			<item>IsUnivariatePolynomialsFamily</item>
+			<item>IsUnivariatePolynomialsFamilyElement</item>
+			<item>IsUnivariateRationalFunction</item>
+			<item>IsUnivariateRationalFunctionDefaultRep</item>
+			<item>IsUnknown</item>
+			<item>IsUnknownDefaultRep</item>
+			<item>IsUnsortedPcgsRep</item>
+			<item>IsUpToDatePolycyclicCollector</item>
+			<item>IsUpperActedOnByGroup</item>
+			<item>IsUpperActedOnBySuperset</item>
+			<item>IsUpperAlphaChar</item>
+			<item>IsUpperTriangularMat</item>
+			<item>IsValidIdentifier</item>
+			<item>IsVector</item>
+			<item>IsVectorCollColl</item>
+			<item>IsVectorCollection</item>
+			<item>IsVectorList</item>
+			<item>IsVectorSearchTable</item>
+			<item>IsVectorSearchTableDefaultRep</item>
+			<item>IsVectorSpace</item>
+			<item>IsVectorSpaceHomomorphism</item>
+			<item>IsVectorTable</item>
+			<item>IsVirtualCharacter</item>
+			<item>IsWLetterAssocWordRep</item>
+			<item>IsWLetterWordsFamily</item>
+			<item>IsWPObj</item>
+			<item>IsWeakPointerObject</item>
+			<item>IsWedgeElement</item>
+			<item>IsWedgeElementCollection</item>
+			<item>IsWeightLexOrdering</item>
+			<item>IsWeightRepElement</item>
+			<item>IsWeightRepElementCollection</item>
+			<item>IsWeightRepElementFamily</item>
+			<item>IsWellFoundedOrdering</item>
+			<item>IsWeylGroup</item>
+			<item>IsWholeFamily</item>
+			<item>IsWord</item>
+			<item>IsWordCollection</item>
+			<item>IsWordWithInverse</item>
+			<item>IsWordWithOne</item>
+			<item>IsWreathProductElement</item>
+			<item>IsWreathProductElementCollection</item>
+			<item>IsWreathProductElementDefaultRep</item>
+			<item>IsWreathProductOrdering</item>
+			<item>IsWritableFile</item>
+			<item>IsZDFRE</item>
+			<item>IsZDFRECollColl</item>
+			<item>IsZDFRECollection</item>
+			<item>IsZero</item>
+			<item>IsZeroCochainRep</item>
+			<item>IsZeroCyc</item>
+			<item>IsZeroGroup</item>
+			<item>IsZeroMultiplicationRing</item>
+			<item>IsZeroRationalFunction</item>
+			<item>IsZeroSimpleSemigroup</item>
+			<item>IsZeroSquaredElement</item>
+			<item>IsZeroSquaredElementCollColl</item>
+			<item>IsZeroSquaredElementCollection</item>
+			<item>IsZeroSquaredRing</item>
+			<item>IsZmodnZObj</item>
+			<item>IsZmodnZObjNonprime</item>
+			<item>IsZmodnZObjNonprimeCollColl</item>
+			<item>IsZmodnZObjNonprimeCollCollColl</item>
+			<item>IsZmodnZObjNonprimeCollection</item>
+			<item>IsZmodnZObjNonprimeFamily</item>
+			<item>IsZmodpZObj</item>
+			<item>IsZmodpZObjLarge</item>
+			<item>IsZmodpZObjSmall</item>
+			<item>IsolatePoint</item>
+			<item>IsomorphicSubgroups</item>
+			<item>IsomorphismAbelianGroups</item>
+			<item>IsomorphismFpAlgebra</item>
+			<item>IsomorphismFpFLMLOR</item>
+			<item>IsomorphismFpGroup</item>
+			<item>IsomorphismFpGroupByCompositionSeries</item>
+			<item>IsomorphismFpGroupByGenerators</item>
+			<item>IsomorphismFpGroupByGeneratorsNC</item>
+			<item>IsomorphismFpGroupByPcgs</item>
+			<item>IsomorphismFpGroupBySubnormalSeries</item>
+			<item>IsomorphismFpMonoid</item>
+			<item>IsomorphismFpSemigroup</item>
+			<item>IsomorphismGroups</item>
+			<item>IsomorphismMatrixAlgebra</item>
+			<item>IsomorphismMatrixFLMLOR</item>
+			<item>IsomorphismPcGroup</item>
+			<item>IsomorphismPermGroup</item>
+			<item>IsomorphismPermGroupImfGroup</item>
+			<item>IsomorphismPermGroupOrFailFpGroup</item>
+			<item>IsomorphismPermGroups</item>
+			<item>IsomorphismReesMatrixSemigroup</item>
+			<item>IsomorphismRefinedPcGroup</item>
+			<item>IsomorphismSCAlgebra</item>
+			<item>IsomorphismSCFLMLOR</item>
+			<item>IsomorphismSimplifiedFpGroup</item>
+			<item>IsomorphismSolvableSmallGroups</item>
+			<item>IsomorphismSpecialPcGroup</item>
+			<item>IsomorphismToFullRowSpace</item>
+			<item>IsomorphismTransformationSemigroup</item>
+			<item>IsomorphismTypeInfoFiniteSimpleGroup</item>
+			<item>Iterated</item>
+			<item>Iterator</item>
+			<item>IteratorByBasis</item>
+			<item>IteratorByFunctions</item>
+			<item>IteratorList</item>
+			<item>IteratorSorted</item>
+			<item>IteratorsFamily</item>
+			<item>Jacobi</item>
+			<item>JenningsLieAlgebra</item>
+			<item>JenningsSeries</item>
+			<item>JoinEquivalenceRelations</item>
+			<item>JoinMagmaCongruences</item>
+			<item>JoinSemigroupCongruences</item>
+			<item>JoinStringsWithSeparator</item>
+			<item>JordanDecomposition</item>
+			<item>KBOverlaps</item>
+			<item>KappaPerp</item>
+			<item>Kernel</item>
+			<item>KernelHcommaC</item>
+			<item>KernelOfAdditiveGeneralMapping</item>
+			<item>KernelOfCharacter</item>
+			<item>KernelOfHomQuotientGroup</item>
+			<item>KernelOfMultiplicativeGeneralMapping</item>
+			<item>KernelOfTransformation</item>
+			<item>KernelUnderDualAction</item>
+			<item>KeyDependentOperation</item>
+			<item>KillingMatrix</item>
+			<item>KnownAttributesOfObject</item>
+			<item>KnownNaturalHomomorphismsPool</item>
+			<item>KnownPropertiesOfObject</item>
+			<item>KnownTruePropertiesOfObject</item>
+			<item>KnowsDictionary</item>
+			<item>KnowsHowToDecompose</item>
+			<item>KnuthBendixRewritingSystem</item>
+			<item>KroneckerProduct</item>
+			<item>KuKGenerators</item>
+			<item>LClassOfHClass</item>
+			<item>LGFirst</item>
+			<item>LGHeads</item>
+			<item>LGLayers</item>
+			<item>LGLength</item>
+			<item>LGTails</item>
+			<item>LGWeights</item>
+			<item>LLLReducedBasis</item>
+			<item>LLLReducedGramMat</item>
+			<item>LLLint</item>
+			<item>LMPSLPSeed</item>
+			<item>LaTeX</item>
+			<item>LaTeXObj</item>
+			<item>LaTeXStringDecompositionMatrix</item>
+			<item>LaTeXToHTMLString</item>
+			<item>LabsLims</item>
+			<item>Lambda</item>
+			<item>LargeGaloisField</item>
+			<item>LargestElementGroup</item>
+			<item>LargestElementStabChain</item>
+			<item>LargestMovedPoint</item>
+			<item>LargestMovedPointPerm</item>
+			<item>LargestMovedPointPerms</item>
+			<item>LargestUnknown</item>
+			<item>LastHashIndex</item>
+			<item>LastReadValue</item>
+			<item>LastSystemError</item>
+			<item>LatticeByCyclicExtension</item>
+			<item>LatticeGeneratorsInUEA</item>
+			<item>LatticeSubgroups</item>
+			<item>LatticeSubgroupsByTom</item>
+			<item>LaurentPolynomialByCoefficients</item>
+			<item>LaurentPolynomialByExtRep</item>
+			<item>Lcm</item>
+			<item>LcmInt</item>
+			<item>LcmOp</item>
+			<item>LcmPP</item>
+			<item>LeadCoeffsIGS</item>
+			<item>LeadingCoefficient</item>
+			<item>LeadingCoefficientOfPolynomial</item>
+			<item>LeadingExponentOfPcElement</item>
+			<item>LeadingMonomial</item>
+			<item>LeadingMonomialOfPolynomial</item>
+			<item>LeadingMonomialPosExtRep</item>
+			<item>LeadingTermOfPolynomial</item>
+			<item>LeadingUEALatticeMonomial</item>
+			<item>LeastBadComplementLayer</item>
+			<item>LeastBadHallLayer</item>
+			<item>LeftActingAlgebra</item>
+			<item>LeftActingDomain</item>
+			<item>LeftActingGroup</item>
+			<item>LeftActingRingOfIdeal</item>
+			<item>LeftAction</item>
+			<item>LeftAlgebraModule</item>
+			<item>LeftAlgebraModuleByGenerators</item>
+			<item>LeftDerivations</item>
+			<item>LeftIdeal</item>
+			<item>LeftIdealByGenerators</item>
+			<item>LeftIdealNC</item>
+			<item>LeftMagmaCongruence</item>
+			<item>LeftMagmaCongruenceByGeneratingPairs</item>
+			<item>LeftMagmaIdeal</item>
+			<item>LeftMagmaIdealByGenerators</item>
+			<item>LeftModuleByGenerators</item>
+			<item>LeftModuleByHomomorphismToMatAlg</item>
+			<item>LeftModuleGeneralMappingByImages</item>
+			<item>LeftModuleGeneratorsForIdealFromGenerators</item>
+			<item>LeftModuleHomomorphismByImages</item>
+			<item>LeftModuleHomomorphismByImagesNC</item>
+			<item>LeftModuleHomomorphismByMatrix</item>
+			<item>LeftNormedComm</item>
+			<item>LeftQuotient</item>
+			<item>LeftQuotientPowerPcgsElement</item>
+			<item>LeftReduceUEALatticeElement</item>
+			<item>LeftSemigroupCongruenceByGeneratingPairs</item>
+			<item>LeftSemigroupIdealEnumeratorDataGetElement</item>
+			<item>LeftShiftRowVector</item>
+			<item>Legendre</item>
+			<item>Length</item>
+			<item>LengthOfDescendingSeries</item>
+			<item>LengthOfLongestCommonPrefixOfTwoAssocWords</item>
+			<item>LengthWPObj</item>
+			<item>LengthsTom</item>
+			<item>LenstraBase</item>
+			<item>LessBoxedObj</item>
+			<item>LessThanFunction</item>
+			<item>LessThanOrEqualFunction</item>
+			<item>LetterRepAssocWord</item>
+			<item>LetterRepWordsLessFunc</item>
+			<item>LevelsOfGenerators</item>
+			<item>LeviMalcevDecomposition</item>
+			<item>LexicographicOrdering</item>
+			<item>LexicographicOrderingNC</item>
+			<item>LieAlgebra</item>
+			<item>LieAlgebraByDomain</item>
+			<item>LieAlgebraByStructureConstants</item>
+			<item>LieBracket</item>
+			<item>LieCenter</item>
+			<item>LieCentralizer</item>
+			<item>LieCentralizerInParent</item>
+			<item>LieCentre</item>
+			<item>LieCoboundaryOperator</item>
+			<item>LieDerivedSeries</item>
+			<item>LieDerivedSubalgebra</item>
+			<item>LieFamily</item>
+			<item>LieLowerCentralSeries</item>
+			<item>LieNilRadical</item>
+			<item>LieNormalizer</item>
+			<item>LieNormalizerInParent</item>
+			<item>LieObject</item>
+			<item>LieSolvableRadical</item>
+			<item>LieUpperCentralSeries</item>
+			<item>LiftAbsAndIrredModules</item>
+			<item>LiftEpimorphism</item>
+			<item>LiftEpimorphismSQ</item>
+			<item>LiftInduciblePair</item>
+			<item>LiftedInducedPcgs</item>
+			<item>LiftedPcElement</item>
+			<item>LineNumberStringPosition</item>
+			<item>LinearAction</item>
+			<item>LinearActionBasis</item>
+			<item>LinearActionLayer</item>
+			<item>LinearCharacters</item>
+			<item>LinearCombination</item>
+			<item>LinearCombinationPcgs</item>
+			<item>LinearCombinationVecs</item>
+			<item>LinearGroupParameters</item>
+			<item>LinearIndependentColumns</item>
+			<item>LinearOperation</item>
+			<item>LinearOperationLayer</item>
+			<item>LinesOfStraightLineProgram</item>
+			<item>List</item>
+			<item>ListBlist</item>
+			<item>ListHashParams</item>
+			<item>ListN</item>
+			<item>ListOp</item>
+			<item>ListPerm</item>
+			<item>ListSorted</item>
+			<item>ListStabChain</item>
+			<item>ListWithIdenticalEntries</item>
+			<item>ListX</item>
+			<item>ListXHelp</item>
+			<item>ListsFamily</item>
+			<item>LoadAllPackages</item>
+			<item>LoadDynamicModule</item>
+			<item>LoadPackage</item>
+			<item>LoadPackageDocumentation</item>
+			<item>LoadStaticModule</item>
+			<item>LoadedModules</item>
+			<item>LockNaturalHomomorphismsPool</item>
+			<item>Log</item>
+			<item>LogFFE</item>
+			<item>LogInputTo</item>
+			<item>LogInt</item>
+			<item>LogMod</item>
+			<item>LogModRhoIterate</item>
+			<item>LogModShanks</item>
+			<item>LogOutputTo</item>
+			<item>LogTo</item>
+			<item>LongestWeylWordPerm</item>
+			<item>LookupDictionary</item>
+			<item>LowIndexSubgroupsFpGroup</item>
+			<item>LowerCentralSeries</item>
+			<item>LowerCentralSeriesOfGroup</item>
+			<item>LowerTriangularMatrix</item>
+			<item>LowercaseString</item>
+			<item>Lucas</item>
+			<item>MATINTbezout</item>
+			<item>MATINTmgcdex</item>
+			<item>MATINTrgcd</item>
+			<item>MATINTsplit</item>
+			<item>Magma</item>
+			<item>MagmaByGenerators</item>
+			<item>MagmaByMultiplicationTable</item>
+			<item>MagmaByMultiplicationTableCreator</item>
+			<item>MagmaCongruenceByGeneratingPairs</item>
+			<item>MagmaCongruencePartition</item>
+			<item>MagmaElement</item>
+			<item>MagmaGeneratorsOfFamily</item>
+			<item>MagmaHomomorphismByFunctionNC</item>
+			<item>MagmaIdeal</item>
+			<item>MagmaIdealByGenerators</item>
+			<item>MagmaInputString</item>
+			<item>MagmaIsomorphismByFunctionsNC</item>
+			<item>MagmaRingModuloSpanOfZero</item>
+			<item>MagmaWithInverses</item>
+			<item>MagmaWithInversesByGenerators</item>
+			<item>MagmaWithInversesByMultiplicationTable</item>
+			<item>MagmaWithOne</item>
+			<item>MagmaWithOneByGenerators</item>
+			<item>MagmaWithOneByMultiplicationTable</item>
+			<item>MakeCanonical</item>
+			<item>MakeConfluent</item>
+			<item>MakeConsequences</item>
+			<item>MakeConsequencesPres</item>
+			<item>MakeFormulaVector</item>
+			<item>MakeGAPDocDoc</item>
+			<item>MakeHomChain</item>
+			<item>MakeImagesInfoLinearGeneralMappingByImages</item>
+			<item>MakeImmutable</item>
+			<item>MakeKnuthBendixRewritingSystemConfluent</item>
+			<item>MakeLIBTOMLIST</item>
+			<item>MakeMagmaWithInversesByFiniteGenerators</item>
+			<item>MakeMapping</item>
+			<item>MakeMonomialOrdering</item>
+			<item>MakePreImagesInfoLinearGeneralMappingByImages</item>
+			<item>MakePreImagesInfoLinearMappingByMatrix</item>
+			<item>MakePreImagesInfoOperationAlgebraHomomorphism</item>
+			<item>MakeReadOnlyGVar</item>
+			<item>MakeReadOnlyGlobal</item>
+			<item>MakeReadWriteGVar</item>
+			<item>MakeReadWriteGlobal</item>
+			<item>MakeStabChainLong</item>
+			<item>ManageableQuotientOfAbelianPGroup</item>
+			<item>ManageableQuotientOfNilpotentGroup</item>
+			<item>MappedExpression</item>
+			<item>MappedExpressionForElementOfFreeAssociativeAlgebra</item>
+			<item>MappedPcElement</item>
+			<item>MappedVector</item>
+			<item>MappedWord</item>
+			<item>MappedWordSyllableAssocWord</item>
+			<item>MappingByFunction</item>
+			<item>MappingGeneratorsImages</item>
+			<item>MappingOfWhichItIsAsGGMBI</item>
+			<item>MappingPermListList</item>
+			<item>MarksTom</item>
+			<item>MatAlgebra</item>
+			<item>MatAutomorphismsFamily</item>
+			<item>MatCharsWreathSymmetric</item>
+			<item>MatClassMultCoeffsCharTable</item>
+			<item>MatLieAlgebra</item>
+			<item>MatOrbs</item>
+			<item>MatOrbsApprox</item>
+			<item>MatScalarProducts</item>
+			<item>MatSpace</item>
+			<item>MatTom</item>
+			<item>MathieuGroup</item>
+			<item>MathieuGroupCons</item>
+			<item>MatricesOfRelator</item>
+			<item>MatrixAlgebra</item>
+			<item>MatrixAutomorphisms</item>
+			<item>MatrixByBlockMatrix</item>
+			<item>MatrixDimension</item>
+			<item>MatrixLieAlgebra</item>
+			<item>MatrixNewBasePoint</item>
+			<item>MatrixOfAction</item>
+			<item>MatrixOperationOfCP</item>
+			<item>MatrixOperationOfCPGroup</item>
+			<item>MatrixSpace</item>
+			<item>MatrixSpinCharsSn</item>
+			<item>MaxHashViewSize</item>
+			<item>MaxNumeratorCoeffAlgElm</item>
+			<item>MaximalAbelianQuotient</item>
+			<item>MaximalBlocks</item>
+			<item>MaximalBlocksAttr</item>
+			<item>MaximalBlocksOp</item>
+			<item>MaximalNormalSubgroups</item>
+			<item>MaximalSubgroupClassReps</item>
+			<item>MaximalSubgroupClassesRepsLayer</item>
+			<item>MaximalSubgroups</item>
+			<item>MaximalSubgroupsLattice</item>
+			<item>MaximalSubgroupsSymmAlt</item>
+			<item>MaximalSubgroupsTom</item>
+			<item>Maximum</item>
+			<item>MaximumList</item>
+			<item>MeetEquivalenceRelations</item>
+			<item>MeetMagmaCongruences</item>
+			<item>MeetMaps</item>
+			<item>MeetPartitionStrat</item>
+			<item>MeetPartitionStratCell</item>
+			<item>MeetSemigroupCongruences</item>
+			<item>MembershipTestKnownBase</item>
+			<item>MinimalBlockDimension</item>
+			<item>MinimalElementCosetStabChain</item>
+			<item>MinimalGeneratingSet</item>
+			<item>MinimalGensLayer</item>
+			<item>MinimalNonmonomialGroup</item>
+			<item>MinimalNormalSubgroups</item>
+			<item>MinimalPolynomial</item>
+			<item>MinimalPolynomialMatrixNC</item>
+			<item>MinimalStabChain</item>
+			<item>MinimalSupergroupsLattice</item>
+			<item>MinimalSupergroupsTom</item>
+			<item>MinimizeExplicitTransversal</item>
+			<item>MinimizedBombieriNorm</item>
+			<item>Minimum</item>
+			<item>MinimumGroupOnSubgroupsOrbit</item>
+			<item>MinimumList</item>
+			<item>MinusCharacter</item>
+			<item>ModGauss</item>
+			<item>ModifyMinGens</item>
+			<item>ModifyPcgs</item>
+			<item>ModularCharacterDegree</item>
+			<item>ModuleByRestriction</item>
+			<item>ModuleOfExtension</item>
+			<item>ModuloPcgs</item>
+			<item>ModuloPcgsByPcSequence</item>
+			<item>ModuloPcgsByPcSequenceNC</item>
+			<item>ModuloTailPcgsByList</item>
+			<item>ModulusOfZmodnZObj</item>
+			<item>MoebiusMu</item>
+			<item>MoebiusTom</item>
+			<item>MolienSeries</item>
+			<item>MolienSeriesInfo</item>
+			<item>MolienSeriesWithGivenDenominator</item>
+			<item>Monoid</item>
+			<item>MonoidByGenerators</item>
+			<item>MonoidByMultiplicationTable</item>
+			<item>MonoidOfRewritingSystem</item>
+			<item>MonomialComparisonFunction</item>
+			<item>MonomialExtGrlexLess</item>
+			<item>MonomialExtrepComparisonFun</item>
+			<item>MonomialGrevlexOrdering</item>
+			<item>MonomialGrlexOrdering</item>
+			<item>MonomialLexOrdering</item>
+			<item>MonomialOrderingsFamily</item>
+			<item>MonomialTotalDegreeLess</item>
+			<item>MorClassLoop</item>
+			<item>MorClassOrbs</item>
+			<item>MorFindGeneratingSystem</item>
+			<item>MorFroWords</item>
+			<item>MorMaxFusClasses</item>
+			<item>MorRatClasses</item>
+			<item>Morphium</item>
+			<item>MorrisRecursion</item>
+			<item>MostFrequentGeneratorFpGroup</item>
+			<item>MovedPoints</item>
+			<item>MovedPointsPerms</item>
+			<item>MulExt</item>
+			<item>MultCoeffs</item>
+			<item>MultMatrixPadicNumbersByCoefficientsList</item>
+			<item>MultRowVector</item>
+			<item>MultiplicationTable</item>
+			<item>MultiplicativeElementsWithInversesFamilyByRws</item>
+			<item>MultiplicativeNeutralElement</item>
+			<item>MultiplicativeZero</item>
+			<item>MultiplicativeZeroOp</item>
+			<item>Multiply</item>
+			<item>MutableBasis</item>
+			<item>MutableBasisOfClosureUnderAction</item>
+			<item>MutableBasisOfIdealInNonassociativeAlgebra</item>
+			<item>MutableBasisOfNonassociativeAlgebra</item>
+			<item>MutableBasisOfProductSpace</item>
+			<item>MutableCopyMat</item>
+			<item>MutableIdentityMat</item>
+			<item>MutableNullMat</item>
+			<item>MutableTransposedMat</item>
+			<item>MutableTransposedMatDestructive</item>
+			<item>MyFingerprint</item>
+			<item>MyIntCoefficients</item>
+			<item>Naive</item>
+			<item>Name</item>
+			<item>NameFunction</item>
+			<item>NameIsomorphismClass</item>
+			<item>NameMonth</item>
+			<item>NameRNam</item>
+			<item>NameWeekDay</item>
+			<item>NamesFilter</item>
+			<item>NamesGVars</item>
+			<item>NamesLibTom</item>
+			<item>NamesLocalVariablesFunction</item>
+			<item>NamesOfComponents</item>
+			<item>NamesOfFusionSources</item>
+			<item>NamesSystemGVars</item>
+			<item>NamesUserGVars</item>
+			<item>NaturalActedSpace</item>
+			<item>NaturalCharacter</item>
+			<item>NaturalHomomorphismByFixedPointSubspace</item>
+			<item>NaturalHomomorphismByGenerators</item>
+			<item>NaturalHomomorphismByHomVW</item>
+			<item>NaturalHomomorphismByIdeal</item>
+			<item>NaturalHomomorphismByInvariantSubspace</item>
+			<item>NaturalHomomorphismByNilpotentClassTwoElement</item>
+			<item>NaturalHomomorphismByNormalSubgroup</item>
+			<item>NaturalHomomorphismByNormalSubgroupInParent</item>
+			<item>NaturalHomomorphismByNormalSubgroupNC</item>
+			<item>NaturalHomomorphismByNormalSubgroupNCInParent</item>
+			<item>NaturalHomomorphismByNormalSubgroupNCOp</item>
+			<item>NaturalHomomorphismByNormalSubgroupNCOrig</item>
+			<item>NaturalHomomorphismByNormalSubgroupOp</item>
+			<item>NaturalHomomorphismBySubAlgebraModule</item>
+			<item>NaturalHomomorphismBySubspace</item>
+			<item>NaturalHomomorphismBySubspaceOntoFullRowSpace</item>
+			<item>NaturalHomomorphismsPool</item>
+			<item>NaturalIsomorphismByPcgs</item>
+			<item>NearAdditiveGroup</item>
+			<item>NearAdditiveGroupByGenerators</item>
+			<item>NearAdditiveMagma</item>
+			<item>NearAdditiveMagmaByGenerators</item>
+			<item>NearAdditiveMagmaWithInverses</item>
+			<item>NearAdditiveMagmaWithInversesByGenerators</item>
+			<item>NearAdditiveMagmaWithZero</item>
+			<item>NearAdditiveMagmaWithZeroByGenerators</item>
+			<item>NearlyCharacterTablesFamily</item>
+			<item>NegativeRootVectors</item>
+			<item>NegativeRoots</item>
+			<item>NestingDepthA</item>
+			<item>NestingDepthM</item>
+			<item>NewAttribute</item>
+			<item>NewCategory</item>
+			<item>NewConstructor</item>
+			<item>NewDictionary</item>
+			<item>NewFamily</item>
+			<item>NewFilter</item>
+			<item>NewInfoClass</item>
+			<item>NewOperation</item>
+			<item>NewProperty</item>
+			<item>NewRepresentation</item>
+			<item>NewToBeDefinedObj</item>
+			<item>NewType</item>
+			<item>NewmanInfinityCriterion</item>
+			<item>NextIterator</item>
+			<item>NextLevelRegularGroups</item>
+			<item>NextPrimeInt</item>
+			<item>NextRBasePoint</item>
+			<item>NextStepCentralizer</item>
+			<item>NiceAlgebraMonomorphism</item>
+			<item>NiceBasis</item>
+			<item>NiceBasisFiltersInfo</item>
+			<item>NiceBasisNC</item>
+			<item>NiceFreeLeftModule</item>
+			<item>NiceFreeLeftModuleForFLMLOR</item>
+			<item>NiceFreeLeftModuleInfo</item>
+			<item>NiceMonomorphism</item>
+			<item>NiceMonomorphismAutomGroup</item>
+			<item>NiceNormalFormByExtRepFunction</item>
+			<item>NiceObject</item>
+			<item>NiceVector</item>
+			<item>NicomorphismOfFFEMatrixGroup</item>
+			<item>NicomorphismOfGeneralMatrixGroup</item>
+			<item>NilpotencyClassOfGroup</item>
+			<item>NilpotentClassTwoElement</item>
+			<item>NilpotentQuotientOfFpLieAlgebra</item>
+			<item>NinKernelCSPG</item>
+			<item>NonLieNilpotentElement</item>
+			<item>NonNilpotentElement</item>
+			<item>NonPerfectCSPG</item>
+			<item>NonSplitExtensions</item>
+			<item>NonTrivialRightHandSides</item>
+			<item>NonassocWord</item>
+			<item>NonnegIntScalarProducts</item>
+			<item>NonnegativeIntegers</item>
+			<item>NorSerPermPcgs</item>
+			<item>Norm</item>
+			<item>NormalBase</item>
+			<item>NormalClosure</item>
+			<item>NormalClosureByChain</item>
+			<item>NormalClosureInParent</item>
+			<item>NormalClosureOp</item>
+			<item>NormalFormIntMat</item>
+			<item>NormalIntersection</item>
+			<item>NormalIntersectionPcgs</item>
+			<item>NormalMaximalSubgroups</item>
+			<item>NormalSeriesByPcgs</item>
+			<item>NormalSubgroupClasses</item>
+			<item>NormalSubgroupClassesInfo</item>
+			<item>NormalSubgroups</item>
+			<item>NormalSubgroupsAbove</item>
+			<item>NormalSubgroupsCalc</item>
+			<item>NormalizeNameAndKey</item>
+			<item>NormalizeWhitespace</item>
+			<item>NormalizedArgList</item>
+			<item>NormalizedElementOfMagmaRingModuloRelations</item>
+			<item>NormalizedNameAndKey</item>
+			<item>NormalizedWhitespace</item>
+			<item>Normalizer</item>
+			<item>NormalizerInGLnZ</item>
+			<item>NormalizerInGLnZBravaisGroup</item>
+			<item>NormalizerInHomePcgs</item>
+			<item>NormalizerInParent</item>
+			<item>NormalizerOp</item>
+			<item>NormalizerParentSA</item>
+			<item>NormalizerStabCSPG</item>
+			<item>NormalizerTom</item>
+			<item>NormalizersTom</item>
+			<item>NormalizingReducedGL</item>
+			<item>NormedRowVector</item>
+			<item>NormedRowVectors</item>
+			<item>NormedVectors</item>
+			<item>NotifiedFusionsOfLibTom</item>
+			<item>NotifiedFusionsToLibTom</item>
+			<item>NrAffinePrimitiveGroups</item>
+			<item>NrArrangements</item>
+			<item>NrArrangementsMSetA</item>
+			<item>NrArrangementsMSetK</item>
+			<item>NrArrangementsSetA</item>
+			<item>NrArrangementsSetK</item>
+			<item>NrArrangementsX</item>
+			<item>NrBasisVectors</item>
+			<item>NrBitsInt</item>
+			<item>NrCombinations</item>
+			<item>NrCombinationsMSetA</item>
+			<item>NrCombinationsMSetK</item>
+			<item>NrCombinationsSetA</item>
+			<item>NrCombinationsSetK</item>
+			<item>NrCombinationsX</item>
+			<item>NrCompatiblePolynomials</item>
+			<item>NrConjugacyClasses</item>
+			<item>NrConjugacyClassesGL</item>
+			<item>NrConjugacyClassesGU</item>
+			<item>NrConjugacyClassesInSupergroup</item>
+			<item>NrConjugacyClassesPGL</item>
+			<item>NrConjugacyClassesPGU</item>
+			<item>NrConjugacyClassesPSL</item>
+			<item>NrConjugacyClassesPSU</item>
+			<item>NrConjugacyClassesSL</item>
+			<item>NrConjugacyClassesSLIsogeneous</item>
+			<item>NrConjugacyClassesSU</item>
+			<item>NrConjugacyClassesSUIsogeneous</item>
+			<item>NrDerangements</item>
+			<item>NrDerangementsK</item>
+			<item>NrInputsOfStraightLineProgram</item>
+			<item>NrIrreducibleSolvableGroups</item>
+			<item>NrMovedPoints</item>
+			<item>NrMovedPointsPerm</item>
+			<item>NrMovedPointsPerms</item>
+			<item>NrOrderedPartitions</item>
+			<item>NrPartitionTuples</item>
+			<item>NrPartitions</item>
+			<item>NrPartitionsSet</item>
+			<item>NrPerfectGroups</item>
+			<item>NrPerfectLibraryGroups</item>
+			<item>NrPermutationsList</item>
+			<item>NrPolyhedralSubgroups</item>
+			<item>NrPrimitiveGroups</item>
+			<item>NrRestrictedPartitions</item>
+			<item>NrRestrictedPartitionsK</item>
+			<item>NrSmallGroups</item>
+			<item>NrSolvableAffinePrimitiveGroups</item>
+			<item>NrSubsTom</item>
+			<item>NrSyllables</item>
+			<item>NrTransitiveGroups</item>
+			<item>NrTuples</item>
+			<item>NrUnorderedTuples</item>
+			<item>NthChainSubgroup</item>
+			<item>NthFundamentalOrbit</item>
+			<item>NthRoot</item>
+			<item>NthSchreierTransversalOfChainSubgroup</item>
+			<item>NthSiftOneLevel</item>
+			<item>Nucleus</item>
+			<item>NullAlgebra</item>
+			<item>NullMapMatrix</item>
+			<item>NullMat</item>
+			<item>NullspaceIntMat</item>
+			<item>NullspaceMat</item>
+			<item>NullspaceMatDestructive</item>
+			<item>NullspaceModQ</item>
+			<item>NumBol</item>
+			<item>Number</item>
+			<item>NumberArgumentsFunction</item>
+			<item>NumberCells</item>
+			<item>NumberCoset</item>
+			<item>NumberDigits</item>
+			<item>NumberFFVector</item>
+			<item>NumberField</item>
+			<item>NumberGeneratorsOfRws</item>
+			<item>NumberIrreducibleSolvableGroups</item>
+			<item>NumberOfCommutators</item>
+			<item>NumberOfNewGenerators</item>
+			<item>NumberOp</item>
+			<item>NumberPerfectGroups</item>
+			<item>NumberPerfectLibraryGroups</item>
+			<item>NumberSmallGroups</item>
+			<item>NumberSyllables</item>
+			<item>NumeratorOfModuloPcgs</item>
+			<item>NumeratorOfRationalFunction</item>
+			<item>NumeratorRat</item>
+			<item>OCAddBigMatrices</item>
+			<item>OCAddCentralizer</item>
+			<item>OCAddComplement</item>
+			<item>OCAddGenerators</item>
+			<item>OCAddGeneratorsGeneral</item>
+			<item>OCAddGeneratorsPcgs</item>
+			<item>OCAddMatrices</item>
+			<item>OCAddRelations</item>
+			<item>OCAddSumMatrices</item>
+			<item>OCAddToFunctions</item>
+			<item>OCConjugatingWord</item>
+			<item>OCCoprimeComplement</item>
+			<item>OCEquationMatrix</item>
+			<item>OCEquationVector</item>
+			<item>OCNormalRelations</item>
+			<item>OCOneCoboundaries</item>
+			<item>OCOneCocycles</item>
+			<item>OCSmallEquationMatrix</item>
+			<item>OCSmallEquationVector</item>
+			<item>OCTestRelations</item>
+			<item>OCTestRelators</item>
+			<item>ONanScottType</item>
+			<item>ObjByExponents</item>
+			<item>ObjByExtRep</item>
+			<item>ObjByVector</item>
+			<item>Objectify</item>
+			<item>ObjectifyWithAttributes</item>
+			<item>OccuringVariableIndices</item>
+			<item>OctaveAlgebra</item>
+			<item>OddSpinVals</item>
+			<item>OldGeneratorsOfPresentation</item>
+			<item>OldKernelHcommaC</item>
+			<item>OldSubspaceVectorSpaceGroup</item>
+			<item>Omega</item>
+			<item>OmegaAndLowerPCentralSeries</item>
+			<item>OmegaOp</item>
+			<item>OmegaSeries</item>
+			<item>OminusEven</item>
+			<item>OnBreak</item>
+			<item>OnBreakMessage</item>
+			<item>OnCharReadHookExcFds</item>
+			<item>OnCharReadHookExcFuncs</item>
+			<item>OnCharReadHookExcStreams</item>
+			<item>OnCharReadHookInFds</item>
+			<item>OnCharReadHookInFuncs</item>
+			<item>OnCharReadHookInStreams</item>
+			<item>OnCharReadHookOutFds</item>
+			<item>OnCharReadHookOutFuncs</item>
+			<item>OnCharReadHookOutStreams</item>
+			<item>OnCocycle</item>
+			<item>OnIndeterminates</item>
+			<item>OnLeftAntiOperation</item>
+			<item>OnLeftInverse</item>
+			<item>OnLines</item>
+			<item>OnPairs</item>
+			<item>OnPoints</item>
+			<item>OnQuit</item>
+			<item>OnRelVector</item>
+			<item>OnRight</item>
+			<item>OnSets</item>
+			<item>OnSetsDisjointSets</item>
+			<item>OnSetsSets</item>
+			<item>OnSetsTuples</item>
+			<item>OnSubspacesByCanonicalBasis</item>
+			<item>OnTuples</item>
+			<item>OnTuplesSets</item>
+			<item>OnTuplesTuples</item>
+			<item>One</item>
+			<item>OneAttr</item>
+			<item>OneCoboundaries</item>
+			<item>OneCocycles</item>
+			<item>OneFactorBound</item>
+			<item>OneGroup</item>
+			<item>OneImmutable</item>
+			<item>OneIrreducibleSolvableGroup</item>
+			<item>OneMutable</item>
+			<item>OneNormalizerfixedBlockSystem</item>
+			<item>OneOfPcgs</item>
+			<item>OneOp</item>
+			<item>OnePrimitiveGroup</item>
+			<item>OneSM</item>
+			<item>OneSameMutability</item>
+			<item>OneSmallGroup</item>
+			<item>OneTransitiveGroup</item>
+			<item>OperationAlgebraHomomorphism</item>
+			<item>OperatorOfExternalSet</item>
+			<item>OplusEven</item>
+			<item>OpmOdd</item>
+			<item>OpmSmall</item>
+			<item>OptionsStack</item>
+			<item>Orbit</item>
+			<item>OrbitByPosOp</item>
+			<item>OrbitChar</item>
+			<item>OrbitFusions</item>
+			<item>OrbitGenerators</item>
+			<item>OrbitGeneratorsInv</item>
+			<item>OrbitGeneratorsOfGroup</item>
+			<item>OrbitLength</item>
+			<item>OrbitLengthOp</item>
+			<item>OrbitLengths</item>
+			<item>OrbitLengthsDomain</item>
+			<item>OrbitOp</item>
+			<item>OrbitPerms</item>
+			<item>OrbitPowerMaps</item>
+			<item>OrbitRepresentativesCharacters</item>
+			<item>OrbitShortVectors</item>
+			<item>OrbitSplit</item>
+			<item>OrbitStabChain</item>
+			<item>OrbitStabilizer</item>
+			<item>OrbitStabilizerAlgorithm</item>
+			<item>OrbitStabilizerOp</item>
+			<item>OrbitStabilizingParentGroup</item>
+			<item>OrbitalPartition</item>
+			<item>OrbitishFO</item>
+			<item>OrbitishReq</item>
+			<item>Orbits</item>
+			<item>OrbitsByPosOp</item>
+			<item>OrbitsCharacters</item>
+			<item>OrbitsDomain</item>
+			<item>OrbitsPartition</item>
+			<item>OrbitsPerms</item>
+			<item>OrbitsishOperation</item>
+			<item>OrbitsishReq</item>
+			<item>Order</item>
+			<item>OrderKnownDividendList</item>
+			<item>OrderMatLimit</item>
+			<item>OrderMatTrial</item>
+			<item>OrderMod</item>
+			<item>OrderModK</item>
+			<item>OrderOfRewritingSystem</item>
+			<item>OrderOfSchurLift</item>
+			<item>OrderPerm</item>
+			<item>OrderedPartitions</item>
+			<item>OrderedPartitionsA</item>
+			<item>OrderedPartitionsK</item>
+			<item>OrderingByLessThanFunctionNC</item>
+			<item>OrderingByLessThanOrEqualFunctionNC</item>
+			<item>OrderingOfRewritingSystem</item>
+			<item>OrderingOnGenerators</item>
+			<item>OrderingsFamily</item>
+			<item>OrdersClassRepresentatives</item>
+			<item>OrdersTom</item>
+			<item>Ordinal</item>
+			<item>OrdinaryCharacterTable</item>
+			<item>OrthogonalComponents</item>
+			<item>OrthogonalEmbeddings</item>
+			<item>OrthogonalEmbeddingsSpecialDimension</item>
+			<item>OrthogonalSpaceInFullRowSpace</item>
+			<item>OrthogonalityDefectEuclideanLattice</item>
+			<item>OutdatePolycyclicCollector</item>
+			<item>OutputLogTo</item>
+			<item>OutputTextFile</item>
+			<item>OutputTextFileStillOpen</item>
+			<item>OutputTextFileType</item>
+			<item>OutputTextNone</item>
+			<item>OutputTextNoneType</item>
+			<item>OutputTextString</item>
+			<item>OutputTextStringType</item>
+			<item>OutputTextUser</item>
+			<item>OzeroEven</item>
+			<item>OzeroOdd</item>
+			<item>PBIsMinimal</item>
+			<item>PCentralLieAlgebra</item>
+			<item>PCentralNormalSeriesByPcgsPGroup</item>
+			<item>PCentralSeries</item>
+			<item>PCentralSeriesOp</item>
+			<item>PClassPGroup</item>
+			<item>PCore</item>
+			<item>PCoreOp</item>
+			<item>PCover</item>
+			<item>PERFRec</item>
+			<item>PGroupGeneratorsOfAbelianGroup</item>
+			<item>PMultiplicator</item>
+			<item>PQStatistics</item>
+			<item>PQuotient</item>
+			<item>PRIMGrp</item>
+			<item>PRump</item>
+			<item>PRumpOp</item>
+			<item>PSLDegree</item>
+			<item>PSLUnderlyingField</item>
+			<item>PSp</item>
+			<item>PackageInfo</item>
+			<item>PackageVariablesInfo</item>
+			<item>PadicCoefficients</item>
+			<item>PadicExpansionByRat</item>
+			<item>PadicExtensionNumberFamily</item>
+			<item>PadicNumber</item>
+			<item>Page</item>
+			<item>PageDisplay</item>
+			<item>Pager</item>
+			<item>Parametrized</item>
+			<item>Parent</item>
+			<item>ParentAttr</item>
+			<item>ParentPcgs</item>
+			<item>ParityPol</item>
+			<item>ParseArguments</item>
+			<item>ParseBibFiles</item>
+			<item>ParseError</item>
+			<item>ParseTreeXMLString</item>
+			<item>PartialClosureOfCongruence</item>
+			<item>PartialOrderByOrderingFunction</item>
+			<item>PartialOrderOfHasseDiagram</item>
+			<item>Partition</item>
+			<item>PartitionBacktrack</item>
+			<item>PartitionSortedPoints</item>
+			<item>PartitionStabilizerPermGroup</item>
+			<item>PartitionTuples</item>
+			<item>Partitions</item>
+			<item>PartitionsA</item>
+			<item>PartitionsGreatestEQ</item>
+			<item>PartitionsGreatestLE</item>
+			<item>PartitionsK</item>
+			<item>PartitionsRecursively</item>
+			<item>PartitionsSet</item>
+			<item>PartitionsSetA</item>
+			<item>PartitionsSetK</item>
+			<item>PartitionsTest</item>
+			<item>PcElementByExponents</item>
+			<item>PcElementByExponentsNC</item>
+			<item>PcGroupClassMatrixColumn</item>
+			<item>PcGroupCode</item>
+			<item>PcGroupCodeRec</item>
+			<item>PcGroupFpGroup</item>
+			<item>PcGroupFpGroupNC</item>
+			<item>PcGroupWithPcgs</item>
+			<item>PcSeries</item>
+			<item>Pcgs</item>
+			<item>PcgsByIndependentGeneratorsOfAbelianGroup</item>
+			<item>PcgsByPcSequence</item>
+			<item>PcgsByPcSequenceCons</item>
+			<item>PcgsByPcSequenceNC</item>
+			<item>PcgsCentralSeries</item>
+			<item>PcgsChiefSeries</item>
+			<item>PcgsElAbSerFromSpecPcgs</item>
+			<item>PcgsElementaryAbelianSeries</item>
+			<item>PcgsHomSoImPow</item>
+			<item>PcgsMemberPcSeriesPermGroup</item>
+			<item>PcgsPCentralSeriesPGroup</item>
+			<item>PcgsStabChainSeries</item>
+			<item>PcgsSystemLGSeries</item>
+			<item>PcgsSystemWithComplementSystem</item>
+			<item>PcgsSystemWithHallSystem</item>
+			<item>PcgsSystemWithWf</item>
+			<item>PerfGrpConst</item>
+			<item>PerfGrpLoad</item>
+			<item>PerfectCSPG</item>
+			<item>PerfectCentralProduct</item>
+			<item>PerfectGroup</item>
+			<item>PerfectIdentification</item>
+			<item>PerfectResiduum</item>
+			<item>PerfectSubdirectProduct</item>
+			<item>PerfectSubgroupsAlternatingGroup</item>
+			<item>Perform</item>
+			<item>PermBounds</item>
+			<item>PermCandidates</item>
+			<item>PermCandidatesFaithful</item>
+			<item>PermCharInfo</item>
+			<item>PermCharInfoRelative</item>
+			<item>PermChars</item>
+			<item>PermCharsTom</item>
+			<item>PermComb</item>
+			<item>PermLeftQuoTransformation</item>
+			<item>PermList</item>
+			<item>PermListList</item>
+			<item>PermMatrixGroup</item>
+			<item>PermNatAnTestDetect</item>
+			<item>PermNewBasePoint</item>
+			<item>PermOnEnumerator</item>
+			<item>Permanent</item>
+			<item>PermgpContainsAn</item>
+			<item>PermpcgsPcGroupPcgs</item>
+			<item>Permut</item>
+			<item>Permutation</item>
+			<item>PermutationCharacter</item>
+			<item>PermutationCycle</item>
+			<item>PermutationCycleOp</item>
+			<item>PermutationGModule</item>
+			<item>PermutationMat</item>
+			<item>PermutationOp</item>
+			<item>PermutationToSortCharacters</item>
+			<item>PermutationToSortClasses</item>
+			<item>PermutationTom</item>
+			<item>PermutationsFamily</item>
+			<item>PermutationsList</item>
+			<item>PermutationsListK</item>
+			<item>Permuted</item>
+			<item>Phi</item>
+			<item>PlainListCopy</item>
+			<item>PlainListCopyOp</item>
+			<item>PointInCellNo</item>
+			<item>PolycyclicFactorGroup</item>
+			<item>PolycyclicFactorGroupByRelators</item>
+			<item>PolycyclicFactorGroupByRelatorsNC</item>
+			<item>PolycyclicFactorGroupNC</item>
+			<item>PolynomialByExtRep</item>
+			<item>PolynomialByExtRepNC</item>
+			<item>PolynomialCoefficientsOfPolynomial</item>
+			<item>PolynomialDivisionAlgorithm</item>
+			<item>PolynomialModP</item>
+			<item>PolynomialReducedRemainder</item>
+			<item>PolynomialReduction</item>
+			<item>PolynomialRing</item>
+			<item>PopOptions</item>
+			<item>PosSublOdd</item>
+			<item>PosVecEnumFF</item>
+			<item>Position</item>
+			<item>PositionBound</item>
+			<item>PositionCanonical</item>
+			<item>PositionFirstComponent</item>
+			<item>PositionMatchingDelimiter</item>
+			<item>PositionNonZero</item>
+			<item>PositionNot</item>
+			<item>PositionNthOccurrence</item>
+			<item>PositionNthTrueBlist</item>
+			<item>PositionProperty</item>
+			<item>PositionSet</item>
+			<item>PositionSorted</item>
+			<item>PositionStream</item>
+			<item>PositionSublist</item>
+			<item>PositionWord</item>
+			<item>PositionsTrueBlist</item>
+			<item>PositiveExponentsPresentationFpHom</item>
+			<item>PositiveIntegers</item>
+			<item>PositiveRootVectors</item>
+			<item>PositiveRoots</item>
+			<item>PositiveRootsAsWeights</item>
+			<item>PossibleClassFusions</item>
+			<item>PossibleFusionsCharTableTom</item>
+			<item>PossiblePowerMaps</item>
+			<item>PostMakeImmutable</item>
+			<item>Pover</item>
+			<item>PowerDecompositions</item>
+			<item>PowerMap</item>
+			<item>PowerMapByComposition</item>
+			<item>PowerMapOfGroup</item>
+			<item>PowerMapOfGroupWithInvariants</item>
+			<item>PowerMapOp</item>
+			<item>PowerMapsAllowedBySymmetrisations</item>
+			<item>PowerMapsAllowedBySymmetrizations</item>
+			<item>PowerMod</item>
+			<item>PowerModCoeffs</item>
+			<item>PowerModEvalPol</item>
+			<item>PowerModInt</item>
+			<item>PowerPartition</item>
+			<item>PowerPcgsElement</item>
+			<item>PowerS</item>
+			<item>PowerSi</item>
+			<item>PowerSubalgebraSeries</item>
+			<item>PowerWreath</item>
+			<item>PowersumsElsyms</item>
+			<item>PreBasis</item>
+			<item>PreImage</item>
+			<item>PreImageElm</item>
+			<item>PreImageSetStabBlocksHomomorphism</item>
+			<item>PreImageWord</item>
+			<item>PreImages</item>
+			<item>PreImagesElm</item>
+			<item>PreImagesRange</item>
+			<item>PreImagesRepresentative</item>
+			<item>PreImagesRepresentativeOperationAlgebraHomomorphism</item>
+			<item>PreImagesSet</item>
+			<item>PreOrbishProcessing</item>
+			<item>PreferredGenerators</item>
+			<item>PrefrattiniSubgroup</item>
+			<item>PreimagesOfTransformation</item>
+			<item>Presentation</item>
+			<item>PresentationAugmentedCosetTable</item>
+			<item>PresentationFpGroup</item>
+			<item>PresentationNormalClosure</item>
+			<item>PresentationNormalClosureRrs</item>
+			<item>PresentationRegularPermutationGroup</item>
+			<item>PresentationRegularPermutationGroupNC</item>
+			<item>PresentationSubgroup</item>
+			<item>PresentationSubgroupMtc</item>
+			<item>PresentationSubgroupRrs</item>
+			<item>PresentationViaCosetTable</item>
+			<item>PresentationsFamily</item>
+			<item>PrevPrimeInt</item>
+			<item>PriGroItNext</item>
+			<item>PrimGrpLoad</item>
+			<item>PrimaryGeneratorWords</item>
+			<item>PrimeBlocks</item>
+			<item>PrimeBlocksOp</item>
+			<item>PrimeField</item>
+			<item>PrimeOfPGroup</item>
+			<item>PrimePGroup</item>
+			<item>PrimePowerComponent</item>
+			<item>PrimePowerComponents</item>
+			<item>PrimePowerPcSequence</item>
+			<item>PrimePowersInt</item>
+			<item>PrimeResidues</item>
+			<item>PrimeResiduesCache</item>
+			<item>Primes</item>
+			<item>PrimitiveElement</item>
+			<item>PrimitiveFacExtRepRatPol</item>
+			<item>PrimitiveGroup</item>
+			<item>PrimitiveGroupSims</item>
+			<item>PrimitiveGroupsIterator</item>
+			<item>PrimitiveIdentification</item>
+			<item>PrimitiveIndexIrreducibleSolvableGroup</item>
+			<item>PrimitivePolynomial</item>
+			<item>PrimitiveRoot</item>
+			<item>PrimitiveRootMod</item>
+			<item>Print</item>
+			<item>PrintAmbiguity</item>
+			<item>PrintArray</item>
+			<item>PrintBibAsBib</item>
+			<item>PrintBibAsHTML</item>
+			<item>PrintBibAsText</item>
+			<item>PrintCharacterTable</item>
+			<item>PrintCounters</item>
+			<item>PrintFactorsInt</item>
+			<item>PrintFormattedString</item>
+			<item>PrintFormattingStatus</item>
+			<item>PrintGAPDocElementTemplates</item>
+			<item>PrintHashWithNames</item>
+			<item>PrintObj</item>
+			<item>PrintPadicExpansion</item>
+			<item>PrintRecIndent</item>
+			<item>PrintSixFile</item>
+			<item>PrintTo</item>
+			<item>ProbabilityShapes</item>
+			<item>Process</item>
+			<item>ProcessFixpoint</item>
+			<item>ProdCoefRatfun</item>
+			<item>ProdCoeffLaurpol</item>
+			<item>ProdCoeffUnivfunc</item>
+			<item>Product</item>
+			<item>ProductCoeffs</item>
+			<item>ProductMod</item>
+			<item>ProductOp</item>
+			<item>ProductPP</item>
+			<item>ProductPol</item>
+			<item>ProductRootsPol</item>
+			<item>ProductSpace</item>
+			<item>ProductX</item>
+			<item>ProductXHelp</item>
+			<item>ProfileFunctions</item>
+			<item>ProfileFunctionsInGlobalVariables</item>
+			<item>ProfileGlobalFunctions</item>
+			<item>ProfileMethods</item>
+			<item>ProfileOperations</item>
+			<item>ProfileOperationsAndMethods</item>
+			<item>ProfileOperationsAndMethodsOff</item>
+			<item>ProfileOperationsAndMethodsOn</item>
+			<item>ProfileOperationsOff</item>
+			<item>ProfileOperationsOn</item>
+			<item>ProjectedInducedPcgs</item>
+			<item>ProjectedPcElement</item>
+			<item>Projection</item>
+			<item>ProjectionMap</item>
+			<item>ProjectionOntoFullRowSpace</item>
+			<item>ProjectionOntoVectorSubspace</item>
+			<item>ProjectiveActionHomomorphismMatrixGroup</item>
+			<item>ProjectiveActionOnFullSpace</item>
+			<item>ProjectiveCharDeg</item>
+			<item>ProjectiveGeneralLinearGroup</item>
+			<item>ProjectiveGeneralLinearGroupCons</item>
+			<item>ProjectiveGeneralUnitaryGroup</item>
+			<item>ProjectiveGeneralUnitaryGroupCons</item>
+			<item>ProjectiveOrder</item>
+			<item>ProjectiveSpecialLinearGroup</item>
+			<item>ProjectiveSpecialLinearGroupCons</item>
+			<item>ProjectiveSpecialUnitaryGroup</item>
+			<item>ProjectiveSpecialUnitaryGroupCons</item>
+			<item>ProjectiveSymplecticGroup</item>
+			<item>ProjectiveSymplecticGroupCons</item>
+			<item>PropertyMethodByNiceMonomorphism</item>
+			<item>PropertyMethodByNiceMonomorphismCollColl</item>
+			<item>PropertyMethodByNiceMonomorphismCollElm</item>
+			<item>PropertyMethodByNiceMonomorphismElmColl</item>
+			<item>PseudoRandom</item>
+			<item>PseudoRandomSeed</item>
+			<item>PthPowerImage</item>
+			<item>PthPowerImages</item>
+			<item>PullBack</item>
+			<item>PullbackCSPG</item>
+			<item>PullbackKernelCSPG</item>
+			<item>PurePadicNumberFamily</item>
+			<item>PushOptions</item>
+			<item>Quadratic</item>
+			<item>QuasiDihedralGenerators</item>
+			<item>QuaternionAlgebra</item>
+			<item>QuaternionGenerators</item>
+			<item>QuickInverseRepresentative</item>
+			<item>QuoInt</item>
+			<item>QuotRemLaurpols</item>
+			<item>QuotRemPolList</item>
+			<item>QuotSysDefinitionByIndex</item>
+			<item>QuotSysIndexByDefinition</item>
+			<item>Quotient</item>
+			<item>QuotientFromSCTable</item>
+			<item>QuotientGroup</item>
+			<item>QuotientGroupByChainHomomorphicImage</item>
+			<item>QuotientGroupByHomomorphism</item>
+			<item>QuotientGroupByImages</item>
+			<item>QuotientGroupByImagesNC</item>
+			<item>QuotientGroupHom</item>
+			<item>QuotientMod</item>
+			<item>QuotientPolynomialsExtRep</item>
+			<item>QuotientRemainder</item>
+			<item>QuotientSemigroupCongruence</item>
+			<item>QuotientSemigroupHomomorphism</item>
+			<item>QuotientSemigroupPreimage</item>
+			<item>QuotientSystem</item>
+			<item>RBaseGroupsBloxPermGroup</item>
+			<item>RClassOfHClass</item>
+			<item>RNamObj</item>
+			<item>RPFactorsModPrime</item>
+			<item>RPGcdCRT</item>
+			<item>RPGcdModPrime</item>
+			<item>RPGcdRepresentationModPrime</item>
+			<item>RPIFactors</item>
+			<item>RPIGcd</item>
+			<item>RPQuotientModPrime</item>
+			<item>RPSquareHensel</item>
+			<item>RRefine</item>
+			<item>RSSDefaultOptions</item>
+			<item>RadicalGroup</item>
+			<item>RadicalOfAlgebra</item>
+			<item>RanImgSrcSurjBloho</item>
+			<item>RanImgSrcSurjTraho</item>
+			<item>Random</item>
+			<item>RandomBinaryRelationOnPoints</item>
+			<item>RandomByPcs</item>
+			<item>RandomCommutatorSubproduct</item>
+			<item>RandomElmAsWord</item>
+			<item>RandomHashKey</item>
+			<item>RandomInvertibleMat</item>
+			<item>RandomIsomorphismTest</item>
+			<item>RandomList</item>
+			<item>RandomMat</item>
+			<item>RandomNormalSubproduct</item>
+			<item>RandomPcgsSylowSubgroup</item>
+			<item>RandomPol</item>
+			<item>RandomPrimitivePolynomial</item>
+			<item>RandomSchreierSims</item>
+			<item>RandomSpecialPcgsCoded</item>
+			<item>RandomSubprod</item>
+			<item>RandomTransformation</item>
+			<item>RandomUnimodularMat</item>
+			<item>Range</item>
+			<item>Rank</item>
+			<item>RankAction</item>
+			<item>RankFilter</item>
+			<item>RankMat</item>
+			<item>RankMatDestructive</item>
+			<item>RankOfTransformation</item>
+			<item>RankPGroup</item>
+			<item>RanksOfDescendingSeries</item>
+			<item>Rat</item>
+			<item>RatClasPElmArrangeClasses</item>
+			<item>RatPairString</item>
+			<item>RationalClass</item>
+			<item>RationalClasses</item>
+			<item>RationalClassesInEANS</item>
+			<item>RationalClassesPElements</item>
+			<item>RationalClassesPermGroup</item>
+			<item>RationalClassesSolvableGroup</item>
+			<item>RationalClassesTry</item>
+			<item>RationalFunctionByExtRep</item>
+			<item>RationalFunctionByExtRepWithCancellation</item>
+			<item>RationalFunctionsFamily</item>
+			<item>RationalIdentificationPermGroup</item>
+			<item>RationalizedMat</item>
+			<item>Rationals</item>
+			<item>ReObjectify</item>
+			<item>Read</item>
+			<item>ReadAll</item>
+			<item>ReadAllIoStreamByPty</item>
+			<item>ReadAllLine</item>
+			<item>ReadAndCheckFunc</item>
+			<item>ReadAsFunction</item>
+			<item>ReadByte</item>
+			<item>ReadGapRoot</item>
+			<item>ReadGrp</item>
+			<item>ReadLib</item>
+			<item>ReadLine</item>
+			<item>ReadOrComplete</item>
+			<item>ReadPackage</item>
+			<item>ReadPkg</item>
+			<item>ReadPrim</item>
+			<item>ReadSmall</item>
+			<item>ReadSmallLib</item>
+			<item>ReadTest</item>
+			<item>ReadTom</item>
+			<item>ReadTrans</item>
+			<item>RealClasses</item>
+			<item>RealizableBrauerCharacters</item>
+			<item>RecFields</item>
+			<item>RecNames</item>
+			<item>RecordsFamily</item>
+			<item>RecurseSchreierTree</item>
+			<item>RedispatchOnCondition</item>
+			<item>ReduceCoefficientsOfRws</item>
+			<item>ReduceCoeffs</item>
+			<item>ReduceCoeffsMod</item>
+			<item>ReduceLetterRepWordsRewSys</item>
+			<item>ReduceRules</item>
+			<item>ReduceStabChain</item>
+			<item>ReduceWordUsingRewritingSystem</item>
+			<item>Reduced</item>
+			<item>ReducedAdditiveInverse</item>
+			<item>ReducedByIsomorphisms</item>
+			<item>ReducedCharacters</item>
+			<item>ReducedClassFunctions</item>
+			<item>ReducedComm</item>
+			<item>ReducedConfluentRewritingSystem</item>
+			<item>ReducedConfluentRwsFromKbrwsNC</item>
+			<item>ReducedConjugate</item>
+			<item>ReducedDifference</item>
+			<item>ReducedForm</item>
+			<item>ReducedGaloisStabilizerInfo</item>
+			<item>ReducedGroebnerBasis</item>
+			<item>ReducedInverse</item>
+			<item>ReducedLeftQuotient</item>
+			<item>ReducedOne</item>
+			<item>ReducedOrdinary</item>
+			<item>ReducedPcElement</item>
+			<item>ReducedPower</item>
+			<item>ReducedProduct</item>
+			<item>ReducedQuotient</item>
+			<item>ReducedRrsWord</item>
+			<item>ReducedSCTable</item>
+			<item>ReducedScalarProduct</item>
+			<item>ReducedSum</item>
+			<item>ReducedVectorLTM</item>
+			<item>ReducedZero</item>
+			<item>Ree</item>
+			<item>ReeGroup</item>
+			<item>ReeGroupCons</item>
+			<item>ReesCongruenceOfSemigroupIdeal</item>
+			<item>ReesMatrixSemigroup</item>
+			<item>ReesMatrixSemigroupElement</item>
+			<item>ReesMatrixSemigroupEnumeratorGetElement</item>
+			<item>ReesZeroMatrixSemigroup</item>
+			<item>ReesZeroMatrixSemigroupElement</item>
+			<item>ReesZeroMatrixSemigroupElementIsZero</item>
+			<item>ReesZeroMatrixSemigroupEnumeratorGetElement</item>
+			<item>RefinedChain</item>
+			<item>RefinedPcGroup</item>
+			<item>RefinedSymmetrisations</item>
+			<item>RefinedSymmetrizations</item>
+			<item>Refinements</item>
+			<item>ReflectionMat</item>
+			<item>ReflexiveClosureBinaryRelation</item>
+			<item>RegisterRBasePoint</item>
+			<item>RegularActionHomomorphism</item>
+			<item>RegularModule</item>
+			<item>RegularModuleByGens</item>
+			<item>RegularNinKernelCSPG</item>
+			<item>RelVectorToCocycle</item>
+			<item>RelationsOfFpMonoid</item>
+			<item>RelationsOfFpSemigroup</item>
+			<item>RelativeBasis</item>
+			<item>RelativeBasisNC</item>
+			<item>RelativeOrderOfPcElement</item>
+			<item>RelativeOrders</item>
+			<item>RelatorFixedMultiplier</item>
+			<item>RelatorMatrixAbelianizedNormalClosure</item>
+			<item>RelatorMatrixAbelianizedNormalClosureRrs</item>
+			<item>RelatorMatrixAbelianizedSubgroup</item>
+			<item>RelatorMatrixAbelianizedSubgroupMtc</item>
+			<item>RelatorMatrixAbelianizedSubgroupRrs</item>
+			<item>RelatorRepresentatives</item>
+			<item>RelatorsCode</item>
+			<item>RelatorsOfFpAlgebra</item>
+			<item>RelatorsOfFpGroup</item>
+			<item>RelatorsPermGroupHom</item>
+			<item>RelsSortedByStartGen</item>
+			<item>RelsViaCosetTable</item>
+			<item>RemInt</item>
+			<item>RemoveCharacters</item>
+			<item>RemoveElmList</item>
+			<item>RemoveFile</item>
+			<item>RemoveOuterCoeffs</item>
+			<item>RemoveRelator</item>
+			<item>RemoveRootParseTree</item>
+			<item>RemoveSet</item>
+			<item>RemoveStabChain</item>
+			<item>RenumberHighestWeightGenerators</item>
+			<item>RenumberTree</item>
+			<item>RenumberedWord</item>
+			<item>RepOpElmTuplesPermGroup</item>
+			<item>RepOpSetsPermGroup</item>
+			<item>RepeatedString</item>
+			<item>ReplacedString</item>
+			<item>RepresentationsOfMatrix</item>
+			<item>RepresentationsOfObject</item>
+			<item>Representative</item>
+			<item>RepresentativeAction</item>
+			<item>RepresentativeActionOp</item>
+			<item>RepresentativeFromGenerators</item>
+			<item>RepresentativeLinearOperation</item>
+			<item>RepresentativeSmallest</item>
+			<item>RepresentativeTom</item>
+			<item>RepresentativeTomByGenerators</item>
+			<item>RepresentativeTomByGeneratorsNC</item>
+			<item>RepresentativesContainedRightCosets</item>
+			<item>RepresentativesFusions</item>
+			<item>RepresentativesMinimalBlocks</item>
+			<item>RepresentativesMinimalBlocksAttr</item>
+			<item>RepresentativesMinimalBlocksOp</item>
+			<item>RepresentativesPerfectSubgroups</item>
+			<item>RepresentativesPowerMaps</item>
+			<item>RepresentativesSimpleSubgroups</item>
+			<item>RepsPerfSimpSub</item>
+			<item>RequirePackage</item>
+			<item>Reread</item>
+			<item>RereadAndCheckFunc</item>
+			<item>RereadGrp</item>
+			<item>RereadLib</item>
+			<item>RereadPackage</item>
+			<item>RereadPkg</item>
+			<item>RereadPrim</item>
+			<item>RereadSmall</item>
+			<item>RereadTrans</item>
+			<item>ResetFilterObj</item>
+			<item>ResetOptionsStack</item>
+			<item>ResizeFlatHashTable</item>
+			<item>ResizeListHashTable</item>
+			<item>RespectsAddition</item>
+			<item>RespectsAdditiveInverses</item>
+			<item>RespectsInverses</item>
+			<item>RespectsMultiplication</item>
+			<item>RespectsOne</item>
+			<item>RespectsScalarMultiplication</item>
+			<item>RespectsZero</item>
+			<item>RestoreStateRandom</item>
+			<item>Restricted</item>
+			<item>RestrictedClassFunction</item>
+			<item>RestrictedClassFunctions</item>
+			<item>RestrictedExternalSet</item>
+			<item>RestrictedMapping</item>
+			<item>RestrictedNiceMonomorphism</item>
+			<item>RestrictedPartitions</item>
+			<item>RestrictedPartitionsA</item>
+			<item>RestrictedPartitionsK</item>
+			<item>RestrictedPerm</item>
+			<item>RestrictedTransformation</item>
+			<item>ResultOfLineOfStraightLineProgram</item>
+			<item>ResultOfStraightLineProgram</item>
+			<item>Resultant</item>
+			<item>ReturnFail</item>
+			<item>ReturnFalse</item>
+			<item>ReturnNextBasePoint</item>
+			<item>ReturnPopOptions</item>
+			<item>ReturnTrue</item>
+			<item>Reversed</item>
+			<item>ReversedOp</item>
+			<item>Revision</item>
+			<item>RewindStream</item>
+			<item>RewriteAbelianizedSubgroupRelators</item>
+			<item>RewriteSubgroupRelators</item>
+			<item>RewriteWord</item>
+			<item>RightActingAlgebra</item>
+			<item>RightActingDomain</item>
+			<item>RightActingGroup</item>
+			<item>RightActingRingOfIdeal</item>
+			<item>RightAction</item>
+			<item>RightAlgebraModule</item>
+			<item>RightAlgebraModuleByGenerators</item>
+			<item>RightCoset</item>
+			<item>RightCosetCanonicalRepresentativeDeterminator</item>
+			<item>RightCosets</item>
+			<item>RightCosetsNC</item>
+			<item>RightDerivations</item>
+			<item>RightIdeal</item>
+			<item>RightIdealByGenerators</item>
+			<item>RightIdealNC</item>
+			<item>RightMagmaCongruence</item>
+			<item>RightMagmaCongruenceByGeneratingPairs</item>
+			<item>RightMagmaIdeal</item>
+			<item>RightMagmaIdealByGenerators</item>
+			<item>RightModuleByHomomorphismToMatAlg</item>
+			<item>RightSemigroupCongruenceByGeneratingPairs</item>
+			<item>RightSemigroupIdealEnumeratorDataGetElement</item>
+			<item>RightShiftRowVector</item>
+			<item>RightTransversal</item>
+			<item>RightTransversalInParent</item>
+			<item>RightTransversalOp</item>
+			<item>RightTransversalPermGroupConstructor</item>
+			<item>Ring</item>
+			<item>RingByGenerators</item>
+			<item>RingElmTimesElm</item>
+			<item>RingFromFFE</item>
+			<item>RingWithOne</item>
+			<item>RingWithOneByGenerators</item>
+			<item>Root</item>
+			<item>RootBound</item>
+			<item>RootInt</item>
+			<item>RootMod</item>
+			<item>RootModPrime</item>
+			<item>RootModPrimePower</item>
+			<item>RootOfDefiningPolynomial</item>
+			<item>RootSystem</item>
+			<item>RootsMod</item>
+			<item>RootsModPrime</item>
+			<item>RootsModPrimePower</item>
+			<item>RootsOfUPol</item>
+			<item>RootsRepresentativeFFPol</item>
+			<item>RootsUnityMod</item>
+			<item>RootsUnityModPrime</item>
+			<item>RootsUnityModPrimePower</item>
+			<item>RoundCyc</item>
+			<item>RoundCycDown</item>
+			<item>RowEchelonFormLTM</item>
+			<item>RowIndexOfReesMatrixSemigroupElement</item>
+			<item>RowIndexOfReesZeroMatrixSemigroupElement</item>
+			<item>RowSpace</item>
+			<item>RowsOfReesMatrixSemigroup</item>
+			<item>RowsOfReesZeroMatrixSemigroup</item>
+			<item>Rules</item>
+			<item>RunImmediateMethods</item>
+			<item>Runtime</item>
+			<item>Runtimes</item>
+			<item>SCMinSmaGens</item>
+			<item>SCRExtend</item>
+			<item>SCRExtendRecord</item>
+			<item>SCRMakeStabStrong</item>
+			<item>SCRNotice</item>
+			<item>SCRRandomPerm</item>
+			<item>SCRRandomString</item>
+			<item>SCRRandomSubproduct</item>
+			<item>SCRRestoredRecord</item>
+			<item>SCRSchTree</item>
+			<item>SCRSift</item>
+			<item>SCRStrongGenTest</item>
+			<item>SCTableEntry</item>
+			<item>SCTableProduct</item>
+			<item>SLDegree</item>
+			<item>SLUnderlyingField</item>
+			<item>SNFofREF</item>
+			<item>SPolynomial</item>
+			<item>SSortedList</item>
+			<item>SSortedListList</item>
+			<item>STDOut</item>
+			<item>STGSelFunc</item>
+			<item>SameBlock</item>
+			<item>SandwichMatrixOfReesMatrixSemigroup</item>
+			<item>SandwichMatrixOfReesZeroMatrixSemigroup</item>
+			<item>SaveWorkspace</item>
+			<item>ScalarProduct</item>
+			<item>SchreierTransversal</item>
+			<item>SchreierTreeDepth</item>
+			<item>SchreierTreeInternalConsistencyCheck</item>
+			<item>SchuMu</item>
+			<item>SchurCover</item>
+			<item>SchurCoverFP</item>
+			<item>ScriptFromString</item>
+			<item>Search</item>
+			<item>SecHMSM</item>
+			<item>SecondaryGeneratorWordsAugmentedCosetTable</item>
+			<item>SecondaryImagesAugmentedCosetTable</item>
+			<item>SecondsDMYhms</item>
+			<item>SeekPositionStream</item>
+			<item>SelectSmallGroups</item>
+			<item>SelectTransitiveGroups</item>
+			<item>SemiEchelonBasis</item>
+			<item>SemiEchelonBasisNC</item>
+			<item>SemiEchelonMat</item>
+			<item>SemiEchelonMatDestructive</item>
+			<item>SemiEchelonMatTransformation</item>
+			<item>SemiEchelonMatTransformationDestructive</item>
+			<item>SemiEchelonMats</item>
+			<item>SemiEchelonMatsDestructive</item>
+			<item>SemiEchelonMatsNoCo</item>
+			<item>SemiSimpleType</item>
+			<item>SemidirectFactorsOfGroup</item>
+			<item>SemidirectProduct</item>
+			<item>SemidirectProductInfo</item>
+			<item>Semigroup</item>
+			<item>SemigroupByGenerators</item>
+			<item>SemigroupByMultiplicationTable</item>
+			<item>SemigroupCongruenceByGeneratingPairs</item>
+			<item>SemigroupIdealByGenerators</item>
+			<item>SemigroupIdealEnumeratorDataGetElement</item>
+			<item>SemigroupOfRewritingSystem</item>
+			<item>SemigroupTCInitialTableSize</item>
+			<item>SemigroupToddCoxeterInfo</item>
+			<item>Semiring</item>
+			<item>SemiringByGenerators</item>
+			<item>SemiringWithOne</item>
+			<item>SemiringWithOneAndZero</item>
+			<item>SemiringWithOneAndZeroByGenerators</item>
+			<item>SemiringWithOneByGenerators</item>
+			<item>SemiringWithZero</item>
+			<item>SemiringWithZeroByGenerators</item>
+			<item>SeqsOrbits</item>
+			<item>Set</item>
+			<item>SetANonReesCongruenceOfSemigroup</item>
+			<item>SetAbelianInvariants</item>
+			<item>SetAbelianInvariantsOfList</item>
+			<item>SetAbsoluteValue</item>
+			<item>SetActingDomain</item>
+			<item>SetActionHomomorphismAttr</item>
+			<item>SetActionKernelExternalSet</item>
+			<item>SetActorOfExternalSet</item>
+			<item>SetActualLibFileName</item>
+			<item>SetAdditiveElementAsMultiplicativeElement</item>
+			<item>SetAdditiveElementsAsMultiplicativeElementsFamily</item>
+			<item>SetAdditiveInverse</item>
+			<item>SetAdditiveInverseAttr</item>
+			<item>SetAdditiveInverseImmutable</item>
+			<item>SetAdditiveNeutralElement</item>
+			<item>SetAdditivelyActingDomain</item>
+			<item>SetAdjointBasis</item>
+			<item>SetAdjointModule</item>
+			<item>SetAlgebraicElementsFamilies</item>
+			<item>SetAllBlocks</item>
+			<item>SetAllInfoLevels</item>
+			<item>SetAlpha</item>
+			<item>SetAlternatingDegree</item>
+			<item>SetAlternatingSubgroup</item>
+			<item>SetAsDuplicateFreeList</item>
+			<item>SetAsGroup</item>
+			<item>SetAsGroupGeneralMappingByImages</item>
+			<item>SetAsLeftModuleGeneralMappingByImages</item>
+			<item>SetAsList</item>
+			<item>SetAsMagma</item>
+			<item>SetAsMonoid</item>
+			<item>SetAsNearRing</item>
+			<item>SetAsPolynomial</item>
+			<item>SetAsRing</item>
+			<item>SetAsSSortedList</item>
+			<item>SetAsSemigroup</item>
+			<item>SetAsSemiring</item>
+			<item>SetAsSemiringWithOne</item>
+			<item>SetAsSemiringWithOneAndZero</item>
+			<item>SetAsSemiringWithZero</item>
+			<item>SetAsSortedList</item>
+			<item>SetAsSubgroupOfWholeGroupByQuotient</item>
+			<item>SetAssertionLevel</item>
+			<item>SetAssociatedReesMatrixSemigroupOfDClass</item>
+			<item>SetAssociatedSemigroup</item>
+			<item>SetAugmentationIdeal</item>
+			<item>SetAugmentedCosetTableMtcInWholeGroup</item>
+			<item>SetAugmentedCosetTableNormalClosureInWholeGroup</item>
+			<item>SetAugmentedCosetTableRrsInWholeGroup</item>
+			<item>SetAutomorphismDomain</item>
+			<item>SetAutomorphismGroup</item>
+			<item>SetAutomorphismsOfTable</item>
+			<item>SetBaseIntMat</item>
+			<item>SetBaseMat</item>
+			<item>SetBaseOfBasicImageGroup</item>
+			<item>SetBaseOfGroup</item>
+			<item>SetBaseOrthogonalSpaceMat</item>
+			<item>SetBasis</item>
+			<item>SetBasisOfHomCosetAddMatrixGroup</item>
+			<item>SetBasisVectors</item>
+			<item>SetBaumClausenInfo</item>
+			<item>SetBilinearFormMat</item>
+			<item>SetBlocksAttr</item>
+			<item>SetBlocksInfo</item>
+			<item>SetBrauerCharacterValue</item>
+			<item>SetBravaisGroup</item>
+			<item>SetBravaisSubgroups</item>
+			<item>SetBravaisSupergroups</item>
+			<item>SetCanEasilyCompareElements</item>
+			<item>SetCanEasilySortElements</item>
+			<item>SetCanFindNilpotentClassTwoElement</item>
+			<item>SetCanonicalBasis</item>
+			<item>SetCanonicalElt</item>
+			<item>SetCanonicalGenerators</item>
+			<item>SetCanonicalNiceMonomorphism</item>
+			<item>SetCanonicalPcgs</item>
+			<item>SetCanonicalPcgsWrtFamilyPcgs</item>
+			<item>SetCanonicalPcgsWrtHomePcgs</item>
+			<item>SetCanonicalPcgsWrtSpecialPcgs</item>
+			<item>SetCanonicalRepresentativeDeterminatorOfExternalSet</item>
+			<item>SetCanonicalRepresentativeOfExternalOrbitByPcgs</item>
+			<item>SetCanonicalRepresentativeOfExternalSet</item>
+			<item>SetCartanMatrix</item>
+			<item>SetCartanSubalgebra</item>
+			<item>SetCayleyGraphDualSemigroup</item>
+			<item>SetCayleyGraphSemigroup</item>
+			<item>SetCenter</item>
+			<item>SetCentralCharacter</item>
+			<item>SetCentralIdempotentsOfSemiring</item>
+			<item>SetCentralNormalSeriesByPcgs</item>
+			<item>SetCentralizerInGLnZ</item>
+			<item>SetCentralizerInParent</item>
+			<item>SetCentre</item>
+			<item>SetCentreOfCharacter</item>
+			<item>SetChainSubgroup</item>
+			<item>SetChainSubgroupQuotient</item>
+			<item>SetCharacterDegrees</item>
+			<item>SetCharacterNames</item>
+			<item>SetCharacterParameters</item>
+			<item>SetCharacteristic</item>
+			<item>SetCharacteristicPolynomial</item>
+			<item>SetChevalleyBasis</item>
+			<item>SetChiefNormalSeriesByPcgs</item>
+			<item>SetChiefSeries</item>
+			<item>SetClassNames</item>
+			<item>SetClassNamesTom</item>
+			<item>SetClassParameters</item>
+			<item>SetClassPermutation</item>
+			<item>SetClassPositionsOfCentre</item>
+			<item>SetClassPositionsOfDerivedSubgroup</item>
+			<item>SetClassPositionsOfDirectProductDecompositions</item>
+			<item>SetClassPositionsOfElementaryAbelianSeries</item>
+			<item>SetClassPositionsOfFittingSubgroup</item>
+			<item>SetClassPositionsOfKernel</item>
+			<item>SetClassPositionsOfLowerCentralSeries</item>
+			<item>SetClassPositionsOfMaximalNormalSubgroups</item>
+			<item>SetClassPositionsOfNormalSubgroups</item>
+			<item>SetClassPositionsOfSolvableResiduum</item>
+			<item>SetClassPositionsOfSupersolvableResiduum</item>
+			<item>SetClassPositionsOfUpperCentralSeries</item>
+			<item>SetClassRoots</item>
+			<item>SetClassTypesTom</item>
+			<item>SetCoKernelOfAdditiveGeneralMapping</item>
+			<item>SetCoKernelOfMultiplicativeGeneralMapping</item>
+			<item>SetCoefficientsAndMagmaElements</item>
+			<item>SetCoefficientsFamily</item>
+			<item>SetCoefficientsOfLaurentPolynomial</item>
+			<item>SetCoefficientsOfUnivariatePolynomial</item>
+			<item>SetCoefficientsOfUnivariateRationalFunction</item>
+			<item>SetCoefficientsRing</item>
+			<item>SetCollectionsFamily</item>
+			<item>SetColumnIndexOfReesMatrixSemigroupElement</item>
+			<item>SetColumnIndexOfReesZeroMatrixSemigroupElement</item>
+			<item>SetColumnsOfReesMatrixSemigroup</item>
+			<item>SetColumnsOfReesZeroMatrixSemigroup</item>
+			<item>SetCommutator</item>
+			<item>SetCommutatorANC</item>
+			<item>SetCommutatorFactorGroup</item>
+			<item>SetCommutatorLength</item>
+			<item>SetCommutatorNC</item>
+			<item>SetComplementSystem</item>
+			<item>SetComplexConjugate</item>
+			<item>SetComponentsOfTuplesFamily</item>
+			<item>SetCompositionSeries</item>
+			<item>SetComputedAgemos</item>
+			<item>SetComputedAscendingChains</item>
+			<item>SetComputedBrauerTables</item>
+			<item>SetComputedClassFusions</item>
+			<item>SetComputedCyclicExtensionsTom</item>
+			<item>SetComputedHallSubgroups</item>
+			<item>SetComputedIndicators</item>
+			<item>SetComputedIsPNilpotents</item>
+			<item>SetComputedIsPSolvableCharacterTables</item>
+			<item>SetComputedIsPSolvables</item>
+			<item>SetComputedOmegas</item>
+			<item>SetComputedPCentralSeriess</item>
+			<item>SetComputedPCores</item>
+			<item>SetComputedPRumps</item>
+			<item>SetComputedPowerMaps</item>
+			<item>SetComputedPrimeBlockss</item>
+			<item>SetComputedSylowComplements</item>
+			<item>SetComputedSylowSubgroups</item>
+			<item>SetConductor</item>
+			<item>SetConfluentRws</item>
+			<item>SetConjugacyClasses</item>
+			<item>SetConjugacyClassesMaximalSubgroups</item>
+			<item>SetConjugacyClassesPerfectSubgroups</item>
+			<item>SetConjugacyClassesSubgroups</item>
+			<item>SetConjugate</item>
+			<item>SetConjugateANC</item>
+			<item>SetConjugateNC</item>
+			<item>SetConjugates</item>
+			<item>SetConjugatorInnerAutomorphism</item>
+			<item>SetConjugatorOfConjugatorIsomorphism</item>
+			<item>SetConstantTimeAccessList</item>
+			<item>SetConstituentsOfCharacter</item>
+			<item>SetConvertBasicImageGroupElement</item>
+			<item>SetCoreInParent</item>
+			<item>SetCosetTableFpHom</item>
+			<item>SetCosetTableInWholeGroup</item>
+			<item>SetCosetTableNormalClosureInWholeGroup</item>
+			<item>SetCosetTableOfFpSemigroup</item>
+			<item>SetCrystGroupDefaultAction</item>
+			<item>SetCycleStructurePerm</item>
+			<item>SetCyclicExtensionsTom</item>
+			<item>SetDataType</item>
+			<item>SetDecompositionMatrix</item>
+			<item>SetDecompositionTypesOfGroup</item>
+			<item>SetDefaultFieldOfMatrix</item>
+			<item>SetDefaultFieldOfMatrixGroup</item>
+			<item>SetDefectApproximation</item>
+			<item>SetDefiningPcgs</item>
+			<item>SetDefiningPolynomial</item>
+			<item>SetDefinitionNC</item>
+			<item>SetDegreeAction</item>
+			<item>SetDegreeOfBinaryRelation</item>
+			<item>SetDegreeOfCharacter</item>
+			<item>SetDegreeOfLaurentPolynomial</item>
+			<item>SetDegreeOfMatrixGroup</item>
+			<item>SetDegreeOfTransformation</item>
+			<item>SetDegreeOfTransformationSemigroup</item>
+			<item>SetDegreeOperation</item>
+			<item>SetDegreeOverPrimeField</item>
+			<item>SetDelta</item>
+			<item>SetDenominatorOfModuloPcgs</item>
+			<item>SetDenominatorOfRationalFunction</item>
+			<item>SetDepthOfUpperTriangularMatrix</item>
+			<item>SetDerivations</item>
+			<item>SetDerivative</item>
+			<item>SetDerivedLength</item>
+			<item>SetDerivedSeriesOfGroup</item>
+			<item>SetDerivedSubgroup</item>
+			<item>SetDerivedSubgroupsTomPossible</item>
+			<item>SetDerivedSubgroupsTomUnique</item>
+			<item>SetDeterminantMat</item>
+			<item>SetDeterminantOfCharacter</item>
+			<item>SetDihedralGenerators</item>
+			<item>SetDimension</item>
+			<item>SetDimensionOfMatrixGroup</item>
+			<item>SetDimensionOfVectors</item>
+			<item>SetDimensionsLoewyFactors</item>
+			<item>SetDimensionsMat</item>
+			<item>SetDirectFactorsOfGroup</item>
+			<item>SetDirectProductInfo</item>
+			<item>SetDirectSumDecomposition</item>
+			<item>SetDisplayOptions</item>
+			<item>SetDixonRecord</item>
+			<item>SetEANormalSeriesByPcgs</item>
+			<item>SetEarns</item>
+			<item>SetEggBoxOfDClass</item>
+			<item>SetElementTestFunction</item>
+			<item>SetElementaryAbelianSeries</item>
+			<item>SetElementaryAbelianSeriesLargeSteps</item>
+			<item>SetElementaryAbelianSubseries</item>
+			<item>SetElementsFamily</item>
+			<item>SetElmWPObj</item>
+			<item>SetEmptyRowVector</item>
+			<item>SetEntrySCTable</item>
+			<item>SetEnumerator</item>
+			<item>SetEnumeratorByBasis</item>
+			<item>SetEnumeratorSorted</item>
+			<item>SetEquivalenceClassRelation</item>
+			<item>SetEquivalenceClasses</item>
+			<item>SetEquivalenceRelationPartition</item>
+			<item>SetErrorHandler</item>
+			<item>SetExponent</item>
+			<item>SetExponentOfPowering</item>
+			<item>SetExtRepDenominatorRatFun</item>
+			<item>SetExtRepNumeratorRatFun</item>
+			<item>SetExtRepPolynomialRatFun</item>
+			<item>SetExternalOrbits</item>
+			<item>SetExternalOrbitsStabilizers</item>
+			<item>SetExternalSet</item>
+			<item>SetFactorsOfDirectProduct</item>
+			<item>SetFaithfulModule</item>
+			<item>SetFamiliesOfGeneralMappingsAndRanges</item>
+			<item>SetFamilyForOrdering</item>
+			<item>SetFamilyForRewritingSystem</item>
+			<item>SetFamilyPcgs</item>
+			<item>SetFamilyRange</item>
+			<item>SetFamilySource</item>
+			<item>SetFeatureObj</item>
+			<item>SetFieldOfMatrixGroup</item>
+			<item>SetFilterObj</item>
+			<item>SetFittingSubgroup</item>
+			<item>SetFpElmComparisonMethod</item>
+			<item>SetFpElmEqualityMethod</item>
+			<item>SetFpElmKBRWS</item>
+			<item>SetFrattiniSubgroup</item>
+			<item>SetFrattinifactorId</item>
+			<item>SetFrattinifactorSize</item>
+			<item>SetFreeAlgebraOfFpAlgebra</item>
+			<item>SetFreeGeneratorsOfFpAlgebra</item>
+			<item>SetFreeGeneratorsOfFpGroup</item>
+			<item>SetFreeGeneratorsOfFpMonoid</item>
+			<item>SetFreeGeneratorsOfFpSemigroup</item>
+			<item>SetFreeGroupOfBasicImageGroup</item>
+			<item>SetFreeGroupOfFpGroup</item>
+			<item>SetFreeMonoidOfFpMonoid</item>
+			<item>SetFreeMonoidOfRewritingSystem</item>
+			<item>SetFreeSemigroupOfFpSemigroup</item>
+			<item>SetFreeSemigroupOfRewritingSystem</item>
+			<item>SetFrobeniusAutomorphism</item>
+			<item>SetFunctionAction</item>
+			<item>SetFusionConjugacyClassesOp</item>
+			<item>SetFusionsOfLibTom</item>
+			<item>SetFusionsToLibTom</item>
+			<item>SetFusionsTom</item>
+			<item>SetGLDegree</item>
+			<item>SetGLUnderlyingField</item>
+			<item>SetGaloisGroup</item>
+			<item>SetGaloisMat</item>
+			<item>SetGaloisStabilizer</item>
+			<item>SetGaloisType</item>
+			<item>SetGapDocHTMLOptions</item>
+			<item>SetGapDocLaTeXOptions</item>
+			<item>SetGapDocTxtOptions</item>
+			<item>SetGasmanMessageStatus</item>
+			<item>SetGeneralizedPcgs</item>
+			<item>SetGeneratingPairsOfLeftMagmaCongruence</item>
+			<item>SetGeneratingPairsOfMagmaCongruence</item>
+			<item>SetGeneratingPairsOfRightMagmaCongruence</item>
+			<item>SetGeneratingSetIsComplete</item>
+			<item>SetGeneratorOfCyclicGroup</item>
+			<item>SetGeneratorsOfAdditiveGroup</item>
+			<item>SetGeneratorsOfAdditiveMagma</item>
+			<item>SetGeneratorsOfAdditiveMagmaWithInverses</item>
+			<item>SetGeneratorsOfAdditiveMagmaWithZero</item>
+			<item>SetGeneratorsOfAlgebra</item>
+			<item>SetGeneratorsOfAlgebraModule</item>
+			<item>SetGeneratorsOfAlgebraWithOne</item>
+			<item>SetGeneratorsOfDivisionRing</item>
+			<item>SetGeneratorsOfDomain</item>
+			<item>SetGeneratorsOfEquivalenceRelationPartition</item>
+			<item>SetGeneratorsOfExtASet</item>
+			<item>SetGeneratorsOfExtLSet</item>
+			<item>SetGeneratorsOfExtRSet</item>
+			<item>SetGeneratorsOfExtUSet</item>
+			<item>SetGeneratorsOfFLMLOR</item>
+			<item>SetGeneratorsOfFLMLORWithOne</item>
+			<item>SetGeneratorsOfField</item>
+			<item>SetGeneratorsOfGroup</item>
+			<item>SetGeneratorsOfIdeal</item>
+			<item>SetGeneratorsOfLeftIdeal</item>
+			<item>SetGeneratorsOfLeftMagmaIdeal</item>
+			<item>SetGeneratorsOfLeftModule</item>
+			<item>SetGeneratorsOfLeftOperatorAdditiveGroup</item>
+			<item>SetGeneratorsOfLeftOperatorRing</item>
+			<item>SetGeneratorsOfLeftOperatorRingWithOne</item>
+			<item>SetGeneratorsOfLeftVectorSpace</item>
+			<item>SetGeneratorsOfMagma</item>
+			<item>SetGeneratorsOfMagmaIdeal</item>
+			<item>SetGeneratorsOfMagmaWithInverses</item>
+			<item>SetGeneratorsOfMagmaWithOne</item>
+			<item>SetGeneratorsOfMonoid</item>
+			<item>SetGeneratorsOfNearAdditiveGroup</item>
+			<item>SetGeneratorsOfNearAdditiveMagma</item>
+			<item>SetGeneratorsOfNearAdditiveMagmaWithInverses</item>
+			<item>SetGeneratorsOfNearAdditiveMagmaWithZero</item>
+			<item>SetGeneratorsOfRightIdeal</item>
+			<item>SetGeneratorsOfRightMagmaIdeal</item>
+			<item>SetGeneratorsOfRightModule</item>
+			<item>SetGeneratorsOfRightOperatorAdditiveGroup</item>
+			<item>SetGeneratorsOfRing</item>
+			<item>SetGeneratorsOfRingWithOne</item>
+			<item>SetGeneratorsOfRws</item>
+			<item>SetGeneratorsOfSemigroup</item>
+			<item>SetGeneratorsOfSemiring</item>
+			<item>SetGeneratorsOfSemiringWithOne</item>
+			<item>SetGeneratorsOfSemiringWithOneAndZero</item>
+			<item>SetGeneratorsOfSemiringWithZero</item>
+			<item>SetGeneratorsOfTwoSidedIdeal</item>
+			<item>SetGeneratorsOfVectorSpace</item>
+			<item>SetGeneratorsSmallest</item>
+			<item>SetGeneratorsSubgroupsTom</item>
+			<item>SetGlobalPartitionOfClasses</item>
+			<item>SetGrading</item>
+			<item>SetGreensDRelation</item>
+			<item>SetGreensHRelation</item>
+			<item>SetGreensJRelation</item>
+			<item>SetGreensLRelation</item>
+			<item>SetGreensRRelation</item>
+			<item>SetGroupByPcgs</item>
+			<item>SetGroupHClassOfGreensDClass</item>
+			<item>SetGroupOfPcgs</item>
+			<item>SetHallSystem</item>
+			<item>SetHashEntry</item>
+			<item>SetHashEntryAtLastIndex</item>
+			<item>SetHelpViewer</item>
+			<item>SetHirschLength</item>
+			<item>SetHomCosetFamily</item>
+			<item>SetHomFromFreeOfBasicImageGroup</item>
+			<item>SetHomeEnumerator</item>
+			<item>SetHomePcgs</item>
+			<item>SetIBr</item>
+			<item>SetIdGroup</item>
+			<item>SetIdempotents</item>
+			<item>SetIdempotentsTom</item>
+			<item>SetIdempotentsTomInfo</item>
+			<item>SetIdentificationOfConjugacyClasses</item>
+			<item>SetIdentifier</item>
+			<item>SetIdentity</item>
+			<item>SetIdentityMapping</item>
+			<item>SetImage</item>
+			<item>SetImageElt</item>
+			<item>SetImageListOfTransformation</item>
+			<item>SetImageSetOfTransformation</item>
+			<item>SetImagesSmallestGenerators</item>
+			<item>SetImagesSource</item>
+			<item>SetImfRecord</item>
+			<item>SetIndependentGeneratorsOfAbelianGroup</item>
+			<item>SetIndependentGeneratorsOfAbelianMatrixGroup</item>
+			<item>SetIndeterminateName</item>
+			<item>SetIndeterminateNumberOfLaurentPolynomial</item>
+			<item>SetIndeterminateNumberOfUnivariateLaurentPolynomial</item>
+			<item>SetIndeterminateNumberOfUnivariateRationalFunction</item>
+			<item>SetIndeterminateOfUnivariateRationalFunction</item>
+			<item>SetIndeterminatesOfPolynomialRing</item>
+			<item>SetIndexInParent</item>
+			<item>SetIndexInWholeGroup</item>
+			<item>SetIndicesCentralNormalSteps</item>
+			<item>SetIndicesChiefNormalSteps</item>
+			<item>SetIndicesEANormalSteps</item>
+			<item>SetIndicesInvolutaryGenerators</item>
+			<item>SetIndicesNormalSteps</item>
+			<item>SetIndicesOfAdjointBasis</item>
+			<item>SetIndicesPCentralNormalStepsPGroup</item>
+			<item>SetInducedPcgs</item>
+			<item>SetInducedPcgsWrtFamilyPcgs</item>
+			<item>SetInducedPcgsWrtHomePcgs</item>
+			<item>SetInducedPcgsWrtSpecialPcgs</item>
+			<item>SetInfoLevel</item>
+			<item>SetInfoText</item>
+			<item>SetInjectionZeroMagma</item>
+			<item>SetInnerAutomorphismsAutomorphismGroup</item>
+			<item>SetInt</item>
+			<item>SetInternalRepresentative</item>
+			<item>SetInvariantBilinearForm</item>
+			<item>SetInvariantForm</item>
+			<item>SetInvariantLattice</item>
+			<item>SetInvariantQuadraticForm</item>
+			<item>SetInvariantSesquilinearForm</item>
+			<item>SetInverse</item>
+			<item>SetInverseAttr</item>
+			<item>SetInverseClasses</item>
+			<item>SetInverseGeneralMapping</item>
+			<item>SetInverseImmutable</item>
+			<item>SetIrr</item>
+			<item>SetIrrBaumClausen</item>
+			<item>SetIrrConlon</item>
+			<item>SetIrrDixonSchneider</item>
+			<item>SetIrrFacsPol</item>
+			<item>SetIrreducibleRepresentations</item>
+			<item>SetIsAbelian</item>
+			<item>SetIsAbelianNumberField</item>
+			<item>SetIsAbelianTom</item>
+			<item>SetIsAdditiveGroupGeneralMapping</item>
+			<item>SetIsAdditiveGroupHomomorphism</item>
+			<item>SetIsAdditiveGroupToGroupGeneralMapping</item>
+			<item>SetIsAdditiveGroupToGroupHomomorphism</item>
+			<item>SetIsAdditivelyCommutative</item>
+			<item>SetIsAlgebraGeneralMapping</item>
+			<item>SetIsAlgebraHomomorphism</item>
+			<item>SetIsAlgebraModule</item>
+			<item>SetIsAlgebraWithOneGeneralMapping</item>
+			<item>SetIsAlgebraWithOneHomomorphism</item>
+			<item>SetIsAlternatingGroup</item>
+			<item>SetIsAnticommutative</item>
+			<item>SetIsAntisymmetricBinaryRelation</item>
+			<item>SetIsAssociative</item>
+			<item>SetIsAutomorphismGroup</item>
+			<item>SetIsBasicWreathProductOrdering</item>
+			<item>SetIsBergerCondition</item>
+			<item>SetIsBijective</item>
+			<item>SetIsBravaisGroup</item>
+			<item>SetIsBuiltFromAdditiveMagmaWithInverses</item>
+			<item>SetIsBuiltFromGroup</item>
+			<item>SetIsBuiltFromMagma</item>
+			<item>SetIsBuiltFromMagmaWithInverses</item>
+			<item>SetIsBuiltFromMagmaWithOne</item>
+			<item>SetIsBuiltFromMonoid</item>
+			<item>SetIsBuiltFromSemigroup</item>
+			<item>SetIsCanonicalBasis</item>
+			<item>SetIsCanonicalBasisFullMatrixModule</item>
+			<item>SetIsCanonicalBasisFullRowModule</item>
+			<item>SetIsCanonicalBasisFullSCAlgebra</item>
+			<item>SetIsCanonicalNiceMonomorphism</item>
+			<item>SetIsCanonicalPcgs</item>
+			<item>SetIsCanonicalPcgsWrtSpecialPcgs</item>
+			<item>SetIsChainTypeGroup</item>
+			<item>SetIsCharacter</item>
+			<item>SetIsCharacteristicMatrixPGroup</item>
+			<item>SetIsCommutative</item>
+			<item>SetIsCommutativeFamily</item>
+			<item>SetIsConfluent</item>
+			<item>SetIsConjugatorAutomorphism</item>
+			<item>SetIsConjugatorIsomorphism</item>
+			<item>SetIsConstantRationalFunction</item>
+			<item>SetIsConstantTimeAccessGeneralMapping</item>
+			<item>SetIsCycInt</item>
+			<item>SetIsCyclic</item>
+			<item>SetIsCyclicTom</item>
+			<item>SetIsCyclicWithSize</item>
+			<item>SetIsCyclotomicField</item>
+			<item>SetIsDihedralGroup</item>
+			<item>SetIsDistributive</item>
+			<item>SetIsDivisionRing</item>
+			<item>SetIsDuplicateFree</item>
+			<item>SetIsDuplicateFreeList</item>
+			<item>SetIsElementaryAbelian</item>
+			<item>SetIsEmpty</item>
+			<item>SetIsEndoGeneralMapping</item>
+			<item>SetIsEndoMapping</item>
+			<item>SetIsEquivalenceRelation</item>
+			<item>SetIsFFEMatrixGroupOverLargeSpace</item>
+			<item>SetIsFamilyPcgs</item>
+			<item>SetIsField</item>
+			<item>SetIsFieldHomomorphism</item>
+			<item>SetIsFinite</item>
+			<item>SetIsFiniteDimensional</item>
+			<item>SetIsFiniteOrdersPcgs</item>
+			<item>SetIsFiniteSemigroupGreensRelation</item>
+			<item>SetIsFinitelyGeneratedGroup</item>
+			<item>SetIsFrattiniFree</item>
+			<item>SetIsFreeMonoid</item>
+			<item>SetIsFreeSemigroup</item>
+			<item>SetIsFullFpAlgebra</item>
+			<item>SetIsFullHomModule</item>
+			<item>SetIsFullMatrixModule</item>
+			<item>SetIsFullRowModule</item>
+			<item>SetIsFullSCAlgebra</item>
+			<item>SetIsFullSubgroupGLorSLRespectingBilinearForm</item>
+			<item>SetIsFullSubgroupGLorSLRespectingQuadraticForm</item>
+			<item>SetIsFullSubgroupGLorSLRespectingSesquilinearForm</item>
+			<item>SetIsFullTransformationSemigroup</item>
+			<item>SetIsGL</item>
+			<item>SetIsGeneralLinearGroup</item>
+			<item>SetIsGeneralizedCartanMatrix</item>
+			<item>SetIsGeneratorsOfMagmaWithInverses</item>
+			<item>SetIsGreensClass</item>
+			<item>SetIsGreensDClass</item>
+			<item>SetIsGreensDRelation</item>
+			<item>SetIsGreensHClass</item>
+			<item>SetIsGreensHRelation</item>
+			<item>SetIsGreensJClass</item>
+			<item>SetIsGreensJRelation</item>
+			<item>SetIsGreensLClass</item>
+			<item>SetIsGreensLRelation</item>
+			<item>SetIsGreensRClass</item>
+			<item>SetIsGreensRRelation</item>
+			<item>SetIsGreensRelation</item>
+			<item>SetIsGroupGeneralMapping</item>
+			<item>SetIsGroupHClass</item>
+			<item>SetIsGroupHomomorphism</item>
+			<item>SetIsGroupOfAutomorphisms</item>
+			<item>SetIsGroupOfAutomorphismsFiniteGroup</item>
+			<item>SetIsGroupRing</item>
+			<item>SetIsGroupToAdditiveGroupGeneralMapping</item>
+			<item>SetIsGroupToAdditiveGroupHomomorphism</item>
+			<item>SetIsHandledByNiceMonomorphism</item>
+			<item>SetIsHasseDiagram</item>
+			<item>SetIsHomCosetOfAdditiveElt</item>
+			<item>SetIsHomCosetOfFp</item>
+			<item>SetIsHomCosetOfMatrix</item>
+			<item>SetIsHomCosetOfPerm</item>
+			<item>SetIsHomCosetOfTuple</item>
+			<item>SetIsIdealInParent</item>
+			<item>SetIsIdempotent</item>
+			<item>SetIsImpossible</item>
+			<item>SetIsInducedFromNormalSubgroup</item>
+			<item>SetIsInducedPcgsWrtSpecialPcgs</item>
+			<item>SetIsInjective</item>
+			<item>SetIsInnerAutomorphism</item>
+			<item>SetIsIntegerMatrixGroup</item>
+			<item>SetIsIntegralBasis</item>
+			<item>SetIsIntegralCyclotomic</item>
+			<item>SetIsIntegralRing</item>
+			<item>SetIsIrreducibleCharacter</item>
+			<item>SetIsJacobianRing</item>
+			<item>SetIsLDistributive</item>
+			<item>SetIsLatticeOrderBinaryRelation</item>
+			<item>SetIsLaurentPolynomial</item>
+			<item>SetIsLeftActedOnByDivisionRing</item>
+			<item>SetIsLeftAlgebraModule</item>
+			<item>SetIsLeftIdealInParent</item>
+			<item>SetIsLeftModuleGeneralMapping</item>
+			<item>SetIsLeftModuleHomomorphism</item>
+			<item>SetIsLeftSemigroupCongruence</item>
+			<item>SetIsLeftSemigroupIdeal</item>
+			<item>SetIsLieAbelian</item>
+			<item>SetIsLieAlgebra</item>
+			<item>SetIsLieNilpotent</item>
+			<item>SetIsLieSolvable</item>
+			<item>SetIsLinearlyPrimitive</item>
+			<item>SetIsMagmaHomomorphism</item>
+			<item>SetIsMapping</item>
+			<item>SetIsMatrixModule</item>
+			<item>SetIsMinimalNonmonomial</item>
+			<item>SetIsMonoid</item>
+			<item>SetIsMonomialCharacter</item>
+			<item>SetIsMonomialCharacterTable</item>
+			<item>SetIsMonomialGroup</item>
+			<item>SetIsMonomialMatrix</item>
+			<item>SetIsMonomialNumber</item>
+			<item>SetIsNaturalAlternatingGroup</item>
+			<item>SetIsNaturalGL</item>
+			<item>SetIsNaturalSL</item>
+			<item>SetIsNaturalSymmetricGroup</item>
+			<item>SetIsNearRing</item>
+			<item>SetIsNearRingWithOne</item>
+			<item>SetIsNilpQuotientSystem</item>
+			<item>SetIsNilpotentCharacterTable</item>
+			<item>SetIsNilpotentGroup</item>
+			<item>SetIsNilpotentTom</item>
+			<item>SetIsNonTrivial</item>
+			<item>SetIsNoncharacteristicMatrixPGroup</item>
+			<item>SetIsNormalBasis</item>
+			<item>SetIsNormalForm</item>
+			<item>SetIsNormalInParent</item>
+			<item>SetIsNumberField</item>
+			<item>SetIsNumeratorParentPcgsFamilyPcgs</item>
+			<item>SetIsOne</item>
+			<item>SetIsOrderingOnFamilyOfAssocWords</item>
+			<item>SetIsPGroup</item>
+			<item>SetIsPQuotientSystem</item>
+			<item>SetIsPSL</item>
+			<item>SetIsParentPcgsFamilyPcgs</item>
+			<item>SetIsPartialOrderBinaryRelation</item>
+			<item>SetIsPcgsCentralSeries</item>
+			<item>SetIsPcgsChiefSeries</item>
+			<item>SetIsPcgsElementaryAbelianSeries</item>
+			<item>SetIsPcgsPCentralSeriesPGroup</item>
+			<item>SetIsPerfectCharacterTable</item>
+			<item>SetIsPerfectGroup</item>
+			<item>SetIsPerfectTom</item>
+			<item>SetIsPolycyclicGroup</item>
+			<item>SetIsPolynomial</item>
+			<item>SetIsPositionsList</item>
+			<item>SetIsPreOrderBinaryRelation</item>
+			<item>SetIsPrimeField</item>
+			<item>SetIsPrimeOrdersPcgs</item>
+			<item>SetIsPrimitive</item>
+			<item>SetIsPrimitiveAffine</item>
+			<item>SetIsPrimitiveCharacter</item>
+			<item>SetIsPrimitiveMatrixGroup</item>
+			<item>SetIsPseudoCanonicalBasisFullHomModule</item>
+			<item>SetIsQuasiDihedralGroup</item>
+			<item>SetIsQuasiPrimitive</item>
+			<item>SetIsQuaternionGroup</item>
+			<item>SetIsRDistributive</item>
+			<item>SetIsRationalMatrixGroup</item>
+			<item>SetIsRectangularTable</item>
+			<item>SetIsReduced</item>
+			<item>SetIsReesCongruence</item>
+			<item>SetIsReesCongruenceSemigroup</item>
+			<item>SetIsReesMatrixSemigroup</item>
+			<item>SetIsReesZeroMatrixSemigroup</item>
+			<item>SetIsReflexiveBinaryRelation</item>
+			<item>SetIsRegular</item>
+			<item>SetIsRegularDClass</item>
+			<item>SetIsRegularSemigroup</item>
+			<item>SetIsRelativelySM</item>
+			<item>SetIsRestrictedLieAlgebra</item>
+			<item>SetIsRightAlgebraModule</item>
+			<item>SetIsRightIdealInParent</item>
+			<item>SetIsRightSemigroupCongruence</item>
+			<item>SetIsRightSemigroupIdeal</item>
+			<item>SetIsRing</item>
+			<item>SetIsRingGeneralMapping</item>
+			<item>SetIsRingHomomorphism</item>
+			<item>SetIsRingWithOne</item>
+			<item>SetIsRingWithOneGeneralMapping</item>
+			<item>SetIsRingWithOneHomomorphism</item>
+			<item>SetIsRowModule</item>
+			<item>SetIsSL</item>
+			<item>SetIsSSortedList</item>
+			<item>SetIsSemiEchelonized</item>
+			<item>SetIsSemiRegular</item>
+			<item>SetIsSemigroup</item>
+			<item>SetIsSemigroupCongruence</item>
+			<item>SetIsSemigroupIdeal</item>
+			<item>SetIsSemiring</item>
+			<item>SetIsSemiringWithOne</item>
+			<item>SetIsSemiringWithOneAndZero</item>
+			<item>SetIsSemiringWithZero</item>
+			<item>SetIsShortLexOrdering</item>
+			<item>SetIsSimpleAlgebra</item>
+			<item>SetIsSimpleCharacterTable</item>
+			<item>SetIsSimpleGroup</item>
+			<item>SetIsSimpleSemigroup</item>
+			<item>SetIsSingleValued</item>
+			<item>SetIsSkewFieldFamily</item>
+			<item>SetIsSmallList</item>
+			<item>SetIsSolvableCharacterTable</item>
+			<item>SetIsSolvableGroup</item>
+			<item>SetIsSolvableTom</item>
+			<item>SetIsSortedList</item>
+			<item>SetIsSpecialLinearGroup</item>
+			<item>SetIsSpecialPcgs</item>
+			<item>SetIsSporadicSimpleCharacterTable</item>
+			<item>SetIsSporadicSimpleGroup</item>
+			<item>SetIsStabChainViaChainSubgroup</item>
+			<item>SetIsSubgroupSL</item>
+			<item>SetIsSubmonoidFpMonoid</item>
+			<item>SetIsSubnormallyMonomial</item>
+			<item>SetIsSubsemigroupFpSemigroup</item>
+			<item>SetIsSubsemigroupReesMatrixSemigroup</item>
+			<item>SetIsSubsemigroupReesZeroMatrixSemigroup</item>
+			<item>SetIsSubsetLocallyFiniteGroup</item>
+			<item>SetIsSupersolvableCharacterTable</item>
+			<item>SetIsSupersolvableGroup</item>
+			<item>SetIsSurjective</item>
+			<item>SetIsSymmetricBinaryRelation</item>
+			<item>SetIsSymmetricGroup</item>
+			<item>SetIsTotal</item>
+			<item>SetIsTotalOrdering</item>
+			<item>SetIsTransformationMonoid</item>
+			<item>SetIsTransformationSemigroup</item>
+			<item>SetIsTransitive</item>
+			<item>SetIsTransitiveBinaryRelation</item>
+			<item>SetIsTranslationInvariantOrdering</item>
+			<item>SetIsTrivial</item>
+			<item>SetIsTwoSidedIdealInParent</item>
+			<item>SetIsUFDFamily</item>
+			<item>SetIsUniformMatrixGroup</item>
+			<item>SetIsUnivariatePolynomial</item>
+			<item>SetIsUnivariateRationalFunction</item>
+			<item>SetIsVectorSpaceHomomorphism</item>
+			<item>SetIsVirtualCharacter</item>
+			<item>SetIsWeightLexOrdering</item>
+			<item>SetIsWellFoundedOrdering</item>
+			<item>SetIsWeylGroup</item>
+			<item>SetIsWholeFamily</item>
+			<item>SetIsWreathProductOrdering</item>
+			<item>SetIsZero</item>
+			<item>SetIsZeroGroup</item>
+			<item>SetIsZeroMultiplicationRing</item>
+			<item>SetIsZeroRationalFunction</item>
+			<item>SetIsZeroSimpleSemigroup</item>
+			<item>SetIsZeroSquaredRing</item>
+			<item>SetIsomorphismFpAlgebra</item>
+			<item>SetIsomorphismFpFLMLOR</item>
+			<item>SetIsomorphismFpGroup</item>
+			<item>SetIsomorphismFpMonoid</item>
+			<item>SetIsomorphismFpSemigroup</item>
+			<item>SetIsomorphismMatrixAlgebra</item>
+			<item>SetIsomorphismMatrixFLMLOR</item>
+			<item>SetIsomorphismPcGroup</item>
+			<item>SetIsomorphismPermGroup</item>
+			<item>SetIsomorphismReesMatrixSemigroup</item>
+			<item>SetIsomorphismRefinedPcGroup</item>
+			<item>SetIsomorphismSCAlgebra</item>
+			<item>SetIsomorphismSCFLMLOR</item>
+			<item>SetIsomorphismSimplifiedFpGroup</item>
+			<item>SetIsomorphismSpecialPcGroup</item>
+			<item>SetIsomorphismTransformationSemigroup</item>
+			<item>SetJenningsLieAlgebra</item>
+			<item>SetJenningsSeries</item>
+			<item>SetJordanDecomposition</item>
+			<item>SetKernelOfAdditiveGeneralMapping</item>
+			<item>SetKernelOfCharacter</item>
+			<item>SetKernelOfMultiplicativeGeneralMapping</item>
+			<item>SetKernelOfTransformation</item>
+			<item>SetKillingMatrix</item>
+			<item>SetKnowsHowToDecompose</item>
+			<item>SetLClassOfHClass</item>
+			<item>SetLGFirst</item>
+			<item>SetLGHeads</item>
+			<item>SetLGLayers</item>
+			<item>SetLGLength</item>
+			<item>SetLGTails</item>
+			<item>SetLGWeights</item>
+			<item>SetLargestElementGroup</item>
+			<item>SetLargestMovedPoint</item>
+			<item>SetLargestMovedPointPerm</item>
+			<item>SetLatticeGeneratorsInUEA</item>
+			<item>SetLatticeSubgroups</item>
+			<item>SetLeadCoeffsIGS</item>
+			<item>SetLeftActingAlgebra</item>
+			<item>SetLeftActingDomain</item>
+			<item>SetLeftActingGroup</item>
+			<item>SetLeftActingRingOfIdeal</item>
+			<item>SetLeftDerivations</item>
+			<item>SetLength</item>
+			<item>SetLengthsTom</item>
+			<item>SetLessThanFunction</item>
+			<item>SetLessThanOrEqualFunction</item>
+			<item>SetLetterRepWordsLessFunc</item>
+			<item>SetLevelsOfGenerators</item>
+			<item>SetLeviMalcevDecomposition</item>
+			<item>SetLieAlgebraByDomain</item>
+			<item>SetLieCenter</item>
+			<item>SetLieCentralizerInParent</item>
+			<item>SetLieCentre</item>
+			<item>SetLieDerivedSeries</item>
+			<item>SetLieDerivedSubalgebra</item>
+			<item>SetLieFamily</item>
+			<item>SetLieLowerCentralSeries</item>
+			<item>SetLieNilRadical</item>
+			<item>SetLieNormalizerInParent</item>
+			<item>SetLieObject</item>
+			<item>SetLieSolvableRadical</item>
+			<item>SetLieUpperCentralSeries</item>
+			<item>SetLinearActionBasis</item>
+			<item>SetLinearCharacters</item>
+			<item>SetLinesOfStraightLineProgram</item>
+			<item>SetLongestWeylWordPerm</item>
+			<item>SetLowerCentralSeriesOfGroup</item>
+			<item>SetMagmaGeneratorsOfFamily</item>
+			<item>SetMappingGeneratorsImages</item>
+			<item>SetMappingOfWhichItIsAsGGMBI</item>
+			<item>SetMarksTom</item>
+			<item>SetMatTom</item>
+			<item>SetMatrixByBlockMatrix</item>
+			<item>SetMatrixDimension</item>
+			<item>SetMaximalAbelianQuotient</item>
+			<item>SetMaximalBlocksAttr</item>
+			<item>SetMaximalNormalSubgroups</item>
+			<item>SetMaximalSubgroupClassReps</item>
+			<item>SetMaximalSubgroups</item>
+			<item>SetMaximalSubgroupsLattice</item>
+			<item>SetMaximalSubgroupsTom</item>
+			<item>SetMinimalBlockDimension</item>
+			<item>SetMinimalGeneratingSet</item>
+			<item>SetMinimalNormalSubgroups</item>
+			<item>SetMinimalStabChain</item>
+			<item>SetMinimalSupergroupsLattice</item>
+			<item>SetMinimizedBombieriNorm</item>
+			<item>SetModuleOfExtension</item>
+			<item>SetModulusOfZmodnZObj</item>
+			<item>SetMoebiusTom</item>
+			<item>SetMolienSeriesInfo</item>
+			<item>SetMonoidOfRewritingSystem</item>
+			<item>SetMonomialComparisonFunction</item>
+			<item>SetMonomialExtrepComparisonFun</item>
+			<item>SetMovedPoints</item>
+			<item>SetMultipleAttributes</item>
+			<item>SetMultiplicationTable</item>
+			<item>SetMultiplicativeNeutralElement</item>
+			<item>SetMultiplicativeZero</item>
+			<item>SetName</item>
+			<item>SetNameIsomorphismClass</item>
+			<item>SetNamesLibTom</item>
+			<item>SetNamesOfFusionSources</item>
+			<item>SetNaturalCharacter</item>
+			<item>SetNaturalHomomorphismByNormalSubgroupNCInParent</item>
+			<item>SetNaturalHomomorphismsPool</item>
+			<item>SetNegativeRootVectors</item>
+			<item>SetNegativeRoots</item>
+			<item>SetNestingDepthA</item>
+			<item>SetNestingDepthM</item>
+			<item>SetNiceAlgebraMonomorphism</item>
+			<item>SetNiceBasis</item>
+			<item>SetNiceFreeLeftModule</item>
+			<item>SetNiceFreeLeftModuleInfo</item>
+			<item>SetNiceMonomorphism</item>
+			<item>SetNiceNormalFormByExtRepFunction</item>
+			<item>SetNiceObject</item>
+			<item>SetNilpotencyClassOfGroup</item>
+			<item>SetNilpotentClassTwoElement</item>
+			<item>SetNonLieNilpotentElement</item>
+			<item>SetNonNilpotentElement</item>
+			<item>SetNorm</item>
+			<item>SetNormalBase</item>
+			<item>SetNormalClosureInParent</item>
+			<item>SetNormalMaximalSubgroups</item>
+			<item>SetNormalSeriesByPcgs</item>
+			<item>SetNormalSubgroupClassesInfo</item>
+			<item>SetNormalSubgroups</item>
+			<item>SetNormalizerInGLnZ</item>
+			<item>SetNormalizerInGLnZBravaisGroup</item>
+			<item>SetNormalizerInHomePcgs</item>
+			<item>SetNormalizerInParent</item>
+			<item>SetNormalizersTom</item>
+			<item>SetNormedRowVector</item>
+			<item>SetNormedRowVectors</item>
+			<item>SetNormedVectors</item>
+			<item>SetNotifiedFusionsOfLibTom</item>
+			<item>SetNotifiedFusionsToLibTom</item>
+			<item>SetNrConjugacyClasses</item>
+			<item>SetNrInputsOfStraightLineProgram</item>
+			<item>SetNrMovedPoints</item>
+			<item>SetNrMovedPointsPerm</item>
+			<item>SetNrSubsTom</item>
+			<item>SetNrSyllables</item>
+			<item>SetNullAlgebra</item>
+			<item>SetNullspaceIntMat</item>
+			<item>SetNullspaceMat</item>
+			<item>SetNumberGeneratorsOfRws</item>
+			<item>SetNumberSyllables</item>
+			<item>SetNumeratorOfModuloPcgs</item>
+			<item>SetNumeratorOfRationalFunction</item>
+			<item>SetONanScottType</item>
+			<item>SetOccuringVariableIndices</item>
+			<item>SetOmegaAndLowerPCentralSeries</item>
+			<item>SetOmegaSeries</item>
+			<item>SetOne</item>
+			<item>SetOneAttr</item>
+			<item>SetOneImmutable</item>
+			<item>SetOneOfPcgs</item>
+			<item>SetOperatorOfExternalSet</item>
+			<item>SetOrbitGeneratorsOfGroup</item>
+			<item>SetOrbitLengths</item>
+			<item>SetOrbitLengthsDomain</item>
+			<item>SetOrbitStabilizingParentGroup</item>
+			<item>SetOrbits</item>
+			<item>SetOrbitsDomain</item>
+			<item>SetOrder</item>
+			<item>SetOrderingOfRewritingSystem</item>
+			<item>SetOrderingOnGenerators</item>
+			<item>SetOrderingsFamily</item>
+			<item>SetOrdersClassRepresentatives</item>
+			<item>SetOrdersTom</item>
+			<item>SetOrdinaryCharacterTable</item>
+			<item>SetOrthogonalSpaceInFullRowSpace</item>
+			<item>SetPCentralLieAlgebra</item>
+			<item>SetPCentralNormalSeriesByPcgsPGroup</item>
+			<item>SetPClassPGroup</item>
+			<item>SetPSLDegree</item>
+			<item>SetPSLUnderlyingField</item>
+			<item>SetPackageInfo</item>
+			<item>SetParent</item>
+			<item>SetParentAttr</item>
+			<item>SetParentPcgs</item>
+			<item>SetPartialClosureOfCongruence</item>
+			<item>SetPartialOrderOfHasseDiagram</item>
+			<item>SetPcGroupWithPcgs</item>
+			<item>SetPcSeries</item>
+			<item>SetPcgs</item>
+			<item>SetPcgsCentralSeries</item>
+			<item>SetPcgsChiefSeries</item>
+			<item>SetPcgsElementaryAbelianSeries</item>
+			<item>SetPcgsPCentralSeriesPGroup</item>
+			<item>SetPerfectIdentification</item>
+			<item>SetPerfectResiduum</item>
+			<item>SetPermutationTom</item>
+			<item>SetPositiveRootVectors</item>
+			<item>SetPositiveRoots</item>
+			<item>SetPositiveRootsAsWeights</item>
+			<item>SetPower</item>
+			<item>SetPowerANC</item>
+			<item>SetPowerNC</item>
+			<item>SetPowerS</item>
+			<item>SetPowerSubalgebraSeries</item>
+			<item>SetPreBasis</item>
+			<item>SetPreImagesRange</item>
+			<item>SetPreferredGenerators</item>
+			<item>SetPrefrattiniSubgroup</item>
+			<item>SetPresentation</item>
+			<item>SetPrimaryGeneratorWords</item>
+			<item>SetPrimeField</item>
+			<item>SetPrimePGroup</item>
+			<item>SetPrimePowerComponents</item>
+			<item>SetPrimitiveElement</item>
+			<item>SetPrimitiveIdentification</item>
+			<item>SetPrimitiveRoot</item>
+			<item>SetPrintFormattingStatus</item>
+			<item>SetProjectiveOrder</item>
+			<item>SetPseudoRandomSeed</item>
+			<item>SetPthPowerImages</item>
+			<item>SetQuasiDihedralGenerators</item>
+			<item>SetQuaternionGenerators</item>
+			<item>SetQuotientGroup</item>
+			<item>SetQuotientGroupHom</item>
+			<item>SetQuotientSemigroupCongruence</item>
+			<item>SetQuotientSemigroupHomomorphism</item>
+			<item>SetQuotientSemigroupPreimage</item>
+			<item>SetRClassOfHClass</item>
+			<item>SetRadicalGroup</item>
+			<item>SetRadicalOfAlgebra</item>
+			<item>SetRange</item>
+			<item>SetRankAction</item>
+			<item>SetRankMat</item>
+			<item>SetRankOfTransformation</item>
+			<item>SetRankPGroup</item>
+			<item>SetRat</item>
+			<item>SetRationalClasses</item>
+			<item>SetRationalFunctionsFamily</item>
+			<item>SetRationalizedMat</item>
+			<item>SetRealClasses</item>
+			<item>SetRecNames</item>
+			<item>SetRecursionTrapInterval</item>
+			<item>SetReducedConfluentRewritingSystem</item>
+			<item>SetReducedMultiplication</item>
+			<item>SetReesCongruenceOfSemigroupIdeal</item>
+			<item>SetReesZeroMatrixSemigroupElementIsZero</item>
+			<item>SetRefinedPcGroup</item>
+			<item>SetRegularActionHomomorphism</item>
+			<item>SetRelationsOfFpMonoid</item>
+			<item>SetRelationsOfFpSemigroup</item>
+			<item>SetRelativeOrder</item>
+			<item>SetRelativeOrderNC</item>
+			<item>SetRelativeOrders</item>
+			<item>SetRelatorsOfFpAlgebra</item>
+			<item>SetRelatorsOfFpGroup</item>
+			<item>SetRepresentative</item>
+			<item>SetRepresentativeSmallest</item>
+			<item>SetRepresentativesContainedRightCosets</item>
+			<item>SetRepresentativesMinimalBlocksAttr</item>
+			<item>SetRepresentativesPerfectSubgroups</item>
+			<item>SetRepresentativesSimpleSubgroups</item>
+			<item>SetRespectsAddition</item>
+			<item>SetRespectsAdditiveInverses</item>
+			<item>SetRespectsInverses</item>
+			<item>SetRespectsMultiplication</item>
+			<item>SetRespectsOne</item>
+			<item>SetRespectsScalarMultiplication</item>
+			<item>SetRespectsZero</item>
+			<item>SetRightActingAlgebra</item>
+			<item>SetRightActingDomain</item>
+			<item>SetRightActingGroup</item>
+			<item>SetRightActingRingOfIdeal</item>
+			<item>SetRightDerivations</item>
+			<item>SetRightTransversalInParent</item>
+			<item>SetRootOfDefiningPolynomial</item>
+			<item>SetRootSystem</item>
+			<item>SetRowIndexOfReesMatrixSemigroupElement</item>
+			<item>SetRowIndexOfReesZeroMatrixSemigroupElement</item>
+			<item>SetRowsOfReesMatrixSemigroup</item>
+			<item>SetRowsOfReesZeroMatrixSemigroup</item>
+			<item>SetRules</item>
+			<item>SetSLDegree</item>
+			<item>SetSLUnderlyingField</item>
+			<item>SetSandwichMatrixOfReesMatrixSemigroup</item>
+			<item>SetSandwichMatrixOfReesZeroMatrixSemigroup</item>
+			<item>SetSemiEchelonBasis</item>
+			<item>SetSemiEchelonMat</item>
+			<item>SetSemiEchelonMatTransformation</item>
+			<item>SetSemiSimpleType</item>
+			<item>SetSemidirectFactorsOfGroup</item>
+			<item>SetSemidirectProductInfo</item>
+			<item>SetSemigroupOfRewritingSystem</item>
+			<item>SetSiftFunction</item>
+			<item>SetSiftGroup</item>
+			<item>SetSignPerm</item>
+			<item>SetSimpleSystem</item>
+			<item>SetSimsNo</item>
+			<item>SetSize</item>
+			<item>SetSizesCentralizers</item>
+			<item>SetSizesConjugacyClasses</item>
+			<item>SetSmallGeneratingSet</item>
+			<item>SetSmallestGeneratorPerm</item>
+			<item>SetSmallestMovedPoint</item>
+			<item>SetSmallestMovedPointPerm</item>
+			<item>SetSocle</item>
+			<item>SetSocleComplement</item>
+			<item>SetSocleDimensions</item>
+			<item>SetSocleTypePrimitiveGroup</item>
+			<item>SetSortingPerm</item>
+			<item>SetSource</item>
+			<item>SetSparseCartanMatrix</item>
+			<item>SetSpecialPcgs</item>
+			<item>SetSplittingField</item>
+			<item>SetStabChainImmutable</item>
+			<item>SetStabChainMutable</item>
+			<item>SetStabChainOptions</item>
+			<item>SetStabilizerOfExternalSet</item>
+			<item>SetStandardGeneratorsInfo</item>
+			<item>SetStoredExcludedOrders</item>
+			<item>SetStoredGroebnerBasis</item>
+			<item>SetStraightLineProgElmType</item>
+			<item>SetStraightLineProgramsTom</item>
+			<item>SetString</item>
+			<item>SetStructureConstantsTable</item>
+			<item>SetStructureDescription</item>
+			<item>SetSubdirectProductInfo</item>
+			<item>SetSubfields</item>
+			<item>SetSubnormalSeriesInParent</item>
+			<item>SetSubsTom</item>
+			<item>SetSubspaces</item>
+			<item>SetSubspacesAll</item>
+			<item>SetSuccessors</item>
+			<item>SetSupersolvableResiduum</item>
+			<item>SetSurjectiveActionHomomorphismAttr</item>
+			<item>SetSylowSystem</item>
+			<item>SetSymmetricDegree</item>
+			<item>SetSymmetricParentGroup</item>
+			<item>SetTableOfMarks</item>
+			<item>SetTestMonomial</item>
+			<item>SetTestMonomialQuick</item>
+			<item>SetTestQuasiPrimitive</item>
+			<item>SetTestRelativelySM</item>
+			<item>SetTestSubnormallyMonomial</item>
+			<item>SetTietzeOrigin</item>
+			<item>SetTrace</item>
+			<item>SetTranformsOneIntoZero</item>
+			<item>SetTransformationRepresentation</item>
+			<item>SetTransformsAdditionIntoMultiplication</item>
+			<item>SetTransformsAdditiveInversesIntoInverses</item>
+			<item>SetTransformsInversesIntoAdditiveInverses</item>
+			<item>SetTransformsMultiplicationIntoAddition</item>
+			<item>SetTransformsZeroIntoOne</item>
+			<item>SetTransitiveIdentification</item>
+			<item>SetTransitivity</item>
+			<item>SetTransposedMat</item>
+			<item>SetTransposedMatAttr</item>
+			<item>SetTransposedMatImmutable</item>
+			<item>SetTransposedMatrixGroup</item>
+			<item>SetTransversal</item>
+			<item>SetTriangulizedNullspaceMat</item>
+			<item>SetTrivialCharacter</item>
+			<item>SetTrivialSubFLMLOR</item>
+			<item>SetTrivialSubadditiveMagmaWithZero</item>
+			<item>SetTrivialSubalgebra</item>
+			<item>SetTrivialSubgroup</item>
+			<item>SetTrivialSubmagmaWithOne</item>
+			<item>SetTrivialSubmodule</item>
+			<item>SetTrivialSubmonoid</item>
+			<item>SetTrivialSubnearAdditiveMagmaWithZero</item>
+			<item>SetTrivialSubspace</item>
+			<item>SetTwoClosure</item>
+			<item>SetTypeObj</item>
+			<item>SetTzOptions</item>
+			<item>SetTzRules</item>
+			<item>SetUnderlyingCharacterTable</item>
+			<item>SetUnderlyingCharacteristic</item>
+			<item>SetUnderlyingCollection</item>
+			<item>SetUnderlyingElementOfReesMatrixSemigroupElement</item>
+			<item>SetUnderlyingElementOfReesZeroMatrixSemigroupElement</item>
+			<item>SetUnderlyingExternalSet</item>
+			<item>SetUnderlyingFamily</item>
+			<item>SetUnderlyingField</item>
+			<item>SetUnderlyingGeneralMapping</item>
+			<item>SetUnderlyingGroup</item>
+			<item>SetUnderlyingLeftModule</item>
+			<item>SetUnderlyingLieAlgebra</item>
+			<item>SetUnderlyingMagma</item>
+			<item>SetUnderlyingRelation</item>
+			<item>SetUnderlyingSemigroupOfReesMatrixSemigroup</item>
+			<item>SetUnderlyingSemigroupOfReesZeroMatrixSemigroup</item>
+			<item>SetUnderlyingVectorSpace</item>
+			<item>SetUnits</item>
+			<item>SetUniversalEnvelopingAlgebra</item>
+			<item>SetUpperActingDomain</item>
+			<item>SetUpperCentralSeriesOfGroup</item>
+			<item>SetValueOption</item>
+			<item>SetValuesOfClassFunction</item>
+			<item>SetWeightOfGenerators</item>
+			<item>SetWeightsTom</item>
+			<item>SetWeylGroup</item>
+			<item>SetWreathProductInfo</item>
+			<item>SetX</item>
+			<item>SetXHelp</item>
+			<item>SetZClassRepsQClass</item>
+			<item>SetZero</item>
+			<item>SetZeroAttr</item>
+			<item>SetZeroCoefficient</item>
+			<item>SetZeroImmutable</item>
+			<item>SetZuppos</item>
+			<item>SetnpeGL</item>
+			<item>SetnpePSL</item>
+			<item>SetnpeSL</item>
+			<item>SetsOrbits</item>
+			<item>Setter</item>
+			<item>ShallowCopy</item>
+			<item>ShapeFrequencies</item>
+			<item>SharedObj</item>
+			<item>SharedType</item>
+			<item>ShiftedCoeffs</item>
+			<item>ShiftedPadicNumber</item>
+			<item>ShortLexOrdering</item>
+			<item>ShortLexOrderingNC</item>
+			<item>ShortestVectors</item>
+			<item>ShowArgument</item>
+			<item>ShowArguments</item>
+			<item>ShowDetails</item>
+			<item>ShowImpliedFilters</item>
+			<item>ShowMethods</item>
+			<item>ShowOtherMethods</item>
+			<item>ShowPackageVariables</item>
+			<item>ShrinkCoeffs</item>
+			<item>ShrinkRowVector</item>
+			<item>ShrinkableHashTable</item>
+			<item>ShrinkableSingleValuedHashTable</item>
+			<item>Sift</item>
+			<item>SiftAsWord</item>
+			<item>SiftForStrongGenerator</item>
+			<item>SiftFunction</item>
+			<item>SiftGroup</item>
+			<item>SiftOneLevel</item>
+			<item>SiftVector</item>
+			<item>SiftedPcElement</item>
+			<item>SiftedPermutation</item>
+			<item>SiftedVector</item>
+			<item>SiftedVectorForGaussianMatrixSpace</item>
+			<item>SiftedVectorForGaussianRowSpace</item>
+			<item>SiftedWord</item>
+			<item>Sigma</item>
+			<item>SignInt</item>
+			<item>SignPartition</item>
+			<item>SignPerm</item>
+			<item>SignPermGroup</item>
+			<item>SimpleLieAlgebra</item>
+			<item>SimpleLieAlgebraTypeH</item>
+			<item>SimpleLieAlgebraTypeK</item>
+			<item>SimpleLieAlgebraTypeS</item>
+			<item>SimpleLieAlgebraTypeW</item>
+			<item>SimpleSystem</item>
+			<item>SimplifiedFpGroup</item>
+			<item>SimplifyPresentation</item>
+			<item>SimsName</item>
+			<item>SimsNo</item>
+			<item>SimultaneousEigenvalues</item>
+			<item>SingleCollector</item>
+			<item>SingleCollectorByGenerators</item>
+			<item>SingleCollectorByRelators</item>
+			<item>SingleValuedHashTable</item>
+			<item>Size</item>
+			<item>SizeBlist</item>
+			<item>SizeConsiderFunction</item>
+			<item>SizeGL</item>
+			<item>SizeNumbersPerfectGroups</item>
+			<item>SizeOfChainOfGroup</item>
+			<item>SizeOfFieldOfDefinition</item>
+			<item>SizeOfGLdZmodmZ</item>
+			<item>SizePSL</item>
+			<item>SizePolynomialUnipotentClassGL</item>
+			<item>SizeSL</item>
+			<item>SizeScreen</item>
+			<item>SizeStabChain</item>
+			<item>SizeUpperBound</item>
+			<item>SizesCentralizers</item>
+			<item>SizesConjugacyClasses</item>
+			<item>SizesPerfectGroups</item>
+			<item>Sleep</item>
+			<item>SmallGeneratingSet</item>
+			<item>SmallGroup</item>
+			<item>SmallGroupsInformation</item>
+			<item>SmallSpaceCutoff</item>
+			<item>SmallerDegreePermutationRepresentation</item>
+			<item>SmallestGeneratorPerm</item>
+			<item>SmallestMovedPoint</item>
+			<item>SmallestMovedPointPerm</item>
+			<item>SmallestMovedPointPerms</item>
+			<item>SmallestPrimeDivisor</item>
+			<item>SmallestRootInt</item>
+			<item>SmithNormalFormIntegerMat</item>
+			<item>SmithNormalFormIntegerMatTransforms</item>
+			<item>SmithNormalFormSQ</item>
+			<item>Socle</item>
+			<item>SocleComplement</item>
+			<item>SocleDimensions</item>
+			<item>SocleTypePrimitiveGroup</item>
+			<item>SolutionIntMat</item>
+			<item>SolutionMat</item>
+			<item>SolutionMatDestructive</item>
+			<item>SolutionMatNoCo</item>
+			<item>SolutionNullspaceIntMat</item>
+			<item>SolutionSQ</item>
+			<item>SolvableNormalClosurePermGroup</item>
+			<item>SolvableQuotient</item>
+			<item>SomeVerbalSubgroups</item>
+			<item>Sort</item>
+			<item>SortParallel</item>
+			<item>SortRationalClasses</item>
+			<item>SortRelsSortedByStartGen</item>
+			<item>SortedCharacterTable</item>
+			<item>SortedCharacters</item>
+			<item>SortedList</item>
+			<item>SortedSparseActionHomomorphism</item>
+			<item>SortedSparseActionHomomorphismOp</item>
+			<item>SortedTom</item>
+			<item>Sortex</item>
+			<item>SortingPerm</item>
+			<item>Source</item>
+			<item>SourceElt</item>
+			<item>Sp</item>
+			<item>SpanOfMatrixGroup</item>
+			<item>SpanningTree</item>
+			<item>SparseActionHomomorphism</item>
+			<item>SparseActionHomomorphismOp</item>
+			<item>SparseCartanMatrix</item>
+			<item>SparseHashTable</item>
+			<item>SparseIntKey</item>
+			<item>SpecialLinearGroup</item>
+			<item>SpecialLinearGroupCons</item>
+			<item>SpecialOrthogonalGroup</item>
+			<item>SpecialOrthogonalGroupCons</item>
+			<item>SpecialPcgs</item>
+			<item>SpecialPcgsFactor</item>
+			<item>SpecialPcgsSubgroup</item>
+			<item>SpecialUnitaryGroup</item>
+			<item>SpecialUnitaryGroupCons</item>
+			<item>SpecializedExtRepPol</item>
+			<item>SpinInductionScheme</item>
+			<item>SpinorNorm</item>
+			<item>SplitCell</item>
+			<item>SplitCharacters</item>
+			<item>SplitExtension</item>
+			<item>SplitStep</item>
+			<item>SplitString</item>
+			<item>SplitStringInternal</item>
+			<item>SplitTwoSpace</item>
+			<item>SplitUpSublistsByFpFunc</item>
+			<item>SplitWordTail</item>
+			<item>SplittingField</item>
+			<item>Sqrt</item>
+			<item>SquareRoots</item>
+			<item>StabChain</item>
+			<item>StabChainBaseStrongGenerators</item>
+			<item>StabChainForcePoint</item>
+			<item>StabChainImmutable</item>
+			<item>StabChainMutable</item>
+			<item>StabChainOp</item>
+			<item>StabChainOptions</item>
+			<item>StabChainPermGroupToPermGroupGeneralMappingByImages</item>
+			<item>StabChainRandomPermGroup</item>
+			<item>StabChainStrong</item>
+			<item>StabChainSwap</item>
+			<item>Stabilizer</item>
+			<item>StabilizerByMatrixOperation</item>
+			<item>StabilizerFunc</item>
+			<item>StabilizerFuncOp</item>
+			<item>StabilizerOfBlockNC</item>
+			<item>StabilizerOfExternalSet</item>
+			<item>StabilizerOp</item>
+			<item>StabilizerPcgs</item>
+			<item>StandardAssociate</item>
+			<item>StandardClassMatrixColumn</item>
+			<item>StandardGeneratorsFunctions</item>
+			<item>StandardGeneratorsInfo</item>
+			<item>StandardGeneratorsOfFullHomModule</item>
+			<item>StandardGeneratorsOfFullMatrixModule</item>
+			<item>StandardGeneratorsOfGroup</item>
+			<item>StandardScalarProduct</item>
+			<item>StandardizeTable</item>
+			<item>StandardizeTableC</item>
+			<item>StarCyc</item>
+			<item>StateRandom</item>
+			<item>StatusRandom</item>
+			<item>StepModGauss</item>
+			<item>StopNumConsecSiftToOne</item>
+			<item>StopNumSift</item>
+			<item>StopSize</item>
+			<item>StoreAlgExtFam</item>
+			<item>StoreFactorsPol</item>
+			<item>StoreFusion</item>
+			<item>StoreInfoFreeMagma</item>
+			<item>StoredExcludedOrders</item>
+			<item>StoredGroebnerBasis</item>
+			<item>StraightLineProgElm</item>
+			<item>StraightLineProgElmType</item>
+			<item>StraightLineProgGens</item>
+			<item>StraightLineProgram</item>
+			<item>StraightLineProgramElmRankFilter</item>
+			<item>StraightLineProgramNC</item>
+			<item>StraightLineProgramsDefaultType</item>
+			<item>StraightLineProgramsFamily</item>
+			<item>StraightLineProgramsTom</item>
+			<item>StratMeetPartition</item>
+			<item>StreamsFamily</item>
+			<item>StretchImportantSLPElement</item>
+			<item>String</item>
+			<item>StringDate</item>
+			<item>StringFamily</item>
+			<item>StringFile</item>
+			<item>StringImType</item>
+			<item>StringOfResultOfLineOfStraightLineProgram</item>
+			<item>StringOfResultOfStraightLineProgram</item>
+			<item>StringOfUnivariateRationalPolynomialByCoefficients</item>
+			<item>StringPP</item>
+			<item>StringPrint</item>
+			<item>StringStreamInputTextFile</item>
+			<item>StringTime</item>
+			<item>StringToStraightLineProgram</item>
+			<item>StringUnivariateLaurent</item>
+			<item>StringView</item>
+			<item>StripBeginEnd</item>
+			<item>StripEscapeSequences</item>
+			<item>StrongGeneratorsStabChain</item>
+			<item>StrongGens</item>
+			<item>StronglyConnectedComponents</item>
+			<item>StructuralCopy</item>
+			<item>StructureConstantsPadicNumbers</item>
+			<item>StructureConstantsTable</item>
+			<item>StructureDescription</item>
+			<item>SuPeRfail</item>
+			<item>SubAlgebraModule</item>
+			<item>SubFLMLOR</item>
+			<item>SubFLMLORNC</item>
+			<item>SubFLMLORWithOne</item>
+			<item>SubFLMLORWithOneNC</item>
+			<item>SubGModLeadPos</item>
+			<item>SubSyllables</item>
+			<item>SubadditiveGroup</item>
+			<item>SubadditiveGroupNC</item>
+			<item>SubadditiveMagma</item>
+			<item>SubadditiveMagmaNC</item>
+			<item>SubadditiveMagmaWithInverses</item>
+			<item>SubadditiveMagmaWithInversesNC</item>
+			<item>SubadditiveMagmaWithZero</item>
+			<item>SubadditiveMagmaWithZeroNC</item>
+			<item>Subalgebra</item>
+			<item>SubalgebraNC</item>
+			<item>SubalgebraWithOne</item>
+			<item>SubalgebraWithOneNC</item>
+			<item>SubdirProdPcGroups</item>
+			<item>SubdirectDiagonalPerms</item>
+			<item>SubdirectProduct</item>
+			<item>SubdirectProductInfo</item>
+			<item>SubdirectProductOp</item>
+			<item>SubdirectProducts</item>
+			<item>Subfield</item>
+			<item>SubfieldNC</item>
+			<item>Subfields</item>
+			<item>SubgpConjSymmgp</item>
+			<item>Subgroup</item>
+			<item>SubgroupByPcgs</item>
+			<item>SubgroupByProperty</item>
+			<item>SubgroupGeneratorsCosetTable</item>
+			<item>SubgroupMethodByNiceMonomorphism</item>
+			<item>SubgroupMethodByNiceMonomorphismCollColl</item>
+			<item>SubgroupMethodByNiceMonomorphismCollElm</item>
+			<item>SubgroupMethodByNiceMonomorphismCollOther</item>
+			<item>SubgroupNC</item>
+			<item>SubgroupOfWholeGroupByCosetTable</item>
+			<item>SubgroupOfWholeGroupByQuotientSubgroup</item>
+			<item>SubgroupProperty</item>
+			<item>SubgroupShell</item>
+			<item>SubgroupsMethodByNiceMonomorphism</item>
+			<item>SubgroupsOrbitsAndNormalizers</item>
+			<item>SubgroupsSolvableGroup</item>
+			<item>Submagma</item>
+			<item>SubmagmaNC</item>
+			<item>SubmagmaWithInverses</item>
+			<item>SubmagmaWithInversesNC</item>
+			<item>SubmagmaWithOne</item>
+			<item>SubmagmaWithOneNC</item>
+			<item>Submodule</item>
+			<item>SubmoduleNC</item>
+			<item>Submonoid</item>
+			<item>SubmonoidNC</item>
+			<item>SubnearAdditiveGroup</item>
+			<item>SubnearAdditiveGroupNC</item>
+			<item>SubnearAdditiveMagma</item>
+			<item>SubnearAdditiveMagmaNC</item>
+			<item>SubnearAdditiveMagmaWithInverses</item>
+			<item>SubnearAdditiveMagmaWithInversesNC</item>
+			<item>SubnearAdditiveMagmaWithZero</item>
+			<item>SubnearAdditiveMagmaWithZeroNC</item>
+			<item>SubnormalSeries</item>
+			<item>SubnormalSeriesInParent</item>
+			<item>SubnormalSeriesOp</item>
+			<item>SuboLiBli</item>
+			<item>SuboSiBli</item>
+			<item>SuboTruePos</item>
+			<item>SuboUniteBlist</item>
+			<item>Suborbits</item>
+			<item>Subring</item>
+			<item>SubringNC</item>
+			<item>SubringWithOne</item>
+			<item>SubringWithOneNC</item>
+			<item>SubsTom</item>
+			<item>Subsemigroup</item>
+			<item>SubsemigroupNC</item>
+			<item>Subsemiring</item>
+			<item>SubsemiringNC</item>
+			<item>SubsemiringWithOne</item>
+			<item>SubsemiringWithOneAndZero</item>
+			<item>SubsemiringWithOneAndZeroNC</item>
+			<item>SubsemiringWithOneNC</item>
+			<item>SubsemiringWithZero</item>
+			<item>SubsemiringWithZeroNC</item>
+			<item>Subspace</item>
+			<item>SubspaceNC</item>
+			<item>SubspaceVectorSpaceGroup</item>
+			<item>Subspaces</item>
+			<item>SubspacesAll</item>
+			<item>SubspacesDim</item>
+			<item>SubstitutedWord</item>
+			<item>SubstitutionSublist</item>
+			<item>SubtractBlist</item>
+			<item>SubtractBlistOrbitStabChain</item>
+			<item>SubtractSet</item>
+			<item>Subtype</item>
+			<item>Subword</item>
+			<item>Successors</item>
+			<item>SuggestUpgrades</item>
+			<item>Sum</item>
+			<item>SumCoefPolynomial</item>
+			<item>SumCoefRatfun</item>
+			<item>SumCoeffLaurpol</item>
+			<item>SumCoeffUnivfunc</item>
+			<item>SumFactorizationFunctionPcgs</item>
+			<item>SumIntersectionMat</item>
+			<item>SumOfMBMAndMapping</item>
+			<item>SumOfMappingAndMBM</item>
+			<item>SumOfPcElement</item>
+			<item>SumOp</item>
+			<item>SumPcgs</item>
+			<item>SumRootsPol</item>
+			<item>SumRootsPolComp</item>
+			<item>SumX</item>
+			<item>SumXHelp</item>
+			<item>SummandMolienSeries</item>
+			<item>SupType</item>
+			<item>SupersolvableResiduum</item>
+			<item>SupersolvableResiduumDefault</item>
+			<item>SupportedCharacterTableInfo</item>
+			<item>SupportedLibraryTableComponents</item>
+			<item>SurjectiveActionHomomorphismAttr</item>
+			<item>SuzukiGroup</item>
+			<item>SuzukiGroupCons</item>
+			<item>SyllableRepAssocWord</item>
+			<item>SyllableWordObjByExtRep</item>
+			<item>SylowComplement</item>
+			<item>SylowComplementOp</item>
+			<item>SylowSubgroup</item>
+			<item>SylowSubgroupOp</item>
+			<item>SylowSubgroupPermGroup</item>
+			<item>SylowSystem</item>
+			<item>SymAdic</item>
+			<item>SymmetricClosureBinaryRelation</item>
+			<item>SymmetricDegree</item>
+			<item>SymmetricGroup</item>
+			<item>SymmetricGroupCons</item>
+			<item>SymmetricParentGroup</item>
+			<item>SymmetricParts</item>
+			<item>SymmetricPower</item>
+			<item>SymmetricPowerOfAlgebraModule</item>
+			<item>Symmetrisations</item>
+			<item>Symmetrizations</item>
+			<item>SymplecticComponents</item>
+			<item>SymplecticGroup</item>
+			<item>SymplecticGroupCons</item>
+			<item>SyzygyCriterion</item>
+			<item>Sz</item>
+			<item>TRANSGrp</item>
+			<item>TRANSProperties</item>
+			<item>TableAutomorphisms</item>
+			<item>TableHasIntKeyFun</item>
+			<item>TableOfMarks</item>
+			<item>TableOfMarksByLattice</item>
+			<item>TableOfMarksComponents</item>
+			<item>TableOfMarksCyclic</item>
+			<item>TableOfMarksDihedral</item>
+			<item>TableOfMarksFamily</item>
+			<item>TableOfMarksFrobenius</item>
+			<item>TableOfMarksFromLibrary</item>
+			<item>TailOfPcgsPermGroup</item>
+			<item>TailsInverses</item>
+			<item>Tau</item>
+			<item>TeX</item>
+			<item>TeXObj</item>
+			<item>TemporaryGlobalVarName</item>
+			<item>TensorProduct</item>
+			<item>TensorProductGModule</item>
+			<item>TensorProductOfAlgebraModules</item>
+			<item>TensorWreathProductOfMatrixGroup</item>
+			<item>Tensored</item>
+			<item>TestConsistencyMaps</item>
+			<item>TestHomogeneous</item>
+			<item>TestInducedFromNormalSubgroup</item>
+			<item>TestJacobi</item>
+			<item>TestMonomial</item>
+			<item>TestMonomialFromLattice</item>
+			<item>TestMonomialQuick</item>
+			<item>TestMonomialUseLattice</item>
+			<item>TestPackageAvailability</item>
+			<item>TestQuasiPrimitive</item>
+			<item>TestRelativelySM</item>
+			<item>TestRelativelySMFun</item>
+			<item>TestRow</item>
+			<item>TestSubnormallyMonomial</item>
+			<item>Tester</item>
+			<item>TextAttr</item>
+			<item>TextM</item>
+			<item>TietzeOrigin</item>
+			<item>TietzeWordAbstractWord</item>
+			<item>TmpDirectory</item>
+			<item>TmpName</item>
+			<item>ToBeDefinedObjFamily</item>
+			<item>ToBeDefinedObjType</item>
+			<item>ToggleEcho</item>
+			<item>TopExtensionsByAutomorphism</item>
+			<item>Trace</item>
+			<item>TraceDefinition</item>
+			<item>TraceImmediateMethods</item>
+			<item>TraceMat</item>
+			<item>TraceMethods</item>
+			<item>TraceModQF</item>
+			<item>TracePolynomial</item>
+			<item>TracedCosetFpGroup</item>
+			<item>TrailingEntriesLTM</item>
+			<item>TranformsOneIntoZero</item>
+			<item>TransArrange</item>
+			<item>TransCombinat</item>
+			<item>TransGrpLoad</item>
+			<item>TransStabCSPG</item>
+			<item>TransferDiagram</item>
+			<item>TransferPcgsInfo</item>
+			<item>TransferedExtensionPol</item>
+			<item>Transformation</item>
+			<item>TransformationData</item>
+			<item>TransformationFamily</item>
+			<item>TransformationNC</item>
+			<item>TransformationRelation</item>
+			<item>TransformationRepresentation</item>
+			<item>TransformationType</item>
+			<item>TransformingPermutationFamily</item>
+			<item>TransformingPermutations</item>
+			<item>TransformingPermutationsCharacterTables</item>
+			<item>TransformsAdditionIntoMultiplication</item>
+			<item>TransformsAdditiveInversesIntoInverses</item>
+			<item>TransformsInversesIntoAdditiveInverses</item>
+			<item>TransformsMultiplicationIntoAddition</item>
+			<item>TransformsZeroIntoOne</item>
+			<item>TransitiveClosureBinaryRelation</item>
+			<item>TransitiveGroup</item>
+			<item>TransitiveIdentification</item>
+			<item>Transitivity</item>
+			<item>TranslateString</item>
+			<item>TranslatorSubalgebra</item>
+			<item>TransposedMat</item>
+			<item>TransposedMatAttr</item>
+			<item>TransposedMatDestructive</item>
+			<item>TransposedMatImmutable</item>
+			<item>TransposedMatMutable</item>
+			<item>TransposedMatOp</item>
+			<item>TransposedMatrixGroup</item>
+			<item>TransvByDirProdFamily</item>
+			<item>TransvByHomomorphismFamily</item>
+			<item>TransvBySchreierTreeFamily</item>
+			<item>TransvBySiftFunctFamily</item>
+			<item>TransvByTrivSubgrpFamily</item>
+			<item>Transversal</item>
+			<item>TransversalBySiftFunction</item>
+			<item>TransversalByTrivial</item>
+			<item>TransversalElt</item>
+			<item>TransversalOfChainSubgroup</item>
+			<item>TreeEntry</item>
+			<item>TreeRepresentedWord</item>
+			<item>TrialQuotientRPF</item>
+			<item>TriangulizeIntegerMat</item>
+			<item>TriangulizeMat</item>
+			<item>TriangulizeMonomialElementList</item>
+			<item>TriangulizeWeightRepElementList</item>
+			<item>TriangulizedGeneratorsByMatrix</item>
+			<item>TriangulizedIntegerMat</item>
+			<item>TriangulizedIntegerMatTransform</item>
+			<item>TriangulizedIntegerMatTransforms</item>
+			<item>TriangulizedNullspaceMat</item>
+			<item>TriangulizedNullspaceMatDestructive</item>
+			<item>TriangulizedNullspaceMatNT</item>
+			<item>TrivialCharacter</item>
+			<item>TrivialGModule</item>
+			<item>TrivialGroup</item>
+			<item>TrivialGroupCons</item>
+			<item>TrivialIterator</item>
+			<item>TrivialModule</item>
+			<item>TrivialPartition</item>
+			<item>TrivialQuotientSubgroup</item>
+			<item>TrivialSubFLMLOR</item>
+			<item>TrivialSubadditiveMagmaWithZero</item>
+			<item>TrivialSubalgebra</item>
+			<item>TrivialSubgroup</item>
+			<item>TrivialSubmagmaWithOne</item>
+			<item>TrivialSubmodule</item>
+			<item>TrivialSubmonoid</item>
+			<item>TrivialSubnearAdditiveMagmaWithZero</item>
+			<item>TrivialSubspace</item>
+			<item>TryCombinations</item>
+			<item>TryConwayPolynomialForFrobeniusCharacterValue</item>
+			<item>TryCosetTableInWholeGroup</item>
+			<item>TryGcdCancelExtRepPolynomials</item>
+			<item>TryLayerSQ</item>
+			<item>TryModuleSQ</item>
+			<item>TryNextMethod</item>
+			<item>TryPcgsPermGroup</item>
+			<item>TrySecondaryImages</item>
+			<item>Tschirnhausen</item>
+			<item>Tuple</item>
+			<item>TupleNC</item>
+			<item>Tuples</item>
+			<item>TuplesFamily</item>
+			<item>TuplesK</item>
+			<item>TwoClosure</item>
+			<item>TwoClosurePermGroup</item>
+			<item>TwoCoboundaries</item>
+			<item>TwoCoboundariesSQ</item>
+			<item>TwoCocycles</item>
+			<item>TwoCocyclesSQ</item>
+			<item>TwoCohomology</item>
+			<item>TwoCohomologySQ</item>
+			<item>TwoSeqPol</item>
+			<item>TwoSidedIdeal</item>
+			<item>TwoSidedIdealByGenerators</item>
+			<item>TwoSidedIdealNC</item>
+			<item>TwoSquares</item>
+			<item>TypeObj</item>
+			<item>TypeOfDefaultGeneralMapping</item>
+			<item>TypeOfFamilies</item>
+			<item>TypeOfFamilyOfFamilies</item>
+			<item>TypeOfFamilyOfTypes</item>
+			<item>TypeOfTypes</item>
+			<item>TzCheckRecord</item>
+			<item>TzEliminate</item>
+			<item>TzEliminateFromTree</item>
+			<item>TzEliminateGen</item>
+			<item>TzEliminateGens</item>
+			<item>TzFindCyclicJoins</item>
+			<item>TzGeneratorExponents</item>
+			<item>TzGo</item>
+			<item>TzGoGo</item>
+			<item>TzImagesOldGens</item>
+			<item>TzInitGeneratorImages</item>
+			<item>TzMostFrequentPairs</item>
+			<item>TzNewGenerator</item>
+			<item>TzOccurrences</item>
+			<item>TzOccurrencesPairs</item>
+			<item>TzOptionNames</item>
+			<item>TzOptions</item>
+			<item>TzPreImagesNewGens</item>
+			<item>TzPrint</item>
+			<item>TzPrintGeneratorImages</item>
+			<item>TzPrintGenerators</item>
+			<item>TzPrintLengths</item>
+			<item>TzPrintOptions</item>
+			<item>TzPrintPairs</item>
+			<item>TzPrintPresentation</item>
+			<item>TzPrintRelators</item>
+			<item>TzPrintStatus</item>
+			<item>TzRelator</item>
+			<item>TzRemoveGenerators</item>
+			<item>TzRenumberGens</item>
+			<item>TzReplaceGens</item>
+			<item>TzRules</item>
+			<item>TzSearch</item>
+			<item>TzSearchC</item>
+			<item>TzSearchEqual</item>
+			<item>TzSort</item>
+			<item>TzSortC</item>
+			<item>TzSubstitute</item>
+			<item>TzSubstituteCyclicJoins</item>
+			<item>TzSubstituteGen</item>
+			<item>TzSubstituteWord</item>
+			<item>TzTestInitialSetup</item>
+			<item>TzUpdateGeneratorImages</item>
+			<item>TzWordAbstractWord</item>
+			<item>UNIXSelect</item>
+			<item>UglyVector</item>
+			<item>UnInstallCharReadHookFunc</item>
+			<item>UnSetImage</item>
+			<item>Unbind</item>
+			<item>UnbindElmWPObj</item>
+			<item>UnbindGlobal</item>
+			<item>UnderlyingCharacterTable</item>
+			<item>UnderlyingCharacteristic</item>
+			<item>UnderlyingCollection</item>
+			<item>UnderlyingDomainOfBinaryRelation</item>
+			<item>UnderlyingElement</item>
+			<item>UnderlyingElementOfReesMatrixSemigroupElement</item>
+			<item>UnderlyingElementOfReesZeroMatrixSemigroupElement</item>
+			<item>UnderlyingExternalSet</item>
+			<item>UnderlyingFamily</item>
+			<item>UnderlyingField</item>
+			<item>UnderlyingGeneralMapping</item>
+			<item>UnderlyingGroup</item>
+			<item>UnderlyingLeftModule</item>
+			<item>UnderlyingLieAlgebra</item>
+			<item>UnderlyingMagma</item>
+			<item>UnderlyingRelation</item>
+			<item>UnderlyingSemigroupOfReesMatrixSemigroup</item>
+			<item>UnderlyingSemigroupOfReesZeroMatrixSemigroup</item>
+			<item>UnderlyingVectorSpace</item>
+			<item>UndoRefinement</item>
+			<item>UnhideGlobalVariables</item>
+			<item>Union</item>
+			<item>UnionBlist</item>
+			<item>UnionSet</item>
+			<item>UnipotentSubgroup</item>
+			<item>Unique</item>
+			<item>UniteBlist</item>
+			<item>UniteBlistList</item>
+			<item>UniteSet</item>
+			<item>Units</item>
+			<item>UnivariateLaurentPolynomialByCoefficients</item>
+			<item>UnivariatePolynomial</item>
+			<item>UnivariatePolynomialByCoefficients</item>
+			<item>UnivariatePolynomialRing</item>
+			<item>UnivariateRationalFunctionByCoefficients</item>
+			<item>UnivariateRationalFunctionByExtRep</item>
+			<item>UnivariatenessTestRationalFunction</item>
+			<item>UniversalEnvelopingAlgebra</item>
+			<item>Unknown</item>
+			<item>UnknownsType</item>
+			<item>UnloadSmallGroupsData</item>
+			<item>UnlockNaturalHomomorphismsPool</item>
+			<item>UnmarkTree</item>
+			<item>UnorderedTuples</item>
+			<item>UnorderedTuplesK</item>
+			<item>UnprofileFunctions</item>
+			<item>UnprofileMethods</item>
+			<item>UntraceMethods</item>
+			<item>UpEnv</item>
+			<item>UpdateMap</item>
+			<item>UpdatePolycyclicCollector</item>
+			<item>UpdateWeightInfo</item>
+			<item>UpperActingDomain</item>
+			<item>UpperCentralSeries</item>
+			<item>UpperCentralSeriesOfGroup</item>
+			<item>UpperSubdiagonal</item>
+			<item>UseBasis</item>
+			<item>UseFactorRelation</item>
+			<item>UseIsomorphismRelation</item>
+			<item>UseMatrixChainSubgroups</item>
+			<item>UsePermChainSubgroups</item>
+			<item>UseStabChainViaChainSubgroup</item>
+			<item>UseSubsetRelation</item>
+			<item>UseSubsetRelationNC</item>
+			<item>VPActionHom</item>
+			<item>VSTInsertToLeft</item>
+			<item>VSTNode</item>
+			<item>ValidatePackageInfo</item>
+			<item>Valuation</item>
+			<item>Value</item>
+			<item>ValueCochain</item>
+			<item>ValueGlobal</item>
+			<item>ValueMolienSeries</item>
+			<item>ValueOption</item>
+			<item>ValuePol</item>
+			<item>ValuesOfClassFunction</item>
+			<item>VectorOfRelator</item>
+			<item>VectorSearchTable</item>
+			<item>VectorSpace</item>
+			<item>VectorSpaceByPcgsOfElementaryAbelianGroup</item>
+			<item>VerifySGS</item>
+			<item>VerifyStabilizer</item>
+			<item>View</item>
+			<item>ViewFullHomModule</item>
+			<item>ViewLength</item>
+			<item>ViewMolienSeries</item>
+			<item>ViewObj</item>
+			<item>VirtualCharacter</item>
+			<item>WallForm</item>
+			<item>WeakPointerObj</item>
+			<item>WedgeGModule</item>
+			<item>WeekDay</item>
+			<item>WeightLexOrdering</item>
+			<item>WeightLexOrderingNC</item>
+			<item>WeightOfGenerators</item>
+			<item>WeightVecFFE</item>
+			<item>WeightsTom</item>
+			<item>WeylGroup</item>
+			<item>WeylOrbitIterator</item>
+			<item>Where</item>
+			<item>WindowCmd</item>
+			<item>Word</item>
+			<item>WordAlp</item>
+			<item>WordsString</item>
+			<item>WreathElm</item>
+			<item>WreathProduct</item>
+			<item>WreathProductImprimitiveAction</item>
+			<item>WreathProductInfo</item>
+			<item>WreathProductOfMatrixGroup</item>
+			<item>WreathProductOrdering</item>
+			<item>WreathProductProductAction</item>
+			<item>WriteAll</item>
+			<item>WriteBibFile</item>
+			<item>WriteByte</item>
+			<item>WriteLine</item>
+			<item>ZClassRepsQClass</item>
+			<item>ZOp</item>
+			<item>ZassenhausIntersection</item>
+			<item>Zero</item>
+			<item>ZeroAttr</item>
+			<item>ZeroCoefficient</item>
+			<item>ZeroCoefficientRatFun</item>
+			<item>ZeroImmutable</item>
+			<item>ZeroMapping</item>
+			<item>ZeroMutable</item>
+			<item>ZeroOp</item>
+			<item>ZeroSM</item>
+			<item>ZeroSameMutability</item>
+			<item>ZevData</item>
+			<item>ZevDataValue</item>
+			<item>ZippedListQuotient</item>
+			<item>ZippedProduct</item>
+			<item>ZippedSum</item>
+			<item>ZmodnZ</item>
+			<item>ZmodnZObj</item>
+			<item>ZmodpZ</item>
+			<item>ZmodpZNC</item>
+			<item>ZumbroichBase</item>
+			<item>Zuppos</item>
+		</list>
+
+
+		<contexts>
+
+			<context name="Top_Level" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces />
+
+				<IncludeRules context="Strings" />
+				<IncludeRules context="Code_Folding" />
+				<IncludeRules context="Two Char Operators" />
+
+				<DetectChar   context="Commentary"   char="#" />
+
+				<AnyChar      context="#stay"        attribute="Operator1"          String="!%*+,/;=>|;-:&lt;&gt;\^" />
+
+
+
+				<keyword      context="#stay"        attribute="Builtin Functions"  String="builtinfunctions" />
+				<keyword      context="#stay"        attribute="Control Statements" String="controlstatements" />
+				<keyword      context="#stay"        attribute="GAP Keywords"       String="gapkeywords" />
+				<keyword      context="#stay"        attribute="Logic Operators"    String="logicoperators" />
+				<keyword      context="#stay"        attribute="Math Operators"    String="mathoperators" />
+
+				<RegExpr      context="#stay"        attribute="Number"             String="(\d+(\.\d+)?|\.\d+)([eE][+-]?\d+)?[ij]?" />
+				<RegExpr      context="#stay"        attribute="Variable"           String="[a-zA-Z]\w*" />
+			</context>
+
+
+			<context name="Commentary" attribute="Commentary" lineEndContext="#pop">
+				<DetectSpaces />
+				<IncludeRules context="##Comments" />
+			</context>
+
+
+			<context name="Code_Folding" attribute="Normal Text" lineEndContext="Top_Level">
+				<WordDetect context="#stay" attribute="Control Statements" String="for" beginRegion="do_block" />
+				<WordDetect context="#stay" attribute="Control Statements" String="while" beginRegion="do_block" />
+				<WordDetect context="#stay" attribute="Control Statements" String="od" endRegion="do_block" />
+
+				<WordDetect context="#stay" attribute="Control Statements" String="repeat" beginRegion="repeat_block" />
+				<WordDetect context="#stay" attribute="Control Statements" String="until" endRegion="repeat_block" />
+
+				<WordDetect context="#stay" attribute="Control Statements" String="if" beginRegion="if_block" />
+				<WordDetect context="#stay" attribute="Control Statements" String="fi" endRegion="if_block" />
+
+				<WordDetect context="#stay" attribute="Function" String="function" beginRegion="func_block" />
+				<WordDetect context="#stay" attribute="Function" String="end" endRegion="func_block" />
+			</context>
+
+
+
+			<context name="Two Char Operators" attribute="Normal Text" lineEndContext="#stay">
+				<Detect2Chars context="#stay" attribute="Operator2" char="." char1="."/>
+				<Detect2Chars context="#stay" attribute="Operator2" char="!" char1="."/>
+				<Detect2Chars context="#stay" attribute="Operator2" char=":" char1="="/>
+				<Detect2Chars context="#stay" attribute="Operator2" char="-" char1="&gt;"/>
+				<Detect2Chars context="#stay" attribute="Operator2" char="&lt;" char1="="/>
+				<Detect2Chars context="#stay" attribute="Operator2" char="&gt;" char1="="/>
+				<Detect2Chars context="#stay" attribute="Operator2" char="&lt;" char1="&gt;"/>
+			</context>
+
+
+			<context name="Strings"    attribute="String" lineEndContext="#stay">
+				<RegExpr context="#stay" attribute="String" String="'([^'\\]|''|\\'|\\[^'])*'(?=[^']|$)" />
+				<RegExpr context="#stay" attribute="Incomplete String" String="'([^']|''|\\')*" />
+				<RegExpr context="#stay" attribute="String" String="&quot;([^&quot;\\]|&quot;&quot;|\\&quot;|\\[^&quot;])*&quot;(?=[^&quot;]|$)" />
+				<RegExpr context="#stay" attribute="Incomplete String" String="&quot;([^&quot;]|&quot;&quot;|\\&quot;)*" />
+			</context>
+		</contexts>
+
+
+		<!-- ======== Item Data ======== -->
+		<itemDatas>
+			<itemData name="Builtin Functions"   defStyleNum="dsBuiltIn" italic="1" bold="1" />
+			<itemData name="Commentary"          defStyleNum="dsComment" italic="1" />
+			<itemData name="Control Statements"  defStyleNum="dsControlFlow" />
+			<itemData name="Function"            defStyleNum="dsFunction"/>
+			<itemData name="GAP Keywords"        defStyleNum="dsExtension"/>
+			<itemData name="Incomplete String"   defStyleNum="dsSpecialString"/>
+			<itemData name="Logic Operators"     defStyleNum="dsConstant"/>
+			<itemData name="Math Operators"      defStyleNum="dsOthers"  />
+			<itemData name="Normal Text"         defStyleNum="dsNormal"  />
+			<itemData name="Number"              defStyleNum="dsFloat"   />
+			<itemData name="Operator1"           defStyleNum="dsOperator"/>
+			<itemData name="Operator2"           defStyleNum="dsOperator" bold="1" />
+			<itemData name="String"              defStyleNum="dsString"  />
+			<itemData name="Variable"            defStyleNum="dsVariable"/>
+		</itemDatas>
+
+	</highlighting>
+
+	<general>
+		<comments>
+			<comment name="singleLine" start="#" />
+		</comments>
+		<keywords casesensitive="true" />
+	</general>
+
+</language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/gcc.xml b/xml/gcc.xml
--- a/xml/gcc.xml
+++ b/xml/gcc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY space " ">
     <!ENTITY separators ",&#59;">
@@ -13,7 +13,7 @@
   -->
 <language
     name="GCCExtensions"
-    version="4"
+    version="5"
     kateversion="5.0"
     section="Sources"
     extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;"
@@ -528,23 +528,27 @@
   </list>
   <contexts>
     <context name="DetectGccExtensions" attribute="Normal Text" lineEndContext="#stay">
-      <keyword attribute="GNU Macros" context="#stay" String="GNUMacros" />
-      <keyword attribute="GNU Functions" context="#stay" String="GNUFunctions" />
-      <keyword attribute="GNU Types" context="#stay" String="GNUTypes" />
+      <IncludeRules context="DetectGccExtensionsCommon"/>
       <WordDetect attribute="GNU Extensions" context="AttrArgs" String="__attribute__" />
       <WordDetect attribute="GNU Extensions" context="AttrArgs" String="__declspec" />
-      <keyword attribute="GNU Extensions" context="#stay" String="GNUKeywords" />
-      <RegExpr attribute="GNU Functions" context="#stay" String="__builtin_[a-zA-Z0-9_]+" />
     </context>
 
     <context name="DetectGccExtensionsInPP" attribute="Normal Text" lineEndContext="#stay">
+      <IncludeRules context="DetectGccExtensionsCommon"/>
+      <WordDetect attribute="GNU Extensions" context="AttrArgsInPP" String="__attribute__" />
+      <WordDetect attribute="GNU Extensions" context="AttrArgsInPP" String="__declspec" />
+    </context>
+
+    <context name="DetectGccExtensionsCommon" attribute="Normal Text" lineEndContext="#stay">
       <keyword attribute="GNU Macros" context="#stay" String="GNUMacros" />
       <keyword attribute="GNU Functions" context="#stay" String="GNUFunctions" />
       <keyword attribute="GNU Types" context="#stay" String="GNUTypes" />
-      <WordDetect attribute="GNU Extensions" context="AttrArgsInPP" String="__attribute__" />
-      <WordDetect attribute="GNU Extensions" context="AttrArgsInPP" String="__declspec" />
       <keyword attribute="GNU Extensions" context="#stay" String="GNUKeywords" />
-      <RegExpr attribute="GNU Functions" context="#stay" String="__builtin_[a-zA-Z0-9_]+" />
+      <StringDetect attribute="GNU Functions" context="GNUFunctions" String="__builtin_" />
+    </context>
+
+    <context name="GNUFunctions" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <DetectIdentifier attribute="GNU Functions" context="#pop"/>
     </context>
 
     <context name="GNUMacros" attribute="Normal Text" lineEndContext="#stay">
diff --git a/xml/gd-script.xml b/xml/gd-script.xml
new file mode 100644
--- /dev/null
+++ b/xml/gd-script.xml
@@ -0,0 +1,372 @@
+<!--
+
+    gd-script.xml: Mario Aichinger <aichingm@gmail.com> 2021
+
+    This file is derivatived from the python.xml file which has ATM no license notice. This means that same license which covers the file python.xml, which ever it may be, applies to this file. Besides the inherited license, the code I (Mario Aichinger) added, which is/was not part of the python.xml file, is covered by the MIT license.
+
+-->
+<language name="Godot" version="3" style="godot" kateversion="5.0" section="Scripts" indenter="python" priority="5" extensions="*.gd" casesensitive="1" author="Mario Aichinger" >
+	<highlighting>
+        <list name="preprocessor">
+            <item>breakpoint</item>
+            <item>preload</item>
+            <item>assert</item>
+        </list>
+        <list name="consts">
+            <item>PI</item>
+            <item>TAU</item>
+            <item>INF</item>
+        </list>
+		<list name="defs">
+			<item>class</item>
+			<item>class_name</item>
+			<item>extends</item>
+			<item>tool</item>
+			<item>signal</item>
+			<item>func</item>
+			<item>static</item>
+			<item>const</item>
+			<item>enum</item>
+			<item>var</item>
+			<item>onready</item>
+			<item>export</item>
+			<item>setget</item>
+			<item>remote</item>
+			<item>master</item>
+			<item>puppet</item>
+			<item>remotesync</item>
+			<item>mastersync</item>
+			<item>puppetsync</item>
+		</list>
+		<list name="operators">
+			<item>is</item>
+			<item>and</item>
+			<item>or</item>
+			<item>in</item>
+			<item>not</item>
+            <item>as</item>
+		</list>
+		<list name="flow">
+			<item>if</item>
+            <item>elif</item>
+            <item>else</item>
+            <item>for</item>
+            <item>while</item>
+            <item>match</item>
+            <item>break</item>
+            <item>continue</item>
+            <item>pass</item>
+            <item>return</item>
+            <item>yield</item>
+		</list>
+		<list name="builtinfuncs">
+            <item>Color8</item>
+            <item>ColorN</item>
+            <item>abs</item>
+            <item>acos</item>
+            <item>asin</item>
+            <item>atan</item>
+            <item>atan2</item>
+            <item>bytes2var</item>
+            <item>cartesian2polar</item>
+            <item>ceil</item>
+            <item>char</item>
+            <item>clamp</item>
+            <item>convert</item>
+            <item>cos</item>
+            <item>cosh</item>
+            <item>db2linear</item>
+            <item>decimals</item>
+            <item>dectime</item>
+            <item>deg2rad</item>
+            <item>dict2inst</item>
+            <item>ease</item>
+            <item>exp</item>
+            <item>floor</item>
+            <item>fmod</item>
+            <item>fposmod</item>
+            <item>funcref</item>
+            <item>get_stack</item>
+            <item>hash</item>
+            <item>inst2dict</item>
+            <item>instance_from_id</item>
+            <item>inverse_lerp</item>
+            <item>is_equal_approx</item>
+            <item>is_inf</item>
+            <item>is_instance_valid</item>
+            <item>is_nan</item>
+            <item>is_zero_approx</item>
+            <item>len</item>
+            <item>lerp</item>
+            <item>lerp_angle</item>
+            <item>linear2db</item>
+            <item>load</item>
+            <item>log</item>
+            <item>max</item>
+            <item>min</item>
+            <item>move_toward</item>
+            <item>nearest_po2</item>
+            <item>ord</item>
+            <item>parse_json</item>
+            <item>polar2cartesian</item>
+            <item>posmod</item>
+            <item>pow</item>
+            <item>print</item>
+            <item>print_debug</item>
+            <item>print_stack</item>
+            <item>printerr</item>
+            <item>printraw</item>
+            <item>prints</item>
+            <item>printt</item>
+            <item>push_error</item>
+            <item>push_warning</item>
+            <item>rad2deg</item>
+            <item>rand_range</item>
+            <item>rand_seed</item>
+            <item>randf</item>
+            <item>randi</item>
+            <item>randomize</item>
+            <item>range</item>
+            <item>range_lerp</item>
+            <item>round</item>
+            <item>seed</item>
+            <item>sign</item>
+            <item>sin</item>
+            <item>sinh</item>
+            <item>smoothstep</item>
+            <item>sqrt</item>
+            <item>step_decimals</item>
+            <item>stepify</item>
+            <item>str</item>
+            <item>str2var</item>
+            <item>tan</item>
+            <item>tanh</item>
+            <item>to_json</item>
+            <item>type_exists</item>
+            <item>typeof</item>
+            <item>validate_json</item>
+            <item>var2bytes</item>
+            <item>var2str</item>
+            <item>weakref</item>
+            <item>wrapf</item>
+            <item>wrapi</item>
+		</list>
+		<list name="specialvars">
+			<item>null</item>
+			<item>self</item>
+			<item>true</item>
+			<item>false</item>
+		</list>
+		<list name="bindings">
+			<item>connect</item>
+		</list>
+		<list name="overloaders">
+            <item>_get</item>
+            <item>_get_property_list</item>
+            <item>_init</item>
+            <item>_notification</item>
+            <item>_set</item>
+            <item>_to_string</item>
+            <item>_enter_tree</item>
+            <item>_exit_tree</item>
+            <item>_get_configuration_warning</item>
+            <item>_input</item>
+            <item>_physics_process</item>
+            <item>_process</item>
+            <item>_ready</item>
+            <item>_unhandled_input</item>
+            <item>_unhandled_key_input</item>
+		</list>
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces/>
+
+
+				<keyword attribute="Preprocessor" String="preprocessor" context="#stay"/>
+				<keyword attribute="Consts Keyword" String="consts" context="#stay"/>
+				<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
+				<keyword attribute="Operator Keyword" String="operators" context="#stay"/>
+				<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>
+				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
+				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
+				<keyword attribute="Bindings" String="bindings" context="#stay"/>
+				<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
+
+                <IncludeRules context="FunctionCall"/>
+                <IncludeRules context="UnusedVariable"/>
+
+                <RegExpr attribute="Normal Text" String="[a-zA-Z_][a-zA-Z_0-9]{2,}" context="#stay"/>
+
+				<!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->
+				<RegExpr attribute="Hex" String="0x(?:_?[\da-fA-F])+\b" context="#stay"/>
+				<RegExpr attribute="Binary" String="0b(?:_?[01])+\b" context="#stay"/>
+				<RegExpr attribute="Octal" String="0o(?:_?[0-7])+\b" context="#stay"/>
+
+				<!-- Float: .1e3 ; 1.1e3                                                               | Float: 1e3 ; 1.e3 ;                 | Float: 1.1 ; ; .1  -->
+				<RegExpr attribute="Float" String="([0-9][_0-9]*(\.[0-9]([_0-9])*)e[\+\-]?[0-9][_0-9]*)|([0-9][_0-9]*\.?e[\+\-]?[0-9][_0-9]*)|(([0-9]([_0-9])*)?\.[0-9][_0-9]*)" context="#stay"/>
+
+                <!-- Decimal: 123 ; 000 -->
+				<RegExpr attribute="Int" String="\d[_\d]*" context="#stay"/>
+
+				<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
+				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
+
+				<DetectChar attribute="Comment" char="#" context="Hash comment"/>
+
+				<IncludeRules context="StringVariants"/>
+
+                <IncludeRules context="VariableVariants"/>
+
+                <AnyChar attribute="Operator" String="~-*/%+&amp;^|&lt;>=!" context="#stay"/>
+
+				<DetectIdentifier/>
+			</context>
+
+			<context name="#CheckForString" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+				<DetectSpaces/>
+				<LineContinue attribute="Normal Text" context="CheckForStringNext"/>
+			</context>
+
+			<context name="CheckForStringNext" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+				<DetectSpaces/>
+				<LineContinue attribute="Normal Text" context="CheckForStringNext"/>
+				<IncludeRules context="StringVariants"/>
+			</context>
+
+			<context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">
+				<StringDetect attribute="String" String="'''" insensitive="true" context="Triple A-string" beginRegion="Triple A-region"/>
+				<StringDetect attribute="String" String="&quot;&quot;&quot;" insensitive="true" context="Triple Q-string" beginRegion="Triple Q-region"/>
+				<DetectChar attribute="String" char="'" context="Single A-string"/>
+				<DetectChar attribute="String" char="&quot;" context="Single Q-string"/>
+
+			</context>
+
+            <context name="VariableVariants" attribute="Normal Text" lineEndContext="#stay">
+                <Detect2Chars attribute="NodePath-String"  char="@" char1="&quot;" context="NodePath-String"/>
+				<RegExpr attribute="NodePath-Var" String="\$[a-zA-Z0-9_]" insensitive="true" context="NodePath-Var"/>
+			</context>
+
+			<context name="Dictionary" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<DetectChar attribute="Normal Text" char="}" context="#pop" endRegion="Dictionary"/>
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>
+				<IncludeRules context="Normal"/>
+			</context>
+
+			<!-- Comments -->
+
+			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces/>
+				<IncludeRules context="##Comments"/>
+			</context>
+
+			<!-- Strings -->
+
+			<!-- format characters -->
+			<context name="stringformat" attribute="String Substitution" lineEndContext="#stay">
+                <Detect2Chars attribute="String"  char="%" char1="%" context="#stay"/>
+                <RegExpr attribute="String Substitution" String="%.?-?(([1-9][0-9]*)\*?)?(\.(([1-9][0-9]*)|\*))?[scdoxf]|\{(([a-zA-Z_][a-zA-Z_0-9]*)|[0-9]+)?\}" context="#stay"/>
+                <Detect2Chars attribute="String Substitution" char="{" char1="{" context="#stay"/>
+				<Detect2Chars attribute="String Substitution" char="}" char1="}" context="#stay"/>
+			</context>
+
+			<!-- escape characters -->
+			<context name="stringescape" attribute="String Char" lineEndContext="#stay">
+				<RegExpr attribute="String Char" String="\\[\\'&quot;ntrabfv]|\\u[0-9A-Fa-f]{4}" context="#stay"/>
+			</context>
+
+			<!-- Triple-quoted A-strings -->
+			<context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<StringDetect attribute="String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
+			</context>
+
+			<!-- Triple-quoted Q-strings -->
+			<context name="Triple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
+			</context>
+
+			<!-- Single-quoted A-strings -->
+			<context name="Single A-string" attribute="String" lineEndContext="#stay">
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<DetectChar attribute="String" char="'" context="#pop!#CheckForString"/>
+			</context>
+
+			<!-- Single-quoted Q-strings -->
+			<context name="Single Q-string" attribute="String" lineEndContext="#stay">
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<DetectChar attribute="String" char="&quot;" context="#pop!#CheckForString"/>
+			</context>
+
+            <!-- Node Types -->
+			<context name="NodePath-String" attribute="NodePath-String" lineEndContext="#pop">
+				<DetectChar attribute="String" char="&quot;" context="#pop!#CheckForString"/>
+			</context>
+
+            <context name="NodePath-Var" attribute="NodePath-Var" lineEndContext="#pop" fallthroughContext="#pop" fallthrough="1">
+				<RegExpr attribute="NodePath-Var" String="[a-zA-Z0-9_]" context="#stay"/>
+			</context>
+
+            <context name="UnusedVariable" attribute="UnusedVariable" lineEndContext="#pop" fallthroughContext="#pop" fallthrough="1">
+                <RegExpr attribute="Normal Text" lookAhead="true" String="_[a-zA-Z][a-zA-Z0-9_]+\w*\(" context="#pop"/> <!-- exclude function calls and definitions -->
+				<RegExpr attribute="UnusedVariable" String="_[a-zA-Z][a-zA-Z0-9_]+" context="#stay"/>
+			</context>
+
+            <context name="FunctionCall" attribute="Function Call" lineEndContext="#pop" fallthroughContext="#pop" fallthrough="1">
+                <RegExpr lookAhead="true" String="[a-zA-Z_][a-zA-Z0-9_]+\w*\(" context="FunctionCallName"/> <!-- exclude none function calls and definitions -->
+			</context>
+
+            <context name="FunctionCallName" attribute="Function Call" lineEndContext="#pop" fallthroughContext="#pop" fallthrough="1">
+				<RegExpr attribute="Function Call" String="[a-zA-Z_][a-zA-Z0-9_]+" context="#pop"/>
+			</context>
+
+		</contexts>
+
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+			<itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false"/>
+			<itemData name="Consts Keyword" defStyleNum="dsConstant" spellChecking="false"/>
+			<itemData name="Definition Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+			<itemData name="Operator Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Flow Control Keyword" defStyleNum="dsControlFlow" spellChecking="false"/>
+			<itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false"/>
+			<itemData name="Special Variable" defStyleNum="dsVariable" spellChecking="false"/>
+			<itemData name="Bindings" defStyleNum="dsBuiltIn" spellChecking="false"/>
+			<itemData name="Overloaders" defStyleNum="dsBuiltIn" spellChecking="false"/>
+			<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+			<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
+			<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Comment" defStyleNum="dsComment"/>
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>
+			<itemData name="String Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>
+			<itemData name="NodePath-String" defStyleNum="dsSpecialString" spellChecking="false"/>
+			<itemData name="NodePath-Var" defStyleNum="dsVariable" spellChecking="false"/>
+			<itemData name="UnusedVariable" defStyleNum="dsComment" spellChecking="false"/>
+			<itemData name="Function Call" defStyleNum="dsFunction" spellChecking="false"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<folding indentationsensitive="1"/>
+		<emptyLines>
+			<emptyLine regexpr="(?:\s+|\s*#.*)"/>
+		</emptyLines>
+		<comments>
+			<comment name="singleLine" start="#" position="afterwhitespace"/>
+		</comments>
+		<keywords casesensitive="1" additionalDeliminator="#'"/>
+	</general>
+</language>
diff --git a/xml/gleam.xml b/xml/gleam.xml
new file mode 100644
--- /dev/null
+++ b/xml/gleam.xml
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    ==============================================
+     Gleam syntax-highlighting definition for KDE
+    ==============================================
+
+    SPDX-FileCopyrightText: 2024 Louis Guichard <kde@glpda.net>
+    SPDX-License-Identifier: MIT
+
+-->
+<!DOCTYPE language
+[
+	<!ENTITY camel_case "[A-Z][0-9a-zA-Z]*">
+	<!ENTITY snake_case "[_a-z][_0-9a-z]*">
+	<!ENTITY binary_digits "[01]+(?:_[01]+)*">
+	<!ENTITY octal_digits "[0-7]+(?:_[0-7]+)*">
+	<!ENTITY decimal_digits "[0-9]+(?:_[0-9]+)*">
+	<!ENTITY hex_digits "[0-9a-fA-F]+(?:_[0-9a-fA-F]+)*">
+]>
+<language name="Gleam" version="3" kateversion="5.79" section="Sources" extensions="*.gleam" priority="1" indenter="cstyle" license="MIT" author="Louis Guichard (kde@glpda.net)">
+<highlighting>
+	<list name="keywords">
+		<item>as</item>
+		<item>case</item>
+		<item>const</item>
+		<item>echo</item>
+		<item>fn</item>
+		<item>if</item>
+		<item>let</item>
+		<item>opaque</item>
+		<item>pub</item>
+		<item>type</item>
+		<item>use</item>
+	</list>
+	<list name="import keyword">
+		<item>import</item>
+	</list>
+	<list name="crash keywords">
+		<item>assert</item>
+		<item>panic</item>
+		<item>todo</item>
+	</list>
+	<list name="reserved keywords">
+		<item>auto</item>
+		<item>delegate</item>
+		<item>derive</item>
+		<item>else</item>
+		<item>implement</item>
+		<item>macro</item>
+		<item>test</item>
+	</list>
+	<list name="attributes">
+		<item>@deprecated</item>
+		<item>@external</item>
+		<item>@internal</item>
+		<item>@target</item>
+	</list>
+	<list name="bitarrayoptions">
+		<item>size</item>
+		<item>unit</item>
+		<item>bits</item>
+		<item>bytes</item>
+		<item>float</item>
+		<item>int</item>
+		<item>big</item>
+		<item>little</item>
+		<item>native</item>
+		<item>utf8</item>
+		<item>utf16</item>
+		<item>utf32</item>
+		<item>utf8_codepoint</item>
+		<item>utf16_codepoint</item>
+		<item>utf32_codepoint</item>
+		<item>signed</item>
+		<item>unsigned</item>
+	</list>
+	<list name="types">
+		<item>Int</item>
+		<item>Float</item>
+		<!--<item>Infinity</item>-->
+		<!--<item>NaN</item>-->
+		<item>Bool</item>
+		<item>True</item>
+		<item>False</item>
+		<item>Nil</item>
+		<item>Option</item>
+		<item>Some</item>
+		<item>None</item>
+		<item>Result</item>
+		<item>Ok</item>
+		<item>Error</item>
+		<item>String</item>
+		<item>StringBuilder</item>
+		<item>BitArray</item>
+		<item>BytesBuilder</item>
+		<item>List</item>
+		<item>Dict</item>
+		<item>Dynamic</item>
+		<item>Decoder</item>
+		<item>DecodeError</item>
+		<item>DecodeErrors</item>
+		<item>Order</item>
+		<item>Lt</item>
+		<item>Eq</item>
+		<item>Gt</item>
+		<item>InvalidBase</item>
+		<item>Iterator</item>
+		<item>Step</item>
+		<item>Next</item>
+		<item>Done</item>
+		<item>ContinueOrStop</item>
+		<item>Continue</item>
+		<item>Stop</item>
+		<item>Queue</item>
+		<item>Regex</item>
+		<item>CompileError</item>
+		<item>Match</item>
+		<item>Options</item>
+		<item>Set</item>
+		<item>Uri</item>
+	</list>
+	<contexts>
+		<context attribute="Normal Text" lineEndContext="#stay" name="normal text" >
+			<DetectSpaces attribute="Normal Text" />
+			<IncludeRules context="find comments" />
+			<!-- Strings and BitArrays -->
+			<DetectChar attribute="String" context="string" char="&quot;" beginRegion="quotes" />
+			<Detect2Chars attribute="Symbol" context="bitarray" char="&lt;" char1="&lt;" beginRegion="chevrons" />
+			<!-- Keywords -->
+			<keyword attribute="Keyword" context="#stay" String="keywords" />
+			<keyword attribute="Error" context="#stay" String="reserved keywords" />
+			<keyword attribute="Crash" context="#stay" String="crash keywords" />
+			<keyword attribute="Keyword" context="import module" String="import keyword" />
+			<!-- Names -->
+			<keyword attribute="Attribute" context="#stay" String="attributes" />
+			<RegExpr attribute="Error" context="#stay" String="@\w*\b" />
+			<keyword attribute="Type" context="#stay" String="types" />
+			<RegExpr attribute="Type" context="#stay" String="\b&camel_case;\b" />
+			<RegExpr attribute="Function" context="#stay" String="\b&snake_case;(?=\()" />
+			<!-- Numbers -->
+			<RegExpr attribute="Float" context="number suffix error" String="&decimal_digits;\.(?:&decimal_digits;)?(?:e-?&decimal_digits;)?" />
+			<RegExpr attribute="Binary" context="number suffix error" String="\b0[bB]&binary_digits;" />
+			<RegExpr attribute="Octal" context="number suffix error" String="\b0[oO]&octal_digits;" />
+			<RegExpr attribute="Hex" context="number suffix error" String="\b0[xX]&hex_digits;" />
+			<RegExpr attribute="Decimal" context="number suffix error" String="\b&decimal_digits;" />
+			<!-- Symbols -->
+			<DetectChar attribute="Symbol" context="#stay" char="(" beginRegion="round brackets" />
+			<DetectChar attribute="Symbol" context="#stay" char=")" endRegion="round brackets" />
+			<DetectChar attribute="Symbol" context="#stay" char="[" beginRegion="square brackets" />
+			<DetectChar attribute="Symbol" context="#stay" char="]" endRegion="square brackets" />
+			<DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="curly brackets" />
+			<DetectChar attribute="Symbol" context="#stay" char="}" endRegion="curly brackets" />
+			<AnyChar String="#:!,.+-*/%&lt;=&gt;|&amp;" attribute="Symbol" context="#stay" />
+			<AnyChar String=";?&apos;~^$\" attribute="Error" context="#stay" />
+		</context>
+		<!-- Strings and BitArrays -->
+		<context attribute="String" lineEndContext="#stay" name="string" >
+			<LineContinue attribute="Error" context="#stay" />
+			<DetectChar attribute="EscapeSequence" context="escape sequence" char="\" />
+			<DetectChar attribute="String" context="#pop" char="&quot;" endRegion="quotes" />
+		</context>
+		<context attribute="EscapeSequence" lineEndContext="#pop!error" fallthroughContext="#pop!error" name="escape sequence" >
+			<AnyChar attribute="EscapeSequence" context="#pop" String="efnrt&quot;\" />
+			<RegExpr attribute="EscapeSequence" context="#pop" String="u\{[0-9a-fA-F]{1,6}\}" />
+			<RegExpr attribute="Error" context="#pop" String="u\{[^}]*\}|[^efnrt&quot;\\]" />
+		</context>
+		<context attribute="Normal Text" lineEndContext="#stay" name="bitarray" >
+			<keyword attribute="BitArrayOption" context="#stay" String="bitarrayoptions" />
+			<Detect2Chars attribute="Symbol" context="#pop" char="&gt;" char1="&gt;" endRegion="chevrons" />
+			<IncludeRules context="normal text" />
+		</context>
+		<!-- Comments -->
+		<context attribute="Normal Text" lineEndContext="#stay" name="find comments" >
+			<StringDetect attribute="Documentation" context="documentation" String="///" />
+			<Detect2Chars attribute="Comment" context="comment" char="/" char1="/" />
+        </context>
+		<context attribute="Comment" lineEndContext="#pop" name="comment" >
+			<DetectSpaces/>
+			<IncludeRules context="##Comments" />
+		</context>
+		<context attribute="Documentation" lineEndContext="#pop" name="documentation" >
+			<!-- TODO documentation use a markdown syntax -->
+		</context>
+		<!-- Imports -->
+		<context attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay"  name="import module" fallthroughContext="#pop!error" >
+			<DetectSpaces attribute="Normal Text" />
+			<IncludeRules context="find comments" />
+			<keyword attribute="Error" context="#pop" String="keywords" />
+			<keyword attribute="Error" context="#pop" String="reserved keywords" />
+			<keyword attribute="Error" context="#pop" String="import keyword" />
+			<RegExpr attribute="Module" context="#pop!import suffix" String="&snake_case;(?:/&snake_case;)*\b" />
+		</context>
+		<context attribute="Normal Text" lineEndContext="#stay" name="import suffix" fallthroughContext="#pop#pop" >
+			<DetectSpaces attribute="Normal Text" />
+			<Detect2Chars attribute="Symbol" context="unqualified imports" char="." char1="{" beginRegion="curly brackets" />
+			<WordDetect attribute="Keyword" context="#pop!renamed import" String="as" />
+		</context>
+		<context attribute="Normal Text" lineEndContext="#stay" name="unqualified imports" >
+			<DetectChar attribute="Symbol" context="#pop" char="}" endRegion="curly brackets" />
+			<IncludeRules context="normal text" />
+		</context>
+		<context attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" name="renamed import" fallthroughContext="#pop!error" >
+			<DetectSpaces attribute="Normal Text" />
+			<IncludeRules context="find comments" />
+			<keyword attribute="Error" context="#pop" String="keywords" />
+			<keyword attribute="Error" context="#pop" String="reserved keywords" />
+			<keyword attribute="Error" context="#pop" String="import keyword" />
+			<RegExpr attribute="Module" context="#pop" String="&snake_case;\b" />
+		</context>
+		<!-- Errors -->
+		<context attribute="Error" lineEndContext="#pop" name="error" >
+		</context>
+		<context attribute="Normal Text" lineEndContext="#pop" name="number suffix error" fallthroughContext="#pop" >
+			<RegExpr attribute="Error" String="\w+" context="#pop"/>
+		</context>
+	</contexts>
+	<itemDatas>
+		<itemData name="Normal Text" defStyleNum="dsNormal" />
+		<itemData name="Error" defStyleNum="dsError" />
+		<!-- Strings and BitArrays -->
+		<itemData name="String" defStyleNum="dsString" />
+		<itemData name="EscapeSequence" defStyleNum="dsSpecialChar" />
+		<itemData name="BitArrayOption" defStyleNum="dsSpecialChar" />
+		<!-- Comments -->
+		<itemData name="Comment" defStyleNum="dsComment" />
+		<itemData name="Documentation" defStyleNum="dsDocumentation" />
+		<!-- Keywords -->
+		<itemData name="Keyword" defStyleNum="dsKeyword" />
+		<itemData name="Crash" defStyleNum="dsControlFlow" />
+		<!-- Names -->
+		<itemData name="Attribute" defStyleNum="dsAttribute" />
+		<itemData name="Module" defStyleNum="dsImport" />
+		<itemData name="Function" defStyleNum="dsFunction" />
+		<itemData name="Type" defStyleNum="dsDataType" />
+		<!-- Numbers -->
+		<itemData name="Binary" defStyleNum="dsBaseN" />
+		<itemData name="Octal" defStyleNum="dsBaseN" />
+		<itemData name="Decimal" defStyleNum="dsDecVal" />
+		<itemData name="Hex" defStyleNum="dsBaseN" />
+		<itemData name="Float" defStyleNum="dsFloat" />
+		<!-- Symbols -->
+		<itemData name="Symbol" defStyleNum="dsOperator" />
+	</itemDatas>
+</highlighting>
+<general>
+	<comments>
+		<comment name="singleLine" start="//" position="afterwhitespace"/>
+	</comments>
+	<keywords casesensitive="true"/>
+	<folding indentationsensitive="false"/>
+</general>
+</language>
diff --git a/xml/glsl.xml b/xml/glsl.xml
--- a/xml/glsl.xml
+++ b/xml/glsl.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="10" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL">
+<!DOCTYPE language>
+<language name="GLSL" section="3D" extensions="*.glsl;*.vert;*.vs;*.frag;*.fs;*.geom;*.gs;*.tcs;*.tes" mimetype="text/x-glslsrc" version="12" kateversion="5.0" author="Oliver Richers (o.richers@tu-bs.de)" license="LGPL" indenter="cstyle">
 	<!--
 		Based on GLSLangSpec.4.60.pdf
 		https://www.khronos.org/registry/OpenGL/specs/gl/
@@ -189,7 +189,7 @@
 			<item>uimage2D</item>
 
 			<item>usampler2DArray</item>
-			<item>utexture1DArray</item>
+			<item>utexture2DArray</item>
 			<item>uimage2DArray</item>
 
 			<item>usampler2DMS</item>
@@ -292,7 +292,6 @@
 
 			<!-- tesselation -->
 			<item>isolines</item>
-			<item>triangles</item>
 			<item>quads</item>
 			<item>point_mode</item>
 			<item>equal_spacing</item>
@@ -337,7 +336,6 @@
 			<item>atomicCounterXor</item>
 			<item>atomicAdd</item>
 			<item>atomicAnd</item>
-			<item>atomicCompSwap</item>
 			<item>atomicExchange</item>
 			<item>atomicMax</item>
 			<item>atomicMin</item>
@@ -1192,7 +1190,6 @@
 			<item>gl_MultiTexCoord0</item>
 			<item>gl_MultiTexCoord1</item>
 			<item>gl_MultiTexCoord2</item>
-			<item>gl_MultiTexCoord2</item>
 			<item>gl_MultiTexCoord3</item>
 			<item>gl_MultiTexCoord4</item>
 			<item>gl_MultiTexCoord5</item>
@@ -1221,7 +1218,6 @@
 			<item>gl_MaxAtomicCounterBindings</item>
 			<item>gl_MaxAtomicCounterBufferSize</item>
 			<item>gl_MaxClipDistances</item>
-			<item>gl_MaxClipPlanes</item>
 			<item>gl_MaxCombinedAtomicCounterBuffers</item>
 			<item>gl_MaxCombinedAtomicCounters</item>
 			<item>gl_MaxCombinedClipAndCullDistances</item>
@@ -1257,7 +1253,6 @@
 			<item>gl_MaxImageUnits</item>
 			<item>gl_MaxInputAttachments</item>
 			<item>gl_MaxLights</item>
-			<item>gl_MaxPatchVertices</item>
 			<item>gl_MaxProgramTexelOffset</item>
 			<item>gl_MaxSamples</item>
 			<item>gl_MaxTessControlAtomicCounterBuffers</item>
@@ -1277,13 +1272,10 @@
 			<item>gl_MaxTessEvaluationUniformComponents</item>
 			<item>gl_MaxTessGenLevel</item>
 			<item>gl_MaxTessPatchComponents</item>
-			<item>gl_MaxTextureCoords</item>
 			<item>gl_MaxTextureImageUnits</item>
-			<item>gl_MaxTextureUnits</item>
 			<item>gl_MaxTransformFeedbackBuffers</item>
 			<item>gl_MaxTransformFeedbackInterleavedComponents</item>
 			<item>gl_MaxVaryingComponents</item>
-			<item>gl_MaxVaryingFloats</item>
 			<item>gl_MaxVaryingVectors</item>
 			<item>gl_MaxVertexAtomicCounterBuffers</item>
 			<item>gl_MaxVertexAtomicCounters</item>
@@ -1359,8 +1351,6 @@
 			<item>gl_BackSecondaryColor</item>
 			<item>gl_TexCoord</item>
 			<item>gl_FogFragCoord</item>
-			<item>gl_Color</item>
-			<item>gl_SecondaryColor</item>
 		</list>
 		<contexts>
 			<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
diff --git a/xml/gnuassembler.xml b/xml/gnuassembler.xml
--- a/xml/gnuassembler.xml
+++ b/xml/gnuassembler.xml
@@ -1,2332 +1,5138 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<!--
-
-*************************************************************************
-*                                                                       *
-*               Syntax highlighting for the GNU Assembler               *
-*                   Copyright (C) 2002, John Zaitseff                   *
-*                   Copyright (C) 2021, Waqar Ahmed                     *
-*                                                                       *
-*************************************************************************
-
-Updated:  Waqar Ahmed <waqar.17a@gmail.com>
-Date:     30 April, 2021
-Version:  2.0
-
-Updated:  Miquel Sabaté <mikisabate@gmail.com>
-Date:     14th September, 2010
-Version:  1.02
-
-Updated:  Roland Pabel <roland@pabel.name>
-Date:     15th August, 2002
-Version:  1.01
-
-Author:   John Zaitseff <J.Zaitseff@zap.org.au>
-Date:     15th April, 2002
-Version:  1.0
-
-This file contains the XML syntax highlighting description for the GNU
-Assembler, for KATE, the KDE Advanced Editor.  Keywords have been taken
-directly from the GNU Assembler source code (read.c).
-
-Known problems: Floating point highlighting does not work correctly.
-
-This program, including associated files, is free software.  You may
-distribute it and/or modify it under the terms of the GNU General Public
-License as published by the Free Software Foundation; either Version 2 of
-the license, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-for more details.
-
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
--->
-
-<language name="GNU Assembler" version="9" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com) Waqar Ahmed (waqar.17a@gmail.com)" license="GPLv2+">
-  <highlighting>
-    <list name="registers">
-      <!-- General purpose registers -->
-      <item>rax</item>
-      <item>eax</item>
-      <item>ax</item>
-      <item>ah</item>
-      <item>al</item>
-      <item>rbx</item>
-      <item>ebx</item>
-      <item>bx</item>
-      <item>bh</item>
-      <item>bl</item>
-      <item>rcx</item>
-      <item>ecx</item>
-      <item>cx</item>
-      <item>ch</item>
-      <item>cl</item>
-      <item>rdx</item>
-      <item>edx</item>
-      <item>dx</item>
-      <item>dh</item>
-      <item>dl</item>
-      <item>rbp</item>
-      <item>ebp</item>
-      <item>bp</item>
-      <item>bpl</item>
-      <item>rsi</item>
-      <item>esi</item>
-      <item>si</item>
-      <item>sil</item>
-      <item>rdi</item>
-      <item>edi</item>
-      <item>di</item>
-      <item>dil</item>
-
-      <item>rip</item>
-      <item>eip</item>
-      <item>ip</item>
-
-      <item>rsp</item>
-      <item>esp</item>
-      <item>sp</item>
-      <item>spl</item>
-      <item>r8</item>
-      <item>r8d</item>
-      <item>r8w</item>
-      <item>r8b</item>
-      <item>r9</item>
-      <item>r9d</item>
-      <item>r9w</item>
-      <item>r9b</item>
-      <item>r10</item>
-      <item>r10d</item>
-      <item>r10w</item>
-      <item>r10b</item>
-      <item>r11</item>
-      <item>r11d</item>
-      <item>r11w</item>
-      <item>r11b</item>
-      <item>r12</item>
-      <item>r12d</item>
-      <item>r12w</item>
-      <item>r12b</item>
-      <item>r13</item>
-      <item>r13d</item>
-      <item>r13w</item>
-      <item>r13b</item>
-      <item>r14</item>
-      <item>r14d</item>
-      <item>r14w</item>
-      <item>r14b</item>
-      <item>r15</item>
-      <item>r15d</item>
-      <item>r15w</item>
-      <item>r15b</item>
-      <!-- Segmentation registers -->
-      <item>cs</item>
-      <item>ds</item>
-      <item>es</item>
-      <item>fs</item>
-      <item>gs</item>
-      <item>ss</item>
-      <!-- Control registers -->
-      <item>cr0</item>
-      <!--<item>cr1</item>-->
-      <item>cr2</item>
-      <item>cr3</item>
-      <item>cr4</item>
-      <!-- Debug registers -->
-      <item>dr0</item>
-      <item>dr1</item>
-      <item>dr2</item>
-      <item>dr3</item>
-      <item>dr6</item>
-      <item>dr7</item>
-      <!-- x87 FPU Registers -->
-      <item>st</item>
-      <!-- MMX registers -->
-      <item>mm0</item>
-      <item>mm1</item>
-      <item>mm2</item>
-      <item>mm3</item>
-      <item>mm4</item>
-      <item>mm5</item>
-      <item>mm6</item>
-      <item>mm7</item>
-      <!-- XMM registers -->
-      <item>xmm0</item>
-      <item>xmm1</item>
-      <item>xmm2</item>
-      <item>xmm3</item>
-      <item>xmm4</item>
-      <item>xmm5</item>
-      <item>xmm6</item>
-      <item>xmm7</item>
-      <item>xmm8</item>
-      <item>xmm9</item>
-      <item>xmm10</item>
-      <item>xmm11</item>
-      <item>xmm12</item>
-      <item>xmm13</item>
-      <item>xmm14</item>
-      <item>xmm15</item>
-      <item>xmm16</item>
-      <item>xmm17</item>
-      <item>xmm18</item>
-      <item>xmm19</item>
-      <item>xmm20</item>
-      <item>xmm21</item>
-      <item>xmm22</item>
-      <item>xmm23</item>
-      <item>xmm24</item>
-      <item>xmm25</item>
-      <item>xmm26</item>
-      <item>xmm27</item>
-      <item>xmm28</item>
-      <item>xmm29</item>
-      <item>xmm30</item>
-      <item>xmm31</item>
-      <!-- YMM registers -->
-      <item>ymm0</item>
-      <item>ymm1</item>
-      <item>ymm2</item>
-      <item>ymm3</item>
-      <item>ymm4</item>
-      <item>ymm5</item>
-      <item>ymm6</item>
-      <item>ymm7</item>
-      <item>ymm8</item>
-      <item>ymm9</item>
-      <item>ymm10</item>
-      <item>ymm11</item>
-      <item>ymm12</item>
-      <item>ymm13</item>
-      <item>ymm14</item>
-      <item>ymm15</item>
-      <item>ymm16</item>
-      <item>ymm17</item>
-      <item>ymm18</item>
-      <item>ymm19</item>
-      <item>ymm20</item>
-      <item>ymm21</item>
-      <item>ymm22</item>
-      <item>ymm23</item>
-      <item>ymm24</item>
-      <item>ymm25</item>
-      <item>ymm26</item>
-      <item>ymm27</item>
-      <item>ymm28</item>
-      <item>ymm29</item>
-      <item>ymm30</item>
-      <item>ymm31</item>
-      <!-- ZMM registers -->
-      <item>zmm0</item>
-      <item>zmm1</item>
-      <item>zmm2</item>
-      <item>zmm3</item>
-      <item>zmm4</item>
-      <item>zmm5</item>
-      <item>zmm6</item>
-      <item>zmm7</item>
-      <item>zmm8</item>
-      <item>zmm9</item>
-      <item>zmm10</item>
-      <item>zmm11</item>
-      <item>zmm12</item>
-      <item>zmm13</item>
-      <item>zmm14</item>
-      <item>zmm15</item>
-      <item>zmm16</item>
-      <item>zmm17</item>
-      <item>zmm18</item>
-      <item>zmm19</item>
-      <item>zmm20</item>
-      <item>zmm21</item>
-      <item>zmm22</item>
-      <item>zmm23</item>
-      <item>zmm24</item>
-      <item>zmm25</item>
-      <item>zmm26</item>
-      <item>zmm27</item>
-      <item>zmm28</item>
-      <item>zmm29</item>
-      <item>zmm30</item>
-      <item>zmm31</item>
-    </list>
-
-    <list name="instructions">
-      <item>lock</item>
-      <item>rep</item>
-      <item>repe</item>
-      <item>repz</item>
-      <item>repne</item>
-      <item>repnz</item>
-      <item>xaquire</item>
-      <item>xrelease</item>
-      <item>bnd</item>
-      <item>nobnd</item>
-      <item>aaa</item>
-      <item>aad</item>
-      <item>aam</item>
-      <item>aas</item>
-      <item>adc</item>
-      <item>addb</item>
-      <item>addw</item>
-      <item>addl</item>
-      <item>addq</item>
-      <item>and</item>
-      <item>arpl</item>
-      <item>bb0_reset</item>
-      <item>bb1_reset</item>
-      <item>bound</item>
-      <item>bsf</item>
-      <item>bsr</item>
-      <item>bswap</item>
-      <item>bt</item>
-      <item>btc</item>
-      <item>btr</item>
-      <item>bts</item>
-      <item>cbw</item>
-      <item>cdq</item>
-      <item>cdqe</item>
-      <item>clc</item>
-      <item>cld</item>
-      <item>cli</item>
-      <item>clts</item>
-      <item>cltd</item>
-      <item>cbtw</item>
-      <item>cwtl</item>
-      <item>cwtd</item>
-      <item>cltq</item>
-      <item>cqto</item>
-      <item>cmc</item>
-      <item>cmpb</item>
-      <item>cmpw</item>
-      <item>cmpl</item>
-      <item>cmpq</item>
-      <item>cmpsb</item>
-      <item>cmpsd</item>
-      <item>cmpsq</item>
-      <item>cmpsw</item>
-      <item>cmpxchg</item>
-      <item>cmpxchg486</item>
-      <item>cmpxchg8b</item>
-      <item>cmpxchg16b</item>
-      <item>cpuid</item>
-      <item>cpu_read</item>
-      <item>cpu_write</item>
-      <item>cqo</item>
-      <item>cwd</item>
-      <item>cwde</item>
-      <item>daa</item>
-      <item>das</item>
-      <item>dec</item>
-      <item>decl</item>
-      <item>decq</item>
-      <item>div</item>
-      <item>divb</item>
-      <item>divw</item>
-      <item>divl</item>
-      <item>divq</item>
-      <item>dmint</item>
-      <item>emms</item>
-      <item>enter</item>
-      <item>equ</item>
-      <item>f2xm1</item>
-      <item>fabs</item>
-      <item>fadd</item>
-      <item>faddp</item>
-      <item>fbld</item>
-      <item>fbstp</item>
-      <item>fchs</item>
-      <item>fclex</item>
-      <item>fcmovb</item>
-      <item>fcmovbe</item>
-      <item>fcmove</item>
-      <item>fcmovnb</item>
-      <item>fcmovnbe</item>
-      <item>fcmovne</item>
-      <item>fcmovnu</item>
-      <item>fcmovu</item>
-      <item>fcom</item>
-      <item>fcomi</item>
-      <item>fcomip</item>
-      <item>fcomp</item>
-      <item>fcompp</item>
-      <item>fcos</item>
-      <item>fdecstp</item>
-      <item>fdisi</item>
-      <item>fdiv</item>
-      <item>fdivp</item>
-      <item>fdivr</item>
-      <item>fdivrp</item>
-      <item>femms</item>
-      <item>feni</item>
-      <item>ffree</item>
-      <item>ffreep</item>
-      <item>fiadd</item>
-      <item>ficom</item>
-      <item>ficomp</item>
-      <item>fidiv</item>
-      <item>fidivr</item>
-      <item>fild</item>
-      <item>fimul</item>
-      <item>fincstp</item>
-      <item>finit</item>
-      <item>fist</item>
-      <item>fistp</item>
-      <item>fisttp</item>
-      <item>fisub</item>
-      <item>fisubr</item>
-      <item>fld</item>
-      <item>fld1</item>
-      <item>fldcw</item>
-      <item>fldenv</item>
-      <item>fldl2e</item>
-      <item>fldl2t</item>
-      <item>fldlg2</item>
-      <item>fldln2</item>
-      <item>fldpi</item>
-      <item>fldz</item>
-      <item>fmul</item>
-      <item>fmulp</item>
-      <item>fnclex</item>
-      <item>fndisi</item>
-      <item>fneni</item>
-      <item>fninit</item>
-      <item>fnop</item>
-      <item>fnsave</item>
-      <item>fnstcw</item>
-      <item>fnstenv</item>
-      <item>fnstsw</item>
-      <item>fpatan</item>
-      <item>fprem</item>
-      <item>fprem1</item>
-      <item>fptan</item>
-      <item>frndint</item>
-      <item>frstor</item>
-      <item>fsave</item>
-      <item>fscale</item>
-      <item>fsetpm</item>
-      <item>fsin</item>
-      <item>fsincos</item>
-      <item>fsqrt</item>
-      <item>fst</item>
-      <item>fstcw</item>
-      <item>fstenv</item>
-      <item>fstp</item>
-      <item>fstsw</item>
-      <item>fsub</item>
-      <item>fsubp</item>
-      <item>fsubr</item>
-      <item>fsubrp</item>
-      <item>ftst</item>
-      <item>fucom</item>
-      <item>fucomi</item>
-      <item>fucomip</item>
-      <item>fucomp</item>
-      <item>fucompp</item>
-      <item>fxam</item>
-      <item>fxch</item>
-      <item>fxtract</item>
-      <item>fyl2x</item>
-      <item>fyl2xp1</item>
-      <item>global</item>
-      <item>globl</item>
-      <item>hlt</item>
-      <item>ibts</item>
-      <item>icebp</item>
-      <item>idiv</item>
-      <item>idivb</item>
-      <item>idivw</item>
-      <item>idivl</item>
-      <item>idivq</item>
-      <item>imul</item>
-      <item>imulb</item>
-      <item>imulw</item>
-      <item>imull</item>
-      <item>imulq</item>
-      <item>in</item>
-      <item>inc</item>
-      <item>incl</item>
-      <item>incq</item>
-      <item>incbin</item>
-      <item>insb</item>
-      <item>insd</item>
-      <item>insw</item>
-      <item>int</item>
-      <item>int01</item>
-      <item>int1</item>
-      <item>int03</item>
-      <item>int3</item>
-      <item>into</item>
-      <item>invd</item>
-      <item>invpcid</item>
-      <item>invlpg</item>
-      <item>invlpga</item>
-      <item>iret</item>
-      <item>iretd</item>
-      <item>iretq</item>
-      <item>iretw</item>
-      <item>jcxz</item>
-      <item>jecxz</item>
-      <item>jrcxz</item>
-      <item>lahf</item>
-      <item>lar</item>
-      <item>lds</item>
-      <item>leal</item>
-      <item>leaq</item>
-      <item>leave</item>
-      <item>les</item>
-      <item>lfence</item>
-      <item>lfs</item>
-      <item>lgdt</item>
-      <item>lgs</item>
-      <item>lidt</item>
-      <item>lldt</item>
-      <item>lmsw</item>
-      <item>loadall</item>
-      <item>loadall286</item>
-      <item>lodsb</item>
-      <item>lodsd</item>
-      <item>lodsq</item>
-      <item>lodsw</item>
-      <item>loop</item>
-      <item>loope</item>
-      <item>loopne</item>
-      <item>loopnz</item>
-      <item>loopz</item>
-      <item>lsl</item>
-      <item>lss</item>
-      <item>ltr</item>
-      <item>mfence</item>
-      <item>monitor</item>
-      <item>movb</item>
-      <item>movw</item>
-      <item>movl</item>
-      <item>movq</item>
-      <item>movsb</item>
-      <item>movsd</item>
-      <item>movsq</item>
-      <item>movsw</item>
-      <item>movsx</item>
-      <item>movsxd</item>
-      <item>movzx</item>
-      <item>movsbw</item>
-      <item>movsxb</item>
-      <item>movsbl</item>
-      <item>movsbq</item>
-      <item>movswl</item>
-      <item>movsxw</item>
-      <item>movswq</item>
-      <item>movslq</item>
-      <item>movsxl</item>
-      <item>movzbw</item>
-      <item>movzxb</item>
-      <item>movzbl</item>
-      <item>movzbq</item>
-      <item>movzwl</item>
-      <item>movzxw</item>
-      <item>movzwq</item>
-      <item>mul</item>
-      <item>mulb</item>
-      <item>mulw</item>
-      <item>mull</item>
-      <item>mulq</item>
-      <item>mwait</item>
-      <item>neg</item>
-      <item>nop</item>
-      <item>not</item>
-      <item>or</item>
-      <item>out</item>
-      <item>outsb</item>
-      <item>outsd</item>
-      <item>outsw</item>
-      <item>packssdw</item>
-      <item>packsswb</item>
-      <item>packuswb</item>
-      <item>paddb</item>
-      <item>paddd</item>
-      <item>paddsb</item>
-      <item>paddsiw</item>
-      <item>paddsw</item>
-      <item>paddusb</item>
-      <item>paddusw</item>
-      <item>paddw</item>
-      <item>pand</item>
-      <item>pandn</item>
-      <item>pause</item>
-      <item>paveb</item>
-      <item>pavgusb</item>
-      <item>pcmpeqb</item>
-      <item>pcmpeqd</item>
-      <item>pcmpeqw</item>
-      <item>pcmpgtb</item>
-      <item>pcmpgtd</item>
-      <item>pcmpgtw</item>
-      <item>pdistib</item>
-      <item>pf2id</item>
-      <item>pfacc</item>
-      <item>pfadd</item>
-      <item>pfcmpeq</item>
-      <item>pfcmpge</item>
-      <item>pfcmpgt</item>
-      <item>pfmax</item>
-      <item>pfmin</item>
-      <item>pfmul</item>
-      <item>pfrcp</item>
-      <item>pfrcpit1</item>
-      <item>pfrcpit2</item>
-      <item>pfrsqit1</item>
-      <item>pfrsqrt</item>
-      <item>pfsub</item>
-      <item>pfsubr</item>
-      <item>pi2fd</item>
-      <item>pmachriw</item>
-      <item>pmaddwd</item>
-      <item>pmagw</item>
-      <item>pmulhriw</item>
-      <item>pmulhrwa</item>
-      <item>pmulhrwc</item>
-      <item>pmulhw</item>
-      <item>pmullw</item>
-      <item>pmvgezb</item>
-      <item>pmvlzb</item>
-      <item>pmvnzb</item>
-      <item>pmvzb</item>
-      <item>pop</item>
-      <item>popl</item>
-      <item>popq</item>
-      <item>popa</item>
-      <item>popad</item>
-      <item>popaw</item>
-      <item>popf</item>
-      <item>popfd</item>
-      <item>popfq</item>
-      <item>popfw</item>
-      <item>por</item>
-      <item>prefetch</item>
-      <item>prefetchw</item>
-      <item>pslld</item>
-      <item>psllq</item>
-      <item>psllw</item>
-      <item>psrad</item>
-      <item>psraw</item>
-      <item>psrld</item>
-      <item>psrlq</item>
-      <item>psrlw</item>
-      <item>psubb</item>
-      <item>psubd</item>
-      <item>psubsb</item>
-      <item>psubsiw</item>
-      <item>psubsw</item>
-      <item>psubusb</item>
-      <item>psubusw</item>
-      <item>psubw</item>
-      <item>punpckhbw</item>
-      <item>punpckhdq</item>
-      <item>punpckhwd</item>
-      <item>punpcklbw</item>
-      <item>punpckldq</item>
-      <item>punpcklwd</item>
-      <item>push</item>
-      <item>pusha</item>
-      <item>pushl</item>
-      <item>pushq</item>
-      <item>pushad</item>
-      <item>pushaw</item>
-      <item>pushf</item>
-      <item>pushfd</item>
-      <item>pushfq</item>
-      <item>pushfw</item>
-      <item>pxor</item>
-      <item>rcl</item>
-      <item>rcr</item>
-      <item>rdshr</item>
-      <item>rdmsr</item>
-      <item>rdpmc</item>
-      <item>rdtsc</item>
-      <item>rdtscp</item>
-      <item>ret</item>
-      <item>retf</item>
-      <item>retn</item>
-      <item>retq</item>
-      <item>rol</item>
-      <item>ror</item>
-      <item>rdm</item>
-      <item>rsdc</item>
-      <item>rsldt</item>
-      <item>rsm</item>
-      <item>rsts</item>
-      <item>sahf</item>
-      <item>sal</item>
-      <item>sall</item>
-      <item>salq</item>
-      <item>salc</item>
-      <item>sar</item>
-      <item>sarl</item>
-      <item>sarq</item>
-      <item>sbb</item>
-      <item>scasb</item>
-      <item>scasd</item>
-      <item>scasq</item>
-      <item>scasw</item>
-      <item>sfence</item>
-      <item>sgdt</item>
-      <item>shl</item>
-      <item>shll</item>
-      <item>shllq</item>
-      <item>shld</item>
-      <item>shr</item>
-      <item>shrd</item>
-      <item>sidt</item>
-      <item>sldt</item>
-      <item>skinit</item>
-      <item>smi</item>
-      <item>smint</item>
-      <item>smintold</item>
-      <item>smsw</item>
-      <item>stc</item>
-      <item>std</item>
-      <item>sti</item>
-      <item>stosb</item>
-      <item>stosd</item>
-      <item>stosq</item>
-      <item>stosw</item>
-      <item>str</item>
-      <item>sub</item>
-      <item>subw</item>
-      <item>subl</item>
-      <item>subq</item>
-      <item>svdc</item>
-      <item>svldt</item>
-      <item>svts</item>
-      <item>swapgs</item>
-      <item>syscall</item>
-      <item>sysenter</item>
-      <item>sysexit</item>
-      <item>sysret</item>
-      <item>test</item>
-      <item>testl</item>
-      <item>testq</item>
-      <item>ud0</item>
-      <item>ud1</item>
-      <item>ud2b</item>
-      <item>ud2</item>
-      <item>ud2a</item>
-      <item>umov</item>
-      <item>verr</item>
-      <item>verw</item>
-      <item>fwait</item>
-      <item>wbinvd</item>
-      <item>wrshr</item>
-      <item>wrmsr</item>
-      <item>xadd</item>
-      <item>xbts</item>
-      <item>xchg</item>
-      <item>xlatb</item>
-      <item>xlat</item>
-      <item>xor</item>
-      <item>xorl</item>
-      <item>xorq</item>
-      <item>cmove</item>
-      <item>cmovz</item>
-      <item>cmovne</item>
-      <item>cmovnz</item>
-      <item>cmova</item>
-      <item>cmovnbe</item>
-      <item>cmovae</item>
-      <item>cmovnb</item>
-      <item>cmovb</item>
-      <item>cmovnae</item>
-      <item>cmovbe</item>
-      <item>cmovna</item>
-      <item>cmovg</item>
-      <item>cmovnle</item>
-      <item>cmovge</item>
-      <item>cmovnl</item>
-      <item>cmovl</item>
-      <item>cmovnge</item>
-      <item>cmovle</item>
-      <item>cmovng</item>
-      <item>cmovc</item>
-      <item>cmovnc</item>
-      <item>cmovo</item>
-      <item>cmovno</item>
-      <item>cmovs</item>
-      <item>cmovns</item>
-      <item>cmovp</item>
-      <item>cmovpe</item>
-      <item>cmovnp</item>
-      <item>cmovpo</item>
-      <item>sete</item>
-      <item>setz</item>
-      <item>setne</item>
-      <item>setnz</item>
-      <item>seta</item>
-      <item>setnbe</item>
-      <item>setae</item>
-      <item>setnb</item>
-      <item>setnc</item>
-      <item>setb</item>
-      <item>setnae</item>
-      <item>setcset</item>
-      <item>setbe</item>
-      <item>setna</item>
-      <item>setg</item>
-      <item>setnle</item>
-      <item>setge</item>
-      <item>setnl</item>
-      <item>setl</item>
-      <item>setnge</item>
-      <item>setle</item>
-      <item>setng</item>
-      <item>sets</item>
-      <item>setns</item>
-      <item>seto</item>
-      <item>setno</item>
-      <item>setpe</item>
-      <item>setp</item>
-      <item>setpo</item>
-      <item>setnp</item>
-      <item>addps</item>
-      <item>addss</item>
-      <item>andnps</item>
-      <item>andps</item>
-      <item>cmpeqps</item>
-      <item>cmpeqss</item>
-      <item>cmpleps</item>
-      <item>cmpless</item>
-      <item>cmpltps</item>
-      <item>cmpltss</item>
-      <item>cmpneqps</item>
-      <item>cmpneqss</item>
-      <item>cmpnleps</item>
-      <item>cmpnless</item>
-      <item>cmpnltps</item>
-      <item>cmpnltss</item>
-      <item>cmpordps</item>
-      <item>cmpordss</item>
-      <item>cmpunordps</item>
-      <item>cmpunordss</item>
-      <item>cmpps</item>
-      <item>cmpss</item>
-      <item>comiss</item>
-      <item>cvtpi2ps</item>
-      <item>cvtps2pi</item>
-      <item>cvtsi2ss</item>
-      <item>cvtss2si</item>
-      <item>cvttps2pi</item>
-      <item>cvttss2si</item>
-      <item>divps</item>
-      <item>divss</item>
-      <item>ldmxcsr</item>
-      <item>maxps</item>
-      <item>maxss</item>
-      <item>minps</item>
-      <item>minss</item>
-      <item>movaps</item>
-      <item>movhps</item>
-      <item>movlhps</item>
-      <item>movlps</item>
-      <item>movhlps</item>
-      <item>movmskps</item>
-      <item>movntps</item>
-      <item>movss</item>
-      <item>movups</item>
-      <item>mulps</item>
-      <item>mulss</item>
-      <item>orps</item>
-      <item>rcpps</item>
-      <item>rcpss</item>
-      <item>rsqrtps</item>
-      <item>rsqrtss</item>
-      <item>shufps</item>
-      <item>sqrtps</item>
-      <item>sqrtss</item>
-      <item>stmxcsr</item>
-      <item>subps</item>
-      <item>subss</item>
-      <item>ucomiss</item>
-      <item>unpckhps</item>
-      <item>unpcklps</item>
-      <item>xorps</item>
-      <item>fxrstor</item>
-      <item>fxrstor64</item>
-      <item>fxsave</item>
-      <item>fxsave64</item>
-      <item>xgetbv</item>
-      <item>xsetbv</item>
-      <item>xsave</item>
-      <item>xsave64</item>
-      <item>xsaveopt</item>
-      <item>xsaveopt64</item>
-      <item>xrstor</item>
-      <item>xrstor64</item>
-      <item>prefetchnta</item>
-      <item>prefetcht0</item>
-      <item>prefetcht1</item>
-      <item>prefetcht2</item>
-      <item>maskmovq</item>
-      <item>movntq</item>
-      <item>pavgb</item>
-      <item>pavgw</item>
-      <item>pextrw</item>
-      <item>pinsrw</item>
-      <item>pmaxsw</item>
-      <item>pmaxub</item>
-      <item>pminsw</item>
-      <item>pminub</item>
-      <item>pmovmskb</item>
-      <item>pmulhuw</item>
-      <item>psadbw</item>
-      <item>pshufw</item>
-      <item>pf2iw</item>
-      <item>pfnacc</item>
-      <item>pfpnacc</item>
-      <item>pi2fw</item>
-      <item>pswapd</item>
-      <item>maskmovdqu</item>
-      <item>clflush</item>
-      <item>movntdq</item>
-      <item>movnti</item>
-      <item>movntpd</item>
-      <item>movdqa</item>
-      <item>movdqu</item>
-      <item>movdq2q</item>
-      <item>movq2dq</item>
-      <item>paddq</item>
-      <item>pmuludq</item>
-      <item>pshufd</item>
-      <item>pshufhw</item>
-      <item>pshuflw</item>
-      <item>pslldq</item>
-      <item>psrldq</item>
-      <item>psubq</item>
-      <item>punpckhqdq</item>
-      <item>punpcklqdq</item>
-      <item>addpd</item>
-      <item>addsd</item>
-      <item>andnpd</item>
-      <item>andpd</item>
-      <item>cmpeqpd</item>
-      <item>cmpeqsd</item>
-      <item>cmplepd</item>
-      <item>cmplesd</item>
-      <item>cmpltpd</item>
-      <item>cmpltsd</item>
-      <item>cmpneqpd</item>
-      <item>cmpneqsd</item>
-      <item>cmpnlepd</item>
-      <item>cmpnlesd</item>
-      <item>cmpnltpd</item>
-      <item>cmpnltsd</item>
-      <item>cmpordpd</item>
-      <item>cmpordsd</item>
-      <item>cmpunordpd</item>
-      <item>cmpunordsd</item>
-      <item>cmppd</item>
-      <item>comisd</item>
-      <item>cvtdq2pd</item>
-      <item>cvtdq2ps</item>
-      <item>cvtpd2dq</item>
-      <item>cvtpd2pi</item>
-      <item>cvtpd2ps</item>
-      <item>cvtpi2pd</item>
-      <item>cvtps2dq</item>
-      <item>cvtps2pd</item>
-      <item>cvtsd2si</item>
-      <item>cvtsd2ss</item>
-      <item>cvtsi2sd</item>
-      <item>cvtss2sd</item>
-      <item>cvttpd2pi</item>
-      <item>cvttpd2dq</item>
-      <item>cvttps2dq</item>
-      <item>cvttsd2si</item>
-      <item>divpd</item>
-      <item>divsd</item>
-      <item>maxpd</item>
-      <item>maxsd</item>
-      <item>minpd</item>
-      <item>minsd</item>
-      <item>movapd</item>
-      <item>movhpd</item>
-      <item>movlpd</item>
-      <item>movmskpd</item>
-      <item>movupd</item>
-      <item>mulpd</item>
-      <item>mulsd</item>
-      <item>orpd</item>
-      <item>shufpd</item>
-      <item>sqrtpd</item>
-      <item>sqrtsd</item>
-      <item>subpd</item>
-      <item>subsd</item>
-      <item>ucomisd</item>
-      <item>unpckhpd</item>
-      <item>unpcklpd</item>
-      <item>xorpd</item>
-      <item>addsubpd</item>
-      <item>addsubps</item>
-      <item>haddpd</item>
-      <item>haddps</item>
-      <item>hsubpd</item>
-      <item>hsubps</item>
-      <item>lddqu</item>
-      <item>movddup</item>
-      <item>movshdup</item>
-      <item>movsldup</item>
-      <item>clgi</item>
-      <item>stgi</item>
-      <item>vmcall</item>
-      <item>vmclear</item>
-      <item>vmfunc</item>
-      <item>vmlaunch</item>
-      <item>vmload</item>
-      <item>vmmcall</item>
-      <item>vmptrld</item>
-      <item>vmptrst</item>
-      <item>vmread</item>
-      <item>vmresume</item>
-      <item>vmrun</item>
-      <item>vmsave</item>
-      <item>vmwrite</item>
-      <item>vmxoff</item>
-      <item>vmxon</item>
-      <item>invept</item>
-      <item>invvpid</item>
-      <item>pabsb</item>
-      <item>pabsw</item>
-      <item>pabsd</item>
-      <item>palignr</item>
-      <item>phaddw</item>
-      <item>phaddd</item>
-      <item>phaddsw</item>
-      <item>phsubw</item>
-      <item>phsubd</item>
-      <item>phsubsw</item>
-      <item>pmaddubsw</item>
-      <item>pmulhrsw</item>
-      <item>pshufb</item>
-      <item>psignb</item>
-      <item>psignw</item>
-      <item>psignd</item>
-      <item>extrq</item>
-      <item>insertq</item>
-      <item>movntsd</item>
-      <item>movntss</item>
-      <item>lzcnt</item>
-      <item>blendpd</item>
-      <item>blendps</item>
-      <item>blendvpd</item>
-      <item>blendvps</item>
-      <item>dppd</item>
-      <item>dpps</item>
-      <item>extractps</item>
-      <item>insertps</item>
-      <item>movntdqa</item>
-      <item>mpsadbw</item>
-      <item>packusdw</item>
-      <item>pblendvb</item>
-      <item>pblendw</item>
-      <item>pcmpeqq</item>
-      <item>pextrb</item>
-      <item>pextrd</item>
-      <item>pextrq</item>
-      <item>phminposuw</item>
-      <item>pinsrb</item>
-      <item>pinsrd</item>
-      <item>pinsrq</item>
-      <item>pmaxsb</item>
-      <item>pmaxsd</item>
-      <item>pmaxud</item>
-      <item>pmaxuw</item>
-      <item>pminsb</item>
-      <item>pminsd</item>
-      <item>pminud</item>
-      <item>pminuw</item>
-      <item>pmovsxbw</item>
-      <item>pmovsxbd</item>
-      <item>pmovsxbq</item>
-      <item>pmovsxwd</item>
-      <item>pmovsxwq</item>
-      <item>pmovsxdq</item>
-      <item>pmovzxbw</item>
-      <item>pmovzxbd</item>
-      <item>pmovzxbq</item>
-      <item>pmovzxwd</item>
-      <item>pmovzxwq</item>
-      <item>pmovzxdq</item>
-      <item>pmuldq</item>
-      <item>pmulld</item>
-      <item>ptest</item>
-      <item>roundpd</item>
-      <item>roundps</item>
-      <item>roundsd</item>
-      <item>roundss</item>
-      <item>crc32</item>
-      <item>pcmpestri</item>
-      <item>pcmpestrm</item>
-      <item>pcmpistri</item>
-      <item>pcmpistrm</item>
-      <item>pcmpgtq</item>
-      <item>popcnt</item>
-      <item>getsec</item>
-      <item>pfrcpv</item>
-      <item>pfrsqrtv</item>
-      <item>movbe</item>
-      <item>aesenc</item>
-      <item>aesenclast</item>
-      <item>aesdec</item>
-      <item>aesdeclast</item>
-      <item>aesimc</item>
-      <item>aeskeygenassist</item>
-      <item>vaesenc</item>
-      <item>vaesenclast</item>
-      <item>vaesdec</item>
-      <item>vaesdeclast</item>
-      <item>vaesimc</item>
-      <item>vaeskeygenassist</item>
-      <item>vaddpd</item>
-      <item>vaddps</item>
-      <item>vaddsd</item>
-      <item>vaddss</item>
-      <item>vaddsubpd</item>
-      <item>vaddsubps</item>
-      <item>vandpd</item>
-      <item>vandps</item>
-      <item>vandnpd</item>
-      <item>vandnps</item>
-      <item>vblendpd</item>
-      <item>vblendps</item>
-      <item>vblendvpd</item>
-      <item>vblendvps</item>
-      <item>vbroadcastss</item>
-      <item>vbroadcastsd</item>
-      <item>vbroadcastf128</item>
-      <item>vcmpeq_ospd</item>
-      <item>vcmpeqpd</item>
-      <item>vcmplt_ospd</item>
-      <item>vcmpltpd</item>
-      <item>vcmple_ospd</item>
-      <item>vcmplepd</item>
-      <item>vcmpunord_qpd</item>
-      <item>vcmpunordpd</item>
-      <item>vcmpneq_uqpd</item>
-      <item>vcmpneqpd</item>
-      <item>vcmpnlt_uspd</item>
-      <item>vcmpnltpd</item>
-      <item>vcmpnle_uspd</item>
-      <item>vcmpnlepd</item>
-      <item>vcmpord_qpd</item>
-      <item>vcmpordpd</item>
-      <item>vcmpeq_uqpd</item>
-      <item>vcmpnge_uspd</item>
-      <item>vcmpngepd</item>
-      <item>vcmpngt_uspd</item>
-      <item>vcmpngtpd</item>
-      <item>vcmpfalse_oqpd</item>
-      <item>vcmpfalsepd</item>
-      <item>vcmpneq_oqpd</item>
-      <item>vcmpge_ospd</item>
-      <item>vcmpgepd</item>
-      <item>vcmpgt_ospd</item>
-      <item>vcmpgtpd</item>
-      <item>vcmptrue_uqpd</item>
-      <item>vcmptruepd</item>
-      <item>vcmplt_oqpd</item>
-      <item>vcmple_oqpd</item>
-      <item>vcmpunord_spd</item>
-      <item>vcmpneq_uspd</item>
-      <item>vcmpnlt_uqpd</item>
-      <item>vcmpnle_uqpd</item>
-      <item>vcmpord_spd</item>
-      <item>vcmpeq_uspd</item>
-      <item>vcmpnge_uqpd</item>
-      <item>vcmpngt_uqpd</item>
-      <item>vcmpfalse_ospd</item>
-      <item>vcmpneq_ospd</item>
-      <item>vcmpge_oqpd</item>
-      <item>vcmpgt_oqpd</item>
-      <item>vcmptrue_uspd</item>
-      <item>vcmppd</item>
-      <item>vcmpeq_osps</item>
-      <item>vcmpeqps</item>
-      <item>vcmplt_osps</item>
-      <item>vcmpltps</item>
-      <item>vcmple_osps</item>
-      <item>vcmpleps</item>
-      <item>vcmpunord_qps</item>
-      <item>vcmpunordps</item>
-      <item>vcmpneq_uqps</item>
-      <item>vcmpneqps</item>
-      <item>vcmpnlt_usps</item>
-      <item>vcmpnltps</item>
-      <item>vcmpnle_usps</item>
-      <item>vcmpnleps</item>
-      <item>vcmpord_qps</item>
-      <item>vcmpordps</item>
-      <item>vcmpeq_uqps</item>
-      <item>vcmpnge_usps</item>
-      <item>vcmpngeps</item>
-      <item>vcmpngt_usps</item>
-      <item>vcmpngtps</item>
-      <item>vcmpfalse_oqps</item>
-      <item>vcmpfalseps</item>
-      <item>vcmpneq_oqps</item>
-      <item>vcmpge_osps</item>
-      <item>vcmpgeps</item>
-      <item>vcmpgt_osps</item>
-      <item>vcmpgtps</item>
-      <item>vcmptrue_uqps</item>
-      <item>vcmptrueps</item>
-      <item>vcmplt_oqps</item>
-      <item>vcmple_oqps</item>
-      <item>vcmpunord_sps</item>
-      <item>vcmpneq_usps</item>
-      <item>vcmpnlt_uqps</item>
-      <item>vcmpnle_uqps</item>
-      <item>vcmpord_sps</item>
-      <item>vcmpeq_usps</item>
-      <item>vcmpnge_uqps</item>
-      <item>vcmpngt_uqps</item>
-      <item>vcmpfalse_osps</item>
-      <item>vcmpneq_osps</item>
-      <item>vcmpge_oqps</item>
-      <item>vcmpgt_oqps</item>
-      <item>vcmptrue_usps</item>
-      <item>vcmpps</item>
-      <item>vcmpeq_ossd</item>
-      <item>vcmpeqsd</item>
-      <item>vcmplt_ossd</item>
-      <item>vcmpltsd</item>
-      <item>vcmple_ossd</item>
-      <item>vcmplesd</item>
-      <item>vcmpunord_qsd</item>
-      <item>vcmpunordsd</item>
-      <item>vcmpneq_uqsd</item>
-      <item>vcmpneqsd</item>
-      <item>vcmpnlt_ussd</item>
-      <item>vcmpnltsd</item>
-      <item>vcmpnle_ussd</item>
-      <item>vcmpnlesd</item>
-      <item>vcmpord_qsd</item>
-      <item>vcmpordsd</item>
-      <item>vcmpeq_uqsd</item>
-      <item>vcmpnge_ussd</item>
-      <item>vcmpngesd</item>
-      <item>vcmpngt_ussd</item>
-      <item>vcmpngtsd</item>
-      <item>vcmpfalse_oqsd</item>
-      <item>vcmpfalsesd</item>
-      <item>vcmpneq_oqsd</item>
-      <item>vcmpge_ossd</item>
-      <item>vcmpgesd</item>
-      <item>vcmpgt_ossd</item>
-      <item>vcmpgtsd</item>
-      <item>vcmptrue_uqsd</item>
-      <item>vcmptruesd</item>
-      <item>vcmplt_oqsd</item>
-      <item>vcmple_oqsd</item>
-      <item>vcmpunord_ssd</item>
-      <item>vcmpneq_ussd</item>
-      <item>vcmpnlt_uqsd</item>
-      <item>vcmpnle_uqsd</item>
-      <item>vcmpord_ssd</item>
-      <item>vcmpeq_ussd</item>
-      <item>vcmpnge_uqsd</item>
-      <item>vcmpngt_uqsd</item>
-      <item>vcmpfalse_ossd</item>
-      <item>vcmpneq_ossd</item>
-      <item>vcmpge_oqsd</item>
-      <item>vcmpgt_oqsd</item>
-      <item>vcmptrue_ussd</item>
-      <item>vcmpsd</item>
-      <item>vcmpeq_osss</item>
-      <item>vcmpeqss</item>
-      <item>vcmplt_osss</item>
-      <item>vcmpltss</item>
-      <item>vcmple_osss</item>
-      <item>vcmpless</item>
-      <item>vcmpunord_qss</item>
-      <item>vcmpunordss</item>
-      <item>vcmpneq_uqss</item>
-      <item>vcmpneqss</item>
-      <item>vcmpnlt_usss</item>
-      <item>vcmpnltss</item>
-      <item>vcmpnle_usss</item>
-      <item>vcmpnless</item>
-      <item>vcmpord_qss</item>
-      <item>vcmpordss</item>
-      <item>vcmpeq_uqss</item>
-      <item>vcmpnge_usss</item>
-      <item>vcmpngess</item>
-      <item>vcmpngt_usss</item>
-      <item>vcmpngtss</item>
-      <item>vcmpfalse_oqss</item>
-      <item>vcmpfalsess</item>
-      <item>vcmpneq_oqss</item>
-      <item>vcmpge_osss</item>
-      <item>vcmpgess</item>
-      <item>vcmpgt_osss</item>
-      <item>vcmpgtss</item>
-      <item>vcmptrue_uqss</item>
-      <item>vcmptruess</item>
-      <item>vcmplt_oqss</item>
-      <item>vcmple_oqss</item>
-      <item>vcmpunord_sss</item>
-      <item>vcmpneq_usss</item>
-      <item>vcmpnlt_uqss</item>
-      <item>vcmpnle_uqss</item>
-      <item>vcmpord_sss</item>
-      <item>vcmpeq_usss</item>
-      <item>vcmpnge_uqss</item>
-      <item>vcmpngt_uqss</item>
-      <item>vcmpfalse_osss</item>
-      <item>vcmpneq_osss</item>
-      <item>vcmpge_oqss</item>
-      <item>vcmpgt_oqss</item>
-      <item>vcmptrue_usss</item>
-      <item>vcmpss</item>
-      <item>vcomisd</item>
-      <item>vcomiss</item>
-      <item>vcvtdq2pd</item>
-      <item>vcvtdq2ps</item>
-      <item>vcvtpd2dq</item>
-      <item>vcvtpd2ps</item>
-      <item>vcvtps2dq</item>
-      <item>vcvtps2pd</item>
-      <item>vcvtsd2si</item>
-      <item>vcvtsd2ss</item>
-      <item>vcvtsi2sd</item>
-      <item>vcvtsi2ss</item>
-      <item>vcvtss2sd</item>
-      <item>vcvtss2si</item>
-      <item>vcvttpd2dq</item>
-      <item>vcvttps2dq</item>
-      <item>vcvttsd2si</item>
-      <item>vcvttss2si</item>
-      <item>vdivpd</item>
-      <item>vdivps</item>
-      <item>vdivsd</item>
-      <item>vdivss</item>
-      <item>vdppd</item>
-      <item>vdpps</item>
-      <item>vextractf128</item>
-      <item>vextractps</item>
-      <item>vhaddpd</item>
-      <item>vhaddps</item>
-      <item>vhsubpd</item>
-      <item>vhsubps</item>
-      <item>vinsertf128</item>
-      <item>vinsertps</item>
-      <item>vlddqu</item>
-      <item>vldqqu</item>
-      <item>vldmxcsr</item>
-      <item>vmaskmovdqu</item>
-      <item>vmaskmovps</item>
-      <item>vmaskmovpd</item>
-      <item>vmaxpd</item>
-      <item>vmaxps</item>
-      <item>vmaxsd</item>
-      <item>vmaxss</item>
-      <item>vminpd</item>
-      <item>vminps</item>
-      <item>vminsd</item>
-      <item>vminss</item>
-      <item>vmovapd</item>
-      <item>vmovaps</item>
-      <item>vmovd</item>
-      <item>vmovq</item>
-      <item>vmovddup</item>
-      <item>vmovdqa</item>
-      <item>vmovqqa</item>
-      <item>vmovdqu</item>
-      <item>vmovqqu</item>
-      <item>vmovhlps</item>
-      <item>vmovhpd</item>
-      <item>vmovhps</item>
-      <item>vmovlhps</item>
-      <item>vmovlpd</item>
-      <item>vmovlps</item>
-      <item>vmovmskpd</item>
-      <item>vmovmskps</item>
-      <item>vmovntdq</item>
-      <item>vmovntqq</item>
-      <item>vmovntdqa</item>
-      <item>vmovntpd</item>
-      <item>vmovntps</item>
-      <item>vmovsd</item>
-      <item>vmovshdup</item>
-      <item>vmovsldup</item>
-      <item>vmovss</item>
-      <item>vmovupd</item>
-      <item>vmovups</item>
-      <item>vmpsadbw</item>
-      <item>vmulpd</item>
-      <item>vmulps</item>
-      <item>vmulsd</item>
-      <item>vmulss</item>
-      <item>vorpd</item>
-      <item>vorps</item>
-      <item>vpabsb</item>
-      <item>vpabsw</item>
-      <item>vpabsd</item>
-      <item>vpacksswb</item>
-      <item>vpackssdw</item>
-      <item>vpackuswb</item>
-      <item>vpackusdw</item>
-      <item>vpaddb</item>
-      <item>vpaddw</item>
-      <item>vpaddd</item>
-      <item>vpaddq</item>
-      <item>vpaddsb</item>
-      <item>vpaddsw</item>
-      <item>vpaddusb</item>
-      <item>vpaddusw</item>
-      <item>vpalignr</item>
-      <item>vpand</item>
-      <item>vpandn</item>
-      <item>vpavgb</item>
-      <item>vpavgw</item>
-      <item>vpblendvb</item>
-      <item>vpblendw</item>
-      <item>vpcmpestri</item>
-      <item>vpcmpestrm</item>
-      <item>vpcmpistri</item>
-      <item>vpcmpistrm</item>
-      <item>vpcmpeqb</item>
-      <item>vpcmpeqw</item>
-      <item>vpcmpeqd</item>
-      <item>vpcmpeqq</item>
-      <item>vpcmpgtb</item>
-      <item>vpcmpgtw</item>
-      <item>vpcmpgtd</item>
-      <item>vpcmpgtq</item>
-      <item>vpermilpd</item>
-      <item>vpermilps</item>
-      <item>vperm2f128</item>
-      <item>vpextrb</item>
-      <item>vpextrw</item>
-      <item>vpextrd</item>
-      <item>vpextrq</item>
-      <item>vphaddw</item>
-      <item>vphaddd</item>
-      <item>vphaddsw</item>
-      <item>vphminposuw</item>
-      <item>vphsubw</item>
-      <item>vphsubd</item>
-      <item>vphsubsw</item>
-      <item>vpinsrb</item>
-      <item>vpinsrw</item>
-      <item>vpinsrd</item>
-      <item>vpinsrq</item>
-      <item>vpmaddwd</item>
-      <item>vpmaddubsw</item>
-      <item>vpmaxsb</item>
-      <item>vpmaxsw</item>
-      <item>vpmaxsd</item>
-      <item>vpmaxub</item>
-      <item>vpmaxuw</item>
-      <item>vpmaxud</item>
-      <item>vpminsb</item>
-      <item>vpminsw</item>
-      <item>vpminsd</item>
-      <item>vpminub</item>
-      <item>vpminuw</item>
-      <item>vpminud</item>
-      <item>vpmovmskb</item>
-      <item>vpmovsxbw</item>
-      <item>vpmovsxbd</item>
-      <item>vpmovsxbq</item>
-      <item>vpmovsxwd</item>
-      <item>vpmovsxwq</item>
-      <item>vpmovsxdq</item>
-      <item>vpmovzxbw</item>
-      <item>vpmovzxbd</item>
-      <item>vpmovzxbq</item>
-      <item>vpmovzxwd</item>
-      <item>vpmovzxwq</item>
-      <item>vpmovzxdq</item>
-      <item>vpmulhuw</item>
-      <item>vpmulhrsw</item>
-      <item>vpmulhw</item>
-      <item>vpmullw</item>
-      <item>vpmulld</item>
-      <item>vpmuludq</item>
-      <item>vpmuldq</item>
-      <item>vpor</item>
-      <item>vpsadbw</item>
-      <item>vpshufb</item>
-      <item>vpshufd</item>
-      <item>vpshufhw</item>
-      <item>vpshuflw</item>
-      <item>vpsignb</item>
-      <item>vpsignw</item>
-      <item>vpsignd</item>
-      <item>vpslldq</item>
-      <item>vpsrldq</item>
-      <item>vpsllw</item>
-      <item>vpslld</item>
-      <item>vpsllq</item>
-      <item>vpsraw</item>
-      <item>vpsrad</item>
-      <item>vpsrlw</item>
-      <item>vpsrld</item>
-      <item>vpsrlq</item>
-      <item>vptest</item>
-      <item>vpsubb</item>
-      <item>vpsubw</item>
-      <item>vpsubd</item>
-      <item>vpsubq</item>
-      <item>vpsubsb</item>
-      <item>vpsubsw</item>
-      <item>vpsubusb</item>
-      <item>vpsubusw</item>
-      <item>vpunpckhbw</item>
-      <item>vpunpckhwd</item>
-      <item>vpunpckhdq</item>
-      <item>vpunpckhqdq</item>
-      <item>vpunpcklbw</item>
-      <item>vpunpcklwd</item>
-      <item>vpunpckldq</item>
-      <item>vpunpcklqdq</item>
-      <item>vpxor</item>
-      <item>vrcpps</item>
-      <item>vrcpss</item>
-      <item>vrsqrtps</item>
-      <item>vrsqrtss</item>
-      <item>vroundpd</item>
-      <item>vroundps</item>
-      <item>vroundsd</item>
-      <item>vroundss</item>
-      <item>vshufpd</item>
-      <item>vshufps</item>
-      <item>vsqrtpd</item>
-      <item>vsqrtps</item>
-      <item>vsqrtsd</item>
-      <item>vsqrtss</item>
-      <item>vstmxcsr</item>
-      <item>vsubpd</item>
-      <item>vsubps</item>
-      <item>vsubsd</item>
-      <item>vsubss</item>
-      <item>vtestps</item>
-      <item>vtestpd</item>
-      <item>vucomisd</item>
-      <item>vucomiss</item>
-      <item>vunpckhpd</item>
-      <item>vunpckhps</item>
-      <item>vunpcklpd</item>
-      <item>vunpcklps</item>
-      <item>vxorpd</item>
-      <item>vxorps</item>
-      <item>vzeroall</item>
-      <item>vzeroupper</item>
-      <item>pclmullqlqdq</item>
-      <item>pclmulhqlqdq</item>
-      <item>pclmullqhqdq</item>
-      <item>pclmulhqhqdq</item>
-      <item>pclmulqdq</item>
-      <item>vpclmullqlqdq</item>
-      <item>vpclmulhqlqdq</item>
-      <item>vpclmullqhqdq</item>
-      <item>vpclmulhqhqdq</item>
-      <item>vpclmulqdq</item>
-      <item>vfmadd132ps</item>
-      <item>vfmadd132pd</item>
-      <item>vfmadd312ps</item>
-      <item>vfmadd312pd</item>
-      <item>vfmadd213ps</item>
-      <item>vfmadd213pd</item>
-      <item>vfmadd123ps</item>
-      <item>vfmadd123pd</item>
-      <item>vfmadd231ps</item>
-      <item>vfmadd231pd</item>
-      <item>vfmadd321ps</item>
-      <item>vfmadd321pd</item>
-      <item>vfmaddsub132ps</item>
-      <item>vfmaddsub132pd</item>
-      <item>vfmaddsub312ps</item>
-      <item>vfmaddsub312pd</item>
-      <item>vfmaddsub213ps</item>
-      <item>vfmaddsub213pd</item>
-      <item>vfmaddsub123ps</item>
-      <item>vfmaddsub123pd</item>
-      <item>vfmaddsub231ps</item>
-      <item>vfmaddsub231pd</item>
-      <item>vfmaddsub321ps</item>
-      <item>vfmaddsub321pd</item>
-      <item>vfmsub132ps</item>
-      <item>vfmsub132pd</item>
-      <item>vfmsub312ps</item>
-      <item>vfmsub312pd</item>
-      <item>vfmsub213ps</item>
-      <item>vfmsub213pd</item>
-      <item>vfmsub123ps</item>
-      <item>vfmsub123pd</item>
-      <item>vfmsub231ps</item>
-      <item>vfmsub231pd</item>
-      <item>vfmsub321ps</item>
-      <item>vfmsub321pd</item>
-      <item>vfmsubadd132ps</item>
-      <item>vfmsubadd132pd</item>
-      <item>vfmsubadd312ps</item>
-      <item>vfmsubadd312pd</item>
-      <item>vfmsubadd213ps</item>
-      <item>vfmsubadd213pd</item>
-      <item>vfmsubadd123ps</item>
-      <item>vfmsubadd123pd</item>
-      <item>vfmsubadd231ps</item>
-      <item>vfmsubadd231pd</item>
-      <item>vfmsubadd321ps</item>
-      <item>vfmsubadd321pd</item>
-      <item>vfnmadd132ps</item>
-      <item>vfnmadd132pd</item>
-      <item>vfnmadd312ps</item>
-      <item>vfnmadd312pd</item>
-      <item>vfnmadd213ps</item>
-      <item>vfnmadd213pd</item>
-      <item>vfnmadd123ps</item>
-      <item>vfnmadd123pd</item>
-      <item>vfnmadd231ps</item>
-      <item>vfnmadd231pd</item>
-      <item>vfnmadd321ps</item>
-      <item>vfnmadd321pd</item>
-      <item>vfnmsub132ps</item>
-      <item>vfnmsub132pd</item>
-      <item>vfnmsub312ps</item>
-      <item>vfnmsub312pd</item>
-      <item>vfnmsub213ps</item>
-      <item>vfnmsub213pd</item>
-      <item>vfnmsub123ps</item>
-      <item>vfnmsub123pd</item>
-      <item>vfnmsub231ps</item>
-      <item>vfnmsub231pd</item>
-      <item>vfnmsub321ps</item>
-      <item>vfnmsub321pd</item>
-      <item>vfmadd132ss</item>
-      <item>vfmadd132sd</item>
-      <item>vfmadd312ss</item>
-      <item>vfmadd312sd</item>
-      <item>vfmadd213ss</item>
-      <item>vfmadd213sd</item>
-      <item>vfmadd123ss</item>
-      <item>vfmadd123sd</item>
-      <item>vfmadd231ss</item>
-      <item>vfmadd231sd</item>
-      <item>vfmadd321ss</item>
-      <item>vfmadd321sd</item>
-      <item>vfmsub132ss</item>
-      <item>vfmsub132sd</item>
-      <item>vfmsub312ss</item>
-      <item>vfmsub312sd</item>
-      <item>vfmsub213ss</item>
-      <item>vfmsub213sd</item>
-      <item>vfmsub123ss</item>
-      <item>vfmsub123sd</item>
-      <item>vfmsub231ss</item>
-      <item>vfmsub231sd</item>
-      <item>vfmsub321ss</item>
-      <item>vfmsub321sd</item>
-      <item>vfnmadd132ss</item>
-      <item>vfnmadd132sd</item>
-      <item>vfnmadd312ss</item>
-      <item>vfnmadd312sd</item>
-      <item>vfnmadd213ss</item>
-      <item>vfnmadd213sd</item>
-      <item>vfnmadd123ss</item>
-      <item>vfnmadd123sd</item>
-      <item>vfnmadd231ss</item>
-      <item>vfnmadd231sd</item>
-      <item>vfnmadd321ss</item>
-      <item>vfnmadd321sd</item>
-      <item>vfnmsub132ss</item>
-      <item>vfnmsub132sd</item>
-      <item>vfnmsub312ss</item>
-      <item>vfnmsub312sd</item>
-      <item>vfnmsub213ss</item>
-      <item>vfnmsub213sd</item>
-      <item>vfnmsub123ss</item>
-      <item>vfnmsub123sd</item>
-      <item>vfnmsub231ss</item>
-      <item>vfnmsub231sd</item>
-      <item>vfnmsub321ss</item>
-      <item>vfnmsub321sd</item>
-      <item>rdfsbase</item>
-      <item>rdgsbase</item>
-      <item>rdrand</item>
-      <item>wrfsbase</item>
-      <item>wrgsbase</item>
-      <item>vcvtph2ps</item>
-      <item>vcvtps2ph</item>
-      <item>adcx</item>
-      <item>adox</item>
-      <item>rdseed</item>
-      <item>clac</item>
-      <item>stac</item>
-      <item>xstore</item>
-      <item>xcryptecb</item>
-      <item>xcryptcbc</item>
-      <item>xcryptctr</item>
-      <item>xcryptcfb</item>
-      <item>xcryptofb</item>
-      <item>montmul</item>
-      <item>xsha1</item>
-      <item>xsha256</item>
-      <item>llwpcb</item>
-      <item>slwpcb</item>
-      <item>lwpval</item>
-      <item>lwpins</item>
-      <item>vfmaddpd</item>
-      <item>vfmaddps</item>
-      <item>vfmaddsd</item>
-      <item>vfmaddss</item>
-      <item>vfmaddsubpd</item>
-      <item>vfmaddsubps</item>
-      <item>vfmsubaddpd</item>
-      <item>vfmsubaddps</item>
-      <item>vfmsubpd</item>
-      <item>vfmsubps</item>
-      <item>vfmsubsd</item>
-      <item>vfmsubss</item>
-      <item>vfnmaddpd</item>
-      <item>vfnmaddps</item>
-      <item>vfnmaddsd</item>
-      <item>vfnmaddss</item>
-      <item>vfnmsubpd</item>
-      <item>vfnmsubps</item>
-      <item>vfnmsubsd</item>
-      <item>vfnmsubss</item>
-      <item>vfrczpd</item>
-      <item>vfrczps</item>
-      <item>vfrczsd</item>
-      <item>vfrczss</item>
-      <item>vpcmov</item>
-      <item>vpcomb</item>
-      <item>vpcomd</item>
-      <item>vpcomq</item>
-      <item>vpcomub</item>
-      <item>vpcomud</item>
-      <item>vpcomuq</item>
-      <item>vpcomuw</item>
-      <item>vpcomw</item>
-      <item>vphaddbd</item>
-      <item>vphaddbq</item>
-      <item>vphaddbw</item>
-      <item>vphadddq</item>
-      <item>vphaddubd</item>
-      <item>vphaddubq</item>
-      <item>vphaddubw</item>
-      <item>vphaddudq</item>
-      <item>vphadduwd</item>
-      <item>vphadduwq</item>
-      <item>vphaddwd</item>
-      <item>vphaddwq</item>
-      <item>vphsubbw</item>
-      <item>vphsubdq</item>
-      <item>vphsubwd</item>
-      <item>vpmacsdd</item>
-      <item>vpmacsdqh</item>
-      <item>vpmacsdql</item>
-      <item>vpmacssdd</item>
-      <item>vpmacssdqh</item>
-      <item>vpmacssdql</item>
-      <item>vpmacsswd</item>
-      <item>vpmacssww</item>
-      <item>vpmacswd</item>
-      <item>vpmacsww</item>
-      <item>vpmadcsswd</item>
-      <item>vpmadcswd</item>
-      <item>vpperm</item>
-      <item>vprotb</item>
-      <item>vprotd</item>
-      <item>vprotq</item>
-      <item>vprotw</item>
-      <item>vpshab</item>
-      <item>vpshad</item>
-      <item>vpshaq</item>
-      <item>vpshaw</item>
-      <item>vpshlb</item>
-      <item>vpshld</item>
-      <item>vpshlq</item>
-      <item>vpshlw</item>
-      <item>vbroadcasti128</item>
-      <item>vpblendd</item>
-      <item>vpbroadcastb</item>
-      <item>vpbroadcastw</item>
-      <item>vpbroadcastd</item>
-      <item>vpbroadcastq</item>
-      <item>vpermd</item>
-      <item>vpermpd</item>
-      <item>vpermps</item>
-      <item>vpermq</item>
-      <item>vperm2i128</item>
-      <item>vextracti128</item>
-      <item>vinserti128</item>
-      <item>vpmaskmovd</item>
-      <item>vpmaskmovq</item>
-      <item>vpsllvd</item>
-      <item>vpsllvq</item>
-      <item>vpsravd</item>
-      <item>vpsrlvd</item>
-      <item>vpsrlvq</item>
-      <item>vgatherdpd</item>
-      <item>vgatherqpd</item>
-      <item>vgatherdps</item>
-      <item>vgatherqps</item>
-      <item>vpgatherdd</item>
-      <item>vpgatherqd</item>
-      <item>vpgatherdq</item>
-      <item>vpgatherqq</item>
-      <item>xabort</item>
-      <item>xbegin</item>
-      <item>xend</item>
-      <item>xtest</item>
-      <item>andn</item>
-      <item>bextr</item>
-      <item>blci</item>
-      <item>blcic</item>
-      <item>blsi</item>
-      <item>blsic</item>
-      <item>blcfill</item>
-      <item>blsfill</item>
-      <item>blcmsk</item>
-      <item>blsmsk</item>
-      <item>blsr</item>
-      <item>blcs</item>
-      <item>bzhi</item>
-      <item>mulx</item>
-      <item>pdep</item>
-      <item>pext</item>
-      <item>rorx</item>
-      <item>sarx</item>
-      <item>shlx</item>
-      <item>shrx</item>
-      <item>tzcnt</item>
-      <item>tzmsk</item>
-      <item>t1mskc</item>
-      <item>valignd</item>
-      <item>valignq</item>
-      <item>vblendmpd</item>
-      <item>vblendmps</item>
-      <item>vbroadcastf32x4</item>
-      <item>vbroadcastf64x4</item>
-      <item>vbroadcasti32x4</item>
-      <item>vbroadcasti64x4</item>
-      <item>vcompresspd</item>
-      <item>vcompressps</item>
-      <item>vcvtpd2udq</item>
-      <item>vcvtps2udq</item>
-      <item>vcvtsd2usi</item>
-      <item>vcvtss2usi</item>
-      <item>vcvttpd2udq</item>
-      <item>vcvttps2udq</item>
-      <item>vcvttsd2usi</item>
-      <item>vcvttss2usi</item>
-      <item>vcvtudq2pd</item>
-      <item>vcvtudq2ps</item>
-      <item>vcvtusi2sd</item>
-      <item>vcvtusi2ss</item>
-      <item>vexpandpd</item>
-      <item>vexpandps</item>
-      <item>vextractf32x4</item>
-      <item>vextractf64x4</item>
-      <item>vextracti32x4</item>
-      <item>vextracti64x4</item>
-      <item>vfixupimmpd</item>
-      <item>vfixupimmps</item>
-      <item>vfixupimmsd</item>
-      <item>vfixupimmss</item>
-      <item>vgetexppd</item>
-      <item>vgetexpps</item>
-      <item>vgetexpsd</item>
-      <item>vgetexpss</item>
-      <item>vgetmantpd</item>
-      <item>vgetmantps</item>
-      <item>vgetmantsd</item>
-      <item>vgetmantss</item>
-      <item>vinsertf32x4</item>
-      <item>vinsertf64x4</item>
-      <item>vinserti32x4</item>
-      <item>vinserti64x4</item>
-      <item>vmovdqa32</item>
-      <item>vmovdqa64</item>
-      <item>vmovdqu32</item>
-      <item>vmovdqu64</item>
-      <item>vpabsq</item>
-      <item>vpandd</item>
-      <item>vpandnd</item>
-      <item>vpandnq</item>
-      <item>vpandq</item>
-      <item>vpblendmd</item>
-      <item>vpblendmq</item>
-      <item>vpcmpltd</item>
-      <item>vpcmpled</item>
-      <item>vpcmpneqd</item>
-      <item>vpcmpnltd</item>
-      <item>vpcmpnled</item>
-      <item>vpcmpd</item>
-      <item>vpcmpltq</item>
-      <item>vpcmpleq</item>
-      <item>vpcmpneqq</item>
-      <item>vpcmpnltq</item>
-      <item>vpcmpnleq</item>
-      <item>vpcmpq</item>
-      <item>vpcmpequd</item>
-      <item>vpcmpltud</item>
-      <item>vpcmpleud</item>
-      <item>vpcmpnequd</item>
-      <item>vpcmpnltud</item>
-      <item>vpcmpnleud</item>
-      <item>vpcmpud</item>
-      <item>vpcmpequq</item>
-      <item>vpcmpltuq</item>
-      <item>vpcmpleuq</item>
-      <item>vpcmpnequq</item>
-      <item>vpcmpnltuq</item>
-      <item>vpcmpnleuq</item>
-      <item>vpcmpuq</item>
-      <item>vpcompressd</item>
-      <item>vpcompressq</item>
-      <item>vpermi2d</item>
-      <item>vpermi2pd</item>
-      <item>vpermi2ps</item>
-      <item>vpermi2q</item>
-      <item>vpermt2d</item>
-      <item>vpermt2pd</item>
-      <item>vpermt2ps</item>
-      <item>vpermt2q</item>
-      <item>vpexpandd</item>
-      <item>vpexpandq</item>
-      <item>vpmaxsq</item>
-      <item>vpmaxuq</item>
-      <item>vpminsq</item>
-      <item>vpminuq</item>
-      <item>vpmovdb</item>
-      <item>vpmovdw</item>
-      <item>vpmovqb</item>
-      <item>vpmovqd</item>
-      <item>vpmovqw</item>
-      <item>vpmovsdb</item>
-      <item>vpmovsdw</item>
-      <item>vpmovsqb</item>
-      <item>vpmovsqd</item>
-      <item>vpmovsqw</item>
-      <item>vpmovusdb</item>
-      <item>vpmovusdw</item>
-      <item>vpmovusqb</item>
-      <item>vpmovusqd</item>
-      <item>vpmovusqw</item>
-      <item>vpord</item>
-      <item>vporq</item>
-      <item>vprold</item>
-      <item>vprolq</item>
-      <item>vprolvd</item>
-      <item>vprolvq</item>
-      <item>vprord</item>
-      <item>vprorq</item>
-      <item>vprorvd</item>
-      <item>vprorvq</item>
-      <item>vpscatterdd</item>
-      <item>vpscatterdq</item>
-      <item>vpscatterqd</item>
-      <item>vpscatterqq</item>
-      <item>vpsraq</item>
-      <item>vpsravq</item>
-      <item>vpternlogd</item>
-      <item>vpternlogq</item>
-      <item>vptestmd</item>
-      <item>vptestmq</item>
-      <item>vptestnmd</item>
-      <item>vptestnmq</item>
-      <item>vpxord</item>
-      <item>vpxorq</item>
-      <item>vrcp14pd</item>
-      <item>vrcp14ps</item>
-      <item>vrcp14sd</item>
-      <item>vrcp14ss</item>
-      <item>vrndscalepd</item>
-      <item>vrndscaleps</item>
-      <item>vrndscalesd</item>
-      <item>vrndscaless</item>
-      <item>vrsqrt14pd</item>
-      <item>vrsqrt14ps</item>
-      <item>vrsqrt14sd</item>
-      <item>vrsqrt14ss</item>
-      <item>vscalefpd</item>
-      <item>vscalefps</item>
-      <item>vscalefsd</item>
-      <item>vscalefss</item>
-      <item>vscatterdpd</item>
-      <item>vscatterdps</item>
-      <item>vscatterqpd</item>
-      <item>vscatterqps</item>
-      <item>vshuff32x4</item>
-      <item>vshuff64x2</item>
-      <item>vshufi32x4</item>
-      <item>vshufi64x2</item>
-      <item>kandnw</item>
-      <item>kandw</item>
-      <item>kmovw</item>
-      <item>knotw</item>
-      <item>kortestw</item>
-      <item>korw</item>
-      <item>kshiftlw</item>
-      <item>kshiftrw</item>
-      <item>kunpckbw</item>
-      <item>kxnorw</item>
-      <item>kxorw</item>
-      <item>vpbroadcastmb2q</item>
-      <item>vpbroadcastmw2d</item>
-      <item>vpconflictd</item>
-      <item>vpconflictq</item>
-      <item>vplzcntd</item>
-      <item>vplzcntq</item>
-      <item>vexp2pd</item>
-      <item>vexp2ps</item>
-      <item>vrcp28pd</item>
-      <item>vrcp28ps</item>
-      <item>vrcp28sd</item>
-      <item>vrcp28ss</item>
-      <item>vrsqrt28pd</item>
-      <item>vrsqrt28ps</item>
-      <item>vrsqrt28sd</item>
-      <item>vrsqrt28ss</item>
-      <item>vgatherpf0dpd</item>
-      <item>vgatherpf0dps</item>
-      <item>vgatherpf0qpd</item>
-      <item>vgatherpf0qps</item>
-      <item>vgatherpf1dpd</item>
-      <item>vgatherpf1dps</item>
-      <item>vgatherpf1qpd</item>
-      <item>vgatherpf1qps</item>
-      <item>vscatterpf0dpd</item>
-      <item>vscatterpf0dps</item>
-      <item>vscatterpf0qpd</item>
-      <item>vscatterpf0qps</item>
-      <item>vscatterpf1dpd</item>
-      <item>vscatterpf1dps</item>
-      <item>vscatterpf1qpd</item>
-      <item>vscatterpf1qps</item>
-      <item>prefetchwt1</item>
-      <item>bndmk</item>
-      <item>bndcl</item>
-      <item>bndcu</item>
-      <item>bndcn</item>
-      <item>bndmov</item>
-      <item>bndldx</item>
-      <item>bndstx</item>
-      <item>sha1rnds4</item>
-      <item>sha1nexte</item>
-      <item>sha1msg1</item>
-      <item>sha1msg2</item>
-      <item>sha256rnds2</item>
-      <item>sha256msg1</item>
-      <item>sha256msg2</item>
-      <item>hint_nop</item>
-    </list>
-
-    <list name="branch instructions">
-      <item>call</item>
-      <item>callq</item>
-      <item>iret</item>
-      <item>iretd</item>
-      <item>iretq</item>
-      <item>iretw</item>
-      <item>ja</item>
-      <item>jae</item>
-      <item>jb</item>
-      <item>jbe</item>
-      <item>jc</item>
-      <item>jcxz</item>
-      <item>je</item>
-      <item>jecxz</item>
-      <item>jg</item>
-      <item>jge</item>
-      <item>jl</item>
-      <item>jle</item>
-      <item>jmp</item>
-      <item>jmpe</item>
-      <item>jna</item>
-      <item>jnae</item>
-      <item>jnb</item>
-      <item>jnbe</item>
-      <item>jnc</item>
-      <item>jne</item>
-      <item>jng</item>
-      <item>jnge</item>
-      <item>jnl</item>
-      <item>jnle</item>
-      <item>jno</item>
-      <item>jnp</item>
-      <item>jns</item>
-      <item>jnz</item>
-      <item>jo</item>
-      <item>jp</item>
-      <item>jpe</item>
-      <item>jpo</item>
-      <item>jrcxz</item>
-      <item>js</item>
-      <item>jz</item>
-      <item>ret</item>
-      <item>retd</item>
-      <item>retf</item>
-      <item>retfd</item>
-      <item>retfq</item>
-      <item>retfw</item>
-      <item>retn</item>
-      <item>retnd</item>
-      <item>retnq</item>
-      <item>retnw</item>
-      <item>retq</item>
-      <item>retw</item>
-    </list>
-
-    <list name="keywords">
-      <item>.abort</item>
-      <item>.align</item>
-      <item>.app-file</item>
-      <item>.appline</item>
-      <item>.ascii</item>
-      <item>.asciz</item>
-      <item>.att_syntax</item>
-      <item>.balign</item>
-      <item>.balignl</item>
-      <item>.balignw</item>
-      <item>.byte</item>
-      <item>.code16</item>
-      <item>.code32</item>
-      <item>.comm</item>
-      <item>.common.s</item>
-      <item>.common</item>
-      <item>.data</item>
-      <item>.dc.b</item>
-      <item>.dc.d</item>
-      <item>.dc.l</item>
-      <item>.dc.s</item>
-      <item>.dc.w</item>
-      <item>.dc.x</item>
-      <item>.dc</item>
-      <item>.dcb.b</item>
-      <item>.dcb.d</item>
-      <item>.dcb.l</item>
-      <item>.dcb.s</item>
-      <item>.dcb.w</item>
-      <item>.dcb.x</item>
-      <item>.dcb</item>
-      <item>.debug</item>
-      <item>.def</item>
-      <item>.desc</item>
-      <item>.dim</item>
-      <item>.double</item>
-      <item>.ds.b</item>
-      <item>.ds.d</item>
-      <item>.ds.l</item>
-      <item>.ds.p</item>
-      <item>.ds.s</item>
-      <item>.ds.w</item>
-      <item>.ds.x</item>
-      <item>.ds</item>
-      <item>.dsect</item>
-      <item>.eject</item>
-      <item>.else</item>
-      <item>.elsec</item>
-      <item>.elseif</item>
-      <item>.end</item>
-      <item>.endc</item>
-      <item>.endef</item>
-      <item>.endfunc</item>
-      <item>.endif</item>
-      <item>.endm</item>
-      <item>.endr</item>
-      <item>.equ</item>
-      <item>.equiv</item>
-      <item>.err</item>
-      <item>.exitm</item>
-      <item>.extend</item>
-      <item>.extern</item>
-      <item>.fail</item>
-      <item>.file</item>
-      <item>.fill</item>
-      <item>.float</item>
-      <item>.format</item>
-      <item>.func</item>
-      <item>.global</item>
-      <item>.globl</item>
-      <item>.hidden</item>
-      <item>.hword</item>
-      <item>.ident</item>
-      <item>.if</item>
-      <item>.ifc</item>
-      <item>.ifdef</item>
-      <item>.ifeq</item>
-      <item>.ifeqs</item>
-      <item>.ifge</item>
-      <item>.ifgt</item>
-      <item>.ifle</item>
-      <item>.iflt</item>
-      <item>.ifnc</item>
-      <item>.ifndef</item>
-      <item>.ifne</item>
-      <item>.ifnes</item>
-      <item>.ifnotdef</item>
-      <item>.include</item>
-      <item>.int</item>
-      <item>.intel_syntax</item>
-      <item>.internal</item>
-      <item>.irep</item>
-      <item>.irepc</item>
-      <item>.irp</item>
-      <item>.irpc</item>
-      <item>.lcomm</item>
-      <item>.lflags</item>
-      <item>.line</item>
-      <item>.linkonce</item>
-      <item>.list</item>
-      <item>.llen</item>
-      <item>.ln</item>
-      <item>.long</item>
-      <item>.lsym</item>
-      <item>.macro</item>
-      <item>.mexit</item>
-      <item>.name</item>
-      <item>.noformat</item>
-      <item>.nolist</item>
-      <item>.nopage</item>
-      <item>noprefix</item>
-      <item>.octa</item>
-      <item>.offset</item>
-      <item>.org</item>
-      <item>.p2align</item>
-      <item>.p2alignl</item>
-      <item>.p2alignw</item>
-      <item>.page</item>
-      <item>.plen</item>
-      <item>.popsection</item>
-      <item>.previous</item>
-      <item>.print</item>
-      <item>.protected</item>
-      <item>.psize</item>
-      <item>.purgem</item>
-      <item>.pushsection</item>
-      <item>.quad</item>
-      <item>.rodata</item>
-      <item>.rep</item>
-      <item>.rept</item>
-      <item>.rva</item>
-      <item>.sbttl</item>
-      <item>.scl</item>
-      <item>.sect.s</item>
-      <item>.sect</item>
-      <item>.section.s</item>
-      <item>.section</item>
-      <item>.set</item>
-      <item>.short</item>
-      <item>.single</item>
-      <item>.size</item>
-      <item>.skip</item>
-      <item>.sleb128</item>
-      <item>.space</item>
-      <item>.spc</item>
-      <item>.stabd</item>
-      <item>.stabn</item>
-      <item>.stabs</item>
-      <item>.string</item>
-      <item>.struct</item>
-      <item>.subsection</item>
-      <item>.symver</item>
-      <item>.tag</item>
-      <item>.text</item>
-      <item>.title</item>
-      <item>.ttl</item>
-      <item>.type</item>
-      <item>.uleb128</item>
-      <item>.use</item>
-      <item>.val</item>
-      <item>.version</item>
-      <item>.vtable_entry</item>
-      <item>.vtable_inherit</item>
-      <item>.weak</item>
-      <item>.word</item>
-      <item>.xcom</item>
-      <item>.xdef</item>
-      <item>.xref</item>
-      <item>.xstabs</item>
-      <item>.zero</item>
-      <!-- Directives specific to ARM -->
-      <item>.arm</item>
-      <item>.bss</item>
-      <item>.code</item>
-      <item>.even</item>
-      <item>.force_thumb</item>
-      <item>.ldouble</item>
-      <item>.loc</item>
-      <item>.ltorg</item>
-      <item>.packed</item>
-      <item>.pool</item>
-      <item>.req</item>
-      <item>.thumb</item>
-      <item>.thumb_func</item>
-      <item>.thumb_set</item>
-    </list>
-
-    <contexts>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <RegExpr      attribute="Label" context="#stay" String="[\.]?[_\w\d-]*\s*:" />
-        <keyword      attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword      attribute="Registers" context="#stay" String="registers"/>
-        <keyword      attribute="Instructions" context="#stay" String="instructions"/>
-        <keyword      attribute="Branch Instructions" context="#stay" String="branch instructions"/>
-        <HlCOct       attribute="Octal" context="#stay" />
-        <HlCHex       attribute="Hex" context="#stay" />
-        <RegExpr      attribute="Binary" context="#stay" String="0[bB][01]+" />
-        <Int          attribute="Decimal" context="#stay" />
-        <RegExpr      attribute="Decimal" context="#stay" String="\$[0-9]+" />
-        <RegExpr      attribute="Float" context="#stay" String="0[fFeEdD][-+]?[0-9]*\.?[0-9]*[eE]?[-+]?[0-9]+" />
-        <RegExpr      attribute="Normal Text" context="#stay" String="[A-Za-z_.$][A-Za-z0-9_.$]*" />
-        <HlCChar      attribute="Char" context="#stay" />
-        <RegExpr      attribute="Char" context="#stay" String="'(\\x[0-9a-fA-F][0-9a-fA-F]?|\\[0-7]?[0-7]?[0-7]?|\\.|.)" />
-        <DetectChar   attribute="String" context="String" char="&quot;" />
-        <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
-        <RegExpr      attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
-        <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" firstNonSpace="true" />
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="*" beginRegion="BlockComment" />
-        <AnyChar      attribute="Comment" context="Commentar 2" String="@;#" />
-        <AnyChar      attribute="Symbol" context="#stay" String="!#%&amp;*()+,-&lt;=&gt;?/:[]^{|}~" />
-      </context>
-      <context attribute="Comment" lineEndContext="#stay" name="Commentar 1">
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
-        <DetectSpaces />
-        <IncludeRules context="##Comments" />
-      </context>
-      <context attribute="Comment" lineEndContext="#pop" name="Commentar 2" >
-        <DetectSpaces />
-        <IncludeRules context="##Comments" />
-      </context>
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <LineContinue  attribute="String" context="Some Context" />
-        <HlCStringChar attribute="String Char" context="#stay" />
-        <DetectChar    attribute="String" context="#pop" char="&quot;" />
-      </context>
-      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor" />
-      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
-        <LineContinue attribute="Preprocessor" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="Some Context" />
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text"  defStyleNum="dsNormal"   />
-      <itemData name="Label"        defStyleNum="dsFunction"  />
-      <itemData name="Keyword"      defStyleNum="dsKeyword"  />
-      <itemData name="Registers"    defStyleNum="dsKeyword"  />
-      <itemData name="Instructions" defStyleNum="dsKeyword"  />
-      <itemData name="Branch Instructions" defStyleNum="dsControlFlow"  />
+<!DOCTYPE language>
+<!--
+
+*************************************************************************
+*                                                                       *
+*               Syntax highlighting for the GNU Assembler               *
+*                   Copyright (C) 2002, John Zaitseff                   *
+*                   Copyright (C) 2021, Waqar Ahmed                     *
+*                   Copyright (C) 2025, Jure Repinc                     *
+*                                                                       *
+*************************************************************************
+
+Updated:  Jure Repinc <jlp@holodeck1.com>
+Date:     17 April, 2025
+Version:  10
+
+Updated:  Waqar Ahmed <waqar.17a@gmail.com>
+Date:     30 April, 2021
+Version:  2.0
+
+Updated:  Miquel Sabaté <mikisabate@gmail.com>
+Date:     14th September, 2010
+Version:  1.02
+
+Updated:  Roland Pabel <roland@pabel.name>
+Date:     15th August, 2002
+Version:  1.01
+
+Author:   John Zaitseff <J.Zaitseff@zap.org.au>
+Date:     15th April, 2002
+Version:  1.0
+
+This file contains the XML syntax highlighting description for the GNU
+Assembler, for KATE, the KDE Advanced Editor.  Keywords have been taken
+directly from the GNU Assembler source code (read.c).
+
+Known problems: Floating point highlighting does not work correctly.
+
+This program, including associated files, is free software.  You may
+distribute it and/or modify it under the terms of the GNU General Public
+License as published by the Free Software Foundation; either Version 2 of
+the license, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+-->
+
+<language name="GNU Assembler" version="10" kateversion="5.0" section="Assembler" extensions="*.s;*.S" mimetype="text/x-asm" author="John Zaitseff (J.Zaitseff@zap.org.au), Roland Pabel (roland@pabel.name), Miquel Sabaté (mikisabate@gmail.com) Waqar Ahmed (waqar.17a@gmail.com), Jure Repinc (jlp@holodeck1.com)" license="GPLv2+">
+  <highlighting>
+    <list name="registers">
+      <!-- General purpose registers -->
+      <item>rax</item>
+      <item>eax</item>
+      <item>ax</item>
+      <item>ah</item>
+      <item>al</item>
+      <item>rbx</item>
+      <item>ebx</item>
+      <item>bx</item>
+      <item>bh</item>
+      <item>bl</item>
+      <item>rcx</item>
+      <item>ecx</item>
+      <item>cx</item>
+      <item>ch</item>
+      <item>cl</item>
+      <item>rdx</item>
+      <item>edx</item>
+      <item>dx</item>
+      <item>dh</item>
+      <item>dl</item>
+      <item>rbp</item>
+      <item>ebp</item>
+      <item>bp</item>
+      <item>bpl</item>
+      <item>rsi</item>
+      <item>esi</item>
+      <item>si</item>
+      <item>sil</item>
+      <item>rdi</item>
+      <item>edi</item>
+      <item>di</item>
+      <item>dil</item>
+
+      <item>rip</item>
+      <item>eip</item>
+      <item>ip</item>
+
+      <item>rsp</item>
+      <item>esp</item>
+      <item>sp</item>
+      <item>spl</item>
+      <item>r8</item>
+      <item>r8d</item>
+      <item>r8w</item>
+      <item>r8b</item>
+      <item>r9</item>
+      <item>r9d</item>
+      <item>r9w</item>
+      <item>r9b</item>
+      <item>r10</item>
+      <item>r10d</item>
+      <item>r10w</item>
+      <item>r10b</item>
+      <item>r11</item>
+      <item>r11d</item>
+      <item>r11w</item>
+      <item>r11b</item>
+      <item>r12</item>
+      <item>r12d</item>
+      <item>r12w</item>
+      <item>r12b</item>
+      <item>r13</item>
+      <item>r13d</item>
+      <item>r13w</item>
+      <item>r13b</item>
+      <item>r14</item>
+      <item>r14d</item>
+      <item>r14w</item>
+      <item>r14b</item>
+      <item>r15</item>
+      <item>r15d</item>
+      <item>r15w</item>
+      <item>r15b</item>
+      <!-- Segmentation registers -->
+      <item>cs</item>
+      <item>ds</item>
+      <item>es</item>
+      <item>fs</item>
+      <item>gs</item>
+      <item>ss</item>
+      <!-- Control registers -->
+      <item>cr0</item>
+      <!--<item>cr1</item>-->
+      <item>cr2</item>
+      <item>cr3</item>
+      <item>cr4</item>
+      <!-- Debug registers -->
+      <item>dr0</item>
+      <item>dr1</item>
+      <item>dr2</item>
+      <item>dr3</item>
+      <item>dr6</item>
+      <item>dr7</item>
+      <!-- x87 FPU Registers -->
+      <item>st</item>
+      <!-- MMX registers -->
+      <item>mm0</item>
+      <item>mm1</item>
+      <item>mm2</item>
+      <item>mm3</item>
+      <item>mm4</item>
+      <item>mm5</item>
+      <item>mm6</item>
+      <item>mm7</item>
+      <!-- XMM registers -->
+      <item>xmm0</item>
+      <item>xmm1</item>
+      <item>xmm2</item>
+      <item>xmm3</item>
+      <item>xmm4</item>
+      <item>xmm5</item>
+      <item>xmm6</item>
+      <item>xmm7</item>
+      <item>xmm8</item>
+      <item>xmm9</item>
+      <item>xmm10</item>
+      <item>xmm11</item>
+      <item>xmm12</item>
+      <item>xmm13</item>
+      <item>xmm14</item>
+      <item>xmm15</item>
+      <item>xmm16</item>
+      <item>xmm17</item>
+      <item>xmm18</item>
+      <item>xmm19</item>
+      <item>xmm20</item>
+      <item>xmm21</item>
+      <item>xmm22</item>
+      <item>xmm23</item>
+      <item>xmm24</item>
+      <item>xmm25</item>
+      <item>xmm26</item>
+      <item>xmm27</item>
+      <item>xmm28</item>
+      <item>xmm29</item>
+      <item>xmm30</item>
+      <item>xmm31</item>
+      <!-- YMM registers -->
+      <item>ymm0</item>
+      <item>ymm1</item>
+      <item>ymm2</item>
+      <item>ymm3</item>
+      <item>ymm4</item>
+      <item>ymm5</item>
+      <item>ymm6</item>
+      <item>ymm7</item>
+      <item>ymm8</item>
+      <item>ymm9</item>
+      <item>ymm10</item>
+      <item>ymm11</item>
+      <item>ymm12</item>
+      <item>ymm13</item>
+      <item>ymm14</item>
+      <item>ymm15</item>
+      <item>ymm16</item>
+      <item>ymm17</item>
+      <item>ymm18</item>
+      <item>ymm19</item>
+      <item>ymm20</item>
+      <item>ymm21</item>
+      <item>ymm22</item>
+      <item>ymm23</item>
+      <item>ymm24</item>
+      <item>ymm25</item>
+      <item>ymm26</item>
+      <item>ymm27</item>
+      <item>ymm28</item>
+      <item>ymm29</item>
+      <item>ymm30</item>
+      <item>ymm31</item>
+      <!-- ZMM registers -->
+      <item>zmm0</item>
+      <item>zmm1</item>
+      <item>zmm2</item>
+      <item>zmm3</item>
+      <item>zmm4</item>
+      <item>zmm5</item>
+      <item>zmm6</item>
+      <item>zmm7</item>
+      <item>zmm8</item>
+      <item>zmm9</item>
+      <item>zmm10</item>
+      <item>zmm11</item>
+      <item>zmm12</item>
+      <item>zmm13</item>
+      <item>zmm14</item>
+      <item>zmm15</item>
+      <item>zmm16</item>
+      <item>zmm17</item>
+      <item>zmm18</item>
+      <item>zmm19</item>
+      <item>zmm20</item>
+      <item>zmm21</item>
+      <item>zmm22</item>
+      <item>zmm23</item>
+      <item>zmm24</item>
+      <item>zmm25</item>
+      <item>zmm26</item>
+      <item>zmm27</item>
+      <item>zmm28</item>
+      <item>zmm29</item>
+      <item>zmm30</item>
+      <item>zmm31</item>
+
+      <!-- RISC-V general purpose registers -->
+      <item>x0</item>   <item>zero</item>
+      <item>x1</item>   <item>ra</item>
+      <item>x2</item>   <!-- sp already listed -->
+      <item>x3</item>   <item>gp</item>
+      <item>x4</item>   <item>tp</item>
+      <item>x5</item>   <item>t0</item>
+      <item>x6</item>   <item>t1</item>
+      <item>x7</item>   <item>t2</item>
+      <item>x8</item>   <item>s0</item>
+      <item>x9</item>   <item>s1</item>
+      <item>x10</item>  <item>a0</item>
+      <item>x11</item>  <item>a1</item>
+      <item>x12</item>  <item>a2</item>
+      <item>x13</item>  <item>a3</item>
+      <item>x14</item>  <item>a4</item>
+      <item>x15</item>  <item>a5</item>
+      <item>x16</item>  <item>a6</item>
+      <item>x17</item>  <item>a7</item>
+      <item>x18</item>  <item>s2</item>
+      <item>x19</item>  <item>s3</item>
+      <item>x20</item>  <item>s4</item>
+      <item>x21</item>  <item>s5</item>
+      <item>x22</item>  <item>s6</item>
+      <item>x23</item>  <item>s7</item>
+      <item>x24</item>  <item>s8</item>
+      <item>x25</item>  <item>s9</item>
+      <item>x26</item>  <item>s10</item>
+      <item>x27</item>  <item>s11</item>
+      <item>x28</item>  <item>t3</item>
+      <item>x29</item>  <item>t4</item>
+      <item>x30</item>  <item>t5</item>
+      <item>x31</item>  <item>t6</item>
+      <!-- RISC-V floating point registers -->
+      <item>f0</item>   <item>ft0</item>
+      <item>f1</item>   <item>ft1</item>
+      <item>f2</item>   <item>ft2</item>
+      <item>f3</item>   <item>ft3</item>
+      <item>f4</item>   <item>ft4</item>
+      <item>f5</item>   <item>ft5</item>
+      <item>f6</item>   <item>ft6</item>
+      <item>f7</item>   <item>ft7</item>
+      <item>f8</item>   <item>fs0</item>
+      <item>f9</item>   <item>fs1</item>
+      <item>f10</item>  <item>fa0</item>
+      <item>f11</item>  <item>fa1</item>
+      <item>f12</item>  <item>fa2</item>
+      <item>f13</item>  <item>fa3</item>
+      <item>f14</item>  <item>fa4</item>
+      <item>f15</item>  <item>fa5</item>
+      <item>f16</item>  <item>fa6</item>
+      <item>f17</item>  <item>fa7</item>
+      <item>f18</item>  <item>fs2</item>
+      <item>f19</item>  <item>fs3</item>
+      <item>f20</item>  <item>fs4</item>
+      <item>f21</item>  <item>fs5</item>
+      <item>f22</item>  <item>fs6</item>
+      <item>f23</item>  <item>fs7</item>
+      <item>f24</item>  <item>fs8</item>
+      <item>f25</item>  <item>fs9</item>
+      <item>f26</item>  <item>fs10</item>
+      <item>f27</item>  <item>fs11</item>
+      <item>f28</item>  <item>ft8</item>
+      <item>f29</item>  <item>ft9</item>
+      <item>f30</item>  <item>ft10</item>
+      <item>f31</item>  <item>ft11</item>
+      <!-- RISC-V vector/RVV registers -->
+      <item>v0</item>   <item>v0.t</item><!-- vector mask register -->
+      <item>v1</item>
+      <item>v2</item>
+      <item>v3</item>
+      <item>v4</item>
+      <item>v5</item>
+      <item>v6</item>
+      <item>v7</item>
+      <item>v8</item>
+      <item>v9</item>
+      <item>v10</item>
+      <item>v11</item>
+      <item>v12</item>
+      <item>v13</item>
+      <item>v14</item>
+      <item>v15</item>
+      <item>v16</item>
+      <item>v17</item>
+      <item>v18</item>
+      <item>v19</item>
+      <item>v20</item>
+      <item>v21</item>
+      <item>v22</item>
+      <item>v23</item>
+      <item>v24</item>
+      <item>v25</item>
+      <item>v26</item>
+      <item>v27</item>
+      <item>v28</item>
+      <item>v29</item>
+      <item>v30</item>
+      <item>v31</item>
+    </list>
+
+    <list name="instructions">
+      <item>lock</item>
+      <item>rep</item>
+      <item>repe</item>
+      <item>repz</item>
+      <item>repne</item>
+      <item>repnz</item>
+      <item>xaquire</item>
+      <item>xrelease</item>
+      <item>bnd</item>
+      <item>nobnd</item>
+      <item>aaa</item>
+      <item>aad</item>
+      <item>aam</item>
+      <item>aas</item>
+      <item>adc</item>
+      <item>addb</item>
+      <item>addl</item>
+      <item>addq</item>
+      <item>arpl</item>
+      <item>bb0_reset</item>
+      <item>bb1_reset</item>
+      <item>bound</item>
+      <item>bsf</item>
+      <item>bsr</item>
+      <item>bswap</item>
+      <item>bt</item>
+      <item>btc</item>
+      <item>btr</item>
+      <item>bts</item>
+      <item>cbw</item>
+      <item>cdq</item>
+      <item>cdqe</item>
+      <item>clc</item>
+      <item>cld</item>
+      <item>cli</item>
+      <item>clts</item>
+      <item>cltd</item>
+      <item>cbtw</item>
+      <item>cwtl</item>
+      <item>cwtd</item>
+      <item>cltq</item>
+      <item>cqto</item>
+      <item>cmc</item>
+      <item>cmpb</item>
+      <item>cmpw</item>
+      <item>cmpl</item>
+      <item>cmpq</item>
+      <item>cmpsb</item>
+      <item>cmpsd</item>
+      <item>cmpsq</item>
+      <item>cmpsw</item>
+      <item>cmpxchg</item>
+      <item>cmpxchg486</item>
+      <item>cmpxchg8b</item>
+      <item>cmpxchg16b</item>
+      <item>cpuid</item>
+      <item>cpu_read</item>
+      <item>cpu_write</item>
+      <item>cqo</item>
+      <item>cwd</item>
+      <item>cwde</item>
+      <item>daa</item>
+      <item>das</item>
+      <item>dec</item>
+      <item>decl</item>
+      <item>decq</item>
+      <item>div</item>
+      <item>divb</item>
+      <item>divw</item>
+      <item>divl</item>
+      <item>divq</item>
+      <item>dmint</item>
+      <item>emms</item>
+      <item>enter</item>
+      <item>equ</item>
+      <item>f2xm1</item>
+      <item>fabs</item>
+      <item>fadd</item>
+      <item>faddp</item>
+      <item>fbld</item>
+      <item>fbstp</item>
+      <item>fchs</item>
+      <item>fclex</item>
+      <item>fcmovb</item>
+      <item>fcmovbe</item>
+      <item>fcmove</item>
+      <item>fcmovnb</item>
+      <item>fcmovnbe</item>
+      <item>fcmovne</item>
+      <item>fcmovnu</item>
+      <item>fcmovu</item>
+      <item>fcom</item>
+      <item>fcomi</item>
+      <item>fcomip</item>
+      <item>fcomp</item>
+      <item>fcompp</item>
+      <item>fcos</item>
+      <item>fdecstp</item>
+      <item>fdisi</item>
+      <item>fdiv</item>
+      <item>fdivp</item>
+      <item>fdivr</item>
+      <item>fdivrp</item>
+      <item>femms</item>
+      <item>feni</item>
+      <item>ffree</item>
+      <item>ffreep</item>
+      <item>fiadd</item>
+      <item>ficom</item>
+      <item>ficomp</item>
+      <item>fidiv</item>
+      <item>fidivr</item>
+      <item>fild</item>
+      <item>fimul</item>
+      <item>fincstp</item>
+      <item>finit</item>
+      <item>fist</item>
+      <item>fistp</item>
+      <item>fisttp</item>
+      <item>fisub</item>
+      <item>fisubr</item>
+      <item>fld</item>
+      <item>fld1</item>
+      <item>fldcw</item>
+      <item>fldenv</item>
+      <item>fldl2e</item>
+      <item>fldl2t</item>
+      <item>fldlg2</item>
+      <item>fldln2</item>
+      <item>fldpi</item>
+      <item>fldz</item>
+      <item>fmul</item>
+      <item>fmulp</item>
+      <item>fnclex</item>
+      <item>fndisi</item>
+      <item>fneni</item>
+      <item>fninit</item>
+      <item>fnop</item>
+      <item>fnsave</item>
+      <item>fnstcw</item>
+      <item>fnstenv</item>
+      <item>fnstsw</item>
+      <item>fpatan</item>
+      <item>fprem</item>
+      <item>fprem1</item>
+      <item>fptan</item>
+      <item>frndint</item>
+      <item>frstor</item>
+      <item>fsave</item>
+      <item>fscale</item>
+      <item>fsetpm</item>
+      <item>fsin</item>
+      <item>fsincos</item>
+      <item>fsqrt</item>
+      <item>fst</item>
+      <item>fstcw</item>
+      <item>fstenv</item>
+      <item>fstp</item>
+      <item>fstsw</item>
+      <item>fsub</item>
+      <item>fsubp</item>
+      <item>fsubr</item>
+      <item>fsubrp</item>
+      <item>ftst</item>
+      <item>fucom</item>
+      <item>fucomi</item>
+      <item>fucomip</item>
+      <item>fucomp</item>
+      <item>fucompp</item>
+      <item>fxam</item>
+      <item>fxch</item>
+      <item>fxtract</item>
+      <item>fyl2x</item>
+      <item>fyl2xp1</item>
+      <item>global</item>
+      <item>globl</item>
+      <item>hlt</item>
+      <item>ibts</item>
+      <item>icebp</item>
+      <item>idiv</item>
+      <item>idivb</item>
+      <item>idivw</item>
+      <item>idivl</item>
+      <item>idivq</item>
+      <item>imul</item>
+      <item>imulb</item>
+      <item>imulw</item>
+      <item>imull</item>
+      <item>imulq</item>
+      <item>in</item>
+      <item>inc</item>
+      <item>incl</item>
+      <item>incq</item>
+      <item>incbin</item>
+      <item>insb</item>
+      <item>insd</item>
+      <item>insw</item>
+      <item>int</item>
+      <item>int01</item>
+      <item>int1</item>
+      <item>int03</item>
+      <item>int3</item>
+      <item>into</item>
+      <item>invd</item>
+      <item>invpcid</item>
+      <item>invlpg</item>
+      <item>invlpga</item>
+      <item>lahf</item>
+      <item>lar</item>
+      <item>lds</item>
+      <item>leal</item>
+      <item>leaq</item>
+      <item>leave</item>
+      <item>les</item>
+      <item>lfence</item>
+      <item>lfs</item>
+      <item>lgdt</item>
+      <item>lgs</item>
+      <item>lidt</item>
+      <item>lldt</item>
+      <item>lmsw</item>
+      <item>loadall</item>
+      <item>loadall286</item>
+      <item>lodsb</item>
+      <item>lodsd</item>
+      <item>lodsq</item>
+      <item>lodsw</item>
+      <item>loop</item>
+      <item>loope</item>
+      <item>loopne</item>
+      <item>loopnz</item>
+      <item>loopz</item>
+      <item>lsl</item>
+      <item>lss</item>
+      <item>ltr</item>
+      <item>mfence</item>
+      <item>monitor</item>
+      <item>movb</item>
+      <item>movw</item>
+      <item>movl</item>
+      <item>movq</item>
+      <item>movsb</item>
+      <item>movsd</item>
+      <item>movsq</item>
+      <item>movsw</item>
+      <item>movsx</item>
+      <item>movsxd</item>
+      <item>movzx</item>
+      <item>movsbw</item>
+      <item>movsxb</item>
+      <item>movsbl</item>
+      <item>movsbq</item>
+      <item>movswl</item>
+      <item>movsxw</item>
+      <item>movswq</item>
+      <item>movslq</item>
+      <item>movsxl</item>
+      <item>movzbw</item>
+      <item>movzxb</item>
+      <item>movzbl</item>
+      <item>movzbq</item>
+      <item>movzwl</item>
+      <item>movzxw</item>
+      <item>movzwq</item>
+      <item>mul</item>
+      <item>mulb</item>
+      <item>mulw</item>
+      <item>mull</item>
+      <item>mulq</item>
+      <item>mwait</item>
+      <item>neg</item>
+      <item>nop</item>
+      <item>not</item>
+      <item>or</item>
+      <item>out</item>
+      <item>outsb</item>
+      <item>outsd</item>
+      <item>outsw</item>
+      <item>packssdw</item>
+      <item>packsswb</item>
+      <item>packuswb</item>
+      <item>paddb</item>
+      <item>paddd</item>
+      <item>paddsb</item>
+      <item>paddsiw</item>
+      <item>paddsw</item>
+      <item>paddusb</item>
+      <item>paddusw</item>
+      <item>paddw</item>
+      <item>pand</item>
+      <item>pandn</item>
+      <item>paveb</item>
+      <item>pavgusb</item>
+      <item>pcmpeqb</item>
+      <item>pcmpeqd</item>
+      <item>pcmpeqw</item>
+      <item>pcmpgtb</item>
+      <item>pcmpgtd</item>
+      <item>pcmpgtw</item>
+      <item>pdistib</item>
+      <item>pf2id</item>
+      <item>pfacc</item>
+      <item>pfadd</item>
+      <item>pfcmpeq</item>
+      <item>pfcmpge</item>
+      <item>pfcmpgt</item>
+      <item>pfmax</item>
+      <item>pfmin</item>
+      <item>pfmul</item>
+      <item>pfrcp</item>
+      <item>pfrcpit1</item>
+      <item>pfrcpit2</item>
+      <item>pfrsqit1</item>
+      <item>pfrsqrt</item>
+      <item>pfsub</item>
+      <item>pfsubr</item>
+      <item>pi2fd</item>
+      <item>pmachriw</item>
+      <item>pmaddwd</item>
+      <item>pmagw</item>
+      <item>pmulhriw</item>
+      <item>pmulhrwa</item>
+      <item>pmulhrwc</item>
+      <item>pmulhw</item>
+      <item>pmullw</item>
+      <item>pmvgezb</item>
+      <item>pmvlzb</item>
+      <item>pmvnzb</item>
+      <item>pmvzb</item>
+      <item>pop</item>
+      <item>popl</item>
+      <item>popq</item>
+      <item>popa</item>
+      <item>popad</item>
+      <item>popaw</item>
+      <item>popf</item>
+      <item>popfd</item>
+      <item>popfq</item>
+      <item>popfw</item>
+      <item>por</item>
+      <item>prefetch</item>
+      <item>prefetchw</item>
+      <item>pslld</item>
+      <item>psllq</item>
+      <item>psllw</item>
+      <item>psrad</item>
+      <item>psraw</item>
+      <item>psrld</item>
+      <item>psrlq</item>
+      <item>psrlw</item>
+      <item>psubb</item>
+      <item>psubd</item>
+      <item>psubsb</item>
+      <item>psubsiw</item>
+      <item>psubsw</item>
+      <item>psubusb</item>
+      <item>psubusw</item>
+      <item>psubw</item>
+      <item>punpckhbw</item>
+      <item>punpckhdq</item>
+      <item>punpckhwd</item>
+      <item>punpcklbw</item>
+      <item>punpckldq</item>
+      <item>punpcklwd</item>
+      <item>push</item>
+      <item>pusha</item>
+      <item>pushl</item>
+      <item>pushq</item>
+      <item>pushad</item>
+      <item>pushaw</item>
+      <item>pushf</item>
+      <item>pushfd</item>
+      <item>pushfq</item>
+      <item>pushfw</item>
+      <item>pxor</item>
+      <item>rcl</item>
+      <item>rcr</item>
+      <item>rdshr</item>
+      <item>rdmsr</item>
+      <item>rdpmc</item>
+      <item>rdtsc</item>
+      <item>rdtscp</item>
+      <item>rdm</item>
+      <item>rsdc</item>
+      <item>rsldt</item>
+      <item>rsm</item>
+      <item>rsts</item>
+      <item>sahf</item>
+      <item>sal</item>
+      <item>sall</item>
+      <item>salq</item>
+      <item>salc</item>
+      <item>sar</item>
+      <item>sarl</item>
+      <item>sarq</item>
+      <item>sbb</item>
+      <item>scasb</item>
+      <item>scasd</item>
+      <item>scasq</item>
+      <item>scasw</item>
+      <item>sfence</item>
+      <item>sgdt</item>
+      <item>shl</item>
+      <item>shll</item>
+      <item>shllq</item>
+      <item>shld</item>
+      <item>shr</item>
+      <item>shrd</item>
+      <item>sidt</item>
+      <item>sldt</item>
+      <item>skinit</item>
+      <item>smi</item>
+      <item>smint</item>
+      <item>smintold</item>
+      <item>smsw</item>
+      <item>stc</item>
+      <item>std</item>
+      <item>sti</item>
+      <item>stosb</item>
+      <item>stosd</item>
+      <item>stosq</item>
+      <item>stosw</item>
+      <item>str</item>
+      <item>sub</item>
+      <item>subw</item>
+      <item>subl</item>
+      <item>subq</item>
+      <item>svdc</item>
+      <item>svldt</item>
+      <item>svts</item>
+      <item>swapgs</item>
+      <item>syscall</item>
+      <item>sysenter</item>
+      <item>sysexit</item>
+      <item>sysret</item>
+      <item>test</item>
+      <item>testl</item>
+      <item>testq</item>
+      <item>ud0</item>
+      <item>ud1</item>
+      <item>ud2b</item>
+      <item>ud2</item>
+      <item>ud2a</item>
+      <item>umov</item>
+      <item>verr</item>
+      <item>verw</item>
+      <item>fwait</item>
+      <item>wbinvd</item>
+      <item>wrshr</item>
+      <item>wrmsr</item>
+      <item>xadd</item>
+      <item>xbts</item>
+      <item>xchg</item>
+      <item>xlatb</item>
+      <item>xlat</item>
+      <item>xor</item>
+      <item>xorl</item>
+      <item>xorq</item>
+      <item>cmove</item>
+      <item>cmovz</item>
+      <item>cmovne</item>
+      <item>cmovnz</item>
+      <item>cmova</item>
+      <item>cmovnbe</item>
+      <item>cmovae</item>
+      <item>cmovnb</item>
+      <item>cmovb</item>
+      <item>cmovnae</item>
+      <item>cmovbe</item>
+      <item>cmovna</item>
+      <item>cmovg</item>
+      <item>cmovnle</item>
+      <item>cmovge</item>
+      <item>cmovnl</item>
+      <item>cmovl</item>
+      <item>cmovnge</item>
+      <item>cmovle</item>
+      <item>cmovng</item>
+      <item>cmovc</item>
+      <item>cmovnc</item>
+      <item>cmovo</item>
+      <item>cmovno</item>
+      <item>cmovs</item>
+      <item>cmovns</item>
+      <item>cmovp</item>
+      <item>cmovpe</item>
+      <item>cmovnp</item>
+      <item>cmovpo</item>
+      <item>sete</item>
+      <item>setz</item>
+      <item>setne</item>
+      <item>setnz</item>
+      <item>seta</item>
+      <item>setnbe</item>
+      <item>setae</item>
+      <item>setnb</item>
+      <item>setnc</item>
+      <item>setb</item>
+      <item>setnae</item>
+      <item>setcset</item>
+      <item>setbe</item>
+      <item>setna</item>
+      <item>setg</item>
+      <item>setnle</item>
+      <item>setge</item>
+      <item>setnl</item>
+      <item>setl</item>
+      <item>setnge</item>
+      <item>setle</item>
+      <item>setng</item>
+      <item>sets</item>
+      <item>setns</item>
+      <item>seto</item>
+      <item>setno</item>
+      <item>setpe</item>
+      <item>setp</item>
+      <item>setpo</item>
+      <item>setnp</item>
+      <item>addps</item>
+      <item>addss</item>
+      <item>andnps</item>
+      <item>andps</item>
+      <item>cmpeqps</item>
+      <item>cmpeqss</item>
+      <item>cmpleps</item>
+      <item>cmpless</item>
+      <item>cmpltps</item>
+      <item>cmpltss</item>
+      <item>cmpneqps</item>
+      <item>cmpneqss</item>
+      <item>cmpnleps</item>
+      <item>cmpnless</item>
+      <item>cmpnltps</item>
+      <item>cmpnltss</item>
+      <item>cmpordps</item>
+      <item>cmpordss</item>
+      <item>cmpunordps</item>
+      <item>cmpunordss</item>
+      <item>cmpps</item>
+      <item>cmpss</item>
+      <item>comiss</item>
+      <item>cvtpi2ps</item>
+      <item>cvtps2pi</item>
+      <item>cvtsi2ss</item>
+      <item>cvtss2si</item>
+      <item>cvttps2pi</item>
+      <item>cvttss2si</item>
+      <item>divps</item>
+      <item>divss</item>
+      <item>ldmxcsr</item>
+      <item>maxps</item>
+      <item>maxss</item>
+      <item>minps</item>
+      <item>minss</item>
+      <item>movaps</item>
+      <item>movhps</item>
+      <item>movlhps</item>
+      <item>movlps</item>
+      <item>movhlps</item>
+      <item>movmskps</item>
+      <item>movntps</item>
+      <item>movss</item>
+      <item>movups</item>
+      <item>mulps</item>
+      <item>mulss</item>
+      <item>orps</item>
+      <item>rcpps</item>
+      <item>rcpss</item>
+      <item>rsqrtps</item>
+      <item>rsqrtss</item>
+      <item>shufps</item>
+      <item>sqrtps</item>
+      <item>sqrtss</item>
+      <item>stmxcsr</item>
+      <item>subps</item>
+      <item>subss</item>
+      <item>ucomiss</item>
+      <item>unpckhps</item>
+      <item>unpcklps</item>
+      <item>xorps</item>
+      <item>fxrstor</item>
+      <item>fxrstor64</item>
+      <item>fxsave</item>
+      <item>fxsave64</item>
+      <item>xgetbv</item>
+      <item>xsetbv</item>
+      <item>xsave</item>
+      <item>xsave64</item>
+      <item>xsaveopt</item>
+      <item>xsaveopt64</item>
+      <item>xrstor</item>
+      <item>xrstor64</item>
+      <item>prefetchnta</item>
+      <item>prefetcht0</item>
+      <item>prefetcht1</item>
+      <item>prefetcht2</item>
+      <item>maskmovq</item>
+      <item>movntq</item>
+      <item>pavgb</item>
+      <item>pavgw</item>
+      <item>pextrw</item>
+      <item>pinsrw</item>
+      <item>pmaxsw</item>
+      <item>pmaxub</item>
+      <item>pminsw</item>
+      <item>pminub</item>
+      <item>pmovmskb</item>
+      <item>pmulhuw</item>
+      <item>psadbw</item>
+      <item>pshufw</item>
+      <item>pf2iw</item>
+      <item>pfnacc</item>
+      <item>pfpnacc</item>
+      <item>pi2fw</item>
+      <item>pswapd</item>
+      <item>maskmovdqu</item>
+      <item>clflush</item>
+      <item>movntdq</item>
+      <item>movnti</item>
+      <item>movntpd</item>
+      <item>movdqa</item>
+      <item>movdqu</item>
+      <item>movdq2q</item>
+      <item>movq2dq</item>
+      <item>paddq</item>
+      <item>pmuludq</item>
+      <item>pshufd</item>
+      <item>pshufhw</item>
+      <item>pshuflw</item>
+      <item>pslldq</item>
+      <item>psrldq</item>
+      <item>psubq</item>
+      <item>punpckhqdq</item>
+      <item>punpcklqdq</item>
+      <item>addpd</item>
+      <item>addsd</item>
+      <item>andnpd</item>
+      <item>andpd</item>
+      <item>cmpeqpd</item>
+      <item>cmpeqsd</item>
+      <item>cmplepd</item>
+      <item>cmplesd</item>
+      <item>cmpltpd</item>
+      <item>cmpltsd</item>
+      <item>cmpneqpd</item>
+      <item>cmpneqsd</item>
+      <item>cmpnlepd</item>
+      <item>cmpnlesd</item>
+      <item>cmpnltpd</item>
+      <item>cmpnltsd</item>
+      <item>cmpordpd</item>
+      <item>cmpordsd</item>
+      <item>cmpunordpd</item>
+      <item>cmpunordsd</item>
+      <item>cmppd</item>
+      <item>comisd</item>
+      <item>cvtdq2pd</item>
+      <item>cvtdq2ps</item>
+      <item>cvtpd2dq</item>
+      <item>cvtpd2pi</item>
+      <item>cvtpd2ps</item>
+      <item>cvtpi2pd</item>
+      <item>cvtps2dq</item>
+      <item>cvtps2pd</item>
+      <item>cvtsd2si</item>
+      <item>cvtsd2ss</item>
+      <item>cvtsi2sd</item>
+      <item>cvtss2sd</item>
+      <item>cvttpd2pi</item>
+      <item>cvttpd2dq</item>
+      <item>cvttps2dq</item>
+      <item>cvttsd2si</item>
+      <item>divpd</item>
+      <item>divsd</item>
+      <item>maxpd</item>
+      <item>maxsd</item>
+      <item>minpd</item>
+      <item>minsd</item>
+      <item>movapd</item>
+      <item>movhpd</item>
+      <item>movlpd</item>
+      <item>movmskpd</item>
+      <item>movupd</item>
+      <item>mulpd</item>
+      <item>mulsd</item>
+      <item>orpd</item>
+      <item>shufpd</item>
+      <item>sqrtpd</item>
+      <item>sqrtsd</item>
+      <item>subpd</item>
+      <item>subsd</item>
+      <item>ucomisd</item>
+      <item>unpckhpd</item>
+      <item>unpcklpd</item>
+      <item>xorpd</item>
+      <item>addsubpd</item>
+      <item>addsubps</item>
+      <item>haddpd</item>
+      <item>haddps</item>
+      <item>hsubpd</item>
+      <item>hsubps</item>
+      <item>lddqu</item>
+      <item>movddup</item>
+      <item>movshdup</item>
+      <item>movsldup</item>
+      <item>clgi</item>
+      <item>stgi</item>
+      <item>vmcall</item>
+      <item>vmclear</item>
+      <item>vmfunc</item>
+      <item>vmlaunch</item>
+      <item>vmload</item>
+      <item>vmmcall</item>
+      <item>vmptrld</item>
+      <item>vmptrst</item>
+      <item>vmread</item>
+      <item>vmresume</item>
+      <item>vmrun</item>
+      <item>vmsave</item>
+      <item>vmwrite</item>
+      <item>vmxoff</item>
+      <item>vmxon</item>
+      <item>invept</item>
+      <item>invvpid</item>
+      <item>pabsb</item>
+      <item>pabsw</item>
+      <item>pabsd</item>
+      <item>palignr</item>
+      <item>phaddw</item>
+      <item>phaddd</item>
+      <item>phaddsw</item>
+      <item>phsubw</item>
+      <item>phsubd</item>
+      <item>phsubsw</item>
+      <item>pmaddubsw</item>
+      <item>pmulhrsw</item>
+      <item>pshufb</item>
+      <item>psignb</item>
+      <item>psignw</item>
+      <item>psignd</item>
+      <item>extrq</item>
+      <item>insertq</item>
+      <item>movntsd</item>
+      <item>movntss</item>
+      <item>lzcnt</item>
+      <item>blendpd</item>
+      <item>blendps</item>
+      <item>blendvpd</item>
+      <item>blendvps</item>
+      <item>dppd</item>
+      <item>dpps</item>
+      <item>extractps</item>
+      <item>insertps</item>
+      <item>movntdqa</item>
+      <item>mpsadbw</item>
+      <item>packusdw</item>
+      <item>pblendvb</item>
+      <item>pblendw</item>
+      <item>pcmpeqq</item>
+      <item>pextrb</item>
+      <item>pextrd</item>
+      <item>pextrq</item>
+      <item>phminposuw</item>
+      <item>pinsrb</item>
+      <item>pinsrd</item>
+      <item>pinsrq</item>
+      <item>pmaxsb</item>
+      <item>pmaxsd</item>
+      <item>pmaxud</item>
+      <item>pmaxuw</item>
+      <item>pminsb</item>
+      <item>pminsd</item>
+      <item>pminud</item>
+      <item>pminuw</item>
+      <item>pmovsxbw</item>
+      <item>pmovsxbd</item>
+      <item>pmovsxbq</item>
+      <item>pmovsxwd</item>
+      <item>pmovsxwq</item>
+      <item>pmovsxdq</item>
+      <item>pmovzxbw</item>
+      <item>pmovzxbd</item>
+      <item>pmovzxbq</item>
+      <item>pmovzxwd</item>
+      <item>pmovzxwq</item>
+      <item>pmovzxdq</item>
+      <item>pmuldq</item>
+      <item>pmulld</item>
+      <item>ptest</item>
+      <item>roundpd</item>
+      <item>roundps</item>
+      <item>roundsd</item>
+      <item>roundss</item>
+      <item>crc32</item>
+      <item>pcmpestri</item>
+      <item>pcmpestrm</item>
+      <item>pcmpistri</item>
+      <item>pcmpistrm</item>
+      <item>pcmpgtq</item>
+      <item>popcnt</item>
+      <item>getsec</item>
+      <item>pfrcpv</item>
+      <item>pfrsqrtv</item>
+      <item>movbe</item>
+      <item>aesenc</item>
+      <item>aesenclast</item>
+      <item>aesdec</item>
+      <item>aesdeclast</item>
+      <item>aesimc</item>
+      <item>aeskeygenassist</item>
+      <item>vaesenc</item>
+      <item>vaesenclast</item>
+      <item>vaesdec</item>
+      <item>vaesdeclast</item>
+      <item>vaesimc</item>
+      <item>vaeskeygenassist</item>
+      <item>vaddpd</item>
+      <item>vaddps</item>
+      <item>vaddsd</item>
+      <item>vaddss</item>
+      <item>vaddsubpd</item>
+      <item>vaddsubps</item>
+      <item>vandpd</item>
+      <item>vandps</item>
+      <item>vandnpd</item>
+      <item>vandnps</item>
+      <item>vblendpd</item>
+      <item>vblendps</item>
+      <item>vblendvpd</item>
+      <item>vblendvps</item>
+      <item>vbroadcastss</item>
+      <item>vbroadcastsd</item>
+      <item>vbroadcastf128</item>
+      <item>vcmpeq_ospd</item>
+      <item>vcmpeqpd</item>
+      <item>vcmplt_ospd</item>
+      <item>vcmpltpd</item>
+      <item>vcmple_ospd</item>
+      <item>vcmplepd</item>
+      <item>vcmpunord_qpd</item>
+      <item>vcmpunordpd</item>
+      <item>vcmpneq_uqpd</item>
+      <item>vcmpneqpd</item>
+      <item>vcmpnlt_uspd</item>
+      <item>vcmpnltpd</item>
+      <item>vcmpnle_uspd</item>
+      <item>vcmpnlepd</item>
+      <item>vcmpord_qpd</item>
+      <item>vcmpordpd</item>
+      <item>vcmpeq_uqpd</item>
+      <item>vcmpnge_uspd</item>
+      <item>vcmpngepd</item>
+      <item>vcmpngt_uspd</item>
+      <item>vcmpngtpd</item>
+      <item>vcmpfalse_oqpd</item>
+      <item>vcmpfalsepd</item>
+      <item>vcmpneq_oqpd</item>
+      <item>vcmpge_ospd</item>
+      <item>vcmpgepd</item>
+      <item>vcmpgt_ospd</item>
+      <item>vcmpgtpd</item>
+      <item>vcmptrue_uqpd</item>
+      <item>vcmptruepd</item>
+      <item>vcmplt_oqpd</item>
+      <item>vcmple_oqpd</item>
+      <item>vcmpunord_spd</item>
+      <item>vcmpneq_uspd</item>
+      <item>vcmpnlt_uqpd</item>
+      <item>vcmpnle_uqpd</item>
+      <item>vcmpord_spd</item>
+      <item>vcmpeq_uspd</item>
+      <item>vcmpnge_uqpd</item>
+      <item>vcmpngt_uqpd</item>
+      <item>vcmpfalse_ospd</item>
+      <item>vcmpneq_ospd</item>
+      <item>vcmpge_oqpd</item>
+      <item>vcmpgt_oqpd</item>
+      <item>vcmptrue_uspd</item>
+      <item>vcmppd</item>
+      <item>vcmpeq_osps</item>
+      <item>vcmpeqps</item>
+      <item>vcmplt_osps</item>
+      <item>vcmpltps</item>
+      <item>vcmple_osps</item>
+      <item>vcmpleps</item>
+      <item>vcmpunord_qps</item>
+      <item>vcmpunordps</item>
+      <item>vcmpneq_uqps</item>
+      <item>vcmpneqps</item>
+      <item>vcmpnlt_usps</item>
+      <item>vcmpnltps</item>
+      <item>vcmpnle_usps</item>
+      <item>vcmpnleps</item>
+      <item>vcmpord_qps</item>
+      <item>vcmpordps</item>
+      <item>vcmpeq_uqps</item>
+      <item>vcmpnge_usps</item>
+      <item>vcmpngeps</item>
+      <item>vcmpngt_usps</item>
+      <item>vcmpngtps</item>
+      <item>vcmpfalse_oqps</item>
+      <item>vcmpfalseps</item>
+      <item>vcmpneq_oqps</item>
+      <item>vcmpge_osps</item>
+      <item>vcmpgeps</item>
+      <item>vcmpgt_osps</item>
+      <item>vcmpgtps</item>
+      <item>vcmptrue_uqps</item>
+      <item>vcmptrueps</item>
+      <item>vcmplt_oqps</item>
+      <item>vcmple_oqps</item>
+      <item>vcmpunord_sps</item>
+      <item>vcmpneq_usps</item>
+      <item>vcmpnlt_uqps</item>
+      <item>vcmpnle_uqps</item>
+      <item>vcmpord_sps</item>
+      <item>vcmpeq_usps</item>
+      <item>vcmpnge_uqps</item>
+      <item>vcmpngt_uqps</item>
+      <item>vcmpfalse_osps</item>
+      <item>vcmpneq_osps</item>
+      <item>vcmpge_oqps</item>
+      <item>vcmpgt_oqps</item>
+      <item>vcmptrue_usps</item>
+      <item>vcmpps</item>
+      <item>vcmpeq_ossd</item>
+      <item>vcmpeqsd</item>
+      <item>vcmplt_ossd</item>
+      <item>vcmpltsd</item>
+      <item>vcmple_ossd</item>
+      <item>vcmplesd</item>
+      <item>vcmpunord_qsd</item>
+      <item>vcmpunordsd</item>
+      <item>vcmpneq_uqsd</item>
+      <item>vcmpneqsd</item>
+      <item>vcmpnlt_ussd</item>
+      <item>vcmpnltsd</item>
+      <item>vcmpnle_ussd</item>
+      <item>vcmpnlesd</item>
+      <item>vcmpord_qsd</item>
+      <item>vcmpordsd</item>
+      <item>vcmpeq_uqsd</item>
+      <item>vcmpnge_ussd</item>
+      <item>vcmpngesd</item>
+      <item>vcmpngt_ussd</item>
+      <item>vcmpngtsd</item>
+      <item>vcmpfalse_oqsd</item>
+      <item>vcmpfalsesd</item>
+      <item>vcmpneq_oqsd</item>
+      <item>vcmpge_ossd</item>
+      <item>vcmpgesd</item>
+      <item>vcmpgt_ossd</item>
+      <item>vcmpgtsd</item>
+      <item>vcmptrue_uqsd</item>
+      <item>vcmptruesd</item>
+      <item>vcmplt_oqsd</item>
+      <item>vcmple_oqsd</item>
+      <item>vcmpunord_ssd</item>
+      <item>vcmpneq_ussd</item>
+      <item>vcmpnlt_uqsd</item>
+      <item>vcmpnle_uqsd</item>
+      <item>vcmpord_ssd</item>
+      <item>vcmpeq_ussd</item>
+      <item>vcmpnge_uqsd</item>
+      <item>vcmpngt_uqsd</item>
+      <item>vcmpfalse_ossd</item>
+      <item>vcmpneq_ossd</item>
+      <item>vcmpge_oqsd</item>
+      <item>vcmpgt_oqsd</item>
+      <item>vcmptrue_ussd</item>
+      <item>vcmpsd</item>
+      <item>vcmpeq_osss</item>
+      <item>vcmpeqss</item>
+      <item>vcmplt_osss</item>
+      <item>vcmpltss</item>
+      <item>vcmple_osss</item>
+      <item>vcmpless</item>
+      <item>vcmpunord_qss</item>
+      <item>vcmpunordss</item>
+      <item>vcmpneq_uqss</item>
+      <item>vcmpneqss</item>
+      <item>vcmpnlt_usss</item>
+      <item>vcmpnltss</item>
+      <item>vcmpnle_usss</item>
+      <item>vcmpnless</item>
+      <item>vcmpord_qss</item>
+      <item>vcmpordss</item>
+      <item>vcmpeq_uqss</item>
+      <item>vcmpnge_usss</item>
+      <item>vcmpngess</item>
+      <item>vcmpngt_usss</item>
+      <item>vcmpngtss</item>
+      <item>vcmpfalse_oqss</item>
+      <item>vcmpfalsess</item>
+      <item>vcmpneq_oqss</item>
+      <item>vcmpge_osss</item>
+      <item>vcmpgess</item>
+      <item>vcmpgt_osss</item>
+      <item>vcmpgtss</item>
+      <item>vcmptrue_uqss</item>
+      <item>vcmptruess</item>
+      <item>vcmplt_oqss</item>
+      <item>vcmple_oqss</item>
+      <item>vcmpunord_sss</item>
+      <item>vcmpneq_usss</item>
+      <item>vcmpnlt_uqss</item>
+      <item>vcmpnle_uqss</item>
+      <item>vcmpord_sss</item>
+      <item>vcmpeq_usss</item>
+      <item>vcmpnge_uqss</item>
+      <item>vcmpngt_uqss</item>
+      <item>vcmpfalse_osss</item>
+      <item>vcmpneq_osss</item>
+      <item>vcmpge_oqss</item>
+      <item>vcmpgt_oqss</item>
+      <item>vcmptrue_usss</item>
+      <item>vcmpss</item>
+      <item>vcomisd</item>
+      <item>vcomiss</item>
+      <item>vcvtdq2pd</item>
+      <item>vcvtdq2ps</item>
+      <item>vcvtpd2dq</item>
+      <item>vcvtpd2ps</item>
+      <item>vcvtps2dq</item>
+      <item>vcvtps2pd</item>
+      <item>vcvtsd2si</item>
+      <item>vcvtsd2ss</item>
+      <item>vcvtsi2sd</item>
+      <item>vcvtsi2ss</item>
+      <item>vcvtss2sd</item>
+      <item>vcvtss2si</item>
+      <item>vcvttpd2dq</item>
+      <item>vcvttps2dq</item>
+      <item>vcvttsd2si</item>
+      <item>vcvttss2si</item>
+      <item>vdivpd</item>
+      <item>vdivps</item>
+      <item>vdivsd</item>
+      <item>vdivss</item>
+      <item>vdppd</item>
+      <item>vdpps</item>
+      <item>vextractf128</item>
+      <item>vextractps</item>
+      <item>vhaddpd</item>
+      <item>vhaddps</item>
+      <item>vhsubpd</item>
+      <item>vhsubps</item>
+      <item>vinsertf128</item>
+      <item>vinsertps</item>
+      <item>vlddqu</item>
+      <item>vldqqu</item>
+      <item>vldmxcsr</item>
+      <item>vmaskmovdqu</item>
+      <item>vmaskmovps</item>
+      <item>vmaskmovpd</item>
+      <item>vmaxpd</item>
+      <item>vmaxps</item>
+      <item>vmaxsd</item>
+      <item>vmaxss</item>
+      <item>vminpd</item>
+      <item>vminps</item>
+      <item>vminsd</item>
+      <item>vminss</item>
+      <item>vmovapd</item>
+      <item>vmovaps</item>
+      <item>vmovd</item>
+      <item>vmovq</item>
+      <item>vmovddup</item>
+      <item>vmovdqa</item>
+      <item>vmovqqa</item>
+      <item>vmovdqu</item>
+      <item>vmovqqu</item>
+      <item>vmovhlps</item>
+      <item>vmovhpd</item>
+      <item>vmovhps</item>
+      <item>vmovlhps</item>
+      <item>vmovlpd</item>
+      <item>vmovlps</item>
+      <item>vmovmskpd</item>
+      <item>vmovmskps</item>
+      <item>vmovntdq</item>
+      <item>vmovntqq</item>
+      <item>vmovntdqa</item>
+      <item>vmovntpd</item>
+      <item>vmovntps</item>
+      <item>vmovsd</item>
+      <item>vmovshdup</item>
+      <item>vmovsldup</item>
+      <item>vmovss</item>
+      <item>vmovupd</item>
+      <item>vmovups</item>
+      <item>vmpsadbw</item>
+      <item>vmulpd</item>
+      <item>vmulps</item>
+      <item>vmulsd</item>
+      <item>vmulss</item>
+      <item>vorpd</item>
+      <item>vorps</item>
+      <item>vpabsb</item>
+      <item>vpabsw</item>
+      <item>vpabsd</item>
+      <item>vpacksswb</item>
+      <item>vpackssdw</item>
+      <item>vpackuswb</item>
+      <item>vpackusdw</item>
+      <item>vpaddb</item>
+      <item>vpaddw</item>
+      <item>vpaddd</item>
+      <item>vpaddq</item>
+      <item>vpaddsb</item>
+      <item>vpaddsw</item>
+      <item>vpaddusb</item>
+      <item>vpaddusw</item>
+      <item>vpalignr</item>
+      <item>vpand</item>
+      <item>vpandn</item>
+      <item>vpavgb</item>
+      <item>vpavgw</item>
+      <item>vpblendvb</item>
+      <item>vpblendw</item>
+      <item>vpcmpestri</item>
+      <item>vpcmpestrm</item>
+      <item>vpcmpistri</item>
+      <item>vpcmpistrm</item>
+      <item>vpcmpeqb</item>
+      <item>vpcmpeqw</item>
+      <item>vpcmpeqd</item>
+      <item>vpcmpeqq</item>
+      <item>vpcmpgtb</item>
+      <item>vpcmpgtw</item>
+      <item>vpcmpgtd</item>
+      <item>vpcmpgtq</item>
+      <item>vpermilpd</item>
+      <item>vpermilps</item>
+      <item>vperm2f128</item>
+      <item>vpextrb</item>
+      <item>vpextrw</item>
+      <item>vpextrd</item>
+      <item>vpextrq</item>
+      <item>vphaddw</item>
+      <item>vphaddd</item>
+      <item>vphaddsw</item>
+      <item>vphminposuw</item>
+      <item>vphsubw</item>
+      <item>vphsubd</item>
+      <item>vphsubsw</item>
+      <item>vpinsrb</item>
+      <item>vpinsrw</item>
+      <item>vpinsrd</item>
+      <item>vpinsrq</item>
+      <item>vpmaddwd</item>
+      <item>vpmaddubsw</item>
+      <item>vpmaxsb</item>
+      <item>vpmaxsw</item>
+      <item>vpmaxsd</item>
+      <item>vpmaxub</item>
+      <item>vpmaxuw</item>
+      <item>vpmaxud</item>
+      <item>vpminsb</item>
+      <item>vpminsw</item>
+      <item>vpminsd</item>
+      <item>vpminub</item>
+      <item>vpminuw</item>
+      <item>vpminud</item>
+      <item>vpmovmskb</item>
+      <item>vpmovsxbw</item>
+      <item>vpmovsxbd</item>
+      <item>vpmovsxbq</item>
+      <item>vpmovsxwd</item>
+      <item>vpmovsxwq</item>
+      <item>vpmovsxdq</item>
+      <item>vpmovzxbw</item>
+      <item>vpmovzxbd</item>
+      <item>vpmovzxbq</item>
+      <item>vpmovzxwd</item>
+      <item>vpmovzxwq</item>
+      <item>vpmovzxdq</item>
+      <item>vpmulhuw</item>
+      <item>vpmulhrsw</item>
+      <item>vpmulhw</item>
+      <item>vpmullw</item>
+      <item>vpmulld</item>
+      <item>vpmuludq</item>
+      <item>vpmuldq</item>
+      <item>vpor</item>
+      <item>vpsadbw</item>
+      <item>vpshufb</item>
+      <item>vpshufd</item>
+      <item>vpshufhw</item>
+      <item>vpshuflw</item>
+      <item>vpsignb</item>
+      <item>vpsignw</item>
+      <item>vpsignd</item>
+      <item>vpslldq</item>
+      <item>vpsrldq</item>
+      <item>vpsllw</item>
+      <item>vpslld</item>
+      <item>vpsllq</item>
+      <item>vpsraw</item>
+      <item>vpsrad</item>
+      <item>vpsrlw</item>
+      <item>vpsrld</item>
+      <item>vpsrlq</item>
+      <item>vptest</item>
+      <item>vpsubb</item>
+      <item>vpsubw</item>
+      <item>vpsubd</item>
+      <item>vpsubq</item>
+      <item>vpsubsb</item>
+      <item>vpsubsw</item>
+      <item>vpsubusb</item>
+      <item>vpsubusw</item>
+      <item>vpunpckhbw</item>
+      <item>vpunpckhwd</item>
+      <item>vpunpckhdq</item>
+      <item>vpunpckhqdq</item>
+      <item>vpunpcklbw</item>
+      <item>vpunpcklwd</item>
+      <item>vpunpckldq</item>
+      <item>vpunpcklqdq</item>
+      <item>vpxor</item>
+      <item>vrcpps</item>
+      <item>vrcpss</item>
+      <item>vrsqrtps</item>
+      <item>vrsqrtss</item>
+      <item>vroundpd</item>
+      <item>vroundps</item>
+      <item>vroundsd</item>
+      <item>vroundss</item>
+      <item>vshufpd</item>
+      <item>vshufps</item>
+      <item>vsqrtpd</item>
+      <item>vsqrtps</item>
+      <item>vsqrtsd</item>
+      <item>vsqrtss</item>
+      <item>vstmxcsr</item>
+      <item>vsubpd</item>
+      <item>vsubps</item>
+      <item>vsubsd</item>
+      <item>vsubss</item>
+      <item>vtestps</item>
+      <item>vtestpd</item>
+      <item>vucomisd</item>
+      <item>vucomiss</item>
+      <item>vunpckhpd</item>
+      <item>vunpckhps</item>
+      <item>vunpcklpd</item>
+      <item>vunpcklps</item>
+      <item>vxorpd</item>
+      <item>vxorps</item>
+      <item>vzeroall</item>
+      <item>vzeroupper</item>
+      <item>pclmullqlqdq</item>
+      <item>pclmulhqlqdq</item>
+      <item>pclmullqhqdq</item>
+      <item>pclmulhqhqdq</item>
+      <item>pclmulqdq</item>
+      <item>vpclmullqlqdq</item>
+      <item>vpclmulhqlqdq</item>
+      <item>vpclmullqhqdq</item>
+      <item>vpclmulhqhqdq</item>
+      <item>vpclmulqdq</item>
+      <item>vfmadd132ps</item>
+      <item>vfmadd132pd</item>
+      <item>vfmadd312ps</item>
+      <item>vfmadd312pd</item>
+      <item>vfmadd213ps</item>
+      <item>vfmadd213pd</item>
+      <item>vfmadd123ps</item>
+      <item>vfmadd123pd</item>
+      <item>vfmadd231ps</item>
+      <item>vfmadd231pd</item>
+      <item>vfmadd321ps</item>
+      <item>vfmadd321pd</item>
+      <item>vfmaddsub132ps</item>
+      <item>vfmaddsub132pd</item>
+      <item>vfmaddsub312ps</item>
+      <item>vfmaddsub312pd</item>
+      <item>vfmaddsub213ps</item>
+      <item>vfmaddsub213pd</item>
+      <item>vfmaddsub123ps</item>
+      <item>vfmaddsub123pd</item>
+      <item>vfmaddsub231ps</item>
+      <item>vfmaddsub231pd</item>
+      <item>vfmaddsub321ps</item>
+      <item>vfmaddsub321pd</item>
+      <item>vfmsub132ps</item>
+      <item>vfmsub132pd</item>
+      <item>vfmsub312ps</item>
+      <item>vfmsub312pd</item>
+      <item>vfmsub213ps</item>
+      <item>vfmsub213pd</item>
+      <item>vfmsub123ps</item>
+      <item>vfmsub123pd</item>
+      <item>vfmsub231ps</item>
+      <item>vfmsub231pd</item>
+      <item>vfmsub321ps</item>
+      <item>vfmsub321pd</item>
+      <item>vfmsubadd132ps</item>
+      <item>vfmsubadd132pd</item>
+      <item>vfmsubadd312ps</item>
+      <item>vfmsubadd312pd</item>
+      <item>vfmsubadd213ps</item>
+      <item>vfmsubadd213pd</item>
+      <item>vfmsubadd123ps</item>
+      <item>vfmsubadd123pd</item>
+      <item>vfmsubadd231ps</item>
+      <item>vfmsubadd231pd</item>
+      <item>vfmsubadd321ps</item>
+      <item>vfmsubadd321pd</item>
+      <item>vfnmadd132ps</item>
+      <item>vfnmadd132pd</item>
+      <item>vfnmadd312ps</item>
+      <item>vfnmadd312pd</item>
+      <item>vfnmadd213ps</item>
+      <item>vfnmadd213pd</item>
+      <item>vfnmadd123ps</item>
+      <item>vfnmadd123pd</item>
+      <item>vfnmadd231ps</item>
+      <item>vfnmadd231pd</item>
+      <item>vfnmadd321ps</item>
+      <item>vfnmadd321pd</item>
+      <item>vfnmsub132ps</item>
+      <item>vfnmsub132pd</item>
+      <item>vfnmsub312ps</item>
+      <item>vfnmsub312pd</item>
+      <item>vfnmsub213ps</item>
+      <item>vfnmsub213pd</item>
+      <item>vfnmsub123ps</item>
+      <item>vfnmsub123pd</item>
+      <item>vfnmsub231ps</item>
+      <item>vfnmsub231pd</item>
+      <item>vfnmsub321ps</item>
+      <item>vfnmsub321pd</item>
+      <item>vfmadd132ss</item>
+      <item>vfmadd132sd</item>
+      <item>vfmadd312ss</item>
+      <item>vfmadd312sd</item>
+      <item>vfmadd213ss</item>
+      <item>vfmadd213sd</item>
+      <item>vfmadd123ss</item>
+      <item>vfmadd123sd</item>
+      <item>vfmadd231ss</item>
+      <item>vfmadd231sd</item>
+      <item>vfmadd321ss</item>
+      <item>vfmadd321sd</item>
+      <item>vfmsub132ss</item>
+      <item>vfmsub132sd</item>
+      <item>vfmsub312ss</item>
+      <item>vfmsub312sd</item>
+      <item>vfmsub213ss</item>
+      <item>vfmsub213sd</item>
+      <item>vfmsub123ss</item>
+      <item>vfmsub123sd</item>
+      <item>vfmsub231ss</item>
+      <item>vfmsub231sd</item>
+      <item>vfmsub321ss</item>
+      <item>vfmsub321sd</item>
+      <item>vfnmadd132ss</item>
+      <item>vfnmadd132sd</item>
+      <item>vfnmadd312ss</item>
+      <item>vfnmadd312sd</item>
+      <item>vfnmadd213ss</item>
+      <item>vfnmadd213sd</item>
+      <item>vfnmadd123ss</item>
+      <item>vfnmadd123sd</item>
+      <item>vfnmadd231ss</item>
+      <item>vfnmadd231sd</item>
+      <item>vfnmadd321ss</item>
+      <item>vfnmadd321sd</item>
+      <item>vfnmsub132ss</item>
+      <item>vfnmsub132sd</item>
+      <item>vfnmsub312ss</item>
+      <item>vfnmsub312sd</item>
+      <item>vfnmsub213ss</item>
+      <item>vfnmsub213sd</item>
+      <item>vfnmsub123ss</item>
+      <item>vfnmsub123sd</item>
+      <item>vfnmsub231ss</item>
+      <item>vfnmsub231sd</item>
+      <item>vfnmsub321ss</item>
+      <item>vfnmsub321sd</item>
+      <item>rdfsbase</item>
+      <item>rdgsbase</item>
+      <item>rdrand</item>
+      <item>wrfsbase</item>
+      <item>wrgsbase</item>
+      <item>vcvtph2ps</item>
+      <item>vcvtps2ph</item>
+      <item>adcx</item>
+      <item>adox</item>
+      <item>rdseed</item>
+      <item>clac</item>
+      <item>stac</item>
+      <item>xstore</item>
+      <item>xcryptecb</item>
+      <item>xcryptcbc</item>
+      <item>xcryptctr</item>
+      <item>xcryptcfb</item>
+      <item>xcryptofb</item>
+      <item>montmul</item>
+      <item>xsha1</item>
+      <item>xsha256</item>
+      <item>llwpcb</item>
+      <item>slwpcb</item>
+      <item>lwpval</item>
+      <item>lwpins</item>
+      <item>vfmaddpd</item>
+      <item>vfmaddps</item>
+      <item>vfmaddsd</item>
+      <item>vfmaddss</item>
+      <item>vfmaddsubpd</item>
+      <item>vfmaddsubps</item>
+      <item>vfmsubaddpd</item>
+      <item>vfmsubaddps</item>
+      <item>vfmsubpd</item>
+      <item>vfmsubps</item>
+      <item>vfmsubsd</item>
+      <item>vfmsubss</item>
+      <item>vfnmaddpd</item>
+      <item>vfnmaddps</item>
+      <item>vfnmaddsd</item>
+      <item>vfnmaddss</item>
+      <item>vfnmsubpd</item>
+      <item>vfnmsubps</item>
+      <item>vfnmsubsd</item>
+      <item>vfnmsubss</item>
+      <item>vfrczpd</item>
+      <item>vfrczps</item>
+      <item>vfrczsd</item>
+      <item>vfrczss</item>
+      <item>vpcmov</item>
+      <item>vpcomb</item>
+      <item>vpcomd</item>
+      <item>vpcomq</item>
+      <item>vpcomub</item>
+      <item>vpcomud</item>
+      <item>vpcomuq</item>
+      <item>vpcomuw</item>
+      <item>vpcomw</item>
+      <item>vphaddbd</item>
+      <item>vphaddbq</item>
+      <item>vphaddbw</item>
+      <item>vphadddq</item>
+      <item>vphaddubd</item>
+      <item>vphaddubq</item>
+      <item>vphaddubw</item>
+      <item>vphaddudq</item>
+      <item>vphadduwd</item>
+      <item>vphadduwq</item>
+      <item>vphaddwd</item>
+      <item>vphaddwq</item>
+      <item>vphsubbw</item>
+      <item>vphsubdq</item>
+      <item>vphsubwd</item>
+      <item>vpmacsdd</item>
+      <item>vpmacsdqh</item>
+      <item>vpmacsdql</item>
+      <item>vpmacssdd</item>
+      <item>vpmacssdqh</item>
+      <item>vpmacssdql</item>
+      <item>vpmacsswd</item>
+      <item>vpmacssww</item>
+      <item>vpmacswd</item>
+      <item>vpmacsww</item>
+      <item>vpmadcsswd</item>
+      <item>vpmadcswd</item>
+      <item>vpperm</item>
+      <item>vprotb</item>
+      <item>vprotd</item>
+      <item>vprotq</item>
+      <item>vprotw</item>
+      <item>vpshab</item>
+      <item>vpshad</item>
+      <item>vpshaq</item>
+      <item>vpshaw</item>
+      <item>vpshlb</item>
+      <item>vpshld</item>
+      <item>vpshlq</item>
+      <item>vpshlw</item>
+      <item>vbroadcasti128</item>
+      <item>vpblendd</item>
+      <item>vpbroadcastb</item>
+      <item>vpbroadcastw</item>
+      <item>vpbroadcastd</item>
+      <item>vpbroadcastq</item>
+      <item>vpermd</item>
+      <item>vpermpd</item>
+      <item>vpermps</item>
+      <item>vpermq</item>
+      <item>vperm2i128</item>
+      <item>vextracti128</item>
+      <item>vinserti128</item>
+      <item>vpmaskmovd</item>
+      <item>vpmaskmovq</item>
+      <item>vpsllvd</item>
+      <item>vpsllvq</item>
+      <item>vpsravd</item>
+      <item>vpsrlvd</item>
+      <item>vpsrlvq</item>
+      <item>vgatherdpd</item>
+      <item>vgatherqpd</item>
+      <item>vgatherdps</item>
+      <item>vgatherqps</item>
+      <item>vpgatherdd</item>
+      <item>vpgatherqd</item>
+      <item>vpgatherdq</item>
+      <item>vpgatherqq</item>
+      <item>xabort</item>
+      <item>xbegin</item>
+      <item>xend</item>
+      <item>xtest</item>
+      <item>bextr</item>
+      <item>blci</item>
+      <item>blcic</item>
+      <item>blsi</item>
+      <item>blsic</item>
+      <item>blcfill</item>
+      <item>blsfill</item>
+      <item>blcmsk</item>
+      <item>blsmsk</item>
+      <item>blsr</item>
+      <item>blcs</item>
+      <item>bzhi</item>
+      <item>mulx</item>
+      <item>pdep</item>
+      <item>pext</item>
+      <item>rorx</item>
+      <item>sarx</item>
+      <item>shlx</item>
+      <item>shrx</item>
+      <item>tzcnt</item>
+      <item>tzmsk</item>
+      <item>t1mskc</item>
+      <item>valignd</item>
+      <item>valignq</item>
+      <item>vblendmpd</item>
+      <item>vblendmps</item>
+      <item>vbroadcastf32x4</item>
+      <item>vbroadcastf64x4</item>
+      <item>vbroadcasti32x4</item>
+      <item>vbroadcasti64x4</item>
+      <item>vcompresspd</item>
+      <item>vcompressps</item>
+      <item>vcvtpd2udq</item>
+      <item>vcvtps2udq</item>
+      <item>vcvtsd2usi</item>
+      <item>vcvtss2usi</item>
+      <item>vcvttpd2udq</item>
+      <item>vcvttps2udq</item>
+      <item>vcvttsd2usi</item>
+      <item>vcvttss2usi</item>
+      <item>vcvtudq2pd</item>
+      <item>vcvtudq2ps</item>
+      <item>vcvtusi2sd</item>
+      <item>vcvtusi2ss</item>
+      <item>vexpandpd</item>
+      <item>vexpandps</item>
+      <item>vextractf32x4</item>
+      <item>vextractf64x4</item>
+      <item>vextracti32x4</item>
+      <item>vextracti64x4</item>
+      <item>vfixupimmpd</item>
+      <item>vfixupimmps</item>
+      <item>vfixupimmsd</item>
+      <item>vfixupimmss</item>
+      <item>vgetexppd</item>
+      <item>vgetexpps</item>
+      <item>vgetexpsd</item>
+      <item>vgetexpss</item>
+      <item>vgetmantpd</item>
+      <item>vgetmantps</item>
+      <item>vgetmantsd</item>
+      <item>vgetmantss</item>
+      <item>vinsertf32x4</item>
+      <item>vinsertf64x4</item>
+      <item>vinserti32x4</item>
+      <item>vinserti64x4</item>
+      <item>vmovdqa32</item>
+      <item>vmovdqa64</item>
+      <item>vmovdqu32</item>
+      <item>vmovdqu64</item>
+      <item>vpabsq</item>
+      <item>vpandd</item>
+      <item>vpandnd</item>
+      <item>vpandnq</item>
+      <item>vpandq</item>
+      <item>vpblendmd</item>
+      <item>vpblendmq</item>
+      <item>vpcmpltd</item>
+      <item>vpcmpled</item>
+      <item>vpcmpneqd</item>
+      <item>vpcmpnltd</item>
+      <item>vpcmpnled</item>
+      <item>vpcmpd</item>
+      <item>vpcmpltq</item>
+      <item>vpcmpleq</item>
+      <item>vpcmpneqq</item>
+      <item>vpcmpnltq</item>
+      <item>vpcmpnleq</item>
+      <item>vpcmpq</item>
+      <item>vpcmpequd</item>
+      <item>vpcmpltud</item>
+      <item>vpcmpleud</item>
+      <item>vpcmpnequd</item>
+      <item>vpcmpnltud</item>
+      <item>vpcmpnleud</item>
+      <item>vpcmpud</item>
+      <item>vpcmpequq</item>
+      <item>vpcmpltuq</item>
+      <item>vpcmpleuq</item>
+      <item>vpcmpnequq</item>
+      <item>vpcmpnltuq</item>
+      <item>vpcmpnleuq</item>
+      <item>vpcmpuq</item>
+      <item>vpcompressd</item>
+      <item>vpcompressq</item>
+      <item>vpermi2d</item>
+      <item>vpermi2pd</item>
+      <item>vpermi2ps</item>
+      <item>vpermi2q</item>
+      <item>vpermt2d</item>
+      <item>vpermt2pd</item>
+      <item>vpermt2ps</item>
+      <item>vpermt2q</item>
+      <item>vpexpandd</item>
+      <item>vpexpandq</item>
+      <item>vpmaxsq</item>
+      <item>vpmaxuq</item>
+      <item>vpminsq</item>
+      <item>vpminuq</item>
+      <item>vpmovdb</item>
+      <item>vpmovdw</item>
+      <item>vpmovqb</item>
+      <item>vpmovqd</item>
+      <item>vpmovqw</item>
+      <item>vpmovsdb</item>
+      <item>vpmovsdw</item>
+      <item>vpmovsqb</item>
+      <item>vpmovsqd</item>
+      <item>vpmovsqw</item>
+      <item>vpmovusdb</item>
+      <item>vpmovusdw</item>
+      <item>vpmovusqb</item>
+      <item>vpmovusqd</item>
+      <item>vpmovusqw</item>
+      <item>vpord</item>
+      <item>vporq</item>
+      <item>vprold</item>
+      <item>vprolq</item>
+      <item>vprolvd</item>
+      <item>vprolvq</item>
+      <item>vprord</item>
+      <item>vprorq</item>
+      <item>vprorvd</item>
+      <item>vprorvq</item>
+      <item>vpscatterdd</item>
+      <item>vpscatterdq</item>
+      <item>vpscatterqd</item>
+      <item>vpscatterqq</item>
+      <item>vpsraq</item>
+      <item>vpsravq</item>
+      <item>vpternlogd</item>
+      <item>vpternlogq</item>
+      <item>vptestmd</item>
+      <item>vptestmq</item>
+      <item>vptestnmd</item>
+      <item>vptestnmq</item>
+      <item>vpxord</item>
+      <item>vpxorq</item>
+      <item>vrcp14pd</item>
+      <item>vrcp14ps</item>
+      <item>vrcp14sd</item>
+      <item>vrcp14ss</item>
+      <item>vrndscalepd</item>
+      <item>vrndscaleps</item>
+      <item>vrndscalesd</item>
+      <item>vrndscaless</item>
+      <item>vrsqrt14pd</item>
+      <item>vrsqrt14ps</item>
+      <item>vrsqrt14sd</item>
+      <item>vrsqrt14ss</item>
+      <item>vscalefpd</item>
+      <item>vscalefps</item>
+      <item>vscalefsd</item>
+      <item>vscalefss</item>
+      <item>vscatterdpd</item>
+      <item>vscatterdps</item>
+      <item>vscatterqpd</item>
+      <item>vscatterqps</item>
+      <item>vshuff32x4</item>
+      <item>vshuff64x2</item>
+      <item>vshufi32x4</item>
+      <item>vshufi64x2</item>
+      <item>kandnw</item>
+      <item>kandw</item>
+      <item>kmovw</item>
+      <item>knotw</item>
+      <item>kortestw</item>
+      <item>korw</item>
+      <item>kshiftlw</item>
+      <item>kshiftrw</item>
+      <item>kunpckbw</item>
+      <item>kxnorw</item>
+      <item>kxorw</item>
+      <item>vpbroadcastmb2q</item>
+      <item>vpbroadcastmw2d</item>
+      <item>vpconflictd</item>
+      <item>vpconflictq</item>
+      <item>vplzcntd</item>
+      <item>vplzcntq</item>
+      <item>vexp2pd</item>
+      <item>vexp2ps</item>
+      <item>vrcp28pd</item>
+      <item>vrcp28ps</item>
+      <item>vrcp28sd</item>
+      <item>vrcp28ss</item>
+      <item>vrsqrt28pd</item>
+      <item>vrsqrt28ps</item>
+      <item>vrsqrt28sd</item>
+      <item>vrsqrt28ss</item>
+      <item>vgatherpf0dpd</item>
+      <item>vgatherpf0dps</item>
+      <item>vgatherpf0qpd</item>
+      <item>vgatherpf0qps</item>
+      <item>vgatherpf1dpd</item>
+      <item>vgatherpf1dps</item>
+      <item>vgatherpf1qpd</item>
+      <item>vgatherpf1qps</item>
+      <item>vscatterpf0dpd</item>
+      <item>vscatterpf0dps</item>
+      <item>vscatterpf0qpd</item>
+      <item>vscatterpf0qps</item>
+      <item>vscatterpf1dpd</item>
+      <item>vscatterpf1dps</item>
+      <item>vscatterpf1qpd</item>
+      <item>vscatterpf1qps</item>
+      <item>prefetchwt1</item>
+      <item>bndmk</item>
+      <item>bndcl</item>
+      <item>bndcu</item>
+      <item>bndcn</item>
+      <item>bndmov</item>
+      <item>bndldx</item>
+      <item>bndstx</item>
+      <item>sha1rnds4</item>
+      <item>sha1nexte</item>
+      <item>sha1msg1</item>
+      <item>sha1msg2</item>
+      <item>sha256rnds2</item>
+      <item>sha256msg1</item>
+      <item>sha256msg2</item>
+      <item>hint_nop</item>
+      <!-- RISC-V standard hints -->
+      <item>c.ntl.all</item>
+      <item>c.ntl.p1</item>
+      <item>c.ntl.pall</item>
+      <item>c.ntl.s1</item>
+      <item>ntl.all</item>
+      <item>ntl.p1</item>
+      <item>ntl.pall</item>
+      <item>ntl.s1</item>
+      <item>pause</item>
+      <item>prefetch.i</item>
+      <item>prefetch.r</item>
+      <item>prefetch.w</item>
+      <!-- RISC-V basic RVI instructions and aliases -->
+      <item>add</item>
+      <item>addi</item>
+      <item>addiw</item>
+      <item>addw</item>
+      <item>and</item>
+      <item>andi</item>
+      <item>auipc</item>
+      <item>fence</item>
+      <item>fence.i</item>
+      <item>fence.tso</item>
+      <item>la</item>
+      <item>la.tls.gd</item>
+      <item>la.tls.ie</item>
+      <item>lb</item>
+      <item>lbu</item>
+      <item>ld</item>
+      <item>lga</item>
+      <item>lh</item>
+      <item>lhu</item>
+      <item>li</item>
+      <item>lla</item>
+      <item>lui</item>
+      <item>lw</item>
+      <item>lwu</item>
+      <item>move</item>
+      <item>mv</item>
+      <item>negw</item>
+      <item>ori</item>
+      <item>rdcycle</item>
+      <item>rdcycleh</item>
+      <item>rdinstret</item>
+      <item>rdinstreth</item>
+      <item>rdtime</item>
+      <item>rdtimeh</item>
+      <item>sb</item>
+      <item>sd</item>
+      <item>seqz</item>
+      <item>sext.w</item>
+      <item>sgt</item>
+      <item>sgtu</item>
+      <item>sgtz</item>
+      <item>sh</item>
+      <item>sll</item>
+      <item>slli</item>
+      <item>slliw</item>
+      <item>sllw</item>
+      <item>slt</item>
+      <item>slti</item>
+      <item>sltiu</item>
+      <item>sltu</item>
+      <item>sltz</item>
+      <item>snez</item>
+      <item>sra</item>
+      <item>srai</item>
+      <item>sraiw</item>
+      <item>sraw</item>
+      <item>srl</item>
+      <item>srli</item>
+      <item>srliw</item>
+      <item>srlw</item>
+      <item>sw</item>
+      <item>tail</item>
+      <item>unimp</item>
+      <item>xori</item>
+      <item>zext.b</item>
+      <!-- RISC-V control and status register (CSR) Instructions (Zicsr) -->
+      <item>csrc</item>
+      <item>csrci</item>
+      <item>csrr</item>
+      <item>csrrc</item>
+      <item>csrrci</item>
+      <item>csrrs</item>
+      <item>csrrsi</item>
+      <item>csrrw</item>
+      <item>csrrwi</item>
+      <item>csrs</item>
+      <item>csrsi</item>
+      <item>csrw</item>
+      <item>csrwi</item>
+      <!-- RISC-V may-be instructions (Zimop) -->
+      <item>mop.r.0</item>
+      <item>mop.r.1</item>
+      <item>mop.r.2</item>
+      <item>mop.r.3</item>
+      <item>mop.r.4</item>
+      <item>mop.r.5</item>
+      <item>mop.r.6</item>
+      <item>mop.r.7</item>
+      <item>mop.r.8</item>
+      <item>mop.r.9</item>
+      <item>mop.r.10</item>
+      <item>mop.r.11</item>
+      <item>mop.r.12</item>
+      <item>mop.r.13</item>
+      <item>mop.r.14</item>
+      <item>mop.r.15</item>
+      <item>mop.r.16</item>
+      <item>mop.r.17</item>
+      <item>mop.r.18</item>
+      <item>mop.r.19</item>
+      <item>mop.r.20</item>
+      <item>mop.r.21</item>
+      <item>mop.r.22</item>
+      <item>mop.r.23</item>
+      <item>mop.r.24</item>
+      <item>mop.r.25</item>
+      <item>mop.r.26</item>
+      <item>mop.r.27</item>
+      <item>mop.r.28</item>
+      <item>mop.r.29</item>
+      <item>mop.r.30</item>
+      <item>mop.r.31</item>
+      <item>mop.rr.0</item>
+      <item>mop.rr.1</item>
+      <item>mop.rr.2</item>
+      <item>mop.rr.3</item>
+      <item>mop.rr.4</item>
+      <item>mop.rr.5</item>
+      <item>mop.rr.6</item>
+      <item>mop.rr.7</item>
+      <!-- RISC-V compressed may-be instructions (Zcmop) -->
+      <item>c.mop.1</item>
+      <item>c.mop.3</item>
+      <item>c.mop.5</item>
+      <item>c.mop.7</item>
+      <item>c.mop.9</item>
+      <item>c.mop.11</item>
+      <item>c.mop.13</item>
+      <item>c.mop.15</item>
+      <!-- RISC-V integer conditional instructions -->
+      <item>czero.eqz</item>
+      <item>czero.nez</item>
+      <!-- RISC-V multiplication and division (M) -->
+      <item>divu</item>
+      <item>divuw</item>
+      <item>mulh</item>
+      <item>mulhsu</item>
+      <item>mulhu</item>
+      <item>rem</item>
+      <item>remu</item>
+      <item>remuw</item>
+      <item>remw</item>
+      <!-- RISC-V atomic operations (A) -->
+      <item>amoadd.d</item>
+      <item>amoadd.d.aq</item>
+      <item>amoadd.d.aqrl</item>
+      <item>amoadd.d.rl</item>
+      <item>amoadd.w</item>
+      <item>amoadd.w.aq</item>
+      <item>amoadd.w.aqrl</item>
+      <item>amoadd.w.rl</item>
+      <item>amoand.d</item>
+      <item>amoand.d.aq</item>
+      <item>amoand.d.aqrl</item>
+      <item>amoand.d.rl</item>
+      <item>amoand.w</item>
+      <item>amoand.w.aq</item>
+      <item>amoand.w.aqrl</item>
+      <item>amoand.w.rl</item>
+      <item>amomax.d</item>
+      <item>amomax.d.aq</item>
+      <item>amomax.d.aqrl</item>
+      <item>amomax.d.rl</item>
+      <item>amomax.w</item>
+      <item>amomax.w.aq</item>
+      <item>amomax.w.aqrl</item>
+      <item>amomax.w.rl</item>
+      <item>amomaxu.d</item>
+      <item>amomaxu.d.aq</item>
+      <item>amomaxu.d.aqrl</item>
+      <item>amomaxu.d.rl</item>
+      <item>amomaxu.w</item>
+      <item>amomaxu.w.aq</item>
+      <item>amomaxu.w.aqrl</item>
+      <item>amomaxu.w.rl</item>
+      <item>amomin.d</item>
+      <item>amomin.d.aq</item>
+      <item>amomin.d.aqrl</item>
+      <item>amomin.d.rl</item>
+      <item>amomin.w</item>
+      <item>amomin.w.aq</item>
+      <item>amomin.w.aqrl</item>
+      <item>amomin.w.rl</item>
+      <item>amominu.d</item>
+      <item>amominu.d.aq</item>
+      <item>amominu.d.aqrl</item>
+      <item>amominu.d.rl</item>
+      <item>amominu.w</item>
+      <item>amominu.w.aq</item>
+      <item>amominu.w.aqrl</item>
+      <item>amominu.w.rl</item>
+      <item>amoor.d</item>
+      <item>amoor.d.aq</item>
+      <item>amoor.d.aqrl</item>
+      <item>amoor.d.rl</item>
+      <item>amoor.w</item>
+      <item>amoor.w.aq</item>
+      <item>amoor.w.aqrl</item>
+      <item>amoor.w.rl</item>
+      <item>amoswap.d</item>
+      <item>amoswap.d.aq</item>
+      <item>amoswap.d.aqrl</item>
+      <item>amoswap.d.rl</item>
+      <item>amoswap.w</item>
+      <item>amoswap.w.aq</item>
+      <item>amoswap.w.aqrl</item>
+      <item>amoswap.w.rl</item>
+      <item>amoxor.d</item>
+      <item>amoxor.d.aq</item>
+      <item>amoxor.d.aqrl</item>
+      <item>amoxor.d.rl</item>
+      <item>amoxor.w</item>
+      <item>amoxor.w.aq</item>
+      <item>amoxor.w.aqrl</item>
+      <item>amoxor.w.rl</item>
+      <item>lr.d</item>
+      <item>lr.d.aq</item>
+      <item>lr.d.aqrl</item>
+      <item>lr.d.rl</item>
+      <item>lr.w</item>
+      <item>lr.w.aq</item>
+      <item>lr.w.aqrl</item>
+      <item>lr.w.rl</item>
+      <item>sc.d</item>
+      <item>sc.d.aq</item>
+      <item>sc.d.aqrl</item>
+      <item>sc.d.rl</item>
+      <item>sc.w</item>
+      <item>sc.w.aq</item>
+      <item>sc.w.aqrl</item>
+      <item>sc.w.rl</item>
+      <!-- RISC-V byte and halfword atomic memory operations (Zabha) -->
+      <item>amoadd.b</item>
+      <item>amoadd.b.aq</item>
+      <item>amoadd.b.aqrl</item>
+      <item>amoadd.b.rl</item>
+      <item>amoadd.h</item>
+      <item>amoadd.h.aq</item>
+      <item>amoadd.h.aqrl</item>
+      <item>amoadd.h.rl</item>
+      <item>amoand.b</item>
+      <item>amoand.b.aq</item>
+      <item>amoand.b.aqrl</item>
+      <item>amoand.b.rl</item>
+      <item>amoand.h</item>
+      <item>amoand.h.aq</item>
+      <item>amoand.h.aqrl</item>
+      <item>amoand.h.rl</item>
+      <item>amocas.b</item>
+      <item>amocas.b.aq</item>
+      <item>amocas.b.aqrl</item>
+      <item>amocas.b.rl</item>
+      <item>amocas.h</item>
+      <item>amocas.h.aq</item>
+      <item>amocas.h.aqrl</item>
+      <item>amocas.h.rl</item>
+      <item>amomax.b</item>
+      <item>amomax.b.aq</item>
+      <item>amomax.b.aqrl</item>
+      <item>amomax.b.rl</item>
+      <item>amomax.h</item>
+      <item>amomax.h.aq</item>
+      <item>amomax.h.aqrl</item>
+      <item>amomax.h.rl</item>
+      <item>amomaxu.b</item>
+      <item>amomaxu.b.aq</item>
+      <item>amomaxu.b.aqrl</item>
+      <item>amomaxu.b.rl</item>
+      <item>amomaxu.h</item>
+      <item>amomaxu.h.aq</item>
+      <item>amomaxu.h.aqrl</item>
+      <item>amomaxu.h.rl</item>
+      <item>amomin.b</item>
+      <item>amomin.b.aq</item>
+      <item>amomin.b.aqrl</item>
+      <item>amomin.b.rl</item>
+      <item>amomin.h</item>
+      <item>amomin.h.aq</item>
+      <item>amomin.h.aqrl</item>
+      <item>amomin.h.rl</item>
+      <item>amominu.b</item>
+      <item>amominu.b.aq</item>
+      <item>amominu.b.aqrl</item>
+      <item>amominu.b.rl</item>
+      <item>amominu.h</item>
+      <item>amominu.h.aq</item>
+      <item>amominu.h.aqrl</item>
+      <item>amominu.h.rl</item>
+      <item>amoor.b</item>
+      <item>amoor.b.aq</item>
+      <item>amoor.b.aqrl</item>
+      <item>amoor.b.rl</item>
+      <item>amoor.h</item>
+      <item>amoor.h.aq</item>
+      <item>amoor.h.aqrl</item>
+      <item>amoor.h.rl</item>
+      <item>amoswap.b</item>
+      <item>amoswap.b.aq</item>
+      <item>amoswap.b.aqrl</item>
+      <item>amoswap.b.rl</item>
+      <item>amoswap.h</item>
+      <item>amoswap.h.aq</item>
+      <item>amoswap.h.aqrl</item>
+      <item>amoswap.h.rl</item>
+      <item>amoxor.b</item>
+      <item>amoxor.b.aq</item>
+      <item>amoxor.b.aqrl</item>
+      <item>amoxor.b.rl</item>
+      <item>amoxor.h</item>
+      <item>amoxor.h.aq</item>
+      <item>amoxor.h.aqrl</item>
+      <item>amoxor.h.rl</item>
+      <!-- RISC-V wait-on-reservation-set (Zawrs) -->
+      <item>wrs.nto</item>
+      <item>wrs.sto</item>
+      <!-- RISC-V atomic compare-and-swap (Zacas) -->
+      <item>amocas.d</item>
+      <item>amocas.d.aq</item>
+      <item>amocas.d.aqrl</item>
+      <item>amocas.d.rl</item>
+      <item>amocas.q</item>
+      <item>amocas.q.aq</item>
+      <item>amocas.q.aqrl</item>
+      <item>amocas.q.rl</item>
+      <item>amocas.w</item>
+      <item>amocas.w.aq</item>
+      <item>amocas.w.aqrl</item>
+      <item>amocas.w.rl</item>
+      <!-- RISC-V cache-management operation (CMO) instructions -->
+      <item>cbo.clean</item>
+      <item>cbo.flush</item>
+      <item>cbo.inval</item>
+      <item>cbo.zero</item>
+      <!-- RISC-V half-precision floating-point instructions -->
+      <item>fabs.h</item>
+      <item>fadd.h</item>
+      <item>fclass.h</item>
+      <item>fcvt.d.h</item>
+      <item>fcvt.h.d</item>
+      <item>fcvt.h.l</item>
+      <item>fcvt.h.lu</item>
+      <item>fcvt.h.q</item>
+      <item>fcvt.h.s</item>
+      <item>fcvt.h.w</item>
+      <item>fcvt.h.wu</item>
+      <item>fcvt.l.h</item>
+      <item>fcvt.lu.h</item>
+      <item>fcvt.q.h</item>
+      <item>fcvt.s.h</item>
+      <item>fcvt.w.h</item>
+      <item>fcvt.wu.h</item>
+      <item>fdiv.h</item>
+      <item>feq.h</item>
+      <item>fge.h</item>
+      <item>fgt.h</item>
+      <item>fle.h</item>
+      <item>flh</item>
+      <item>flt.h</item>
+      <item>fmadd.h</item>
+      <item>fmax.h</item>
+      <item>fmin.h</item>
+      <item>fmsub.h</item>
+      <item>fmul.h</item>
+      <item>fmv.h</item>
+      <item>fmv.h.x</item>
+      <item>fmv.x.h</item>
+      <item>fneg.h</item>
+      <item>fnmadd.h</item>
+      <item>fnmsub.h</item>
+      <item>fsgnj.h</item>
+      <item>fsgnjn.h</item>
+      <item>fsgnjx.h</item>
+      <item>fsh</item>
+      <item>fsqrt.h</item>
+      <item>fsub.h</item>
+      <!-- RISC-V single-precision floating-point instructions -->
+      <item>fabs.s</item>
+      <item>fadd.s</item>
+      <item>fclass.s</item>
+      <item>fcvt.l.s</item>
+      <item>fcvt.lu.s</item>
+      <item>fcvt.s.l</item>
+      <item>fcvt.s.lu</item>
+      <item>fcvt.s.w</item>
+      <item>fcvt.s.wu</item>
+      <item>fcvt.w.s</item>
+      <item>fcvt.wu.s</item>
+      <item>fdiv.s</item>
+      <item>feq.s</item>
+      <item>fge.s</item>
+      <item>fgt.s</item>
+      <item>fle.s</item>
+      <item>flt.s</item>
+      <item>flw</item>
+      <item>fmadd.s</item>
+      <item>fmax.s</item>
+      <item>fmin.s</item>
+      <item>fmsub.s</item>
+      <item>fmul.s</item>
+      <item>fmv.s</item>
+      <item>fmv.s.x</item>
+      <item>fmv.w.x</item>
+      <item>fmv.x.s</item>
+      <item>fmv.x.w</item>
+      <item>fneg.s</item>
+      <item>fnmadd.s</item>
+      <item>fnmsub.s</item>
+      <item>frcsr</item>
+      <item>frflags</item>
+      <item>frrm</item>
+      <item>frsr</item>
+      <item>fscsr</item>
+      <item>fsflags</item>
+      <item>fsflagsi</item>
+      <item>fsgnj.s</item>
+      <item>fsgnjn.s</item>
+      <item>fsgnjx.s</item>
+      <item>fsqrt.s</item>
+      <item>fsrm</item>
+      <item>fsrmi</item>
+      <item>fssr</item>
+      <item>fsub.s</item>
+      <item>fsw</item>
+      <!-- RISC-V double-precision floating-point instructions -->
+      <item>fabs.d</item>
+      <item>add.d</item>
+      <item>class.d</item>
+      <item>cvt.d.l</item>
+      <item>cvt.d.lu</item>
+      <item>cvt.d.s</item>
+      <item>cvt.d.w</item>
+      <item>cvt.d.wu</item>
+      <item>cvt.l.d</item>
+      <item>cvt.lu.d</item>
+      <item>cvt.s.d</item>
+      <item>cvt.w.d</item>
+      <item>cvt.wu.d</item>
+      <item>div.d</item>
+      <item>eq.d</item>
+      <item>fsd</item>
+      <item>ge.d</item>
+      <item>gt.d</item>
+      <item>le.d</item>
+      <item>lt.d</item>
+      <item>madd.d</item>
+      <item>max.d</item>
+      <item>min.d</item>
+      <item>msub.d</item>
+      <item>mul.d</item>
+      <item>mv.d</item>
+      <item>mv.d.x</item>
+      <item>mv.x.d</item>
+      <item>neg.d</item>
+      <item>nmadd.d</item>
+      <item>nmsub.d</item>
+      <item>sgnj.d</item>
+      <item>sgnjn.d</item>
+      <item>sgnjx.d</item>
+      <item>sqrt.d</item>
+      <item>sub.d</item>
+      <!-- RISC-V quad-precision floating-point instruction -->
+      <item>fabs.q</item>
+      <item>fadd.q</item>
+      <item>fclass.q</item>
+      <item>fcvt.d.q</item>
+      <item>fcvt.l.q</item>
+      <item>fcvt.lu.q</item>
+      <item>fcvt.q.d</item>
+      <item>fcvt.q.l</item>
+      <item>fcvt.q.lu</item>
+      <item>fcvt.q.s</item>
+      <item>fcvt.q.w</item>
+      <item>fcvt.q.wu</item>
+      <item>fcvt.s.q</item>
+      <item>fcvt.w.q</item>
+      <item>fcvt.wu.q</item>
+      <item>fdiv.q</item>
+      <item>feq.q</item>
+      <item>fge.q</item>
+      <item>fgt.q</item>
+      <item>fle.q</item>
+      <item>flq</item>
+      <item>flt.q</item>
+      <item>fmadd.q</item>
+      <item>fmax.q</item>
+      <item>fmin.q</item>
+      <item>fmsub.q</item>
+      <item>fmul.q</item>
+      <item>fmv.q</item>
+      <item>fneg.q</item>
+      <item>fnmadd.q</item>
+      <item>fnmsub.q</item>
+      <item>fsgnj.q</item>
+      <item>fsgnjn.q</item>
+      <item>fsgnjx.q</item>
+      <item>fsq</item>
+      <item>fsqrt.q</item>
+      <item>fsub.q</item>
+      <!-- RISC-V additional floating-point instructions -->
+      <item>fcvtmod.w.d</item>
+      <item>fleq.d</item>
+      <item>fleq.h</item>
+      <item>fleq.q</item>
+      <item>fleq.s</item>
+      <item>fli.d</item>
+      <item>fli.h</item>
+      <item>fli.q</item>
+      <item>fli.s</item>
+      <item>fltq.d</item>
+      <item>fltq.h</item>
+      <item>fltq.q</item>
+      <item>fltq.s</item>
+      <item>fmaxm.d</item>
+      <item>fmaxm.h</item>
+      <item>fmaxm.q</item>
+      <item>fmaxm.s</item>
+      <item>fminm.d</item>
+      <item>fminm.h</item>
+      <item>fminm.q</item>
+      <item>fminm.s</item>
+      <item>fmvh.x.d</item>
+      <item>fmvh.x.q</item>
+      <item>fmvp.d.x</item>
+      <item>fmvp.q.x</item>
+      <item>fround.d</item>
+      <item>fround.h</item>
+      <item>fround.q</item>
+      <item>fround.s</item>
+      <item>froundnx.d</item>
+      <item>froundnx.h</item>
+      <item>froundnx.q</item>
+      <item>froundnx.s</item>
+      <!-- RISC-V compressed instructions (C) -->
+      <item>c.add</item>
+      <item>c.addi</item>
+      <item>c.addi16sp</item>
+      <item>c.addi4spn</item>
+      <item>c.addiw</item>
+      <item>c.addw</item>
+      <item>c.and</item>
+      <item>c.andi</item>
+      <item>c.beqz</item>
+      <item>c.bnez</item>
+      <item>c.ebreak</item>
+      <item>c.fld</item>
+      <item>c.fldsp</item>
+      <item>c.flw</item>
+      <item>c.flwsp</item>
+      <item>c.fsd</item>
+      <item>c.fsdsp</item>
+      <item>c.fsw</item>
+      <item>c.fswsp</item>
+      <item>c.j</item>
+      <item>c.jal</item>
+      <item>c.jalr</item>
+      <item>c.jr</item>
+      <item>c.ld</item>
+      <item>c.ldsp</item>
+      <item>c.li</item>
+      <item>c.lui</item>
+      <item>c.lw</item>
+      <item>c.lwsp</item>
+      <item>c.mv</item>
+      <item>c.nop</item>
+      <item>c.or</item>
+      <item>c.sd</item>
+      <item>c.sdsp</item>
+      <item>c.slli</item>
+      <item>c.slli64</item>
+      <item>c.srai</item>
+      <item>c.srai64</item>
+      <item>c.srli</item>
+      <item>c.srli64</item>
+      <item>c.sub</item>
+      <item>c.subw</item>
+      <item>c.sw</item>
+      <item>c.swsp</item>
+      <item>c.unimp</item>
+      <item>c.xor</item>
+      <!-- RISC-V code size reduction (Zcmp) -->
+      <item>cm.mva01s</item>
+      <item>cm.mvsa01</item>
+      <item>cm.pop</item>
+      <item>cm.push</item>
+      <!-- RISC-V code size reduction (Zcb) -->
+      <item>c.lbu</item>
+      <item>c.lh</item>
+      <item>c.lhu</item>
+      <item>c.mul</item>
+      <item>c.not</item>
+      <item>c.sb</item>
+      <item>c.sext.b</item>
+      <item>c.sext.h</item>
+      <item>c.sext.w</item>
+      <item>c.sh</item>
+      <item>c.zext.b</item>
+      <item>c.zext.h</item>
+      <item>c.zext.w</item>
+      <!-- RISC-V bit manipulation instructions (B) -->
+      <item>add.uw</item>
+      <item>andn</item>
+      <item>bclr</item>
+      <item>bclri</item>
+      <item>bext</item>
+      <item>bexti</item>
+      <item>binv</item>
+      <item>binvi</item>
+      <item>brev8</item>
+      <item>bset</item>
+      <item>bseti</item>
+      <item>clmul</item>
+      <item>clmulh</item>
+      <item>clmulr</item>
+      <item>clz</item>
+      <item>clzw</item>
+      <item>cpop</item>
+      <item>cpopw</item>
+      <item>ctz</item>
+      <item>ctzw</item>
+      <item>max</item>
+      <item>maxu</item>
+      <item>min</item>
+      <item>minu</item>
+      <item>orc.b</item>
+      <item>orn</item>
+      <item>pack</item>
+      <item>packh</item>
+      <item>packw</item>
+      <item>rev8</item>
+      <item>rol</item>
+      <item>rolw</item>
+      <item>ror</item>
+      <item>rori</item>
+      <item>roriw</item>
+      <item>rorw</item>
+      <item>sext.b</item>
+      <item>sext.h</item>
+      <item>sh1add</item>
+      <item>sh1add.uw</item>
+      <item>sh2add</item>
+      <item>sh2add.uw</item>
+      <item>sh3add</item>
+      <item>sh3add.uw</item>
+      <item>slli.uw</item>
+      <item>unzip</item>
+      <item>xnor</item>
+      <item>xperm4</item>
+      <item>xperm8</item>
+      <item>zext.h</item>
+      <item>zext.w</item>
+      <item>zip</item>
+      <!-- RISC-V RVV vector instructions -->
+      <item>vaadd.vv</item>
+      <item>vaadd.vx</item>
+      <item>vaaddu.vv</item>
+      <item>vaaddu.vx</item>
+      <item>vadc.vim</item>
+      <item>vadc.vvm</item>
+      <item>vadc.vxm</item>
+      <item>vadd.vi</item>
+      <item>vadd.vv</item>
+      <item>vadd.vx</item>
+      <item>vand.vi</item>
+      <item>vand.vv</item>
+      <item>vand.vx</item>
+      <item>vasub.vv</item>
+      <item>vasub.vx</item>
+      <item>vasubu.vv</item>
+      <item>vasubu.vx</item>
+      <item>vcompress.vm</item>
+      <item>vcpop.m</item>
+      <item>vdiv.vv</item>
+      <item>vdiv.vx</item>
+      <item>vdivu.vv</item>
+      <item>vdivu.vx</item>
+      <item>vfabs.v</item>
+      <item>vfadd.vf</item>
+      <item>vfadd.vv</item>
+      <item>vfclass.v</item>
+      <item>vfcvt.f.x.v</item>
+      <item>vfcvt.f.xu.v</item>
+      <item>vfcvt.rtz.x.f.v</item>
+      <item>vfcvt.rtz.xu.f.v</item>
+      <item>vfcvt.x.f.v</item>
+      <item>vfcvt.xu.f.v</item>
+      <item>vfdiv.vf</item>
+      <item>vfdiv.vv</item>
+      <item>vfirst.m</item>
+      <item>vfmacc.vf</item>
+      <item>vfmacc.vv</item>
+      <item>vfmadd.vf</item>
+      <item>vfmadd.vv</item>
+      <item>vfmax.vf</item>
+      <item>vfmax.vv</item>
+      <item>vfmerge.vfm</item>
+      <item>vfmin.vf</item>
+      <item>vfmin.vv</item>
+      <item>vfmsac.vf</item>
+      <item>vfmsac.vv</item>
+      <item>vfmsub.vf</item>
+      <item>vfmsub.vv</item>
+      <item>vfmul.vf</item>
+      <item>vfmul.vv</item>
+      <item>vfmv.f.s</item>
+      <item>vfmv.s.f</item>
+      <item>vfmv.v.f</item>
+      <item>vfncvt.f.f.w</item>
+      <item>vfncvt.f.x.w</item>
+      <item>vfncvt.f.xu.w</item>
+      <item>vfncvt.rod.f.f.w</item>
+      <item>vfncvt.rtz.x.f.w</item>
+      <item>vfncvt.rtz.xu.f.w</item>
+      <item>vfncvt.x.f.w</item>
+      <item>vfncvt.xu.f.w</item>
+      <item>vfneg.v</item>
+      <item>vfnmacc.vf</item>
+      <item>vfnmacc.vv</item>
+      <item>vfnmadd.vf</item>
+      <item>vfnmadd.vv</item>
+      <item>vfnmsac.vf</item>
+      <item>vfnmsac.vv</item>
+      <item>vfnmsub.vf</item>
+      <item>vfnmsub.vv</item>
+      <item>vfrdiv.vf</item>
+      <item>vfrec7.v</item>
+      <item>vfrece7.v</item>
+      <item>vfredmax.vs</item>
+      <item>vfredmin.vs</item>
+      <item>vfredosum.vs</item>
+      <item>vfredsum.vs</item>
+      <item>vfredusum.vs</item>
+      <item>vfrsqrt7.v</item>
+      <item>vfrsqrte7.v</item>
+      <item>vfrsub.vf</item>
+      <item>vfsgnj.vf</item>
+      <item>vfsgnj.vv</item>
+      <item>vfsgnjn.vf</item>
+      <item>vfsgnjn.vv</item>
+      <item>vfsgnjx.vf</item>
+      <item>vfsgnjx.vv</item>
+      <item>vfslide1down.vf</item>
+      <item>vfslide1up.vf</item>
+      <item>vfsqrt.v</item>
+      <item>vfsub.vf</item>
+      <item>vfsub.vv</item>
+      <item>vfwadd.vf</item>
+      <item>vfwadd.vv</item>
+      <item>vfwadd.wf</item>
+      <item>vfwadd.wv</item>
+      <item>vfwcvt.f.f.v</item>
+      <item>vfwcvt.f.x.v</item>
+      <item>vfwcvt.f.xu.v</item>
+      <item>vfwcvt.rtz.x.f.v</item>
+      <item>vfwcvt.rtz.xu.f.v</item>
+      <item>vfwcvt.x.f.v</item>
+      <item>vfwcvt.xu.f.v</item>
+      <item>vfwmacc.vf</item>
+      <item>vfwmacc.vv</item>
+      <item>vfwmsac.vf</item>
+      <item>vfwmsac.vv</item>
+      <item>vfwmul.vf</item>
+      <item>vfwmul.vv</item>
+      <item>vfwnmacc.vf</item>
+      <item>vfwnmacc.vv</item>
+      <item>vfwnmsac.vf</item>
+      <item>vfwnmsac.vv</item>
+      <item>vfwredosum.vs</item>
+      <item>vfwredsum.vs</item>
+      <item>vfwredusum.vs</item>
+      <item>vfwsub.vf</item>
+      <item>vfwsub.vv</item>
+      <item>vfwsub.wf</item>
+      <item>vfwsub.wv</item>
+      <item>vid.v</item>
+      <item>viota.m</item>
+      <item>vl1r.v</item>
+      <item>vl1re16.v</item>
+      <item>vl1re32.v</item>
+      <item>vl1re64.v</item>
+      <item>vl1re8.v</item>
+      <item>vl2r.v</item>
+      <item>vl2re16.v</item>
+      <item>vl2re32.v</item>
+      <item>vl2re64.v</item>
+      <item>vl2re8.v</item>
+      <item>vl4r.v</item>
+      <item>vl4re16.v</item>
+      <item>vl4re32.v</item>
+      <item>vl4re64.v</item>
+      <item>vl4re8.v</item>
+      <item>vl8r.v</item>
+      <item>vl8re16.v</item>
+      <item>vl8re32.v</item>
+      <item>vl8re64.v</item>
+      <item>vl8re8.v</item>
+      <item>vle1.v</item>
+      <item>vle16.v</item>
+      <item>vle16ff.v</item>
+      <item>vle32.v</item>
+      <item>vle32ff.v</item>
+      <item>vle64.v</item>
+      <item>vle64ff.v</item>
+      <item>vle8.v</item>
+      <item>vle8ff.v</item>
+      <item>vlm.v</item>
+      <item>vloxei16.v</item>
+      <item>vloxei32.v</item>
+      <item>vloxei64.v</item>
+      <item>vloxei8.v</item>
+      <item>vloxseg2ei16.v</item>
+      <item>vloxseg2ei32.v</item>
+      <item>vloxseg2ei64.v</item>
+      <item>vloxseg2ei8.v</item>
+      <item>vloxseg3ei16.v</item>
+      <item>vloxseg3ei32.v</item>
+      <item>vloxseg3ei64.v</item>
+      <item>vloxseg3ei8.v</item>
+      <item>vloxseg4ei16.v</item>
+      <item>vloxseg4ei32.v</item>
+      <item>vloxseg4ei64.v</item>
+      <item>vloxseg4ei8.v</item>
+      <item>vloxseg5ei16.v</item>
+      <item>vloxseg5ei32.v</item>
+      <item>vloxseg5ei64.v</item>
+      <item>vloxseg5ei8.v</item>
+      <item>vloxseg6ei16.v</item>
+      <item>vloxseg6ei32.v</item>
+      <item>vloxseg6ei64.v</item>
+      <item>vloxseg6ei8.v</item>
+      <item>vloxseg7ei16.v</item>
+      <item>vloxseg7ei32.v</item>
+      <item>vloxseg7ei64.v</item>
+      <item>vloxseg7ei8.v</item>
+      <item>vloxseg8ei16.v</item>
+      <item>vloxseg8ei32.v</item>
+      <item>vloxseg8ei64.v</item>
+      <item>vloxseg8ei8.v</item>
+      <item>vlse16.v</item>
+      <item>vlse32.v</item>
+      <item>vlse64.v</item>
+      <item>vlse8.v</item>
+      <item>vlseg2e16.v</item>
+      <item>vlseg2e16ff.v</item>
+      <item>vlseg2e32.v</item>
+      <item>vlseg2e32ff.v</item>
+      <item>vlseg2e64.v</item>
+      <item>vlseg2e64ff.v</item>
+      <item>vlseg2e8.v</item>
+      <item>vlseg2e8ff.v</item>
+      <item>vlseg3e16.v</item>
+      <item>vlseg3e16ff.v</item>
+      <item>vlseg3e32.v</item>
+      <item>vlseg3e32ff.v</item>
+      <item>vlseg3e64.v</item>
+      <item>vlseg3e64ff.v</item>
+      <item>vlseg3e8.v</item>
+      <item>vlseg3e8ff.v</item>
+      <item>vlseg4e16.v</item>
+      <item>vlseg4e16ff.v</item>
+      <item>vlseg4e32.v</item>
+      <item>vlseg4e32ff.v</item>
+      <item>vlseg4e64.v</item>
+      <item>vlseg4e64ff.v</item>
+      <item>vlseg4e8.v</item>
+      <item>vlseg4e8ff.v</item>
+      <item>vlseg5e16.v</item>
+      <item>vlseg5e16ff.v</item>
+      <item>vlseg5e32.v</item>
+      <item>vlseg5e32ff.v</item>
+      <item>vlseg5e64.v</item>
+      <item>vlseg5e64ff.v</item>
+      <item>vlseg5e8.v</item>
+      <item>vlseg5e8ff.v</item>
+      <item>vlseg6e16.v</item>
+      <item>vlseg6e16ff.v</item>
+      <item>vlseg6e32.v</item>
+      <item>vlseg6e32ff.v</item>
+      <item>vlseg6e64.v</item>
+      <item>vlseg6e64ff.v</item>
+      <item>vlseg6e8.v</item>
+      <item>vlseg6e8ff.v</item>
+      <item>vlseg7e16.v</item>
+      <item>vlseg7e16ff.v</item>
+      <item>vlseg7e32.v</item>
+      <item>vlseg7e32ff.v</item>
+      <item>vlseg7e64.v</item>
+      <item>vlseg7e64ff.v</item>
+      <item>vlseg7e8.v</item>
+      <item>vlseg7e8ff.v</item>
+      <item>vlseg8e16.v</item>
+      <item>vlseg8e16ff.v</item>
+      <item>vlseg8e32.v</item>
+      <item>vlseg8e32ff.v</item>
+      <item>vlseg8e64.v</item>
+      <item>vlseg8e64ff.v</item>
+      <item>vlseg8e8.v</item>
+      <item>vlseg8e8ff.v</item>
+      <item>vlsseg2e16.v</item>
+      <item>vlsseg2e32.v</item>
+      <item>vlsseg2e64.v</item>
+      <item>vlsseg2e8.v</item>
+      <item>vlsseg3e16.v</item>
+      <item>vlsseg3e32.v</item>
+      <item>vlsseg3e64.v</item>
+      <item>vlsseg3e8.v</item>
+      <item>vlsseg4e16.v</item>
+      <item>vlsseg4e32.v</item>
+      <item>vlsseg4e64.v</item>
+      <item>vlsseg4e8.v</item>
+      <item>vlsseg5e16.v</item>
+      <item>vlsseg5e32.v</item>
+      <item>vlsseg5e64.v</item>
+      <item>vlsseg5e8.v</item>
+      <item>vlsseg6e16.v</item>
+      <item>vlsseg6e32.v</item>
+      <item>vlsseg6e64.v</item>
+      <item>vlsseg6e8.v</item>
+      <item>vlsseg7e16.v</item>
+      <item>vlsseg7e32.v</item>
+      <item>vlsseg7e64.v</item>
+      <item>vlsseg7e8.v</item>
+      <item>vlsseg8e16.v</item>
+      <item>vlsseg8e32.v</item>
+      <item>vlsseg8e64.v</item>
+      <item>vlsseg8e8.v</item>
+      <item>vluxei16.v</item>
+      <item>vluxei32.v</item>
+      <item>vluxei64.v</item>
+      <item>vluxei8.v</item>
+      <item>vluxseg2ei16.v</item>
+      <item>vluxseg2ei32.v</item>
+      <item>vluxseg2ei64.v</item>
+      <item>vluxseg2ei8.v</item>
+      <item>vluxseg3ei16.v</item>
+      <item>vluxseg3ei32.v</item>
+      <item>vluxseg3ei64.v</item>
+      <item>vluxseg3ei8.v</item>
+      <item>vluxseg4ei16.v</item>
+      <item>vluxseg4ei32.v</item>
+      <item>vluxseg4ei64.v</item>
+      <item>vluxseg4ei8.v</item>
+      <item>vluxseg5ei16.v</item>
+      <item>vluxseg5ei32.v</item>
+      <item>vluxseg5ei64.v</item>
+      <item>vluxseg5ei8.v</item>
+      <item>vluxseg6ei16.v</item>
+      <item>vluxseg6ei32.v</item>
+      <item>vluxseg6ei64.v</item>
+      <item>vluxseg6ei8.v</item>
+      <item>vluxseg7ei16.v</item>
+      <item>vluxseg7ei32.v</item>
+      <item>vluxseg7ei64.v</item>
+      <item>vluxseg7ei8.v</item>
+      <item>vluxseg8ei16.v</item>
+      <item>vluxseg8ei32.v</item>
+      <item>vluxseg8ei64.v</item>
+      <item>vluxseg8ei8.v</item>
+      <item>vmacc.vv</item>
+      <item>vmacc.vx</item>
+      <item>vmadc.vi</item>
+      <item>vmadc.vim</item>
+      <item>vmadc.vv</item>
+      <item>vmadc.vvm</item>
+      <item>vmadc.vx</item>
+      <item>vmadc.vxm</item>
+      <item>vmadd.vv</item>
+      <item>vmadd.vx</item>
+      <item>vmand.mm</item>
+      <item>vmandn.mm</item>
+      <item>vmandnot.mm</item>
+      <item>vmax.vv</item>
+      <item>vmax.vx</item>
+      <item>vmaxu.vv</item>
+      <item>vmaxu.vx</item>
+      <item>vmclr.m</item>
+      <item>vmcpy.m</item>
+      <item>vmerge.vim</item>
+      <item>vmerge.vvm</item>
+      <item>vmerge.vxm</item>
+      <item>vmfeq.vf</item>
+      <item>vmfeq.vv</item>
+      <item>vmfge.vf</item>
+      <item>vmfge.vv</item>
+      <item>vmfgt.vf</item>
+      <item>vmfgt.vv</item>
+      <item>vmfle.vf</item>
+      <item>vmfle.vv</item>
+      <item>vmflt.vf</item>
+      <item>vmflt.vv</item>
+      <item>vmfne.vf</item>
+      <item>vmfne.vv</item>
+      <item>vmin.vv</item>
+      <item>vmin.vx</item>
+      <item>vminu.vv</item>
+      <item>vminu.vx</item>
+      <item>vmnand.mm</item>
+      <item>vmnor.mm</item>
+      <item>vmnot.m</item>
+      <item>vmor.mm</item>
+      <item>vmorn.mm</item>
+      <item>vmornot.mm</item>
+      <item>vmsbc.vv</item>
+      <item>vmsbc.vvm</item>
+      <item>vmsbc.vx</item>
+      <item>vmsbc.vxm</item>
+      <item>vmsbf.m</item>
+      <item>vmseq.vi</item>
+      <item>vmseq.vv</item>
+      <item>vmseq.vx</item>
+      <item>vmset.m</item>
+      <item>vmsge.vi</item>
+      <item>vmsge.vv</item>
+      <item>vmsge.vx</item>
+      <item>vmsgeu.vi</item>
+      <item>vmsgeu.vv</item>
+      <item>vmsgeu.vx</item>
+      <item>vmsgt.vi</item>
+      <item>vmsgt.vv</item>
+      <item>vmsgt.vx</item>
+      <item>vmsgtu.vi</item>
+      <item>vmsgtu.vv</item>
+      <item>vmsgtu.vx</item>
+      <item>vmsif.m</item>
+      <item>vmsle.vi</item>
+      <item>vmsle.vv</item>
+      <item>vmsle.vx</item>
+      <item>vmsleu.vi</item>
+      <item>vmsleu.vv</item>
+      <item>vmsleu.vx</item>
+      <item>vmslt.vi</item>
+      <item>vmslt.vv</item>
+      <item>vmslt.vx</item>
+      <item>vmsltu.vi</item>
+      <item>vmsltu.vv</item>
+      <item>vmsltu.vx</item>
+      <item>vmsne.vi</item>
+      <item>vmsne.vv</item>
+      <item>vmsne.vx</item>
+      <item>vmsof.m</item>
+      <item>vmul.vv</item>
+      <item>vmul.vx</item>
+      <item>vmulh.vv</item>
+      <item>vmulh.vx</item>
+      <item>vmulhsu.vv</item>
+      <item>vmulhsu.vx</item>
+      <item>vmulhu.vv</item>
+      <item>vmulhu.vx</item>
+      <item>vmv.s.x</item>
+      <item>vmv.v.i</item>
+      <item>vmv.v.v</item>
+      <item>vmv.v.x</item>
+      <item>vmv.x.s</item>
+      <item>vmv1r.v</item>
+      <item>vmv2r.v</item>
+      <item>vmv4r.v</item>
+      <item>vmv8r.v</item>
+      <item>vmxnor.mm</item>
+      <item>vmxor.mm</item>
+      <item>vnclip.wi</item>
+      <item>vnclip.wv</item>
+      <item>vnclip.wx</item>
+      <item>vnclipu.wi</item>
+      <item>vnclipu.wv</item>
+      <item>vnclipu.wx</item>
+      <item>vncvt.x.x.w</item>
+      <item>vneg.v</item>
+      <item>vnmsac.vv</item>
+      <item>vnmsac.vx</item>
+      <item>vnmsub.vv</item>
+      <item>vnmsub.vx</item>
+      <item>vnot.v</item>
+      <item>vnsra.wi</item>
+      <item>vnsra.wv</item>
+      <item>vnsra.wx</item>
+      <item>vnsrl.wi</item>
+      <item>vnsrl.wv</item>
+      <item>vnsrl.wx</item>
+      <item>vor.vi</item>
+      <item>vor.vv</item>
+      <item>vor.vx</item>
+      <item>vpopc.m</item>
+      <item>vredand.vs</item>
+      <item>vredmax.vs</item>
+      <item>vredmaxu.vs</item>
+      <item>vredmin.vs</item> <item>vmmv.m</item>
+      <item>vredminu.vs</item>
+      <item>vredor.vs</item>
+      <item>vredsum.vs</item>
+      <item>vredxor.vs</item>
+      <item>vrem.vv</item>
+      <item>vrem.vx</item>
+      <item>vremu.vv</item>
+      <item>vremu.vx</item>
+      <item>vrgather.vi</item>
+      <item>vrgather.vv</item>
+      <item>vrgather.vx</item>
+      <item>vrgatherei16.vv</item>
+      <item>vrsub.vi</item>
+      <item>vrsub.vx</item>
+      <item>vs1r.v</item>
+      <item>vs2r.v</item>
+      <item>vs4r.v</item>
+      <item>vs8r.v</item>
+      <item>vsadd.vi</item>
+      <item>vsadd.vv</item>
+      <item>vsadd.vx</item>
+      <item>vsaddu.vi</item>
+      <item>vsaddu.vv</item>
+      <item>vsaddu.vx</item>
+      <item>vsbc.vvm</item>
+      <item>vsbc.vxm</item>
+      <item>vse1.v</item>
+      <item>vse16.v</item>
+      <item>vse32.v</item>
+      <item>vse64.v</item>
+      <item>vse8.v</item>
+      <item>vsetivli</item>
+      <item>vsetvl</item>
+      <item>vsetvli</item>
+      <item>vsext.vf2</item>
+      <item>vsext.vf4</item>
+      <item>vsext.vf8</item>
+      <item>vslide1down.vx</item>
+      <item>vslide1up.vx</item>
+      <item>vslidedown.vi</item>
+      <item>vslidedown.vx</item>
+      <item>vslideup.vi</item>
+      <item>vslideup.vx</item>
+      <item>vsll.vi</item>
+      <item>vsll.vv</item>
+      <item>vsll.vx</item>
+      <item>vsm.v</item>
+      <item>vsmul.vv</item>
+      <item>vsmul.vx</item>
+      <item>vsoxei16.v</item>
+      <item>vsoxei32.v</item>
+      <item>vsoxei64.v</item>
+      <item>vsoxei8.v</item>
+      <item>vsoxseg2ei16.v</item>
+      <item>vsoxseg2ei32.v</item>
+      <item>vsoxseg2ei64.v</item>
+      <item>vsoxseg2ei8.v</item>
+      <item>vsoxseg3ei16.v</item>
+      <item>vsoxseg3ei32.v</item>
+      <item>vsoxseg3ei64.v</item>
+      <item>vsoxseg3ei8.v</item>
+      <item>vsoxseg4ei16.v</item>
+      <item>vsoxseg4ei32.v</item>
+      <item>vsoxseg4ei64.v</item>
+      <item>vsoxseg4ei8.v</item>
+      <item>vsoxseg5ei16.v</item>
+      <item>vsoxseg5ei32.v</item>
+      <item>vsoxseg5ei64.v</item>
+      <item>vsoxseg5ei8.v</item>
+      <item>vsoxseg6ei16.v</item>
+      <item>vsoxseg6ei32.v</item>
+      <item>vsoxseg6ei64.v</item>
+      <item>vsoxseg6ei8.v</item>
+      <item>vsoxseg7ei16.v</item>
+      <item>vsoxseg7ei32.v</item>
+      <item>vsoxseg7ei64.v</item>
+      <item>vsoxseg7ei8.v</item>
+      <item>vsoxseg8ei16.v</item>
+      <item>vsoxseg8ei32.v</item>
+      <item>vsoxseg8ei64.v</item>
+      <item>vsoxseg8ei8.v</item>
+      <item>vsra.vi</item>
+      <item>vsra.vv</item>
+      <item>vsra.vx</item>
+      <item>vsrl.vi</item>
+      <item>vsrl.vv</item>
+      <item>vsrl.vx</item>
+      <item>vsse16.v</item>
+      <item>vsse32.v</item>
+      <item>vsse64.v</item>
+      <item>vsse8.v</item>
+      <item>vsseg2e16.v</item>
+      <item>vsseg2e32.v</item>
+      <item>vsseg2e64.v</item>
+      <item>vsseg2e8.v</item>
+      <item>vsseg3e16.v</item>
+      <item>vsseg3e32.v</item>
+      <item>vsseg3e64.v</item>
+      <item>vsseg3e8.v</item>
+      <item>vsseg4e16.v</item>
+      <item>vsseg4e32.v</item>
+      <item>vsseg4e64.v</item>
+      <item>vsseg4e8.v</item>
+      <item>vsseg5e16.v</item>
+      <item>vsseg5e32.v</item>
+      <item>vsseg5e64.v</item>
+      <item>vsseg5e8.v</item>
+      <item>vsseg6e16.v</item>
+      <item>vsseg6e32.v</item>
+      <item>vsseg6e64.v</item>
+      <item>vsseg6e8.v</item>
+      <item>vsseg7e16.v</item>
+      <item>vsseg7e32.v</item>
+      <item>vsseg7e64.v</item>
+      <item>vsseg7e8.v</item>
+      <item>vsseg8e16.v</item>
+      <item>vsseg8e32.v</item>
+      <item>vsseg8e64.v</item>
+      <item>vsseg8e8.v</item>
+      <item>vssra.vi</item>
+      <item>vssra.vv</item>
+      <item>vssra.vx</item>
+      <item>vssrl.vi</item>
+      <item>vssrl.vv</item>
+      <item>vssrl.vx</item>
+      <item>vssseg2e16.v</item>
+      <item>vssseg2e32.v</item>
+      <item>vssseg2e64.v</item>
+      <item>vssseg2e8.v</item>
+      <item>vssseg3e16.v</item>
+      <item>vssseg3e32.v</item>
+      <item>vssseg3e64.v</item>
+      <item>vssseg3e8.v</item>
+      <item>vssseg4e16.v</item>
+      <item>vssseg4e32.v</item>
+      <item>vssseg4e64.v</item>
+      <item>vssseg4e8.v</item>
+      <item>vssseg5e16.v</item>
+      <item>vssseg5e32.v</item>
+      <item>vssseg5e64.v</item>
+      <item>vssseg5e8.v</item>
+      <item>vssseg6e16.v</item>
+      <item>vssseg6e32.v</item>
+      <item>vssseg6e64.v</item>
+      <item>vssseg6e8.v</item>
+      <item>vssseg7e16.v</item>
+      <item>vssseg7e32.v</item>
+      <item>vssseg7e64.v</item>
+      <item>vssseg7e8.v</item>
+      <item>vssseg8e16.v</item>
+      <item>vssseg8e32.v</item>
+      <item>vssseg8e64.v</item>
+      <item>vssseg8e8.v</item>
+      <item>vssub.vv</item>
+      <item>vssub.vx</item>
+      <item>vssubu.vv</item>
+      <item>vssubu.vx</item>
+      <item>vsub.vv</item>
+      <item>vsub.vx</item>
+      <item>vsuxei16.v</item>
+      <item>vsuxei32.v</item>
+      <item>vsuxei64.v</item>
+      <item>vsuxei8.v</item>
+      <item>vsuxseg2ei16.v</item>
+      <item>vsuxseg2ei32.v</item>
+      <item>vsuxseg2ei64.v</item>
+      <item>vsuxseg2ei8.v</item>
+      <item>vsuxseg3ei16.v</item>
+      <item>vsuxseg3ei32.v</item>
+      <item>vsuxseg3ei64.v</item>
+      <item>vsuxseg3ei8.v</item>
+      <item>vsuxseg4ei16.v</item>
+      <item>vsuxseg4ei32.v</item>
+      <item>vsuxseg4ei64.v</item>
+      <item>vsuxseg4ei8.v</item>
+      <item>vsuxseg5ei16.v</item>
+      <item>vsuxseg5ei32.v</item>
+      <item>vsuxseg5ei64.v</item>
+      <item>vsuxseg5ei8.v</item>
+      <item>vsuxseg6ei16.v</item>
+      <item>vsuxseg6ei32.v</item>
+      <item>vsuxseg6ei64.v</item>
+      <item>vsuxseg6ei8.v</item>
+      <item>vsuxseg7ei16.v</item>
+      <item>vsuxseg7ei32.v</item>
+      <item>vsuxseg7ei64.v</item>
+      <item>vsuxseg7ei8.v</item>
+      <item>vsuxseg8ei16.v</item>
+      <item>vsuxseg8ei32.v</item>
+      <item>vsuxseg8ei64.v</item>
+      <item>vsuxseg8ei8.v</item>
+      <item>vwadd.vv</item>
+      <item>vwadd.vx</item>
+      <item>vwadd.wv</item>
+      <item>vwadd.wx</item>
+      <item>vwaddu.vv</item>
+      <item>vwaddu.vx</item>
+      <item>vwaddu.wv</item>
+      <item>vwaddu.wx</item>
+      <item>vwcvt.x.x.v</item>
+      <item>vwcvtu.x.x.v</item>
+      <item>vwmacc.vv</item>
+      <item>vwmacc.vx</item>
+      <item>vwmaccsu.vv</item>
+      <item>vwmaccsu.vx</item>
+      <item>vwmaccu.vv</item>
+      <item>vwmaccu.vx</item>
+      <item>vwmaccus.vx</item>
+      <item>vwmul.vv</item>
+      <item>vwmul.vx</item>
+      <item>vwmulsu.vv</item>
+      <item>vwmulsu.vx</item>
+      <item>vwmulu.vv</item>
+      <item>vwmulu.vx</item>
+      <item>vwredsum.vs</item>
+      <item>vwredsumu.vs</item>
+      <item>vwsub.vv</item>
+      <item>vwsub.vx</item>
+      <item>vwsub.wv</item>
+      <item>vwsub.wx</item>
+      <item>vwsubu.vv</item>
+      <item>vwsubu.vx</item>
+      <item>vwsubu.wv</item>
+      <item>vwsubu.wx</item>
+      <item>vxor.vi</item>
+      <item>vxor.vv</item>
+      <item>vxor.vx</item>
+      <item>vzext.vf2</item>
+      <item>vzext.vf4</item>
+      <item>vzext.vf8</item>
+      <!-- RISC-V NIST suite cryptography instructions -->
+      <item>aes32dsi</item>
+      <item>aes32dsmi</item>
+      <item>aes32esi</item>
+      <item>aes32esmi</item>
+      <item>aes64ds</item>
+      <item>aes64dsm</item>
+      <item>aes64es</item>
+      <item>aes64esm</item>
+      <item>aes64im</item>
+      <item>aes64ks1i</item>
+      <item>aes64ks2</item>
+      <item>sha256sig0</item>
+      <item>sha256sig1</item>
+      <item>sha256sum0</item>
+      <item>sha256sum1</item>
+      <item>sha512sig0</item>
+      <item>sha512sig0h</item>
+      <item>sha512sig0l</item>
+      <item>sha512sig1</item>
+      <item>sha512sig1h</item>
+      <item>sha512sig1l</item>
+      <item>sha512sum0</item>
+      <item>sha512sum0r</item>
+      <item>sha512sum1</item>
+      <item>sha512sum1r</item>
+      <!-- RISC-V ShangMi suite cryptography -->
+      <item>sm3p0</item>
+      <item>sm3p1</item>
+      <item>sm4ed</item>
+      <item>sm4ks</item>
+      <!-- RISC-V vector bit-manipulation (Zvbb/Zvkb) -->
+      <item>vandn.vv</item>
+      <item>vandn.vx</item>
+      <item>vbrev.v</item>
+      <item>vbrev8.v</item>
+      <item>vclz.v</item>
+      <item>vcpop.v</item>
+      <item>vctz.v</item>
+      <item>vrev8.v</item>
+      <item>vrol.vv</item>
+      <item>vrol.vx</item>
+      <item>vror.vi</item>
+      <item>vror.vv</item>
+      <item>vror.vx</item>
+      <item>vwsll.vi</item>
+      <item>vwsll.vv</item>
+      <item>vwsll.vx</item>
+      <!-- RISC-V vector carryless multiplication (Zvbc) -->
+      <item>vclmul.vv</item>
+      <item>vclmul.vx</item>
+      <item>vclmulh.vv</item>
+      <item>vclmulh.vx</item>
+      <!-- RISC-V vector GCM/GMAC (Zvkg) -->
+      <item>vghsh.vv</item>
+      <item>vgmul.vv</item>
+      <!-- RISC-V NIST suite vector AES block cipher (Zvkned) -->
+      <item>vaesdf.vs</item>
+      <item>vaesdf.vv</item>
+      <item>vaesdm.vs</item>
+      <item>vaesdm.vv</item>
+      <item>vaesef.vs</item>
+      <item>vaesef.vv</item>
+      <item>vaesem.vs</item>
+      <item>vaesem.vv</item>
+      <item>vaeskf1.vi</item>
+      <item>vaeskf2.vi</item>
+      <item>vaesz.vs</item>
+      <!-- RISC-V NIST suite vector SHA-2 secure hash (Zvknh[ab]) -->
+      <item>vsha2ch.vv</item>
+      <item>vsha2cl.vv</item>
+      <item>vsha2ms.vv</item>
+      <!-- RISC-V ShangMi suite SM4 block cipher (Zvksed) -->
+      <item>vsm4k.vi</item>
+      <item>vsm4r.vs</item>
+      <item>vsm4r.vv</item>
+      <!-- RISC-V ShangMi suite SM3 secure hash (Zvksh) -->
+      <item>vsm3c.vi</item>
+      <item>vsm3me.vv</item>
+      <!-- RISC-V BF16 instructions (Zvfbfmin, Zvfbfwma) -->
+      <item>fcvt.bf16.s</item>
+      <item>fcvt.s.bf16</item>
+      <item>vfncvtbf16.f.f.w</item>
+      <item>vfwcvtbf16.f.f.v</item>
+      <item>vfwmaccbf16.vf</item>
+      <item>vfwmaccbf16.vv</item>
+      <!-- RISC-V supervisor/hypervisor support (H) -->
+      <item>hfence.gvma</item>
+      <item>hfence.vvma</item>
+      <item>hlv.b</item>
+      <item>hlv.bu</item>
+      <item>hlv.d</item>
+      <item>hlv.h</item>
+      <item>hlv.hu</item>
+      <item>hlv.w</item>
+      <item>hlv.wu</item>
+      <item>hlvx.hu</item>
+      <item>hlvx.wu</item>
+      <item>hsv.b</item>
+      <item>hsv.d</item>
+      <item>hsv.h</item>
+      <item>hsv.w</item>
+      <item>sfence.vma</item>
+      <!-- RISC-V fine-grained address-translation cache invalidations (Svinval) -->
+      <item>hinval.gvma</item>
+      <item>hinval.vvma</item>
+      <item>sfence.inval.ir</item>
+      <item>sfence.w.inval</item>
+      <item>sinval.vma</item>
+      <!-- RISC-V shadow stack (Zicfiss) -->
+      <item>c.sspopchk</item>
+      <item>c.sspush</item>
+      <item>ssamoswap.d</item>
+      <item>ssamoswap.d.aq</item>
+      <item>ssamoswap.d.aqrl</item>
+      <item>ssamoswap.d.rl</item>
+      <item>ssamoswap.w</item>
+      <item>ssamoswap.w.aq</item>
+      <item>ssamoswap.w.aqrl</item>
+      <item>ssamoswap.w.rl</item>
+      <item>sspopchk</item>
+      <item>sspush</item>
+      <item>ssrdp</item>
+      <!-- RISC-V landing pad (Zicfilp) -->
+      <item>lpad</item>
+    </list>
+
+    <list name="vendor-specific instructions">
+      <!-- RISC-V CORE-V multiply-accumulate (Xcvmac) instructions -->
+      <item>cv.mac</item>
+      <item>cv.machhsn</item>
+      <item>cv.machhsrn</item>
+      <item>cv.machhun</item>
+      <item>cv.machhurn</item>
+      <item>cv.macsn</item>
+      <item>cv.macsrn</item>
+      <item>cv.macun</item>
+      <item>cv.macurn</item>
+      <item>cv.msu</item>
+      <item>cv.mulhhs</item>
+      <item>cv.mulhhsn</item>
+      <item>cv.mulhhsrn</item>
+      <item>cv.mulhhu</item>
+      <item>cv.mulhhun</item>
+      <item>cv.mulhhurn</item>
+      <item>cv.muls</item>
+      <item>cv.mulsn</item>
+      <item>cv.mulsrn</item>
+      <item>cv.mulu</item>
+      <item>cv.mulun</item>
+      <item>cv.mulurn</item>
+      <!-- RISC-V CORE-V advanced ALU (Xcvalu) instructions -->
+      <item>cv.abs</item>
+      <item>cv.addn</item>
+      <item>cv.addnr</item>
+      <item>cv.addrn</item>
+      <item>cv.addrnr</item>
+      <item>cv.addun</item>
+      <item>cv.addunr</item>
+      <item>cv.addurn</item>
+      <item>cv.addurnr</item>
+      <item>cv.clip</item>
+      <item>cv.clipr</item>
+      <item>cv.clipu</item>
+      <item>cv.clipur</item>
+      <item>cv.extbs</item>
+      <item>cv.extbz</item>
+      <item>cv.exths</item>
+      <item>cv.exthz</item>
+      <item>cv.max</item>
+      <item>cv.maxu</item>
+      <item>cv.min</item>
+      <item>cv.minu</item>
+      <item>cv.sle</item>
+      <item>cv.slet</item>
+      <item>cv.sletu</item>
+      <item>cv.sleu</item>
+      <item>cv.subn</item>
+      <item>cv.subnr</item>
+      <item>cv.subrn</item>
+      <item>cv.subrnr</item>
+      <item>cv.subun</item>
+      <item>cv.subunr</item>
+      <item>cv.suburn</item>
+      <item>cv.suburnr</item>
+      <!-- RISC-V CORE-V event load (Xcvelw) instructions -->
+      <item>cv.elw</item>
+      <!-- RISC-V CORE-V post-increment load/store and register-register load/store (Xcvmem) instructions -->
+      <item>cv.lb</item>
+      <item>cv.lbu</item>
+      <item>cv.lh</item>
+      <item>cv.lhu</item>
+      <item>cv.lw</item>
+      <item>cv.sb</item>
+      <item>cv.sh</item>
+      <item>cv.sw</item>
+      <!-- RISC-V CORE-V bit manipulation (Xcvbitmanip) instructions -->
+      <item>cv.bclr</item>
+      <item>cv.bclrr</item>
+      <item>cv.bitrev</item>
+      <item>cv.bset</item>
+      <item>cv.bsetr</item>
+      <item>cv.clb</item>
+      <item>cv.cnt</item>
+      <item>cv.extract</item>
+      <item>cv.extractr</item>
+      <item>cv.extractu</item>
+      <item>cv.extractur</item>
+      <item>cv.ff1</item>
+      <item>cv.fl1</item>
+      <item>cv.insert</item>
+      <item>cv.insertr</item>
+      <item>cv.ror</item>
+      <!-- RISC-V CORE-V single instruction multiple data (Xcvsimd) instructions -->
+      <item>cv.abs.b</item>
+      <item>cv.abs.h</item>
+      <item>cv.add.b</item>
+      <item>cv.add.div2</item>
+      <item>cv.add.div4</item>
+      <item>cv.add.div8</item>
+      <item>cv.add.h</item>
+      <item>cv.add.sc.b</item>
+      <item>cv.add.sc.h</item>
+      <item>cv.add.sci.b</item>
+      <item>cv.add.sci.h</item>
+      <item>cv.and.b</item>
+      <item>cv.and.h</item>
+      <item>cv.and.sc.b</item>
+      <item>cv.and.sc.h</item>
+      <item>cv.and.sci.b</item>
+      <item>cv.and.sci.h</item>
+      <item>cv.avg.b</item>
+      <item>cv.avg.h</item>
+      <item>cv.avg.sc.b</item>
+      <item>cv.avg.sc.h</item>
+      <item>cv.avg.sci.b</item>
+      <item>cv.avg.sci.h</item>
+      <item>cv.avgu.b</item>
+      <item>cv.avgu.h</item>
+      <item>cv.avgu.sc.b</item>
+      <item>cv.avgu.sc.h</item>
+      <item>cv.avgu.sci.b</item>
+      <item>cv.avgu.sci.h</item>
+      <item>cv.cmpeq.b</item>
+      <item>cv.cmpeq.h</item>
+      <item>cv.cmpeq.sc.b</item>
+      <item>cv.cmpeq.sc.h</item>
+      <item>cv.cmpeq.sci.b</item>
+      <item>cv.cmpeq.sci.h</item>
+      <item>cv.cmpge.b</item>
+      <item>cv.cmpge.h</item>
+      <item>cv.cmpge.sc.b</item>
+      <item>cv.cmpge.sc.h</item>
+      <item>cv.cmpge.sci.b</item>
+      <item>cv.cmpge.sci.h</item>
+      <item>cv.cmpgeu.b</item>
+      <item>cv.cmpgeu.h</item>
+      <item>cv.cmpgeu.sc.b</item>
+      <item>cv.cmpgeu.sc.h</item>
+      <item>cv.cmpgeu.sci.b</item>
+      <item>cv.cmpgeu.sci.h</item>
+      <item>cv.cmpgt.b</item>
+      <item>cv.cmpgt.h</item>
+      <item>cv.cmpgt.sc.b</item>
+      <item>cv.cmpgt.sc.h</item>
+      <item>cv.cmpgt.sci.b</item>
+      <item>cv.cmpgt.sci.h</item>
+      <item>cv.cmpgtu.b</item>
+      <item>cv.cmpgtu.h</item>
+      <item>cv.cmpgtu.sc.b</item>
+      <item>cv.cmpgtu.sc.h</item>
+      <item>cv.cmpgtu.sci.b</item>
+      <item>cv.cmpgtu.sci.h</item>
+      <item>cv.cmple.b</item>
+      <item>cv.cmple.h</item>
+      <item>cv.cmple.sc.b</item>
+      <item>cv.cmple.sc.h</item>
+      <item>cv.cmple.sci.b</item>
+      <item>cv.cmple.sci.h</item>
+      <item>cv.cmpleu.b</item>
+      <item>cv.cmpleu.h</item>
+      <item>cv.cmpleu.sc.b</item>
+      <item>cv.cmpleu.sc.h</item>
+      <item>cv.cmpleu.sci.b</item>
+      <item>cv.cmpleu.sci.h</item>
+      <item>cv.cmplt.b</item>
+      <item>cv.cmplt.h</item>
+      <item>cv.cmplt.sc.b</item>
+      <item>cv.cmplt.sc.h</item>
+      <item>cv.cmplt.sci.b</item>
+      <item>cv.cmplt.sci.h</item>
+      <item>cv.cmpltu.b</item>
+      <item>cv.cmpltu.h</item>
+      <item>cv.cmpltu.sc.b</item>
+      <item>cv.cmpltu.sc.h</item>
+      <item>cv.cmpltu.sci.b</item>
+      <item>cv.cmpltu.sci.h</item>
+      <item>cv.cmpne.b</item>
+      <item>cv.cmpne.h</item>
+      <item>cv.cmpne.sc.b</item>
+      <item>cv.cmpne.sc.h</item>
+      <item>cv.cmpne.sci.b</item>
+      <item>cv.cmpne.sci.h</item>
+      <item>cv.cplxconj</item>
+      <item>cv.cplxmul.i.div2</item>
+      <item>cv.cplxmul.i.div4</item>
+      <item>cv.cplxmul.i.div8</item>
+      <item>cv.cplxmul.i</item>
+      <item>cv.cplxmul.r.div2</item>
+      <item>cv.cplxmul.r.div4</item>
+      <item>cv.cplxmul.r.div8</item>
+      <item>cv.cplxmul.r</item>
+      <item>cv.dotsp.b</item>
+      <item>cv.dotsp.h</item>
+      <item>cv.dotsp.sc.b</item>
+      <item>cv.dotsp.sc.h</item>
+      <item>cv.dotsp.sci.b</item>
+      <item>cv.dotsp.sci.h</item>
+      <item>cv.dotup.b</item>
+      <item>cv.dotup.h</item>
+      <item>cv.dotup.sc.b</item>
+      <item>cv.dotup.sc.h</item>
+      <item>cv.dotup.sci.b</item>
+      <item>cv.dotup.sci.h</item>
+      <item>cv.dotusp.b</item>
+      <item>cv.dotusp.h</item>
+      <item>cv.dotusp.sc.b</item>
+      <item>cv.dotusp.sc.h</item>
+      <item>cv.dotusp.sci.b</item>
+      <item>cv.dotusp.sci.h</item>
+      <item>cv.extract.b</item>
+      <item>cv.extract.h</item>
+      <item>cv.extractu.b</item>
+      <item>cv.extractu.h</item>
+      <item>cv.insert.b</item>
+      <item>cv.insert.h</item>
+      <item>cv.max.b</item>
+      <item>cv.max.h</item>
+      <item>cv.max.sc.b</item>
+      <item>cv.max.sc.h</item>
+      <item>cv.max.sci.b</item>
+      <item>cv.max.sci.h</item>
+      <item>cv.maxu.b</item>
+      <item>cv.maxu.h</item>
+      <item>cv.maxu.sc.b</item>
+      <item>cv.maxu.sc.h</item>
+      <item>cv.maxu.sci.b</item>
+      <item>cv.maxu.sci.h</item>
+      <item>cv.min.b</item>
+      <item>cv.min.h</item>
+      <item>cv.min.sc.b</item>
+      <item>cv.min.sc.h</item>
+      <item>cv.min.sci.b</item>
+      <item>cv.min.sci.h</item>
+      <item>cv.minu.b</item>
+      <item>cv.minu.h</item>
+      <item>cv.minu.sc.b</item>
+      <item>cv.minu.sc.h</item>
+      <item>cv.minu.sci.b</item>
+      <item>cv.minu.sci.h</item>
+      <item>cv.or.b</item>
+      <item>cv.or.h</item>
+      <item>cv.or.sc.b</item>
+      <item>cv.or.sc.h</item>
+      <item>cv.or.sci.b</item>
+      <item>cv.or.sci.h</item>
+      <item>cv.pack.h</item>
+      <item>cv.pack</item>
+      <item>cv.packhi.b</item>
+      <item>cv.packlo.b</item>
+      <item>cv.sdotsp.b</item>
+      <item>cv.sdotsp.h</item>
+      <item>cv.sdotsp.sc.b</item>
+      <item>cv.sdotsp.sc.h</item>
+      <item>cv.sdotsp.sci.b</item>
+      <item>cv.sdotsp.sci.h</item>
+      <item>cv.sdotup.b</item>
+      <item>cv.sdotup.h</item>
+      <item>cv.sdotup.sc.b</item>
+      <item>cv.sdotup.sc.h</item>
+      <item>cv.sdotup.sci.b</item>
+      <item>cv.sdotup.sci.h</item>
+      <item>cv.sdotusp.b</item>
+      <item>cv.sdotusp.h</item>
+      <item>cv.sdotusp.sc.b</item>
+      <item>cv.sdotusp.sc.h</item>
+      <item>cv.sdotusp.sci.b</item>
+      <item>cv.sdotusp.sci.h</item>
+      <item>cv.shuffle.b</item>
+      <item>cv.shuffle.h</item>
+      <item>cv.shuffle.sci.h</item>
+      <item>cv.shuffle2.b</item>
+      <item>cv.shuffle2.h</item>
+      <item>cv.shufflei0.sci.b</item>
+      <item>cv.shufflei1.sci.b</item>
+      <item>cv.shufflei2.sci.b</item>
+      <item>cv.shufflei3.sci.b</item>
+      <item>cv.sll.b</item>
+      <item>cv.sll.h</item>
+      <item>cv.sll.sc.b</item>
+      <item>cv.sll.sc.h</item>
+      <item>cv.sll.sci.b</item>
+      <item>cv.sll.sci.h</item>
+      <item>cv.sra.b</item>
+      <item>cv.sra.h</item>
+      <item>cv.sra.sc.b</item>
+      <item>cv.sra.sc.h</item>
+      <item>cv.sra.sci.b</item>
+      <item>cv.sra.sci.h</item>
+      <item>cv.srl.b</item>
+      <item>cv.srl.h</item>
+      <item>cv.srl.sc.b</item>
+      <item>cv.srl.sc.h</item>
+      <item>cv.srl.sci.b</item>
+      <item>cv.srl.sci.h</item>
+      <item>cv.sub.b</item>
+      <item>cv.sub.div2</item>
+      <item>cv.sub.div4</item>
+      <item>cv.sub.div8</item>
+      <item>cv.sub.h</item>
+      <item>cv.sub.sc.b</item>
+      <item>cv.sub.sc.h</item>
+      <item>cv.sub.sci.b</item>
+      <item>cv.sub.sci.h</item>
+      <item>cv.subrotmj.div2</item>
+      <item>cv.subrotmj.div4</item>
+      <item>cv.subrotmj.div8</item>
+      <item>cv.subrotmj</item>
+      <item>cv.xor.b</item>
+      <item>cv.xor.h</item>
+      <item>cv.xor.sc.b</item>
+      <item>cv.xor.sc.h</item>
+      <item>cv.xor.sci.b</item>
+      <item>cv.xor.sci.h</item>
+      <!-- RISC-V T-Head address calculation (XTheadBa) instructions -->
+      <item>th.addsl</item>
+      <!-- RISC-V T-Head basic bit-manipulation (XTheadBb) instructions -->
+      <item>th.ext</item>
+      <item>th.extu</item>
+      <item>th.ff0</item>
+      <item>th.ff1</item>
+      <item>th.rev</item>
+      <item>th.revw</item>
+      <item>th.srri</item>
+      <item>th.srriw</item>
+      <item>th.tstnbz</item>
+      <!-- RISC-V T-Head single-bit (XTheadBs) instructions -->
+      <item>th.tst</item>
+      <!-- RISC-V T-Head cache management operations (XTheadCmo) instructions -->
+      <item>th.dcache.call</item>
+      <item>th.dcache.ciall</item>
+      <item>th.dcache.cipa</item>
+      <item>th.dcache.cisw</item>
+      <item>th.dcache.civa</item>
+      <item>th.dcache.cpa</item>
+      <item>th.dcache.cpal1</item>
+      <item>th.dcache.csw</item>
+      <item>th.dcache.cva</item>
+      <item>th.dcache.cval1</item>
+      <item>th.dcache.iall</item>
+      <item>th.dcache.ipa</item>
+      <item>th.dcache.isw</item>
+      <item>th.dcache.iva</item>
+      <item>th.icache.iall</item>
+      <item>th.icache.ialls</item>
+      <item>th.icache.ipa</item>
+      <item>th.icache.iva</item>
+      <item>th.l2cache.call</item>
+      <item>th.l2cache.ciall</item>
+      <item>th.l2cache.iall</item>
+      <!-- RISC-V T-Head conditional move (XTheadCondMov) instructions -->
+      <item>th.mveqz</item>
+      <item>th.mvnez</item>
+      <!-- RISC-V T-Head indexed memory operations for floating-point registers (XTheadFMemIdx) instructions -->
+      <item>th.flrd</item>
+      <item>th.flrw</item>
+      <item>th.flurd</item>
+      <item>th.flurw</item>
+      <item>th.fsrd</item>
+      <item>th.fsrw</item>
+      <item>th.fsurd</item>
+      <item>th.fsurw</item>
+      <!-- RISC-V T-Head double-precision floating-point high-bit data transmission (XTheadFmv) instructions -->
+      <item>th.fmv.hw.x</item>
+      <item>th.fmv.x.hw</item>
+      <!-- RISC-V T-Head acceleration interruption (XTheadInt) instructions -->
+      <item>th.ipop</item>
+      <item>th.ipush</item>
+      <!-- RISC-V T-Head indexed memory operations (XTheadMemIdx) instructions -->
+      <item>th.lbia</item>
+      <item>th.lbib</item>
+      <item>th.lbuia</item>
+      <item>th.lbuib</item>
+      <item>th.ldia</item>
+      <item>th.ldib</item>
+      <item>th.lhia</item>
+      <item>th.lhib</item>
+      <item>th.lhuia</item>
+      <item>th.lhuib</item>
+      <item>th.lrb</item>
+      <item>th.lrbu</item>
+      <item>th.lrd</item>
+      <item>th.lrh</item>
+      <item>th.lrhu</item>
+      <item>th.lrw</item>
+      <item>th.lrwu</item>
+      <item>th.lurb</item>
+      <item>th.lurbu</item>
+      <item>th.lurd</item>
+      <item>th.lurh</item>
+      <item>th.lurhu</item>
+      <item>th.lurw</item>
+      <item>th.lurwu</item>
+      <item>th.lwia</item>
+      <item>th.lwib</item>
+      <item>th.lwuia</item>
+      <item>th.lwuib</item>
+      <item>th.sbia</item>
+      <item>th.sbib</item>
+      <item>th.sdia</item>
+      <item>th.sdib</item>
+      <item>th.shia</item>
+      <item>th.shib</item>
+      <item>th.srb</item>
+      <item>th.srd</item>
+      <item>th.srh</item>
+      <item>th.srw</item>
+      <item>th.surb</item>
+      <item>th.surd</item>
+      <item>th.surh</item>
+      <item>th.surw</item>
+      <item>th.swia</item>
+      <item>th.swib</item>
+      <!-- RISC-V T-Head two-GPR memory operations (XTheadMemPair) instructions -->
+      <item>th.ldd</item>
+      <item>th.lwd</item>
+      <item>th.lwud</item>
+      <item>th.sdd</item>
+      <item>th.swd</item>
+      <!-- RISC-V T-Head multiply-accumulate (XTheadMac) instructions -->
+      <item>th.mula</item>
+      <item>th.mulah</item>
+      <item>th.mulaw</item>
+      <item>th.muls</item>
+      <item>th.mulsh</item>
+      <item>th.mulsw</item>
+      <!-- RISC-V T-Head multi-core synchronization (XTheadSync) instructions -->
+      <item>th.sfence.vmas</item>
+      <item>th.sync</item>
+      <item>th.sync.i</item>
+      <item>th.sync.is</item>
+      <item>th.sync.s</item>
+      <!-- RISC-V T-Head vector extension (XTheadVector) instructions -->
+      <item>th.vaadd.vi</item>
+      <item>th.vaadd.vv</item>
+      <item>th.vaadd.vx</item>
+      <item>th.vadc.vim</item>
+      <item>th.vadc.vvm</item>
+      <item>th.vadc.vxm</item>
+      <item>th.vadd.vi</item>
+      <item>th.vadd.vv</item>
+      <item>th.vadd.vx</item>
+      <item>th.vamoaddd.v</item>
+      <item>th.vamoaddw.v</item>
+      <item>th.vamoandd.v</item>
+      <item>th.vamoandw.v</item>
+      <item>th.vamomaxd.v</item>
+      <item>th.vamomaxud.v</item>
+      <item>th.vamomaxuw.v</item>
+      <item>th.vamomaxw.v</item>
+      <item>th.vamomind.v</item>
+      <item>th.vamominud.v</item>
+      <item>th.vamominuw.v</item>
+      <item>th.vamominw.v</item>
+      <item>th.vamoord.v</item>
+      <item>th.vamoorw.v</item>
+      <item>th.vamoswapd.v</item>
+      <item>th.vamoswapw.v</item>
+      <item>th.vamoxord.v</item>
+      <item>th.vamoxorw.v</item>
+      <item>th.vand.vi</item>
+      <item>th.vand.vv</item>
+      <item>th.vand.vx</item>
+      <item>th.vasub.vv</item>
+      <item>th.vasub.vx</item>
+      <item>th.vcompress.vm</item>
+      <item>th.vdiv.vv</item>
+      <item>th.vdiv.vx</item>
+      <item>th.vdivu.vv</item>
+      <item>th.vdivu.vx</item>
+      <item>th.vext.x.v</item>
+      <item>th.vfabs.v</item>
+      <item>th.vfadd.vf</item>
+      <item>th.vfadd.vv</item>
+      <item>th.vfclass.v</item>
+      <item>th.vfcvt.f.x.v</item>
+      <item>th.vfcvt.f.xu.v</item>
+      <item>th.vfcvt.x.f.v</item>
+      <item>th.vfcvt.xu.f.v</item>
+      <item>th.vfdiv.vf</item>
+      <item>th.vfdiv.vv</item>
+      <item>th.vfmacc.vf</item>
+      <item>th.vfmacc.vv</item>
+      <item>th.vfmadd.vf</item>
+      <item>th.vfmadd.vv</item>
+      <item>th.vfmax.vf</item>
+      <item>th.vfmax.vv</item>
+      <item>th.vfmerge.vfm</item>
+      <item>th.vfmin.vf</item>
+      <item>th.vfmin.vv</item>
+      <item>th.vfmsac.vf</item>
+      <item>th.vfmsac.vv</item>
+      <item>th.vfmsub.vf</item>
+      <item>th.vfmsub.vv</item>
+      <item>th.vfmul.vf</item>
+      <item>th.vfmul.vv</item>
+      <item>th.vfmv.f.s</item>
+      <item>th.vfmv.s.f</item>
+      <item>th.vfmv.v.f</item>
+      <item>th.vfncvt.f.f.v</item>
+      <item>th.vfncvt.f.x.v</item>
+      <item>th.vfncvt.f.xu.v</item>
+      <item>th.vfncvt.x.f.v</item>
+      <item>th.vfncvt.xu.f.v</item>
+      <item>th.vfneg.v</item>
+      <item>th.vfnmacc.vf</item>
+      <item>th.vfnmacc.vv</item>
+      <item>th.vfnmadd.vf</item>
+      <item>th.vfnmadd.vv</item>
+      <item>th.vfnmsac.vf</item>
+      <item>th.vfnmsac.vv</item>
+      <item>th.vfnmsub.vf</item>
+      <item>th.vfnmsub.vv</item>
+      <item>th.vfrdiv.vf</item>
+      <item>th.vfredmax.vs</item>
+      <item>th.vfredmin.vs</item>
+      <item>th.vfredosum.vs</item>
+      <item>th.vfredsum.vs</item>
+      <item>th.vfrsub.vf</item>
+      <item>th.vfsgnj.vf</item>
+      <item>th.vfsgnj.vv</item>
+      <item>th.vfsgnjn.vf</item>
+      <item>th.vfsgnjn.vv</item>
+      <item>th.vfsgnjx.vf</item>
+      <item>th.vfsgnjx.vv</item>
+      <item>th.vfsqrt.v</item>
+      <item>th.vfsub.vf</item>
+      <item>th.vfsub.vv</item>
+      <item>th.vfwadd.vf</item>
+      <item>th.vfwadd.vv</item>
+      <item>th.vfwadd.wf</item>
+      <item>th.vfwadd.wv</item>
+      <item>th.vfwcvt.f.f.v</item>
+      <item>th.vfwcvt.f.x.v</item>
+      <item>th.vfwcvt.f.xu.v</item>
+      <item>th.vfwcvt.x.f.v</item>
+      <item>th.vfwcvt.xu.f.v</item>
+      <item>th.vfwmacc.vf</item>
+      <item>th.vfwmacc.vv</item>
+      <item>th.vfwmsac.vf</item>
+      <item>th.vfwmsac.vv</item>
+      <item>th.vfwmul.vf</item>
+      <item>th.vfwmul.vv</item>
+      <item>th.vfwnmacc.vf</item>
+      <item>th.vfwnmacc.vv</item>
+      <item>th.vfwnmsac.vf</item>
+      <item>th.vfwnmsac.vv</item>
+      <item>th.vfwredosum.vs</item>
+      <item>th.vfwredsum.vs</item>
+      <item>th.vfwsub.vf</item>
+      <item>th.vfwsub.vv</item>
+      <item>th.vfwsub.wf</item>
+      <item>th.vfwsub.wv</item>
+      <item>th.vid.v</item>
+      <item>th.viota.m</item>
+      <item>th.vlb.v</item>
+      <item>th.vlbff.v</item>
+      <item>th.vlbu.v</item>
+      <item>th.vlbuff.v</item>
+      <item>th.vle.v</item>
+      <item>th.vleff.v</item>
+      <item>th.vlh.v</item>
+      <item>th.vlhff.v</item>
+      <item>th.vlhu.v</item>
+      <item>th.vlhuff.v</item>
+      <item>th.vlsb.v</item>
+      <item>th.vlsbu.v</item>
+      <item>th.vlse.v</item>
+      <item>th.vlseg2b.v</item>
+      <item>th.vlseg2bff.v</item>
+      <item>th.vlseg2bu.v</item>
+      <item>th.vlseg2buff.v</item>
+      <item>th.vlseg2e.v</item>
+      <item>th.vlseg2eff.v</item>
+      <item>th.vlseg2h.v</item>
+      <item>th.vlseg2hff.v</item>
+      <item>th.vlseg2hu.v</item>
+      <item>th.vlseg2huff.v</item>
+      <item>th.vlseg2w.v</item>
+      <item>th.vlseg2wff.v</item>
+      <item>th.vlseg2wu.v</item>
+      <item>th.vlseg2wuff.v</item>
+      <item>th.vlseg3b.v</item>
+      <item>th.vlseg3bff.v</item>
+      <item>th.vlseg3bu.v</item>
+      <item>th.vlseg3buff.v</item>
+      <item>th.vlseg3e.v</item>
+      <item>th.vlseg3eff.v</item>
+      <item>th.vlseg3h.v</item>
+      <item>th.vlseg3hff.v</item>
+      <item>th.vlseg3hu.v</item>
+      <item>th.vlseg3huff.v</item>
+      <item>th.vlseg3w.v</item>
+      <item>th.vlseg3wff.v</item>
+      <item>th.vlseg3wu.v</item>
+      <item>th.vlseg3wuff.v</item>
+      <item>th.vlseg4b.v</item>
+      <item>th.vlseg4bff.v</item>
+      <item>th.vlseg4bu.v</item>
+      <item>th.vlseg4buff.v</item>
+      <item>th.vlseg4e.v</item>
+      <item>th.vlseg4eff.v</item>
+      <item>th.vlseg4h.v</item>
+      <item>th.vlseg4hff.v</item>
+      <item>th.vlseg4hu.v</item>
+      <item>th.vlseg4huff.v</item>
+      <item>th.vlseg4w.v</item>
+      <item>th.vlseg4wff.v</item>
+      <item>th.vlseg4wu.v</item>
+      <item>th.vlseg4wuff.v</item>
+      <item>th.vlseg5b.v</item>
+      <item>th.vlseg5bff.v</item>
+      <item>th.vlseg5bu.v</item>
+      <item>th.vlseg5buff.v</item>
+      <item>th.vlseg5e.v</item>
+      <item>th.vlseg5eff.v</item>
+      <item>th.vlseg5h.v</item>
+      <item>th.vlseg5hff.v</item>
+      <item>th.vlseg5hu.v</item>
+      <item>th.vlseg5huff.v</item>
+      <item>th.vlseg5w.v</item>
+      <item>th.vlseg5wff.v</item>
+      <item>th.vlseg5wu.v</item>
+      <item>th.vlseg5wuff.v</item>
+      <item>th.vlseg6b.v</item>
+      <item>th.vlseg6bff.v</item>
+      <item>th.vlseg6bu.v</item>
+      <item>th.vlseg6buff.v</item>
+      <item>th.vlseg6e.v</item>
+      <item>th.vlseg6eff.v</item>
+      <item>th.vlseg6h.v</item>
+      <item>th.vlseg6hff.v</item>
+      <item>th.vlseg6hu.v</item>
+      <item>th.vlseg6huff.v</item>
+      <item>th.vlseg6w.v</item>
+      <item>th.vlseg6wff.v</item>
+      <item>th.vlseg6wu.v</item>
+      <item>th.vlseg6wuff.v</item>
+      <item>th.vlseg7b.v</item>
+      <item>th.vlseg7bff.v</item>
+      <item>th.vlseg7bu.v</item>
+      <item>th.vlseg7buff.v</item>
+      <item>th.vlseg7e.v</item>
+      <item>th.vlseg7eff.v</item>
+      <item>th.vlseg7h.v</item>
+      <item>th.vlseg7hff.v</item>
+      <item>th.vlseg7hu.v</item>
+      <item>th.vlseg7huff.v</item>
+      <item>th.vlseg7w.v</item>
+      <item>th.vlseg7wff.v</item>
+      <item>th.vlseg7wu.v</item>
+      <item>th.vlseg7wuff.v</item>
+      <item>th.vlseg8b.v</item>
+      <item>th.vlseg8bff.v</item>
+      <item>th.vlseg8bu.v</item>
+      <item>th.vlseg8buff.v</item>
+      <item>th.vlseg8e.v</item>
+      <item>th.vlseg8eff.v</item>
+      <item>th.vlseg8h.v</item>
+      <item>th.vlseg8hff.v</item>
+      <item>th.vlseg8hu.v</item>
+      <item>th.vlseg8huff.v</item>
+      <item>th.vlseg8w.v</item>
+      <item>th.vlseg8wff.v</item>
+      <item>th.vlseg8wu.v</item>
+      <item>th.vlseg8wuff.v</item>
+      <item>th.vlsh.v</item>
+      <item>th.vlshu.v</item>
+      <item>th.vlsseg2b.v</item>
+      <item>th.vlsseg2bu.v</item>
+      <item>th.vlsseg2e.v</item>
+      <item>th.vlsseg2h.v</item>
+      <item>th.vlsseg2hu.v</item>
+      <item>th.vlsseg2w.v</item>
+      <item>th.vlsseg2wu.v</item>
+      <item>th.vlsseg3b.v</item>
+      <item>th.vlsseg3bu.v</item>
+      <item>th.vlsseg3e.v</item>
+      <item>th.vlsseg3h.v</item>
+      <item>th.vlsseg3hu.v</item>
+      <item>th.vlsseg3w.v</item>
+      <item>th.vlsseg3wu.v</item>
+      <item>th.vlsseg4b.v</item>
+      <item>th.vlsseg4bu.v</item>
+      <item>th.vlsseg4e.v</item>
+      <item>th.vlsseg4h.v</item>
+      <item>th.vlsseg4hu.v</item>
+      <item>th.vlsseg4w.v</item>
+      <item>th.vlsseg4wu.v</item>
+      <item>th.vlsseg5b.v</item>
+      <item>th.vlsseg5bu.v</item>
+      <item>th.vlsseg5e.v</item>
+      <item>th.vlsseg5h.v</item>
+      <item>th.vlsseg5hu.v</item>
+      <item>th.vlsseg5w.v</item>
+      <item>th.vlsseg5wu.v</item>
+      <item>th.vlsseg6b.v</item>
+      <item>th.vlsseg6bu.v</item>
+      <item>th.vlsseg6e.v</item>
+      <item>th.vlsseg6h.v</item>
+      <item>th.vlsseg6hu.v</item>
+      <item>th.vlsseg6w.v</item>
+      <item>th.vlsseg6wu.v</item>
+      <item>th.vlsseg7b.v</item>
+      <item>th.vlsseg7bu.v</item>
+      <item>th.vlsseg7e.v</item>
+      <item>th.vlsseg7h.v</item>
+      <item>th.vlsseg7hu.v</item>
+      <item>th.vlsseg7w.v</item>
+      <item>th.vlsseg7wu.v</item>
+      <item>th.vlsseg8b.v</item>
+      <item>th.vlsseg8bu.v</item>
+      <item>th.vlsseg8e.v</item>
+      <item>th.vlsseg8h.v</item>
+      <item>th.vlsseg8hu.v</item>
+      <item>th.vlsseg8w.v</item>
+      <item>th.vlsseg8wu.v</item>
+      <item>th.vlsw.v</item>
+      <item>th.vlswu.v</item>
+      <item>th.vlw.v</item>
+      <item>th.vlwff.v</item>
+      <item>th.vlwu.v</item>
+      <item>th.vlwuff.v</item>
+      <item>th.vlxb.v</item>
+      <item>th.vlxbu.v</item>
+      <item>th.vlxe.v</item>
+      <item>th.vlxh.v</item>
+      <item>th.vlxhu.v</item>
+      <item>th.vlxseg2b.v</item>
+      <item>th.vlxseg2bu.v</item>
+      <item>th.vlxseg2e.v</item>
+      <item>th.vlxseg2h.v</item>
+      <item>th.vlxseg2hu.v</item>
+      <item>th.vlxseg2w.v</item>
+      <item>th.vlxseg2wu.v</item>
+      <item>th.vlxseg3b.v</item>
+      <item>th.vlxseg3bu.v</item>
+      <item>th.vlxseg3e.v</item>
+      <item>th.vlxseg3h.v</item>
+      <item>th.vlxseg3hu.v</item>
+      <item>th.vlxseg3w.v</item>
+      <item>th.vlxseg3wu.v</item>
+      <item>th.vlxseg4b.v</item>
+      <item>th.vlxseg4bu.v</item>
+      <item>th.vlxseg4e.v</item>
+      <item>th.vlxseg4h.v</item>
+      <item>th.vlxseg4hu.v</item>
+      <item>th.vlxseg4w.v</item>
+      <item>th.vlxseg4wu.v</item>
+      <item>th.vlxseg5b.v</item>
+      <item>th.vlxseg5bu.v</item>
+      <item>th.vlxseg5e.v</item>
+      <item>th.vlxseg5h.v</item>
+      <item>th.vlxseg5hu.v</item>
+      <item>th.vlxseg5w.v</item>
+      <item>th.vlxseg5wu.v</item>
+      <item>th.vlxseg6b.v</item>
+      <item>th.vlxseg6bu.v</item>
+      <item>th.vlxseg6e.v</item>
+      <item>th.vlxseg6h.v</item>
+      <item>th.vlxseg6hu.v</item>
+      <item>th.vlxseg6w.v</item>
+      <item>th.vlxseg6wu.v</item>
+      <item>th.vlxseg7b.v</item>
+      <item>th.vlxseg7bu.v</item>
+      <item>th.vlxseg7e.v</item>
+      <item>th.vlxseg7h.v</item>
+      <item>th.vlxseg7hu.v</item>
+      <item>th.vlxseg7w.v</item>
+      <item>th.vlxseg7wu.v</item>
+      <item>th.vlxseg8b.v</item>
+      <item>th.vlxseg8bu.v</item>
+      <item>th.vlxseg8e.v</item>
+      <item>th.vlxseg8h.v</item>
+      <item>th.vlxseg8hu.v</item>
+      <item>th.vlxseg8w.v</item>
+      <item>th.vlxseg8wu.v</item>
+      <item>th.vlxw.v</item>
+      <item>th.vlxwu.v</item>
+      <item>th.vmacc.vv</item>
+      <item>th.vmacc.vx</item>
+      <item>th.vmadc.vim</item>
+      <item>th.vmadc.vvm</item>
+      <item>th.vmadc.vxm</item>
+      <item>th.vmadd.vv</item>
+      <item>th.vmadd.vx</item>
+      <item>th.vmand.mm</item>
+      <item>th.vmandnot.mm</item>
+      <item>th.vmax.vv</item>
+      <item>th.vmax.vx</item>
+      <item>th.vmaxu.vv</item>
+      <item>th.vmaxu.vx</item>
+      <item>th.vmclr.m</item>
+      <item>th.vmcpy.m</item>
+      <item>th.vmerge.vim</item>
+      <item>th.vmerge.vvm</item>
+      <item>th.vmerge.vxm</item>
+      <item>th.vmfeq.vf</item>
+      <item>th.vmfeq.vv</item>
+      <item>th.vmfge.vf</item>
+      <item>th.vmfge.vv</item>
+      <item>th.vmfgt.vf</item>
+      <item>th.vmfgt.vv</item>
+      <item>th.vmfirst.m</item>
+      <item>th.vmfle.vf</item>
+      <item>th.vmfle.vv</item>
+      <item>th.vmflt.vf</item>
+      <item>th.vmflt.vv</item>
+      <item>th.vmfne.vf</item>
+      <item>th.vmfne.vv</item>
+      <item>th.vmford.vf</item>
+      <item>th.vmford.vv</item>
+      <item>th.vmin.vv</item>
+      <item>th.vmin.vx</item>
+      <item>th.vminu.vv</item>
+      <item>th.vminu.vx</item>
+      <item>th.vmmv.m</item>
+      <item>th.vmnand.mm</item>
+      <item>th.vmnor.mm</item>
+      <item>th.vmnot.m</item>
+      <item>th.vmor.mm</item>
+      <item>th.vmornot.mm</item>
+      <item>th.vmpopc.m</item>
+      <item>th.vmsbc.vvm</item>
+      <item>th.vmsbc.vxm</item>
+      <item>th.vmsbf.m</item>
+      <item>th.vmseq.vi</item>
+      <item>th.vmseq.vv</item>
+      <item>th.vmseq.vx</item>
+      <item>th.vmset.m</item>
+      <item>th.vmsge.vi</item>
+      <item>th.vmsge.vv</item>
+      <item>th.vmsge.vx</item>
+      <item>th.vmsgeu.vi</item>
+      <item>th.vmsgeu.vv</item>
+      <item>th.vmsgeu.vx</item>
+      <item>th.vmsgt.vi</item>
+      <item>th.vmsgt.vv</item>
+      <item>th.vmsgt.vx</item>
+      <item>th.vmsgtu.vi</item>
+      <item>th.vmsgtu.vv</item>
+      <item>th.vmsgtu.vx</item>
+      <item>th.vmsif.m</item>
+      <item>th.vmsle.vi</item>
+      <item>th.vmsle.vv</item>
+      <item>th.vmsle.vx</item>
+      <item>th.vmsleu.vi</item>
+      <item>th.vmsleu.vv</item>
+      <item>th.vmsleu.vx</item>
+      <item>th.vmslt.vi</item>
+      <item>th.vmslt.vv</item>
+      <item>th.vmslt.vx</item>
+      <item>th.vmsltu.vi</item>
+      <item>th.vmsltu.vv</item>
+      <item>th.vmsltu.vx</item>
+      <item>th.vmsne.vi</item>
+      <item>th.vmsne.vv</item>
+      <item>th.vmsne.vx</item>
+      <item>th.vmsof.m</item>
+      <item>th.vmul.vv</item>
+      <item>th.vmul.vx</item>
+      <item>th.vmulh.vv</item>
+      <item>th.vmulh.vx</item>
+      <item>th.vmulhsu.vv</item>
+      <item>th.vmulhsu.vx</item>
+      <item>th.vmulhu.vv</item>
+      <item>th.vmulhu.vx</item>
+      <item>th.vmv.s.x</item>
+      <item>th.vmv.v.i</item>
+      <item>th.vmv.v.v</item>
+      <item>th.vmv.v.x</item>
+      <item>th.vmv.x.s</item>
+      <item>th.vmxnor.mm</item>
+      <item>th.vmxor.mm</item>
+      <item>th.vnclip.vi</item>
+      <item>th.vnclip.vv</item>
+      <item>th.vnclip.vx</item>
+      <item>th.vnclipu.vi</item>
+      <item>th.vnclipu.vv</item>
+      <item>th.vnclipu.vx</item>
+      <item>th.vncvt.x.x.v</item>
+      <item>th.vneg.v</item>
+      <item>th.vnmsac.vv</item>
+      <item>th.vnmsac.vx</item>
+      <item>th.vnmsub.vv</item>
+      <item>th.vnmsub.vx</item>
+      <item>th.vnot.v</item>
+      <item>th.vnsra.vi</item>
+      <item>th.vnsra.vv</item>
+      <item>th.vnsra.vx</item>
+      <item>th.vnsrl.vi</item>
+      <item>th.vnsrl.vv</item>
+      <item>th.vnsrl.vx</item>
+      <item>th.vor.vi</item>
+      <item>th.vor.vv</item>
+      <item>th.vor.vx</item>
+      <item>th.vredand.vs</item>
+      <item>th.vredmax.vs</item>
+      <item>th.vredmaxu.vs</item>
+      <item>th.vredmin.vs</item>
+      <item>th.vredminu.vs</item>
+      <item>th.vredor.vs</item>
+      <item>th.vredsum.vs</item>
+      <item>th.vredxor.vs</item>
+      <item>th.vrem.vv</item>
+      <item>th.vrem.vx</item>
+      <item>th.vremu.vv</item>
+      <item>th.vremu.vx</item>
+      <item>th.vrgather.vi</item>
+      <item>th.vrgather.vv</item>
+      <item>th.vrgather.vx</item>
+      <item>th.vrsub.vi</item>
+      <item>th.vrsub.vx</item>
+      <item>th.vsadd.vi</item>
+      <item>th.vsadd.vv</item>
+      <item>th.vsadd.vx</item>
+      <item>th.vsaddu.vi</item>
+      <item>th.vsaddu.vv</item>
+      <item>th.vsaddu.vx</item>
+      <item>th.vsb.v</item>
+      <item>th.vsbc.vvm</item>
+      <item>th.vsbc.vxm</item>
+      <item>th.vse.v</item>
+      <item>th.vsetvl</item>
+      <item>th.vsetvli</item>
+      <item>th.vsh.v</item>
+      <item>th.vslide1down.vx</item>
+      <item>th.vslide1up.vx</item>
+      <item>th.vslidedown.vi</item>
+      <item>th.vslidedown.vx</item>
+      <item>th.vslideup.vi</item>
+      <item>th.vslideup.vx</item>
+      <item>th.vsll.vi</item>
+      <item>th.vsll.vv</item>
+      <item>th.vsll.vx</item>
+      <item>th.vsmul.vv</item>
+      <item>th.vsmul.vx</item>
+      <item>th.vsra.vi</item>
+      <item>th.vsra.vv</item>
+      <item>th.vsra.vx</item>
+      <item>th.vsrl.vi</item>
+      <item>th.vsrl.vv</item>
+      <item>th.vsrl.vx</item>
+      <item>th.vssb.v</item>
+      <item>th.vsse.v</item>
+      <item>th.vsseg2b.v</item>
+      <item>th.vsseg2e.v</item>
+      <item>th.vsseg2h.v</item>
+      <item>th.vsseg2w.v</item>
+      <item>th.vsseg3b.v</item>
+      <item>th.vsseg3e.v</item>
+      <item>th.vsseg3h.v</item>
+      <item>th.vsseg3w.v</item>
+      <item>th.vsseg4b.v</item>
+      <item>th.vsseg4e.v</item>
+      <item>th.vsseg4h.v</item>
+      <item>th.vsseg4w.v</item>
+      <item>th.vsseg5b.v</item>
+      <item>th.vsseg5e.v</item>
+      <item>th.vsseg5h.v</item>
+      <item>th.vsseg5w.v</item>
+      <item>th.vsseg6b.v</item>
+      <item>th.vsseg6e.v</item>
+      <item>th.vsseg6h.v</item>
+      <item>th.vsseg6w.v</item>
+      <item>th.vsseg7b.v</item>
+      <item>th.vsseg7e.v</item>
+      <item>th.vsseg7h.v</item>
+      <item>th.vsseg7w.v</item>
+      <item>th.vsseg8b.v</item>
+      <item>th.vsseg8e.v</item>
+      <item>th.vsseg8h.v</item>
+      <item>th.vsseg8w.v</item>
+      <item>th.vssh.v</item>
+      <item>th.vssra.vi</item>
+      <item>th.vssra.vv</item>
+      <item>th.vssra.vx</item>
+      <item>th.vssrl.vi</item>
+      <item>th.vssrl.vv</item>
+      <item>th.vssrl.vx</item>
+      <item>th.vssseg2b.v</item>
+      <item>th.vssseg2e.v</item>
+      <item>th.vssseg2h.v</item>
+      <item>th.vssseg2w.v</item>
+      <item>th.vssseg3b.v</item>
+      <item>th.vssseg3e.v</item>
+      <item>th.vssseg3h.v</item>
+      <item>th.vssseg3w.v</item>
+      <item>th.vssseg4b.v</item>
+      <item>th.vssseg4e.v</item>
+      <item>th.vssseg4h.v</item>
+      <item>th.vssseg4w.v</item>
+      <item>th.vssseg5b.v</item>
+      <item>th.vssseg5e.v</item>
+      <item>th.vssseg5h.v</item>
+      <item>th.vssseg5w.v</item>
+      <item>th.vssseg6b.v</item>
+      <item>th.vssseg6e.v</item>
+      <item>th.vssseg6h.v</item>
+      <item>th.vssseg6w.v</item>
+      <item>th.vssseg7b.v</item>
+      <item>th.vssseg7e.v</item>
+      <item>th.vssseg7h.v</item>
+      <item>th.vssseg7w.v</item>
+      <item>th.vssseg8b.v</item>
+      <item>th.vssseg8e.v</item>
+      <item>th.vssseg8h.v</item>
+      <item>th.vssseg8w.v</item>
+      <item>th.vssub.vv</item>
+      <item>th.vssub.vx</item>
+      <item>th.vssubu.vv</item>
+      <item>th.vssubu.vx</item>
+      <item>th.vssw.v</item>
+      <item>th.vsub.vv</item>
+      <item>th.vsub.vx</item>
+      <item>th.vsuxb.v</item>
+      <item>th.vsuxe.v</item>
+      <item>th.vsuxh.v</item>
+      <item>th.vsuxw.v</item>
+      <item>th.vsw.v</item>
+      <item>th.vsxb.v</item>
+      <item>th.vsxe.v</item>
+      <item>th.vsxh.v</item>
+      <item>th.vsxseg2b.v</item>
+      <item>th.vsxseg2e.v</item>
+      <item>th.vsxseg2h.v</item>
+      <item>th.vsxseg2w.v</item>
+      <item>th.vsxseg3b.v</item>
+      <item>th.vsxseg3e.v</item>
+      <item>th.vsxseg3h.v</item>
+      <item>th.vsxseg3w.v</item>
+      <item>th.vsxseg4b.v</item>
+      <item>th.vsxseg4e.v</item>
+      <item>th.vsxseg4h.v</item>
+      <item>th.vsxseg4w.v</item>
+      <item>th.vsxseg5b.v</item>
+      <item>th.vsxseg5e.v</item>
+      <item>th.vsxseg5h.v</item>
+      <item>th.vsxseg5w.v</item>
+      <item>th.vsxseg6b.v</item>
+      <item>th.vsxseg6e.v</item>
+      <item>th.vsxseg6h.v</item>
+      <item>th.vsxseg6w.v</item>
+      <item>th.vsxseg7b.v</item>
+      <item>th.vsxseg7e.v</item>
+      <item>th.vsxseg7h.v</item>
+      <item>th.vsxseg7w.v</item>
+      <item>th.vsxseg8b.v</item>
+      <item>th.vsxseg8e.v</item>
+      <item>th.vsxseg8h.v</item>
+      <item>th.vsxseg8w.v</item>
+      <item>th.vsxw.v</item>
+      <item>th.vwadd.vv</item>
+      <item>th.vwadd.vx</item>
+      <item>th.vwadd.wv</item>
+      <item>th.vwadd.wx</item>
+      <item>th.vwaddu.vv</item>
+      <item>th.vwaddu.vx</item>
+      <item>th.vwaddu.wv</item>
+      <item>th.vwaddu.wx</item>
+      <item>th.vwcvt.x.x.v</item>
+      <item>th.vwcvtu.x.x.v</item>
+      <item>th.vwmacc.vv</item>
+      <item>th.vwmacc.vx</item>
+      <item>th.vwmaccsu.vv</item>
+      <item>th.vwmaccsu.vx</item>
+      <item>th.vwmaccu.vv</item>
+      <item>th.vwmaccu.vx</item>
+      <item>th.vwmaccus.vx</item>
+      <item>th.vwmul.vv</item>
+      <item>th.vwmul.vx</item>
+      <item>th.vwmulsu.vv</item>
+      <item>th.vwmulsu.vx</item>
+      <item>th.vwmulu.vv</item>
+      <item>th.vwmulu.vx</item>
+      <item>th.vwredsum.vs</item>
+      <item>th.vwredsumu.vs</item>
+      <item>th.vwsmacc.vv</item>
+      <item>th.vwsmacc.vx</item>
+      <item>th.vwsmaccsu.vv</item>
+      <item>th.vwsmaccsu.vx</item>
+      <item>th.vwsmaccu.vv</item>
+      <item>th.vwsmaccu.vx</item>
+      <item>th.vwsmaccus.vx</item>
+      <item>th.vwsub.vv</item>
+      <item>th.vwsub.vx</item>
+      <item>th.vwsub.wv</item>
+      <item>th.vwsub.wx</item>
+      <item>th.vwsubu.vv</item>
+      <item>th.vwsubu.vx</item>
+      <item>th.vwsubu.wv</item>
+      <item>th.vwsubu.wx</item>
+      <item>th.vxor.vi</item>
+      <item>th.vxor.vv</item>
+      <item>th.vxor.vx</item>
+      <!-- RISC-V T-Head vector four 8-bit multiply and add with 32-bit (XTheadVdot) instructions -->
+      <item>th.vmaqa.vv</item>
+      <item>th.vmaqa.vx</item>
+      <item>th.vmaqasu.vv</item>
+      <item>th.vmaqasu.vx</item>
+      <item>th.vmaqau.vv</item>
+      <item>th.vmaqau.vx</item>
+      <item>th.vmaqaus.vx</item>
+      <!-- RISC-V Ventana Microsystems conditional opserations extension (XVentanaCondOps) instructions -->
+      <item>vt.maskc</item>
+      <item>vt.maskcn</item>
+      <!-- RISC-V SiFive vector coprocessor interface (Xsfvcp) instructions -->
+      <item>sf.vc.fv</item>
+      <item>sf.vc.fvv</item>
+      <item>sf.vc.fvw</item>
+      <item>sf.vc.i</item>
+      <item>sf.vc.iv</item>
+      <item>sf.vc.ivv</item>
+      <item>sf.vc.ivw</item>
+      <item>sf.vc.v.fv</item>
+      <item>sf.vc.v.fvv</item>
+      <item>sf.vc.v.fvw</item>
+      <item>sf.vc.v.i</item>
+      <item>sf.vc.v.iv</item>
+      <item>sf.vc.v.ivv</item>
+      <item>sf.vc.v.ivw</item>
+      <item>sf.vc.v.vv</item>
+      <item>sf.vc.v.vvv</item>
+      <item>sf.vc.v.vvw</item>
+      <item>sf.vc.v.x</item>
+      <item>sf.vc.v.xv</item>
+      <item>sf.vc.v.xvv</item>
+      <item>sf.vc.v.xvw</item>
+      <item>sf.vc.vv</item>
+      <item>sf.vc.vvv</item>
+      <item>sf.vc.vvw</item>
+      <item>sf.vc.x</item>
+      <item>sf.vc.xv</item>
+      <item>sf.vc.xvv</item>
+      <item>sf.vc.xvw</item>
+      <!-- RISC-V SiFive cease instruction -->
+      <item>sf.cease</item>
+      <!-- RISC-V SiFive int8 matrix-multiply (Xsfvqmaccdod, Xsfvqmaccqoq) instructions -->
+      <item>sf.vqmacc.2x8x2</item>
+      <item>sf.vqmacc.4x8x4</item>
+      <item>sf.vqmaccsu.2x8x2</item>
+      <item>sf.vqmaccsu.4x8x4</item>
+      <item>sf.vqmaccu.2x8x2</item>
+      <item>sf.vqmaccu.4x8x4</item>
+      <item>sf.vqmaccus.2x8x2</item>
+      <item>sf.vqmaccus.4x8x4</item>
+      <!-- RISC-V SiFive FP32-to-int8 ranged clip (Xsfvfnrclipxfqf) instructions -->
+      <item>sf.vfnrclip.x.f.qf</item>
+      <item>sf.vfnrclip.xu.f.qf</item>
+    </list>
+
+    <list name="branch instructions">
+      <item>call</item>
+      <item>callq</item>
+      <item>iret</item>
+      <item>iretd</item>
+      <item>iretq</item>
+      <item>iretw</item>
+      <item>ja</item>
+      <item>jae</item>
+      <item>jb</item>
+      <item>jbe</item>
+      <item>jc</item>
+      <item>jcxz</item>
+      <item>je</item>
+      <item>jecxz</item>
+      <item>jg</item>
+      <item>jge</item>
+      <item>jl</item>
+      <item>jle</item>
+      <item>jmp</item>
+      <item>jmpe</item>
+      <item>jna</item>
+      <item>jnae</item>
+      <item>jnb</item>
+      <item>jnbe</item>
+      <item>jnc</item>
+      <item>jne</item>
+      <item>jng</item>
+      <item>jnge</item>
+      <item>jnl</item>
+      <item>jnle</item>
+      <item>jno</item>
+      <item>jnp</item>
+      <item>jns</item>
+      <item>jnz</item>
+      <item>jo</item>
+      <item>jp</item>
+      <item>jpe</item>
+      <item>jpo</item>
+      <item>jrcxz</item>
+      <item>js</item>
+      <item>jz</item>
+      <item>ret</item>
+      <item>retd</item>
+      <item>retf</item>
+      <item>retfd</item>
+      <item>retfq</item>
+      <item>retfw</item>
+      <item>retn</item>
+      <item>retnd</item>
+      <item>retnq</item>
+      <item>retnw</item>
+      <item>retq</item>
+      <item>retw</item>
+      <!-- RISC-V basic RVI instructions and aliases -->
+      <item>beq</item>
+      <item>beqz</item>
+      <item>bge</item>
+      <item>bgeu</item>
+      <item>bgez</item>
+      <item>bgt</item>
+      <item>bgtu</item>
+      <item>bgtz</item>
+      <item>ble</item>
+      <item>bleu</item>
+      <item>blez</item>
+      <item>blt</item>
+      <item>bltu</item>
+      <item>bltz</item>
+      <item>bne</item>
+      <item>bnez</item>
+      <item>ecall</item>
+      <item>ebreak</item>
+      <item>j</item>
+      <item>jal</item>
+      <item>jalr</item>
+      <item>jr</item>
+      <item>jump</item>
+      <item>sbreak</item>
+      <item>scall</item>
+      <!-- RISC-V code size reduction (Zcmt) -->
+      <item>cm.jalt</item>
+      <item>cm.jt</item>
+      <!-- RISC-V code size reduction (Zcmp) -->
+      <item>cm.popret</item>
+      <item>cm.popretz</item>
+      <!-- RISC-V supervisor/hypervisor support (H) -->
+      <item>dret</item>
+      <item>mret</item>
+      <item>sret</item>
+      <item>wfi</item>
+      <!-- RISC-V control transfer records (Smctr/Ssctr) -->
+      <item>sctrclr</item>
+      <!-- RISC-V resumable non-maskable interrupts (Smrnmi) -->
+      <item>mnret</item>
+    </list>
+
+    <list name="vendor-specific branch instructions">
+      <!-- RISC-V CORE-V immediate branch (Xcvbi) instructions -->
+      <item>cv.beqimm</item>
+      <item>cv.bneimm</item>
+    </list>
+
+    <list name="deprecated/removed instructions">
+      <!-- RISC-V removed from hypervisor support (H) -->
+      <item>hret</item>
+      <!-- RISC-V removed from hypervisor support (H) in favor of the improved sfence.vma -->
+      <item>sfence.vm</item>
+      <!-- RISC-V part of removed user-level interrupts (N) -->
+      <item>uret</item>
+    </list>
+
+    <list name="keywords">
+      <item>.abort</item>
+      <item>.align</item>
+      <item>.app-file</item>
+      <item>.appline</item>
+      <item>.ascii</item>
+      <item>.asciz</item>
+      <item>.att_syntax</item>
+      <item>.balign</item>
+      <item>.balignl</item>
+      <item>.balignw</item>
+      <item>.byte</item>
+      <item>.code16</item>
+      <item>.code32</item>
+      <item>.comm</item>
+      <item>.common.s</item>
+      <item>.common</item>
+      <item>.data</item>
+      <item>.dc.b</item>
+      <item>.dc.d</item>
+      <item>.dc.l</item>
+      <item>.dc.s</item>
+      <item>.dc.w</item>
+      <item>.dc.x</item>
+      <item>.dc</item>
+      <item>.dcb.b</item>
+      <item>.dcb.d</item>
+      <item>.dcb.l</item>
+      <item>.dcb.s</item>
+      <item>.dcb.w</item>
+      <item>.dcb.x</item>
+      <item>.dcb</item>
+      <item>.debug</item>
+      <item>.def</item>
+      <item>.desc</item>
+      <item>.dim</item>
+      <item>.double</item>
+      <item>.ds.b</item>
+      <item>.ds.d</item>
+      <item>.ds.l</item>
+      <item>.ds.p</item>
+      <item>.ds.s</item>
+      <item>.ds.w</item>
+      <item>.ds.x</item>
+      <item>.ds</item>
+      <item>.dsect</item>
+      <item>.eject</item>
+      <item>.else</item>
+      <item>.elsec</item>
+      <item>.elseif</item>
+      <item>.end</item>
+      <item>.endc</item>
+      <item>.endef</item>
+      <item>.endfunc</item>
+      <item>.endif</item>
+      <item>.endm</item>
+      <item>.endr</item>
+      <item>.equ</item>
+      <item>.equiv</item>
+      <item>.err</item>
+      <item>.exitm</item>
+      <item>.extend</item>
+      <item>.extern</item>
+      <item>.fail</item>
+      <item>.file</item>
+      <item>.fill</item>
+      <item>.float</item>
+      <item>.format</item>
+      <item>.func</item>
+      <item>.global</item>
+      <item>.globl</item>
+      <item>.hidden</item>
+      <item>.hword</item>
+      <item>.ident</item>
+      <item>.if</item>
+      <item>.ifc</item>
+      <item>.ifdef</item>
+      <item>.ifeq</item>
+      <item>.ifeqs</item>
+      <item>.ifge</item>
+      <item>.ifgt</item>
+      <item>.ifle</item>
+      <item>.iflt</item>
+      <item>.ifnc</item>
+      <item>.ifndef</item>
+      <item>.ifne</item>
+      <item>.ifnes</item>
+      <item>.ifnotdef</item>
+      <item>.include</item>
+      <item>.int</item>
+      <item>.intel_syntax</item>
+      <item>.internal</item>
+      <item>.irep</item>
+      <item>.irepc</item>
+      <item>.irp</item>
+      <item>.irpc</item>
+      <item>.lcomm</item>
+      <item>.lflags</item>
+      <item>.line</item>
+      <item>.linkonce</item>
+      <item>.list</item>
+      <item>.llen</item>
+      <item>.ln</item>
+      <item>.long</item>
+      <item>.lsym</item>
+      <item>.macro</item>
+      <item>.mexit</item>
+      <item>.name</item>
+      <item>.noformat</item>
+      <item>.nolist</item>
+      <item>.nopage</item>
+      <item>noprefix</item>
+      <item>.octa</item>
+      <item>.offset</item>
+      <item>.org</item>
+      <item>.p2align</item>
+      <item>.p2alignl</item>
+      <item>.p2alignw</item>
+      <item>.page</item>
+      <item>.plen</item>
+      <item>.popsection</item>
+      <item>.previous</item>
+      <item>.print</item>
+      <item>.protected</item>
+      <item>.psize</item>
+      <item>.purgem</item>
+      <item>.pushsection</item>
+      <item>.quad</item>
+      <item>.rodata</item>
+      <item>.rep</item>
+      <item>.rept</item>
+      <item>.rva</item>
+      <item>.sbttl</item>
+      <item>.scl</item>
+      <item>.sect.s</item>
+      <item>.sect</item>
+      <item>.section.s</item>
+      <item>.section</item>
+      <item>.set</item>
+      <item>.short</item>
+      <item>.single</item>
+      <item>.size</item>
+      <item>.skip</item>
+      <item>.sleb128</item>
+      <item>.space</item>
+      <item>.spc</item>
+      <item>.stabd</item>
+      <item>.stabn</item>
+      <item>.stabs</item>
+      <item>.string</item>
+      <item>.struct</item>
+      <item>.subsection</item>
+      <item>.symver</item>
+      <item>.tag</item>
+      <item>.text</item>
+      <item>.title</item>
+      <item>.ttl</item>
+      <item>.type</item>
+      <item>.uleb128</item>
+      <item>.use</item>
+      <item>.val</item>
+      <item>.version</item>
+      <item>.vtable_entry</item>
+      <item>.vtable_inherit</item>
+      <item>.weak</item>
+      <item>.word</item>
+      <item>.xcom</item>
+      <item>.xdef</item>
+      <item>.xref</item>
+      <item>.xstabs</item>
+      <item>.zero</item>
+      <!-- Directives specific to ARM -->
+      <item>.arm</item>
+      <item>.bss</item>
+      <item>.code</item>
+      <item>.even</item>
+      <item>.force_thumb</item>
+      <item>.ldouble</item>
+      <item>.loc</item>
+      <item>.ltorg</item>
+      <item>.packed</item>
+      <item>.pool</item>
+      <item>.req</item>
+      <item>.thumb</item>
+      <item>.thumb_func</item>
+      <item>.thumb_set</item>
+      <!-- Directives specific to RISC-V -->
+      <item>.attribute</item>
+      <item>.dtpreldword</item>
+      <item>.dtprelword</item>
+      <item>.dword</item>
+      <item>.half</item>
+      <item>.insn</item>
+      <item>.option</item>
+    </list>
+
+    <list name="symbolic constants">
+      <!-- RISC-V rounding mode constants -->
+      <item>rne</item>
+      <item>rtz</item>
+      <item>rdn</item>
+      <item>rup</item>
+      <item>rmm</item>
+      <item>dyn</item>
+      <!-- RISC-V selected element width (SEW) constants  -->
+      <item>e8</item>
+      <item>e16</item>
+      <item>e32</item>
+      <item>e64</item>
+      <!-- RISC-V vector register group multiplier (LMUL) constants  -->
+      <item>m1</item>
+      <item>m2</item>
+      <item>m4</item>
+      <item>m8</item>
+      <item>mf8</item>
+      <item>mf4</item>
+      <item>mf2</item>
+      <!-- RISC-V vector tail agnostic (VTA) constants  -->
+      <item>tu</item>
+      <item>ta</item>
+      <!-- RISC-V vector mask agnostic (VMA) constants  -->
+      <item>mu</item>
+      <item>ma</item>
+      <!-- RISC-V FLI.[HSDQ] constants  -->
+      <item>min</item>
+      <item>inf</item>
+      <item>nan</item>
+    </list>
+
+    <list name="vendor-specific symbolic constants">
+      <!-- RISC-V vendor-specific XTheadVector VLMUL constants  -->
+      <item>m1</item>
+      <item>m2</item>
+      <item>m4</item>
+      <item>m8</item>
+      <!-- RISC-V vendor-specific XTheadVector VEDIV constants  -->
+      <item>d1</item>
+      <item>d2</item>
+      <item>d4</item>
+      <item>d8</item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <RegExpr      attribute="Label" context="#stay" String="[\.]?[_\w\d-]*\s*:" />
+        <keyword      attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword      attribute="Registers" context="#stay" String="registers"/>
+        <keyword      attribute="Instructions" context="#stay" String="instructions"/>
+        <keyword      attribute="Vendor-specific Instructions" context="#stay" String="vendor-specific instructions"/>
+        <keyword      attribute="Branch Instructions" context="#stay" String="branch instructions"/>
+        <keyword      attribute="Vendor-specific Branch Instructions" context="#stay" String="vendor-specific branch instructions"/>
+        <keyword      attribute="Deprecated/Removed Instructions" context="#stay" String="deprecated/removed instructions"/>
+        <keyword      attribute="Symbolic Constants" context="#stay" String="symbolic constants"/>
+        <keyword      attribute="Vendor-specific Symbolic Constants" context="#stay" String="vendor-specific symbolic constants"/>
+        <HlCOct       attribute="Octal" context="#stay" />
+        <HlCHex       attribute="Hex" context="#stay" />
+        <RegExpr      attribute="Binary" context="#stay" String="0[bB][01]+" />
+        <Int          attribute="Decimal" context="#stay" />
+        <RegExpr      attribute="Decimal" context="#stay" String="\$[0-9]+" />
+        <RegExpr      attribute="Float" context="#stay" String="0[fFeEdD][-+]?[0-9]*\.?[0-9]*[eE]?[-+]?[0-9]+" />
+        <RegExpr      attribute="Normal Text" context="#stay" String="[A-Za-z_.$][A-Za-z0-9_.$]*" />
+        <HlCChar      attribute="Char" context="#stay" />
+        <RegExpr      attribute="Char" context="#stay" String="'(\\x[0-9a-fA-F][0-9a-fA-F]?|\\[0-7]?[0-7]?[0-7]?|\\.|.)" />
+        <DetectChar   attribute="String" context="String" char="&quot;" />
+        <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*if(?:def|ndef)?(?=\s+\S)" insensitive="true" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*endif" insensitive="true" endRegion="PP" firstNonSpace="true" />
+        <RegExpr      attribute="Preprocessor" context="Define" String="#\s*define.*((?=\\))" insensitive="true" firstNonSpace="true" />
+        <RegExpr      attribute="Preprocessor" context="Preprocessor" String="#\s*(?:el(?:se|if)|include(?:_next)?|define|undef|line|error|warning|pragma)" firstNonSpace="true" />
+        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="*" beginRegion="BlockComment" />
+        <AnyChar      attribute="Comment" context="Commentar 2" String="@;#" />
+        <AnyChar      attribute="Symbol" context="#stay" String="!#%&amp;*()+,-&lt;=&gt;?/:[]^{|}~" />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 1">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="BlockComment" />
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 2" >
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <LineContinue  attribute="String" context="Some Context" />
+        <HlCStringChar attribute="String Char" context="#stay" />
+        <DetectChar    attribute="String" context="#pop" char="&quot;" />
+      </context>
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor" />
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Define">
+        <LineContinue attribute="Preprocessor" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Some Context" />
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal"   />
+      <itemData name="Label"        defStyleNum="dsFunction"  />
+      <itemData name="Keyword"      defStyleNum="dsKeyword"  />
+      <itemData name="Registers"    defStyleNum="dsKeyword"  />
+      <itemData name="Instructions" defStyleNum="dsKeyword"  />
+      <itemData name="Vendor-specific Instructions" defStyleNum="dsKeyword"  />
+      <itemData name="Branch Instructions" defStyleNum="dsControlFlow"  />
+      <itemData name="Vendor-specific Branch Instructions" defStyleNum="dsControlFlow"  />
+      <itemData name="Deprecated/Removed Instructions" defStyleNum="dsKeyword"  />
+      <itemData name="Symbolic Constants"    defStyleNum="dsConstant" />
+      <itemData name="Vendor-specific Symbolic Constants"    defStyleNum="dsConstant" />
       <itemData name="Decimal"      defStyleNum="dsDecVal"   />
       <itemData name="Octal"        defStyleNum="dsBaseN"    />
       <itemData name="Hex"          defStyleNum="dsBaseN"    />
diff --git a/xml/go.xml b/xml/go.xml
--- a/xml/go.xml
+++ b/xml/go.xml
@@ -1,5 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language [
+  <!ENTITY hex "[0-9a-fA-F]">
+  <!ENTITY int "(?:[0-9](?:_?[0-9]++)*+)">
+  <!ENTITY hex_int "(?:[0-9A-Fa-f](?:_?[0-9A-Fa-f]++)*+)">
+  <!ENTITY exp_float "(?:[eE][+-]?&int;)">
+  <!ENTITY exp_hexfloat "(?:[pP][-+]?&int;)">
+]>
 
 <!--
 This file is part of KDE's Kate project
@@ -25,11 +31,12 @@
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 -->
 
+<language name="Go" version="10" kateversion="5.79" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
+  <!-- https://go.dev/ref/spec -->
+  <highlighting>
 
-<language name="Go" version="8" kateversion="5.0" section="Sources" indenter="cstyle" extensions="*.go" author="Miquel Sabaté (mikisabate@gmail.com)" license="GPLv2+">
-    <highlighting>
+    <!-- https://go.dev/ref/spec#Keywords -->
     <list name="keywords">
-<!-- Keywords have been taken from The Go Programming Language Specification -> Keywords section -->
       <item>chan</item>
       <item>const</item>
       <item>func</item>
@@ -42,7 +49,7 @@
       <item>type</item>
       <item>var</item>
     </list>
-      <list name="controlflow">
+    <list name="controlflow">
       <item>break</item>
       <item>case</item>
       <item>continue</item>
@@ -58,6 +65,8 @@
       <item>select</item>
       <item>switch</item>
     </list>
+
+    <!-- https://go.dev/ref/spec#Types -->
     <list name="types">
       <item>bool</item>
       <item>byte</item>
@@ -79,7 +88,11 @@
       <item>uint16</item>
       <item>uint32</item>
       <item>uint64</item>
+      <!-- Go 1.18 -->
+      <item>any</item>
+      <item>comparable</item>
     </list>
+
     <list name="builtin">
       <item>append</item>
       <item>cap</item>
@@ -97,36 +110,35 @@
       <item>real</item>
       <item>recover</item>
     </list>
+
     <list name="predeclared">
       <item>false</item>
       <item>nil</item>
       <item>true</item>
       <item>iota</item>
     </list>
+
     <contexts>
       <context name="normal" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces />
         <keyword attribute="Keyword" context="#stay" String="keywords" />
         <keyword attribute="Control Flow" context="#stay" String="controlflow" />
-        <keyword attribute="Predeclared Identifier" context="#stay" String="predeclared"  />
-        <keyword attribute="Data Type" context="#stay" String="types"       />
-        <keyword attribute="Builtin Function" context="#stay" String="builtin"  />
+        <keyword attribute="Predeclared Identifier" context="#stay" String="predeclared" />
+        <keyword attribute="Data Type" context="#stay" String="types" />
+        <keyword attribute="Builtin Function" context="#stay" String="builtin" />
         <DetectIdentifier />
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"   />
         <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"   />
         <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment" />
-        <Int attribute="Decimal" context="#stay" />
-        <Float attribute="Float" context="#stay" />
-        <HlCOct attribute="Octal" context="#stay"/>
-        <HlCHex attribute="Hex" context="#stay"/>
-        <HlCChar attribute="Char" context="#stay" />
+        <RegExpr context="Number" String="\.?[0-9]" lookAhead="true" />
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^;"/>
         <DetectChar attribute="String" context="String" char="&quot;" />
+        <DetectChar attribute="Char" context="Char" char="'" />
         <DetectChar attribute="String" context="Multiline String" char="`"/>
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
       </context>
 
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
-        <LineContinue attribute="Comment" context="#stay"/>
         <DetectSpaces />
         <IncludeRules context="##Comments" />
         <DetectIdentifier />
@@ -139,39 +151,78 @@
         <DetectIdentifier />
       </context>
 
+      <!-- https://go.dev/ref/spec#Integer_literals -->
+      <!-- https://go.dev/ref/spec#Floating-point_literals -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="Number">
+        <WordDetect attribute="Decimal" context="NumberSuffix" String="0" weakDeliminator="."/>
+        <RegExpr attribute="Float" context="NumberSuffix" String="\.&int;&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|_?&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|&int;(?:&exp_float;|\.&int;?&exp_float;?)" />
+        <DetectChar context="#pop!IntStartsWith0" char="0" lookAhead="1"/>
+        <RegExpr attribute="Decimal" context="NumberSuffix" String="&int;" />
+      </context>
+      <context name="IntStartsWith0" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Hex" context="NumberSuffix" String="0[xX](?:_?[0-9A-Fa-f]++)*+" />
+        <RegExpr attribute="Binary" context="NumberSuffix" String="0[Bb](?:_?[01]++)*+" />
+        <RegExpr attribute="Octal" context="NumberSuffix" String="0[Oo]?(?:_?[0-7]++)*+" />
+        <DetectChar attribute="Decimal" context="NumberSuffix" char="0"/>
+      </context>
+
+      <context name="NumberSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
+        <DetectChar attribute="Suffix" context="NumericSuffixError" char="i" />
+        <DetectChar attribute="Error" context="#stay" char="_" />
+      </context>
+      <context name="NumericSuffixError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
+        <RegExpr attribute="Error" context="#pop#pop#pop" String="[._0-9A-Za-z]+" />
+      </context>
+
+      <!-- https://go.dev/ref/spec#String_literals -->
       <context attribute="String" lineEndContext="#pop" name="String">
-        <LineContinue  attribute="String" context="#stay" />
-        <HlCStringChar attribute="String Char" context="#stay" />
-        <DetectChar    attribute="String" context="#pop" char="&quot;" />
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+        <IncludeRules context="FindEscape" />
       </context>
 
+      <context attribute="String" lineEndContext="#pop" name="FindEscape">
+        <DetectChar context="EscapedChar" char="\" lookAhead="1"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="EscapedChar">
+        <RegExpr attribute="String Char" context="#pop" String="\\[abfnrtv\\'&quot;]|\\x&hex;{2}|\\u&hex;{4}|\\U&hex;{8}|\\[0-3][0-7]{2}" />
+        <RegExpr attribute="Error" context="#pop" String="\\[xuU]&hex;*|\\[0-7]{1,3}|\\" />
+      </context>
+
       <context attribute="String" lineEndContext="#stay" name="Multiline String">
-        <LineContinue attribute="String" context="#stay"/>
-        <HlCStringChar attribute="String Char" context="#stay"/>
         <DetectChar attribute="String" context="#pop" char="`"/>
       </context>
+
+      <context attribute="Char" lineEndContext="#pop" name="Char">
+        <DetectChar attribute="Char" context="#pop" char="'" />
+        <IncludeRules context="FindEscape" />
+      </context>
+
     </contexts>
+
     <itemDatas>
       <itemData name="Normal Text"  defStyleNum="dsNormal"   spellChecking="false"/>
       <itemData name="Keyword"      defStyleNum="dsKeyword"  spellChecking="false"/>
       <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Predeclared Identifier" defStyleNum="dsOthers"   spellChecking="false" />
+      <itemData name="Predeclared Identifier" defStyleNum="dsOthers"  spellChecking="false" />
       <itemData name="Builtin Function"       defStyleNum="dsBuiltIn" spellChecking="false" />
       <itemData name="Data Type"    defStyleNum="dsDataType" spellChecking="false"/>
-      <itemData name="String Char"  defStyleNum="dsChar"    />
+      <itemData name="String Char"  defStyleNum="dsChar"     spellChecking="false"/>
       <itemData name="String"       defStyleNum="dsString"  />
       <itemData name="Comment"      defStyleNum="dsComment" />
-      <itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false"/>
-      <itemData name="Octal"        defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Hex"          defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Float"        defStyleNum="dsFloat" spellChecking="false"/>
-      <itemData name="Char"         defStyleNum="dsChar"   spellChecking="false"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal"   spellChecking="false"/>
+      <itemData name="Binary"       defStyleNum="dsBaseN"    spellChecking="false"/>
+      <itemData name="Octal"        defStyleNum="dsBaseN"    spellChecking="false"/>
+      <itemData name="Hex"          defStyleNum="dsBaseN"    spellChecking="false"/>
+      <itemData name="Float"        defStyleNum="dsFloat"    spellChecking="false"/>
+      <itemData name="Suffix"       defStyleNum="dsBuiltIn"  spellChecking="false"/>
+      <itemData name="Char"         defStyleNum="dsChar"     spellChecking="false"/>
       <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Error"        defStyleNum="dsError"    spellChecking="false"/>
     </itemDatas>
     </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
       <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
     <keywords casesensitive="1" additionalDeliminator="'&quot;" />
diff --git a/xml/gpr.xml b/xml/gpr.xml
new file mode 100644
--- /dev/null
+++ b/xml/gpr.xml
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="GPRBuild"
+          version="1"
+          kateversion="5.79"
+          section="Sources"
+          extensions="*.gpr"
+          indenter="ada"
+          mimetype="text/x-adasrc"
+          author="Léo Germond (germond@adacore.com)"
+          license="MIT">
+  <highlighting>
+    <!-- https://github.com/AdaCore/gprbuild/blob/master/gpr/src/gpr-snames.adb -->
+    
+    <list name="keywords">
+      <item>c</item>
+      <item>abort</item>
+      <item>abs</item>
+      <item>accept</item>
+      <item>and</item>
+      <item>all</item>
+      <item>array</item>
+      <item>at</item>
+      <item>begin</item>
+      <item>body</item>
+      <item>case</item>
+      <item>constant</item>
+      <item>declare</item>
+      <item>delay</item>
+      <item>do</item>
+      <item>else</item>
+      <item>elsif</item>
+      <item>end</item>
+      <item>entry</item>
+      <item>exception</item>
+      <item>exit</item>
+      <item>for</item>
+      <item>function</item>
+      <item>generic</item>
+      <item>goto</item>
+      <item>if</item>
+      <item>in</item>
+      <item>is</item>
+      <item>limited</item>
+      <item>loop</item>
+      <item>new</item>
+      <item>not</item>
+      <item>null</item>
+      <item>of</item>
+      <item>or</item>
+      <item>others</item>
+      <item>out</item>
+      <item>package</item>
+      <item>pragma</item>
+      <item>private</item>
+      <item>procedure</item>
+      <item>raise</item>
+      <item>record</item>
+      <item>rem</item>
+      <item>renames</item>
+      <item>return</item>
+      <item>reverse</item>
+      <item>select</item>
+      <item>separate</item>
+      <item>subtype</item>
+      <item>task</item>
+      <item>terminate</item>
+      <item>then</item>
+      <item>type</item>
+      <item>use</item>
+      <item>when</item>
+      <item>while</item>
+      <item>with</item>
+      <item>xor</item>
+      <item>access</item>
+      <item>delta</item>
+      <item>digits</item>
+      <item>mod</item>
+      <item>range</item>
+      <item>abstract</item>
+      <item>aliased</item>
+      <item>protected</item>
+      <item>until</item>
+      <item>requeue</item>
+      <item>tagged</item>
+      <item>project</item>
+      <item>extends</item>
+      <item>external</item>
+      <item>external_as_list</item>
+      <item>interface</item>
+      <item>overriding</item>
+      <item>synchronized</item>
+      <item>some</item>
+      <item>active</item>
+      <item>aggregate</item>
+      <item>archive_builder</item>
+      <item>archive_builder_append_option</item>
+      <item>archive_indexer</item>
+      <item>archive_suffix</item>
+      <item>artifacts</item>
+      <item>artifacts_in_exec_dir</item>
+      <item>artifacts_in_object_dir</item>
+      <item>binder</item>
+      <item>bindfile_option_substitution</item>
+      <item>body_suffix</item>
+      <item>builder</item>
+      <item>clean</item>
+      <item>compiler</item>
+      <item>compiler_command</item>
+      <item>config_body_file_name</item>
+      <item>config_body_file_name_index</item>
+      <item>config_body_file_name_pattern</item>
+      <item>config_file_dependency_support</item>
+      <item>config_file_switches</item>
+      <item>config_file_unique</item>
+      <item>config_spec_file_name</item>
+      <item>config_spec_file_name_index</item>
+      <item>config_spec_file_name_pattern</item>
+      <item>configuration</item>
+      <item>cross_reference</item>
+      <item>def</item>
+      <item>default_language</item>
+      <item>default_switches</item>
+      <item>dependency_driver</item>
+      <item>dependency_kind</item>
+      <item>dependency_switches</item>
+      <item>driver</item>
+      <item>excluded_source_dirs</item>
+      <item>excluded_source_files</item>
+      <item>excluded_source_list_file</item>
+      <item>exec_dir</item>
+      <item>exec_subdir</item>
+      <item>excluded_patterns</item>
+      <item>executable</item>
+      <item>executable_suffix</item>
+      <item>externally_built</item>
+      <item>finder</item>
+      <item>flat</item>
+      <item>gcc</item>
+      <item>gcc_gnu</item>
+      <item>gcc_option_list</item>
+      <item>gcc_object_list</item>
+      <item>global_compilation_switches</item>
+      <item>global_configuration_pragmas</item>
+      <item>global_config_file</item>
+      <item>gnatls</item>
+      <item>gnatstub</item>
+      <item>gnu</item>
+      <item>ide</item>
+      <item>ignore_source_sub_dirs</item>
+      <item>implementation</item>
+      <item>implementation_exceptions</item>
+      <item>implementation_suffix</item>
+      <item>included_artifact_patterns</item>
+      <item>included_patterns</item>
+      <item>include_switches</item>
+      <item>include_path</item>
+      <item>include_path_file</item>
+      <item>inherit_source_path</item>
+      <item>install</item>
+      <item>install_project</item>
+      <item>languages</item>
+      <item>language_kind</item>
+      <item>leading_library_options</item>
+      <item>leading_required_switches</item>
+      <item>leading_switches</item>
+      <item>ali_subdir</item>
+      <item>lib_subdir</item>
+      <item>link_lib_subdir</item>
+      <item>library</item>
+      <item>library_ali_dir</item>
+      <item>library_auto_init</item>
+      <item>library_auto_init_supported</item>
+      <item>library_builder</item>
+      <item>library_dir</item>
+      <item>library_gcc</item>
+      <item>library_install_name_option</item>
+      <item>library_interface</item>
+      <item>library_kind</item>
+      <item>library_name</item>
+      <item>library_major_minor_id_supported</item>
+      <item>library_options</item>
+      <item>library_partial_linker</item>
+      <item>library_rpath_options</item>
+      <item>library_standalone</item>
+      <item>library_encapsulated_options</item>
+      <item>library_encapsulated_supported</item>
+      <item>library_src_dir</item>
+      <item>library_support</item>
+      <item>library_symbol_file</item>
+      <item>library_symbol_policy</item>
+      <item>library_version</item>
+      <item>library_version_switches</item>
+      <item>linker</item>
+      <item>linker_executable_option</item>
+      <item>linker_lib_dir_option</item>
+      <item>linker_lib_name_option</item>
+      <item>local_config_file</item>
+      <item>local_configuration_pragmas</item>
+      <item>locally_removed_files</item>
+      <item>map_file_option</item>
+      <item>mapping_file_switches</item>
+      <item>mapping_spec_suffix</item>
+      <item>mapping_body_suffix</item>
+      <item>max_command_line_length</item>
+      <item>metrics</item>
+      <item>multi_unit_object_separator</item>
+      <item>multi_unit_switches</item>
+      <item>naming</item>
+      <item>none</item>
+      <item>object_artifact_extensions</item>
+      <item>object_file_suffix</item>
+      <item>object_file_switches</item>
+      <item>object_generated</item>
+      <item>object_list</item>
+      <item>object_path_switches</item>
+      <item>objects_linked</item>
+      <item>objects_path</item>
+      <item>objects_path_file</item>
+      <item>object_dir</item>
+      <item>option_list</item>
+      <item>pic_option</item>
+      <item>pretty_printer</item>
+      <item>prefix</item>
+      <item>project_dir</item>
+      <item>project_files</item>
+      <item>project_path</item>
+      <item>project_subdir</item>
+      <item>remote</item>
+      <item>response_file_format</item>
+      <item>response_file_switches</item>
+      <item>root_dir</item>
+      <item>roots</item>
+      <item>required_artifacts</item>
+      <item>required_switches</item>
+      <item>run_path_option</item>
+      <item>run_path_origin</item>
+      <item>separate_run_path_options</item>
+      <item>shared_library_minimum_switches</item>
+      <item>shared_library_prefix</item>
+      <item>shared_library_suffix</item>
+      <item>separate_suffix</item>
+      <item>side_debug</item>
+      <item>source_artifact_extensions</item>
+      <item>source_dirs</item>
+      <item>source_file_switches</item>
+      <item>source_files</item>
+      <item>source_list_file</item>
+      <item>sources_subdir</item>
+      <item>spec</item>
+      <item>spec_suffix</item>
+      <item>specification</item>
+      <item>specification_exceptions</item>
+      <item>specification_suffix</item>
+      <item>stack</item>
+      <item>switches</item>
+      <item>symbolic_link_supported</item>
+      <item>toolchain_description</item>
+      <item>toolchain_version</item>
+      <item>trailing_required_switches</item>
+      <item>trailing_switches</item>
+      <item>runtime_library_dir</item>
+      <item>runtime_library_dirs</item>
+      <item>runtime_source_dir</item>
+      <item>ada</item>
+      <item>interfaces</item>
+      <item>main</item>
+      <item>target</item>
+      <item>casing</item>
+      <item>dot_replacement</item>
+      <item>standard</item>
+      <item>name</item>
+      <item>linker_options</item>
+      <item>runtime</item>
+      <item>mode</item>
+      <item>install_name</item>
+      <item>object_lister</item>
+      <item>object_lister_matcher</item>
+      <item>export_file_format</item>
+      <item>export_file_switch</item>
+      <item>runtime_source_dirs</item>
+      <item>runtime_dir</item>
+      <item>runtime_library_version</item>
+      <item>split</item>
+      <item>create_missing_dirs</item>
+      <item>canonical_target</item>
+      <item>warning_message</item>
+      <item>only_dirs_with_sources</item>
+      <item>include_switches_via_spec</item>
+      <item>required_toolchain_version</item>
+      <item>toolchain_name</item>
+      <item>check</item>
+      <item>eliminate</item>
+      <item>remote_host</item>
+      <item>program_host</item>
+      <item>communication_protocol</item>
+      <item>debugger_command</item>
+      <item>gnatlist</item>
+      <item>vcs_kind</item>
+      <item>vcs_file_check</item>
+      <item>vcs_log_check</item>
+      <item>documentation_dir</item>
+      <item>codepeer</item>
+      <item>output_directory</item>
+      <item>database_directory</item>
+      <item>message_patterns</item>
+      <item>additional_patterns</item>
+      <item>origin_project</item>
+      <item>library_reference_symbol_file</item>
+      <item>unconditional_linking</item>
+      <item>toolchain_path</item>
+    </list>
+
+    <list name="pragmas">
+    </list>
+
+    <list name="types">
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Default">
+        <DetectSpaces />
+
+        <StringDetect attribute="Region Marker" context="Region Marker" String="--  BEGIN" beginRegion="RegionMarker" firstNonSpace="true" />
+        <StringDetect attribute="Region Marker" context="Region Marker" String="--  END" endRegion="RegionMarker" firstNonSpace="true" />
+        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
+        <DetectChar context="String" char="&quot;" lookAhead="1"/>
+
+        <WordDetect attribute="Keyword" context="#stay" String="record" insensitive="true" beginRegion="RecordRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="case"   insensitive="true" beginRegion="CaseRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="if"     insensitive="true" beginRegion="IfRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="loop"   insensitive="true" beginRegion="LoopRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="select" insensitive="true" beginRegion="SelectRegion"/>
+        <WordDetect attribute="Keyword" context="#stay" String="begin"  insensitive="true" beginRegion="BeginRegion"/>
+
+        <WordDetect attribute="Keyword" context="End"   String="end"    insensitive="true" lookAhead="1"/>
+        <WordDetect attribute="Keyword" context="Null"  String="null"   insensitive="true"/>
+
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+       
+        <DetectIdentifier />
+      </context>
+
+      <context attribute="Keyword" lineEndContext="#pop" name="End">
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+record\b" insensitive="true"   endRegion="RecordRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+case\b"   insensitive="true"   endRegion="CaseRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+if\b"     insensitive="true"   endRegion="IfRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+loop\b"   insensitive="true"   endRegion="LoopRegion"/>
+        <RegExpr    attribute="Keyword" context="#pop" String="end\s+select\b" insensitive="true"   endRegion="SelectRegion"/>
+        <DetectIdentifier attribute="Keyword" context="#pop" endRegion="BeginRegion"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Null" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect attribute="Keyword" context="#pop" String="record" insensitive="true"/>
+      </context>
+
+      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="String" fallthroughContext="PartialString">
+        <RangeDetect attribute="String" context="#pop" char="&quot;" char1="&quot;"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop#pop" name="PartialString">
+      </context>
+
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces attribute="Comment"/>
+        <IncludeRules context="##Comments" />
+        <DetectIdentifier attribute="Comment"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="Keyword"     defStyleNum="dsKeyword" />
+      <itemData name="String"      defStyleNum="dsString" />
+      <itemData name="Comment"     defStyleNum="dsComment" />
+      <itemData name="Symbol"      defStyleNum="dsOperator"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="--" position="afterwhitespace" />
+    </comments>
+    <keywords casesensitive="0" />
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/graphql.xml b/xml/graphql.xml
--- a/xml/graphql.xml
+++ b/xml/graphql.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
   GraphQL: https://graphql.org/
   Synatx: https://github.com/graphql/graphql-spec/blob/master/spec/Section%202%20- -%20Language.md
      and: https://github.com/graphql/graphql-spec/blob/master/spec/Appendix%20B%20- -%20Grammar%20Summary.md
 -->
-<language name="GraphQL" section="Other" version="3" kateversion="5.0" extensions="*.graphql" author="Volker Krause (vkrause@kde.org)" license="MIT">
+<language name="GraphQL" alternativeNames="GQL" section="Other" version="4" kateversion="5.0" extensions="*.graphql" author="Volker Krause (vkrause@kde.org)" license="MIT">
   <highlighting>
     <list name="listKeywords">
       <item>enum</item>
diff --git a/xml/groovy.xml b/xml/groovy.xml
--- a/xml/groovy.xml
+++ b/xml/groovy.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY int "(?:[0-9]++(_++[0-9]++)*+)">
 	<!ENTITY hex "(?:[0-9a-fA-F]++(_++[0-9a-fA-F]++)*+)">
@@ -10,7 +10,7 @@
 <!--
     Based on the java syntax file 1.19 by Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)
 -->
-<language name="Groovy" version="11" kateversion="5.62" section="Sources" extensions="*.groovy;*.gradle;*.gvy;Jenkinsfile" license="LGPL" author="Chris Reeves (chris@ev-soft.net)">
+<language name="Groovy" version="12" kateversion="5.79" section="Sources" extensions="*.groovy;*.gradle;*.gvy;Jenkinsfile" license="LGPL" author="Chris Reeves (chris@ev-soft.net)">
 	<highlighting>
 		<list name="java15">
 			<include>java15##Java</include>
diff --git a/xml/haml.xml b/xml/haml.xml
new file mode 100644
--- /dev/null
+++ b/xml/haml.xml
@@ -0,0 +1,1424 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  https://haml.info/docs/yardoc/file.REFERENCE.html
+
+Ruby code inserted with `=`, `-` and others differs slightly from Ruby syntax:
+- In Ruby, '\' at the end of a line is used for a line continuation,
+  Haml uses the regex '( \||,)\s*$'.
+- Blocks are automatically closed according to indentation.
+  This means that `do ... end` in Ruby need not contain `end` in Haml.
+
+As a result of these differences, the ruby.xml file is not used,
+but copied and modified accordingly.
+-->
+<!DOCTYPE language [
+  <!ENTITY tagc "[-a-zA-Z0-9_:]">
+  <!ENTITY tagid "#(&tagc;+|(?![{@$])|$)">
+  <!ENTITY entityname "(#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z_:][\w.:_-]*)">
+
+  <!--
+    Ruby syntax
+  -->
+
+  <!ENTITY dec "[0-9](_?[0-9]++)*+">
+  <!ENTITY percent_lit "[QqxwWiIsr]?[^\s[:alnum:]]">
+
+  <!ENTITY ident "[_[:alpha:]]\w*+">
+  <!-- NOTE Haml: without "(?!^__END__$)" -->
+  <!ENTITY global_constant "(\b_+\d[_\d]*\b|\b(_[_\d]*)?[[:upper:]][_\d[:upper:]]*\b)">
+  <!ENTITY constant "\b[[:upper:]][_\d[:upper:]]*[[:lower:]]\w*">
+  <!ENTITY no_param "abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|__FILE__|for|fork|format|getc|gets|global_variables|if|in|include|lambda|__LINE__|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield|autoload|chomp|chop|exit|gsub|sub">
+  <!-- ignore keyword, constant, class name and symbol (e.g. sym:).
+      Constants can be preceded by ? or !, but this doesn't work with <keyword>
+  -->
+  <!ENTITY is_constant "((_[_\d]*)?[[:upper:]]\w*+|_+\d[_\d]*+\b)([^?!]|$)">
+  <!ENTITY ident_not_kw "\b((?!(abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|for|fork|format|getc|gets|global_variables|if|in|include|lambda|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield)([^?!\w]|$)|\bautoload([^!\w]|$)|(block_given\?|defined\?|iterator\?)|(chomp|chop|exit|gsub|sub)([^?\w]|$)|&is_constant;)|(?&lt;=[!?])(?=[[:lower:]]))&ident;(?!:)[?!]?">
+  <!ENTITY msg "\b(?!&is_constant;)&ident;[?!]?">
+
+  <!ENTITY special_escape "[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u\{[0-9a-fA-F]{0,6}\}|u[0-9a-fA-F]{4}|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\([^0-7xucCM]|[0-7]{1,3}|x[0-9a-fA-F]{1,2}|$)|[ -BD-LN-\[\]-bd-tv-~])">
+  <!ENTITY escape "\\([^0-7xucCM]|&special_escape;|$)">
+  <!ENTITY partial_escape "[ux][0-9a-fA-F]*|u(\{[0-9a-fA-F]{0,6})?|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\[xucCM]?)?|c(\\M?)?|C|M(-(\\c?|\\(C-?)?)?)?">
+
+  <!-- https://docs.ruby-lang.org/en/master/globals_rdoc.html -->
+  <!-- $= $, $; are deprecated -->
+  <!ENTITY global_var "\$([!@~&amp;`'+/\\&lt;>._*$?:&quot;=,;]|[0-9]+|-\w|[[:alpha:]]\w+)">
+
+  <!-- NOTE Haml: " |[\t ]*$" is not an operator -->
+  <!-- without ? : % / < = -->
+  <!ENTITY safe_op "(?:[-+*~^&amp;]+|===?|&lt;(=>?|(?!&lt;))|[!>]=?|\.\.\.?|(?&lt;! )[|]|[|](?![\t ]*$))">
+  <!ENTITY op1 "&safe_op;++|([?:/&#37;]|&lt;&lt;)&safe_op;*+">
+  <!-- /= %= <<= -->
+  <!-- / spaces -->
+  <!-- % which is not gld -->
+  <!-- << which is not heredoc -->
+  <!-- nospace / -->
+  <!-- nospace % -->
+  <!-- nospace << -->
+  <!ENTITY op2 "&safe_op;++|[?:](?=\s|$)|([/&#37;]|&lt;&lt;)(?=[\s=]|$)|&#37;(?!&percent_lit;)|&lt;&lt;(?=\s|$|[^-~\w'&quot;`]|[-~][^\w'&quot;`])|(?&lt;!\s)([/&#37;]|&lt;&lt;)&safe_op;*+">
+
+  <!ENTITY sym_op "\[\]=?|[-+~]@?|![=~@]?|[/&#37;|^&amp;]|&lt;(=>?)?|>=?|=~|===?|\*\*?">
+  <!ENTITY symbol "&ident;[=?!]?:(?!:)|\[\]=?:">
+]>
+<language name="Haml" version="16" kateversion="5.79" section="Markup"
+          extensions="*.haml"
+          author="Cies Breijs (cies_at_kde_nl), Jonathan Poelen (jonathan.poelen@gmail.com)" license="LGPL"
+          mimetype="text/x-haml">
+<!--      mimetype="text/x-haml"     this might be a problem as is doesn't exist -->
+
+  <highlighting>
+
+    <list name="ruby-keyword1">
+      <item>and</item>
+      <item>begin</item>
+      <item>do</item>
+      <item>else</item>
+      <item>elsif</item>
+      <item>ensure</item>
+      <item>for</item>
+      <item>if</item>
+      <item>not</item>
+      <item>or</item>
+      <item>rescue</item>
+      <item>then</item>
+      <item>unless</item>
+      <item>until</item>
+      <item>when</item>
+      <item>while</item>
+    </list>
+
+    <list name="ruby-keyword2">
+      <item>break</item>
+      <item>case</item>
+      <item>defined?</item>
+      <item>end</item>
+      <item>in</item>
+      <item>module</item>
+      <item>next</item>
+      <item>redo</item>
+      <item>retry</item>
+      <item>return</item>
+      <item>yield</item>
+    </list>
+
+    <list name="keyword">
+      <include>ruby-keyword1</include>
+      <include>ruby-keyword2</include>
+      <item>class</item>
+      <item>def</item>
+    </list>
+
+    <list name="access-control">
+      <include>access-control##Ruby</include>
+    </list>
+
+    <list name="attribute-definitions">
+      <include>attribute-definitions##Ruby</include>
+    </list>
+
+    <list name="definitions">
+      <include>definitions##Ruby</include>
+    </list>
+
+    <list name="pseudo-variables">
+      <include>pseudo-variables##Ruby</include>
+    </list>
+
+    <list name="kernel-methods">
+      <include>kernel-methods##Ruby</include>
+    </list>
+
+    <list name="mixin-methods">
+      <include>mixin-methods##Ruby</include>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" name="normal" fallthroughContext="Text">
+        <RegExpr attribute="Comment" context="mlComment2" column="0" String="^(\s)(\s*)(?:-#.*|/\s*$)"/>
+        <!-- match filters for special syntax highlighting before detecting spaces so we know how far we need to indent -->
+        <RegExpr context="SelectFilter" column="0" String="^\s*:" lookAhead="1"/>
+
+        <DetectSpaces/>
+
+        <RegExpr attribute="Tag" context="Elem" String="%&tagc;*"/>
+        <RegExpr attribute="Div Id" context="Elem" String="&tagid;"/>
+        <RegExpr attribute="Div Class" context="Elem" String="\.&tagc;*"/>
+
+        <StringDetect attribute="Keyword" context="Text" String="=="/>
+        <AnyChar attribute="Keyword" context="RubySourceLine" String="=~"/>
+        <StringDetect attribute="Keyword" context="Text" String="!=="/>
+        <StringDetect attribute="Keyword" context="RubySourceLine" String="!="/>
+        <StringDetect attribute="Keyword" context="Text" String="!~="/>
+        <StringDetect attribute="Keyword" context="RubySourceLine" String="!~"/>
+        <StringDetect attribute="Keyword" context="Text" String="&amp;=="/>
+        <StringDetect attribute="Keyword" context="RubySourceLine" String="&amp;="/>
+        <StringDetect attribute="Keyword" context="Text" String="&amp;~="/>
+        <StringDetect attribute="Keyword" context="RubySourceLine" String="&amp;~"/>
+        <StringDetect attribute="Keyword" context="Text" String="! "/>
+        <StringDetect attribute="Keyword" context="Text" String="&amp; "/>
+
+        <RegExpr attribute="Comment" context="mlComment1" column="0" String="^-#.*|^/\s*$"/>
+        <DetectChar attribute="Keyword" context="RubySourceLine" char="-"/>
+        <DetectChar attribute="Comment" context="comment" char="/"/>
+        <DetectChar attribute="Escaped Text" context="EscapedAny" char="\"/>
+
+        <StringDetect attribute="Doctype" context="Doctype" String="!!!" column="0"/>
+      </context>
+
+      <context attribute="Normal Text" name="EscapedAny" lineEndContext="#pop">
+        <RegExpr attribute="Escaped Text" context="#pop!Text" String="."/>
+      </context>
+
+      <context attribute="Normal Text" name="SelectFilter">
+        <RegExpr attribute="Filter" column="0" context="filterRuby" String="^(\s*):ruby\b"/>
+        <RegExpr attribute="Filter" column="0" context="filterCSS" String="^(\s*):css\b"/>
+        <RegExpr attribute="Filter" column="0" context="filterCoffeeScript" String="^(\s*):coffee(?:script)?\b"/>
+        <RegExpr attribute="Filter" column="0" context="filterERB" String="^(\s*):erb\b"/>
+        <RegExpr attribute="Filter" column="0" context="filterPlain" String="^(\s*):[a-zA-Z0-9_\-]*\b"/>
+        <DetectSpaces context="#pop#pop!normal"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Elem" fallthroughContext="Attr">
+        <RegExpr attribute="Element Id" String="&tagid;"/>
+        <RegExpr attribute="Element Class" String="\.&tagc;*"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="Attr" fallthroughContext="ElemOpt">
+        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash"/>
+        <DetectChar attribute="Operator" context="parenthesis" char="(" beginRegion="Parenthesis"/>
+        <DetectChar attribute="Operator" context="array" char="[" beginRegion="Array"/>
+        <StringDetect attribute="Keyword" context="ElemOpt" String="&lt;>"/>
+        <StringDetect attribute="Keyword" context="ElemOpt" String=">&lt;"/>
+        <AnyChar attribute="Keyword" context="ElemOpt" String=">&lt;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop#pop#pop" name="ElemOpt" fallthroughContext="#pop#pop#pop!Text">
+        <DetectChar attribute="Keyword" context="Empty" char="/"/>
+        <AnyChar context="#pop#pop#pop" String="=~!&amp;" lookAhead="1"/>
+      </context>
+
+      <context attribute="Error" lineEndContext="#pop#pop#pop#pop" name="Empty">
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Text">
+        <RegExpr attribute="Normal Text" String="([^&amp;#\\|]++|#(?![{@$])|\\\\?#(?![{@$])|&amp;(?!&entityname;;)|(?&lt;! )\||\|(?!\s*$))++"/>
+        <StringDetect attribute="Ruby Substitution" String="#{" context="RubySourceLineSubst"/>
+        <StringDetect lookAhead="1" String="#" context="MaybeShortSubst"/>
+        <StringDetect attribute="Escaped Text" String="\\"/>
+        <StringDetect attribute="Escaped Text" String="\#{"/>
+        <StringDetect attribute="Escaped Text" String="\#@"/>
+        <StringDetect attribute="Escaped Text" String="\#$"/>
+        <StringDetect attribute="Escaped Text" String="|" context="MultiLineText"/>
+        <RegExpr attribute="Entity" String="&amp;&entityname;;"/>
+      </context>
+
+      <context attribute="Normal Text" name="MaybeShortSubst">
+        <RegExpr attribute="Ruby Substitution" String="#@[[:upper:]]\w*|#\$([0-9]+|[[:alpha:]]\w*)" context="#pop"/>
+        <StringDetect attribute="Error" String="#@" context="#pop"/>
+        <StringDetect attribute="Error" String="#$" context="#pop"/>
+        <StringDetect attribute="Normal Text" String="#" context="#pop"/>
+      </context>
+
+      <context attribute="Normal Text" name="MultiLineText" lineEndContext="CheckMultiLineText">
+      </context>
+      <!-- Check that the line ends with '|'. Otherwise, this is a new Haml "instruction" -->
+      <context attribute="Normal Text" name="CheckMultiLineText" fallthroughContext="#pop#pop#pop">
+        <RegExpr String="^.* \|[\t ]*$" context="#pop#pop" column="0" lookAhead="1"/>
+        <RegExpr String="^\s+$" column="0" attribute="Normal Text"/>
+      </context>
+
+      <context attribute="Normal Text" name="MultiLineText2" lineEndContext="CheckMultiLineText2">
+      </context>
+      <!-- Check that the line ends with '|'. Otherwise, this is a new Haml "instruction" -->
+      <context attribute="Normal Text" name="CheckMultiLineText2" fallthroughContext="#pop#pop#pop#pop">
+        <IncludeRules context="CheckMultiLineText"/>
+      </context>
+
+      <context attribute="Normal Text" name="MultiLineText3" lineEndContext="CheckMultiLineText3">
+      </context>
+      <!-- Check that the line ends with '|'. Otherwise, this is a new Haml "instruction" -->
+      <context attribute="Normal Text" name="CheckMultiLineText3" fallthroughContext="#pop#pop#pop#pop#pop">
+        <IncludeRules context="CheckMultiLineText"/>
+      </context>
+
+      <context attribute="Comment" name="mlComment1" fallthroughContext="#pop">
+        <DetectSpaces attribute="Comment" context="CommentLine"/>
+      </context>
+      <context attribute="Comment" name="mlComment2" fallthroughContext="#pop">
+        <StringDetect attribute="Comment" column="0" context="CommentLine" dynamic="1" String="%1%2%1"/>
+      </context>
+      <context attribute="Comment" name="CommentLine" lineEndContext="#pop">
+      </context>
+
+      <context attribute="Normal Text" name="filterRuby" fallthroughContext="#pop#pop">
+        <!-- detect base indentation + 1 whitespace for code -->
+        <StringDetect attribute="Normal Text" context="RubySourceLine" String="%1 " dynamic="true"/>
+      </context>
+
+      <context attribute="Normal Text" name="filterCoffeeScript" fallthroughContext="#pop#pop">
+        <!-- detect base indentation + 1 whitespace for code -->
+        <StringDetect attribute="Normal Text" context="coffeesourceline" String="%1 " dynamic="true"/>
+      </context>
+
+      <context attribute="Normal Text" name="filterCSS" fallthroughContext="#pop#pop">
+        <!-- detect base indentation + 1 whitespace for code -->
+        <StringDetect attribute="Normal Text" context="csssourceline" String="%1 " dynamic="true"/>
+      </context>
+
+      <context attribute="Normal Text" name="filterERB" fallthroughContext="#pop#pop">
+        <!-- detect base indentation + 1 whitespace for code -->
+        <StringDetect attribute="Normal Text" context="erbsourceline" String="%1 " dynamic="true"/>
+      </context>
+
+      <context attribute="Normal Text" name="filterPlain" fallthroughContext="#pop#pop">
+        <!-- detect base indentation + 1 whitespace for code -->
+        <StringDetect attribute="Normal Text" context="plainsourceline" String="%1 " dynamic="true"/>
+      </context>
+
+      <context attribute="Ruby Normal Text" name="array" fallthroughContext="RubySourceLineExpr">
+        <DetectChar attribute="Operator" context="#pop" char="]" endRegion="Array"/>
+        <!-- leads to a syntax error in Haml -->
+        <DetectChar attribute="Error" char="#" context="#pop!LineError"/>
+        <IncludeRules context="RubySourceLine"/>
+      </context>
+
+      <context attribute="Ruby Normal Text" name="hash" fallthroughContext="#pop!hash2">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+      </context>
+      <context attribute="Ruby Normal Text" name="hash2" lineEndContext="hash3" fallthroughContext="RubySourceLineExpr">
+        <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash"/>
+        <IncludeRules context="RubySourceLineSubstInner"/>
+      </context>
+      <context attribute="Ruby Normal Text" name="hash3" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar attribute="Operator" context="#pop#pop" char="}" endRegion="Hash"/>
+        <RegExpr attribute="Ruby Normal Text" String="^\s+(?=}|$)" column="0"/>
+      </context>
+
+      <context attribute="Ruby Normal Text" name="parenthesis" lineEndContext="AttrError">
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect attribute="Special Attribute" String="class"/>
+        <WordDetect attribute="Special Attribute" String="id"/>
+        <DetectIdentifier attribute="Normal Text"/>
+        <DetectChar attribute="Ruby Operator" char="=" context="parenthesisValue"/>
+        <DetectChar attribute="Operator" context="#pop" char=")" endRegion="Parenthesis"/>
+        <DetectChar char='"' attribute="Error" context="DQuote"/>
+        <DetectChar char="'" attribute="Error" context="SQuote"/>
+      </context>
+      <context attribute="Ruby Normal Text" name="parenthesisValue" lineEndContext="#pop!AttrError" fallthroughContext="#pop">
+        <DetectChar char='"' attribute="String" context="#pop!DQuote"/>
+        <DetectChar char="'" attribute="String" context="#pop!SQuote"/>
+        <DetectChar attribute="Operator" context="#pop#pop" char=")" endRegion="Parenthesis"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="#pop"/>
+        <DetectIdentifier attribute="Ruby Normal Text" context="#pop"/>
+        <RegExpr attribute="Ruby Number" String="\b(0[xX][0-9a-fA-F](_?[0-9a-fA-F]++)*+|0[bB][01](_?[01]++)*+|0[oO]?[0-7](_?[0-7]++)*+|((0[dD][0-9]|[1-9])(_?[0-9]++)*+|0)([eE]&dec;)?)" context="#pop"/>
+      </context>
+
+      <context name="AttrError" attribute="Error" fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Error" context="#pop#pop"/>
+      </context>
+
+      <context name="DQuote" attribute="String">
+        <DetectChar char='"' attribute="String" context="#pop"/>
+        <IncludeRules context="CommonString"/>
+      </context>
+
+      <context name="SQuote" attribute="String">
+        <DetectChar char="'" attribute="String" context="#pop"/>
+        <IncludeRules context="CommonString"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="CommonString">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <StringDetect attribute="Ruby Substitution" String="#{" context="RubySourceLineSubst"/>
+        <RegExpr attribute="Escaped Text" String="\\.?"/>
+      </context>
+
+
+      <context attribute="Comment" lineEndContext="#pop" name="comment">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+        <StringDetect attribute="Error" String="--"/>
+      </context>
+
+      <context name="csssourceline" attribute="Other code embedded in haml" lineEndContext="#pop">
+        <IncludeRules context="##CSS"/>
+      </context>
+
+      <context name="coffeesourceline" attribute="Other code embedded in haml" lineEndContext="#pop">
+        <IncludeRules context="##CoffeeScript"/>
+      </context>
+
+      <context name="erbsourceline" attribute="Other code embedded in haml" lineEndContext="#pop">
+        <IncludeRules context="##Ruby/Rails/RHTML"/>
+      </context>
+
+      <context name="plainsourceline" attribute="Other code embedded in haml" lineEndContext="#pop"/>
+
+      <context name="Doctype" attribute="Doctype" lineEndContext="#pop"/>
+
+      <context name="LineError" attribute="Error" lineEndContext="#pop"/>
+
+      <context name="RubySourceMultiLine" attribute="Ruby Normal Text">
+        <DetectChar char="," context="IgnoreEmptyLine" attribute="Ruby Normal Text"/>
+        <DetectChar char="|" context="#pop!MultiLineText" attribute="Escaped Text"/>
+      </context>
+
+      <context name="RubySourceMultiLine2" attribute="Ruby Normal Text">
+        <DetectChar char="," context="IgnoreEmptyLine" attribute="Ruby Normal Text"/>
+        <DetectChar char="|" context="#pop!MultiLineText2" attribute="Escaped Text"/>
+      </context>
+
+      <context name="RubySourceMultiLine3" attribute="Ruby Normal Text">
+        <DetectChar char="," context="IgnoreEmptyLine" attribute="Ruby Normal Text"/>
+        <DetectChar char="|" context="#pop!MultiLineText3" attribute="Escaped Text"/>
+      </context>
+
+      <context name="IgnoreEmptyLine" attribute="Ruby Normal Text" fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+      </context>
+
+      <context name="RubySourceLineContinue" attribute="Ruby Normal Text">
+        <RegExpr String="(,|(?&lt;= )\|)[\t ]*$" context="RubySourceMultiLine" lookAhead="1"/>
+      </context>
+
+      <context name="RubySourceLineContinue2" attribute="Ruby Normal Text">
+        <RegExpr String="(,|(?&lt;= )\|)[\t ]*$" context="RubySourceMultiLine2" lookAhead="1"/>
+      </context>
+
+      <context name="RubySourceLineContinue3" attribute="Ruby Normal Text">
+        <RegExpr String="(,|(?&lt;= )\|)[\t ]*$" context="RubySourceMultiLine3" lookAhead="1"/>
+      </context>
+
+
+      <!--
+        Ruby syntax
+      -->
+
+      <context name="RubySourceLine" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineExpr">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+
+        <AnyChar attribute="Ruby Normal Text" String=";("/>
+        <DetectChar attribute="Ruby Normal Text" char=")" context="RubySourceLineOp1ThenExpr"/>
+
+        <DetectChar attribute="Ruby Delimiter" char="]" context="RubySourceLineOp1ThenExpr"/>
+
+        <DetectChar attribute="Ruby Operator" char="{" beginRegion="brace"/>
+        <DetectChar attribute="Ruby Operator" char="}" context="RubySourceLineOp1ThenExpr" endRegion="brace"/>
+
+        <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>
+
+        <RegExpr attribute="Ruby Normal Text" String="&ident_not_kw;" context="RubySourceLineMsgParamOrOp2"/>
+
+        <!-- Detects key symbol in a hash
+              Unfortunately in the absence of a space before ':',
+              the syntax is ambiguous with a function call containing a symbol.
+
+              hash:    {sym:foo}
+              function: foo:sym  <- 'foo:' is considered as a symbol
+        -->
+        <RegExpr attribute="Ruby Symbol" String="&symbol;" context="RubySourceLineMsgParamOrOp2"/>
+
+        <DetectChar attribute="Ruby Delimiter" char="[" context="RubySourceLineMsgParamOrOp2"/>
+
+        <keyword attribute="Ruby Keyword" String="ruby-keyword1"/>
+        <keyword attribute="Ruby Keyword" String="ruby-keyword2" context="RubySourceLineMsgParamOrOp2"/>
+
+        <keyword attribute="Ruby Attribute Definition" String="attribute-definitions"  context="RubySourceLineOp2ThenExpr"/>
+        <keyword attribute="Ruby Access Control" String="access-control" context="RubySourceLineOp2ThenExpr"/>
+        <keyword attribute="Ruby Definition" String="definitions" context="RubySourceLineExpr"/>
+        <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="RubySourceLineOp1ThenExpr"/>
+        <keyword attribute="Ruby Kernel methods" String="kernel-methods" context="RubySourceLineOp2ThenExpr"/>
+        <keyword attribute="Ruby Module mixin methods" String="mixin-methods" context="RubySourceLineOp2ThenExpr"/>
+
+        <WordDetect attribute="Ruby Keyword" String="class" context="RubySourceLineOp1ThenExpr"/>
+        <WordDetect attribute="Ruby Keyword" String="def" context="RubySourceLineDefFn"/>
+        <WordDetect attribute="Ruby Definition" String="alias" context="RubySourceLineAlias"/>
+        <WordDetect attribute="Ruby Definition" String="undef" context="RubySourceLineAlias"/>
+
+        <!-- Generally a module or class name like "File", "MyModule_1", .. -->
+        <RegExpr attribute="Ruby Constant" String="&constant;" context="RubySourceLineMsgParamOrOp2"/>
+        <RegExpr attribute="Ruby Global Constant" String="&global_constant;" context="RubySourceLineMsgParamOrOp2"/>
+
+        <DetectIdentifier attribute="Ruby Normal Text" context="RubySourceLineSuffixFunctionMsgParamOrOp2"/>
+
+        <IncludeRules context="RubySourceLineContinue"/>
+        <DetectChar attribute="Ruby Normal Text" char="," context="RubySourceLineMsgParamOrOp2"/>
+      </context>
+
+      <context name="RubySourceLineSuffixFunctionMsgParamOrOp2" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineMsgParamOrOp2">
+        <AnyChar attribute="Ruby Normal Text" String="!?" context="#pop!RubySourceLineMsgParamOrOp2"/>
+      </context>
+
+      <!-- after function call
+        Assume that
+            foo /a is a regex but not foo /=a
+            foo %+ is a percent literal
+            foo <<a is a heredoc
+        (This is not true when foo is a variable...)
+      -->
+      <context name="RubySourceLineMsgParamOrOp2" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineExpr">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <RegExpr attribute="Ruby Operator" String="&op2;" context="#pop!RubySourceLineExpr"/>
+        <DetectChar attribute="Ruby Member" char="." context="RubySourceLineMemberAccessCall"/>
+        <StringDetect attribute="Ruby Operator" String="::" context="RubySourceLineMemberAccessCall"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+
+      <context name="RubySourceLineMsgFnName" attribute="Ruby Normal Text" lineEndContext="#pop#pop#pop" fallthroughContext="#pop!RubySourceLineFnParent">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <DetectChar attribute="Ruby Member" char="." context="RubySourceLineMemberAccess"/>
+        <StringDetect attribute="Ruby Operator" String="::" context="RubySourceLineMemberAccess"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+
+      <context name="RubySourceLineExpr" attribute="Ruby Normal Text" lineEndContext="#pop">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+
+        <StringDetect attribute="Ruby Operator" String=".." context="RubySourceLineDot2Op"/>
+        <DetectChar attribute="Ruby Member" char="." context="RubySourceLineMemberAccess"/>
+
+        <DetectChar attribute="Ruby Operator" char="=" context="#pop"/>
+
+        <!-- pop to parent for interpolation -->
+        <AnyChar String="{}]" context="#pop" lookAhead="1"/>
+
+        <AnyChar attribute="Ruby Normal Text" String=";(" context="#pop"/>
+        <LineContinue attribute="Ruby Normal Text" char="," context="IgnoreEmptyLine"/>
+        <DetectChar attribute="Ruby Normal Text" char=")" context="RubySourceLineOp1"/>
+
+        <DetectChar attribute="Ruby Comment" char="#" context="#pop!RubySourceLineGeneral Comment"/>
+
+        <DetectChar char="@" context="RubySourceLineAtVar" lookAhead="1"/>
+        <DetectChar char="$" context="RubySourceLineVar" lookAhead="1"/>
+
+        <HlCChar attribute="Ruby Char" context="RubySourceLineOp1"/>
+        <DetectChar attribute="Ruby String" char='"' context="RubySourceLineDQuote"/>
+        <DetectChar attribute="Ruby Raw String" char="'" context="RubySourceLineSQuote"/>
+        <DetectChar attribute="Ruby Command" char="`" context="RubySourceLineCommand String"/>
+
+        <DetectChar attribute="Ruby Regular Expression" char="/" context="RubySourceLineRegEx"/>
+        <!-- Check for "ASCII code operator". e.g.: ?a -->
+        <DetectChar char="?" context="RubySourceLineMaybeCharLiteral" lookAhead="1"/>
+
+        <AnyChar context="RubySourceLineNumber" String="0123456789" lookAhead="1"/>
+
+        <RegExpr attribute="Ruby Normal Text" String="&ident_not_kw;" context="RubySourceLineOp2"/>
+
+        <RegExpr attribute="Ruby Symbol" String="&symbol;" context="#pop!RubySourceLineMsgParamOrOp2"/>
+
+        <DetectChar attribute="Ruby Delimiter" char="[" context="#pop!RubySourceLineMsgParamOrOp2"/>
+
+        <StringDetect attribute="Ruby Operator" String="::" context="RubySourceLineMemberAccess"/>
+
+        <keyword attribute="Ruby Keyword" String="ruby-keyword1" context="#pop"/>
+        <keyword attribute="Ruby Keyword" String="ruby-keyword2" context="#pop!RubySourceLineMsgParamOrOp2"/>
+
+        <keyword attribute="Ruby Attribute Definition" String="attribute-definitions" context="RubySourceLineOp2"/>
+        <keyword attribute="Ruby Access Control" String="access-control" context="RubySourceLineOp2"/>
+        <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="RubySourceLineOp1"/>
+        <keyword attribute="Ruby Kernel methods" String="kernel-methods" context="RubySourceLineOp2"/>
+        <keyword attribute="Ruby Module mixin methods" String="mixin-methods" context="RubySourceLineOp2"/>
+
+        <WordDetect attribute="Ruby Keyword" String="class" context="RubySourceLineOp1"/>
+        <WordDetect attribute="Ruby Keyword" String="def" context="#pop!RubySourceLineDefFn"/>
+        <WordDetect attribute="Ruby Definition" String="alias" context="RubySourceLineAlias"/>
+        <WordDetect attribute="Ruby Definition" String="undef" context="RubySourceLineAlias"/>
+
+        <keyword attribute="Ruby Definition" String="definitions"/>
+
+        <!-- Generally a module or class name like "File", "MyModule_1", .. -->
+        <RegExpr attribute="Ruby Constant" String="&constant;" context="RubySourceLineOp1"/>
+        <RegExpr attribute="Ruby Global Constant" String="&global_constant;" context="RubySourceLineOp1"/>
+
+        <RegExpr attribute="Ruby Symbol" String=":((@@?|\$)&ident;|&ident;([?]|!(?!=)|=(?![=>~]))?|&sym_op;|(?=['&quot;])|&global_var;)" context="RubySourceLineOp1"/>
+
+        <!-- recognize the beginning of a general delimited input format -->
+        <!-- this moves to the next context to separate out the exact nature of the GDL input -->
+        <RegExpr attribute="Ruby GDL input" context="RubySourceLinefind_gdl_input" String="%(?=&percent_lit;)" beginRegion="GdlInput"/>
+
+        <!-- recognize the beginning of a HEREDOC -->
+        <RegExpr attribute="Ruby Operator" context="RubySourceLineHeredoc" String="&lt;&lt;(?=[-~]?(\w+|'\w+'|&quot;\w+&quot;|`\w+`))" beginRegion="HereDocument"/>
+
+        <!-- should not happen in valid syntax -->
+        <RegExpr attribute="Ruby Operator" String="([/%?:]|&lt;&lt;?)&safe_op;*|&safe_op;+"/>
+        <DetectIdentifier attribute="Ruby Normal Text" context="RubySourceLineSuffixFunction"/>
+
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+
+      <!-- alias / +
+                 ~ never regex
+            same for undef
+      -->
+      <context name="RubySourceLineAlias" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <AnyChar attribute="Ruby Operator" String="-+*~^|&amp;=&lt;>!%/"/>
+        <DetectChar char="$" context="RubySourceLineVar" lookAhead="1"/>
+        <DetectChar attribute="Ruby String" char='"' context="RubySourceLineAliasDQuote"/>
+        <DetectChar attribute="Ruby Raw String" char="'" context="RubySourceLineAliasSQuote"/>
+        <RegExpr attribute="Ruby Symbol" String=":(&ident;[=?!]?|&sym_op;)"/>
+        <RegExpr attribute="Ruby Normal Text" String="\b(?!(&no_param;)([^?!\w]|$))&ident;"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+        <LineContinue attribute="Ruby Normal Text" char=","/>
+      </context>
+      <context name="RubySourceLineAliasDQuote" attribute="Ruby String">
+        <DetectChar char='"' attribute="Ruby String" context="RubySourceLineAliasCheckSym"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+      <context name="RubySourceLineAliasSQuote" attribute="Ruby Raw String">
+        <Detect2Chars attribute="Ruby String" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String" char="\" char1="'"/>
+        <DetectChar char="'" attribute="Ruby Raw String" context="RubySourceLineAliasCheckSym"/>
+      </context>
+      <context name="RubySourceLineAliasCheckSym" attribute="Ruby Raw String" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar char=":" attribute="Ruby Symbol" context="#pop#pop"/>
+      </context>
+
+      <context name="RubySourceLineDot2Op" attribute="Ruby Operator" lineEndContext="#pop#pop" fallthroughContext="#pop">
+        <!-- triple dot -->
+        <DetectChar attribute="Ruby Operator" char="." context="#pop"/>
+      </context>
+
+      <context name="RubySourceLineSuffixFunction" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineOp2">
+        <AnyChar attribute="Ruby Normal Text" String="!?" context="#pop!RubySourceLineOp2"/>
+      </context>
+
+      <!-- A slash is always a division operator, even if preceeded by whitespace -->
+      <context name="RubySourceLineOp1" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <DetectChar attribute="Ruby Operator" char="=" context="#pop#pop"/>
+        <RegExpr attribute="Ruby Operator" String="&op1;" context="#pop"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue3"/>
+      </context>
+
+      <context name="RubySourceLineOp1ThenExpr" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineExpr">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <DetectChar attribute="Ruby Operator" char="=" context="#pop"/>
+        <RegExpr attribute="Ruby Operator" String="&op1;" context="#pop!RubySourceLineExpr"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+
+      <!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->
+      <context name="RubySourceLineOp2" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <DetectChar attribute="Ruby Operator" char="=" context="#pop#pop"/>
+        <RegExpr attribute="Ruby Operator" String="&op2;" context="#pop"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue3"/>
+      </context>
+
+      <context name="RubySourceLineOp2ThenExpr" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineExpr">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <DetectChar attribute="Ruby Operator" char="=" context="#pop"/>
+        <RegExpr attribute="Ruby Operator" String="&op2;" context="#pop!RubySourceLineExpr"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+
+      <context name="RubySourceLineVar" attribute="Ruby Normal Text" lineEndContext="#pop#pop">
+        <!-- (global) vars starting with $ -->
+        <RegExpr attribute="Ruby Global Variable" String="\$(?!(stdin|stdout|stderr|_|LOAD_PATH|LOADED_FEATURES|FILENAME|DEBUG|VERBOSE)\b)[0-9]+|[[:alpha:]]\w*|\$-(?![ailpFIvWwdx])\w" context="#pop!RubySourceLineOp1"/>
+        <!-- special-character globals and other predefined variables -->
+        <RegExpr attribute="Ruby Default globals" String="&global_var;" context="#pop!RubySourceLineOp1"/>
+        <DetectChar attribute="Error" char="$" context="#pop!RubySourceLineOp1"/>
+      </context>
+
+      <context name="RubySourceLineAtVar" attribute="Ruby Normal Text" lineEndContext="#pop#pop">
+        <RegExpr attribute="Ruby Instance Variable" String="@&ident;" context="#pop!RubySourceLineOp1"/>
+        <RegExpr attribute="Ruby Class Variable" String="@@&ident;" context="#pop!RubySourceLineOp1"/>
+        <DetectChar attribute="Error" char="@"/>
+      </context>
+
+      <!-- def foo() block-statement
+              ~~~ any ident (including keyword)
+
+          def Abc::foo() block-statement
+              ~~~  ~~~ ident (no keyword)
+      -->
+      <context name="RubySourceLineDefFn" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineFnName">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+      <context name="RubySourceLineFnName" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineFnParent">
+        <RegExpr attribute="Ruby Normal Text" String="&ident_not_kw;" context="RubySourceLineMsgFnName"/>
+
+        <keyword attribute="Ruby Attribute Definition" String="attribute-definitions" context="RubySourceLineFnParent" weakDeliminator=":"/>
+        <keyword attribute="Ruby Access Control" String="access-control" context="RubySourceLineFnParent" weakDeliminator=":"/>
+        <keyword attribute="Ruby Definition" String="definitions" context="RubySourceLineFnParent" weakDeliminator=":"/>
+        <keyword attribute="Ruby Pseudo variable" String="pseudo-variables" context="RubySourceLineFnParent" weakDeliminator=":"/>
+        <keyword attribute="Ruby Kernel methods" String="kernel-methods" context="RubySourceLineFnParent" weakDeliminator=":"/>
+        <keyword attribute="Ruby Module mixin methods" String="mixin-methods" context="RubySourceLineFnParent" weakDeliminator=":"/>
+        <keyword attribute="Ruby Keyword" String="keyword" context="RubySourceLineFnParent" weakDeliminator=":"/>
+
+        <RegExpr attribute="Ruby Operator" String="[-+~]@?|![~@]?|[/%^]|\*\*?|\|\||&amp;&amp;|&lt;(=>?)?|>=?|===?|\*\*?" context="RubySourceLineFnParent"/>
+        <RegExpr attribute="Ruby Constant" String="&constant;" context="RubySourceLineMsgFnName"/>
+        <RegExpr attribute="Ruby Global Constant" String="&global_constant;" context="RubySourceLineMsgFnName"/>
+
+        <StringDetect attribute="Ruby Symbol" String="[]=" context="RubySourceLineFnParent"/>
+        <StringDetect attribute="Ruby Symbol" String="[]" context="RubySourceLineFnParent"/>
+        <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>
+      </context>
+      <context name="RubySourceLineFnParent" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop#pop">
+        <DetectChar attribute="Ruby Normal Text" char="(" context="RubySourceLineDefFnParams"/>
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>
+        <DetectChar char="," context="#pop" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+      <context name="RubySourceLineDefFnParams" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar attribute="Ruby Normal Text" char=")" context="#pop#pop#pop#pop"/>
+        <DetectChar attribute="Ruby Comment" char="#" context="RubySourceLineGeneral Comment"/>
+        <RegExpr attribute="Ruby Normal Text" String="([\s,]+|\b(?!(&no_param;)\b|[[:upper:]])&ident;(?=$|[^?!]))++"/>
+        <RegExpr attribute="Ruby Constant" String="&constant;"/>
+        <RegExpr attribute="Ruby Global Constant" String="&global_constant;"/>
+        <keyword attribute="Ruby Attribute Definition" String="attribute-definitions"/>
+        <keyword attribute="Ruby Access Control" String="access-control"/>
+        <keyword attribute="Ruby Kernel methods" String="kernel-methods"/>
+        <keyword attribute="Ruby Module mixin methods" String="mixin-methods"/>
+        <IncludeRules context="RubySourceLineContinue2"/>
+      </context>
+
+
+      <!-- Numeric values. Note that we have to allow underscores between two digits. -->
+      <context name="RubySourceLineNumber" attribute="Ruby Normal Text" lineEndContext="#pop#pop" fallthroughContext="RubySourceLineNumberError">
+        <RegExpr attribute="Ruby Number" String="\b([1-9](_?[0-9]++)*+|0)(\.&dec;([eE][-+]?&dec;)?|[eE][-+]?&dec;)|\b(0[dD]&dec;|(0(\b|(?=[ri]))|[1-9](_?[0-9]++)*+))|\b0[xX][0-9a-fA-F](_?[0-9a-fA-F]++)*+|\b0[bB][01](_?[01]++)*+|\b0[oO]?[0-7](_?[0-7]++)*+" context="RubySourceLineNumberSuffix"/>
+        <DetectChar char="0" attribute="Ruby Number" context="RubySourceLineNumberError"/>
+      </context>
+
+      <context name="RubySourceLineNumberSuffix" attribute="Ruby Number Suffix" lineEndContext="#pop#pop#pop" fallthroughContext="#pop!RubySourceLineNumberError">
+        <StringDetect attribute="Ruby Number Suffix" String="ri" context="#pop!RubySourceLineNumberError"/>
+        <AnyChar attribute="Ruby Number Suffix" String="ri" context="#pop!RubySourceLineNumberError"/>
+      </context>
+
+      <context name="RubySourceLineNumberError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop!RubySourceLineOp1">
+        <DetectIdentifier/>
+        <AnyChar String="0123456789"/>
+      </context>
+
+      <context name="RubySourceLineBrace" attribute="Ruby Normal Text" fallthroughContext="#pop!RubySourceLineBraceInner">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+      </context>
+      <context name="RubySourceLineBraceInner" attribute="Ruby Normal Text" lineEndContext="#pop" fallthroughContext="RubySourceLineExpr">
+        <DetectChar attribute="Ruby Operator" char="}" context="#pop!RubySourceLineOp1ThenExpr" endRegion="brace"/>
+        <DetectChar attribute="Ruby Operator" char="{" context="RubySourceLineBrace" beginRegion="brace"/>
+        <IncludeRules context="RubySourceLine"/>
+      </context>
+
+      <!-- "..." -->
+      <context name="RubySourceLineDQuote" attribute="Ruby String">
+        <DetectChar char='"' attribute="Ruby String" context="RubySourceLineCheckSym"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <!-- "...": -->
+      <context name="RubySourceLineCheckSym" attribute="Ruby Raw String" lineEndContext="#pop#pop!RubySourceLineOp1" fallthroughContext="#pop#pop!RubySourceLineOp1">
+        <DetectChar char=":" attribute="Ruby Symbol" context="#pop#pop#pop"/>
+      </context>
+
+      <!-- \ in "..." -->
+      <context name="RubySourceLineDQuoteSpecial" attribute="Ruby String">
+        <DetectChar char="\" context="RubySourceLineDQuoteEscape" lookAhead="1"/>
+        <DetectChar char="#" context="RubySourceLineDQuoteSubstitution" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue3"/>
+      </context>
+      <context name="RubySourceLineDQuoteEscape" attribute="Ruby String">
+        <RegExpr attribute="Ruby String Char" String="&escape;" context="#pop"/>
+        <RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop"/>
+      </context>
+      <context name="RubySourceLineDQuoteSubstitution" attribute="Ruby String">
+        <StringDetect attribute="Ruby Substitution" String="#{" context="#pop!RubySourceLineSubst"/>
+        <RegExpr attribute="Ruby Substitution" String="#@@?\w+|#&global_var;" context="#pop"/>
+        <DetectChar char="#" context="#pop"/>
+      </context>
+
+      <!-- '...' -->
+      <context name="RubySourceLineSQuote" attribute="Ruby Raw String">
+        <Detect2Chars attribute="Ruby String" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String" char="\" char1="'"/>
+        <DetectChar char="'" attribute="Ruby Raw String" context="RubySourceLineCheckSym"/>
+        <IncludeRules context="RubySourceLineContinue3"/>
+      </context>
+
+      <!-- `...` -->
+      <context name="RubySourceLineCommand String" attribute="Ruby Command">
+        <DetectChar char="`" attribute="Ruby Command" context="#pop!RubySourceLineOp1"/>
+        <Detect2Chars attribute="Ruby String" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String" char="\" char1="`"/>
+        <DetectChar char="#" context="RubySourceLineDQuoteSubstitution" lookAhead="1"/>
+        <IncludeRules context="RubySourceLineContinue3"/>
+      </context>
+
+      <!-- ?x -->
+      <context name="RubySourceLineMaybeCharLiteral" attribute="Ruby String" lineEndContext="#pop" fallthroughContext="#pop!RubySourceLineOp1">
+        <RegExpr attribute="Ruby Operator" String="\?(?=\s|$)" context="#pop"/>
+        <DetectChar attribute="Ruby Char Literal" char="?" context="RubySourceLineCharLiteral"/>
+      </context>
+      <context name="RubySourceLineCharLiteral" attribute="Ruby String">
+        <RegExpr attribute="Ruby Char" String="[^\\\s]" context="#pop#pop!RubySourceLineOp1"/>
+        <RegExpr attribute="Ruby String Char" String="&escape;" context="#pop#pop!RubySourceLineOp1"/>
+        <RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop#pop!RubySourceLineOp1"/>
+      </context>
+
+      <context name="RubySourceLineRegEx" attribute="Ruby Regular Expression">
+        <DetectChar attribute="Ruby Regular Expression" context="RubySourceLineRegExMode" char="/"/>
+        <IncludeRules context="RubySourceLineRegExSpecial"/>
+      </context>
+      <!-- as DQuoteSpecial, but with \. and \p{...} -->
+      <context name="RubySourceLineRegExSpecial" attribute="Ruby String Char">
+        <DetectChar char="#" context="RubySourceLineDQuoteSubstitution" lookAhead="1"/>
+        <DetectChar char="\" context="RubySourceLineRegExEscape" lookAhead="1"/>
+      </context>
+      <context name="RubySourceLineRegExEscape" attribute="Ruby String">
+        <RegExpr attribute="Ruby String Char" String="\\([^0-7xucCMp]|&special_escape;|p\{[-[:alpha:]]*\}|$)" context="#pop"/>
+        <RegExpr attribute="Error" String="\\(&partial_escape;|p\{?|)" context="#pop"/>
+      </context>
+
+      <context name="RubySourceLineRegExMode" attribute="Ruby String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!RubySourceLineOp1">
+        <AnyChar attribute="Ruby Regular Expression" String="imxonues"/>
+      </context>
+
+      <!-- Substitutions can be nested -->
+      <context name="RubySourceLineSubst" attribute="Ruby Normal Text" fallthroughContext="RubySourceLineExpr">
+        <DetectChar attribute="Ruby Substitution" char="}" context="#pop"/>
+        <IncludeRules context="RubySourceLineSubstInner"/>
+      </context>
+      <context attribute="Ruby Normal Text" name="RubySourceLineSubstInner">
+        <DetectChar attribute="Ruby Operator" char="{" context="RubySourceLineBrace" beginRegion="brace"/>
+        <!-- leads to a syntax error in Haml -->
+        <DetectChar attribute="Error" char="#" context="#pop!LineError"/>
+        <IncludeRules context="RubySourceLine"/>
+      </context>
+
+      <!-- This handles access of nested module classes and class methods -->
+      <context name="RubySourceLineMemberAccess" attribute="Ruby Member" fallthroughContext="#pop!RubySourceLineOp1">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <!-- marks a message (being sent, not defined) -->
+        <RegExpr attribute="Ruby Message" String="&msg;" context="#pop!RubySourceLineOp1"/>
+        <RegExpr attribute="Ruby Constant" String="&constant;" context="#pop!RubySourceLineOp1"/>
+        <RegExpr attribute="Ruby Constant Value" String="&global_constant;" context="#pop!RubySourceLineOp1"/>
+        <RegExpr attribute="Ruby Operator" String="&sym_op;" context="#pop"/>
+      </context>
+
+      <context name="RubySourceLineMemberAccessCall" attribute="Ruby Member" fallthroughContext="#pop">
+        <DetectSpaces attribute="Ruby Normal Text"/>
+        <!-- marks a message (being sent, not defined) -->
+        <RegExpr attribute="Ruby Message" String="&msg;" context="#pop"/>
+        <RegExpr attribute="Ruby Constant" String="&constant;" context="#pop"/>
+        <RegExpr attribute="Ruby Constant Value" String="&global_constant;" context="#pop"/>
+        <RegExpr attribute="Ruby Operator" String="&sym_op;" context="#pop"/>
+      </context>
+
+      <context name="RubySourceLineGeneral Comment" attribute="Ruby Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- HEREDOC support
+        The contexts below support both normal and indented heredocs
+        -->
+      <!-- here we markup the heredoc markers -->
+      <context name="RubySourceLineHeredoc" attribute="Ruby Normal Text">
+        <AnyChar attribute="Ruby Operator" String="-~" context="#pop!RubySourceLineIndentedHeredoc"/>
+        <RegExpr attribute="Ruby Keyword" context="RubySourceLineapostrophed_normal_heredoc" String="'(\w+)'"/>
+        <RegExpr attribute="Ruby Keyword" context="RubySourceLinenormal_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)"/>
+      </context>
+      <context name="RubySourceLineIndentedHeredoc" attribute="Ruby Normal Text">
+        <RegExpr attribute="Ruby Keyword" context="RubySourceLineapostrophed_indented_heredoc" String="'(\w+)'"/>
+        <RegExpr attribute="Ruby Keyword" context="RubySourceLineindented_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)"/>
+      </context>
+      <!-- these are the real heredoc contexts -->
+      <context name="RubySourceLineindented_heredoc" attribute="Ruby Here Document">
+        <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+      <context name="RubySourceLineapostrophed_indented_heredoc" attribute="Ruby Here Document">
+        <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+      </context>
+
+      <context name="RubySourceLinenormal_heredoc" attribute="Ruby Here Document">
+        <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+      <context name="RubySourceLineapostrophed_normal_heredoc" attribute="Ruby Here Document">
+        <RegExpr attribute="Ruby Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+      </context>
+
+      <!-- General delimited input support
+        The contexts below handle the various gdl formats
+        -->
+      <context name="RubySourceLinefind_gdl_input" attribute="Ruby Normal Text" lineEndContext="#pop">
+        <!-- handle double-quoted strings -->
+        <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q(" char="("/>
+        <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q{" char="{"/>
+        <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q[" char="["/>
+        <DetectChar attribute="Ruby GDL input" context="RubySourceLine%Q&lt;" char="&lt;"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q(" String="Q("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q{" String="Q{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q[" String="Q["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q&lt;" String="Q&lt;"/>
+
+        <!-- handle token arrays -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q(" String="W("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q{" String="W{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q[" String="W["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q&lt;" String="W&lt;"/>
+
+        <!-- handle token arrays -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q(" String="I("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q{" String="I{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q[" String="I["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%Q&lt;" String="I&lt;"/>
+
+        <!-- then we handle the 'any char' format -->
+        <RegExpr attribute="Ruby GDL input" context="RubySourceLine%Q_" String="[QWI]?([^[:alnum:]])"/>
+
+        <!-- handle token arrays -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w(" String="w("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w{" String="w{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w[" String="w["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w&lt;" String="w&lt;"/>
+
+        <!-- handle token arrays -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w(" String="i("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w{" String="i{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w[" String="i["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%w&lt;" String="i&lt;"/>
+
+        <!-- then we handle the 'any char' format -->
+        <RegExpr attribute="Ruby GDL input" context="RubySourceLine%w_" String="[wi]([^[:alnum:]])"/>
+
+        <!-- handle apostrophed strings -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q(" String="q("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q{" String="q{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q[" String="q["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%q&lt;" String="q&lt;"/>
+        <!-- then we handle the 'any char' format -->
+        <RegExpr attribute="Ruby GDL input" context="RubySourceLine%q_" String="q([^[:alnum:]])"/>
+
+        <!-- handle token arrays -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s(" String="s("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s{" String="s{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s[" String="s["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%s&lt;" String="s&lt;"/>
+        <!-- then ie handle the 'any char' format -->
+        <RegExpr attribute="Ruby GDL input" context="RubySourceLine%s_" String="s([^[:alnum:]])"/>
+
+        <!-- handle regular expressions -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r(" String="r("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r{" String="r{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r[" String="r["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%r&lt;" String="r&lt;"/>
+        <!-- then we handle the 'any char' format -->
+        <RegExpr attribute="Ruby GDL input" context="RubySourceLine%r_" String="r([^[:alnum:]])"/>
+
+        <!-- handle shell commands -->
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x(" String="x("/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x{" String="x{"/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x[" String="x["/>
+        <StringDetect attribute="Ruby GDL input" context="RubySourceLine%x&lt;" String="x&lt;"/>
+        <!-- then we handle the 'any char' format -->
+        <RegExpr attribute="Ruby GDL input" context="RubySourceLine%x_" String="x([^[:alnum:]])"/>
+      </context>
+
+
+      <!-- double-quoted string specific contexts follow -->
+
+      <context name="RubySourceLine%Q(" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%Q(_rule"/>
+      </context>
+      <context name="RubySourceLine%Q(_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char=")"/>
+        <IncludeRules context="RubySourceLine%Q(_rule"/>
+      </context>
+      <context name="RubySourceLine%Q(_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%Q(_nested" char="("/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <!-- note that here substitution should win over nesting -->
+      <context name="RubySourceLine%Q{" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%Q{_rule"/>
+      </context>
+      <context name="RubySourceLine%Q{_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char="}"/>
+        <IncludeRules context="RubySourceLine%Q{_rule"/>
+      </context>
+      <context name="RubySourceLine%Q{_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%Q{_nested" char="{"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%Q[" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%Q[_rule"/>
+      </context>
+      <context name="RubySourceLine%Q[_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char="]"/>
+        <IncludeRules context="RubySourceLine%Q[_rule"/>
+      </context>
+      <context name="RubySourceLine%Q[_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%Q[_nested" char="["/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%Q&lt;" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%Q&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%Q&lt;_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char=">"/>
+        <IncludeRules context="RubySourceLine%Q&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%Q&lt;_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%Q&lt;_nested" char="&lt;"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+        delimiter character
+        -->
+      <context name="RubySourceLine%Q_" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="1" dynamic="true" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+
+      <!-- token array specific contexts -->
+
+      <context name="RubySourceLine%w(" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%w(_rule"/>
+      </context>
+      <context name="RubySourceLine%w(_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char=")"/>
+        <IncludeRules context="RubySourceLine%w(_rule"/>
+      </context>
+      <context name="RubySourceLine%w(_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w(_nested" char="("/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=")"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="("/>
+      </context>
+
+      <context name="RubySourceLine%w{" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%w{_rule"/>
+      </context>
+      <context name="RubySourceLine%w{_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char="}"/>
+        <IncludeRules context="RubySourceLine%w{_rule"/>
+      </context>
+      <context name="RubySourceLine%w{_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w{_nested" char="{"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="}"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="{"/>
+      </context>
+
+      <context name="RubySourceLine%w[" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%w[_rule"/>
+      </context>
+      <context name="RubySourceLine%w[_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char="]"/>
+        <IncludeRules context="RubySourceLine%w[_rule"/>
+      </context>
+      <context name="RubySourceLine%w[_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w[_nested" char="["/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="]"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="["/>
+      </context>
+
+      <context name="RubySourceLine%w&lt;" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%w&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%w&lt;_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char=">"/>
+        <IncludeRules context="RubySourceLine%w&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%w&lt;_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%w&lt;_nested" char="&lt;"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=">"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="&lt;"/>
+      </context>
+
+      <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+        delimiter character
+        -->
+      <context name="RubySourceLine%w_" attribute="Ruby Raw String">
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=" "/>
+        <IncludeRules context="RubySourceLine%q_"/>
+      </context>
+
+
+      <!-- apostrophed string specific contexts -->
+
+      <context name="RubySourceLine%q(" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%q(_rule"/>
+      </context>
+      <context name="RubySourceLine%q(_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char=")"/>
+        <IncludeRules context="RubySourceLine%q(_rule"/>
+      </context>
+      <context name="RubySourceLine%q(_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q(_nested" char="("/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=")"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="("/>
+      </context>
+
+      <context name="RubySourceLine%q{" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%q{_rule"/>
+      </context>
+      <context name="RubySourceLine%q{_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char="}"/>
+        <IncludeRules context="RubySourceLine%q{_rule"/>
+      </context>
+      <context name="RubySourceLine%q{_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q{_nested" char="{"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="}"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="{"/>
+      </context>
+
+      <context name="RubySourceLine%q[" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%q[_rule"/>
+      </context>
+      <context name="RubySourceLine%q[_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char="]"/>
+        <IncludeRules context="RubySourceLine%q[_rule"/>
+      </context>
+      <context name="RubySourceLine%q[_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q[_nested" char="["/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="]"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="["/>
+      </context>
+
+      <context name="RubySourceLine%q&lt;" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%q&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%q&lt;_nested" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="#pop" char=">"/>
+        <IncludeRules context="RubySourceLine%q&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%q&lt;_rule" attribute="Ruby Raw String">
+        <DetectChar attribute="Ruby Raw String" context="RubySourceLine%q&lt;_nested" char="&lt;"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=">"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="&lt;"/>
+      </context>
+
+      <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+        delimiter character
+        -->
+      <context name="RubySourceLine%q_" attribute="Ruby Raw String">
+        <Detect2Chars attribute="Ruby Raw String" char="\" char1="\"/>
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="1" dynamic="true" endRegion="GdlInput"/>
+        <StringDetect attribute="Ruby String Char" String="\%1" dynamic="true"/>
+      </context>
+
+
+      <!-- symbol string specific contexts -->
+
+      <context name="RubySourceLine%s(" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%s(_rule"/>
+      </context>
+      <context name="RubySourceLine%s(_nested" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="#pop" char=")"/>
+        <IncludeRules context="RubySourceLine%s(_rule"/>
+      </context>
+      <context name="RubySourceLine%s(_rule" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s(_nested" char="("/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=")"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="("/>
+      </context>
+
+      <context name="RubySourceLine%s{" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%s{_rule"/>
+      </context>
+      <context name="RubySourceLine%s{_nested" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="#pop" char="}"/>
+        <IncludeRules context="RubySourceLine%s{_rule"/>
+      </context>
+      <context name="RubySourceLine%s{_rule" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s{_nested" char="{"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="}"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="{"/>
+      </context>
+
+      <context name="RubySourceLine%s[" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%s[_rule"/>
+      </context>
+      <context name="RubySourceLine%s[_nested" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="#pop" char="]"/>
+        <IncludeRules context="RubySourceLine%s[_rule"/>
+      </context>
+      <context name="RubySourceLine%s[_rule" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s[_nested" char="["/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="]"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="["/>
+      </context>
+
+      <context name="RubySourceLine%s&lt;" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%s&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%s&lt;_nested" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="#pop" char=">"/>
+        <IncludeRules context="RubySourceLine%s&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%s&lt;_rule" attribute="Ruby Symbol">
+        <DetectChar attribute="Ruby Symbol" context="RubySourceLine%s&lt;_nested" char="&lt;"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="\"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1=">"/>
+        <Detect2Chars attribute="Ruby String Char" char="\" char1="&lt;"/>
+      </context>
+
+      <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+        delimiter character
+        -->
+      <context name="RubySourceLine%s_" attribute="Ruby Symbol">
+        <Detect2Chars attribute="Ruby Symbol" char="\" char1="\"/>
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="1" dynamic="true" endRegion="GdlInput"/>
+        <StringDetect attribute="Ruby String Char" String="\%1" dynamic="true"/>
+      </context>
+
+
+      <!-- regular expression specific contexts -->
+
+      <context name="RubySourceLine%r(" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char=")" endRegion="GdlInput"/> <IncludeRules context="RubySourceLine%r(_rule"/>
+      </context>
+      <context name="RubySourceLine%r(_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char=")"/>
+        <IncludeRules context="RubySourceLine%r(_rule"/>
+      </context>
+      <context name="RubySourceLine%r(_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%r(_nested" char="("/>
+        <IncludeRules context="RubySourceLineRegExSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%r{" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char="}" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%r{_rule"/>
+      </context>
+      <context name="RubySourceLine%r{_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char="}"/>
+        <IncludeRules context="RubySourceLine%r{_rule"/>
+      </context>
+      <context name="RubySourceLine%r{_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%r{_nested" char="{"/>
+        <IncludeRules context="RubySourceLineRegExSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%r[" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char="]" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%r[_rule"/>
+      </context>
+      <context name="RubySourceLine%r[_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char="]"/>
+        <IncludeRules context="RubySourceLine%r[_rule"/>
+      </context>
+      <context name="RubySourceLine%r[_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%r[_nested" char="["/>
+        <IncludeRules context="RubySourceLineRegExSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%r&lt;" attribute="Ruby String">
+        <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char=">" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%r&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%r&lt;_nested" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="#pop" char=">"/>
+        <IncludeRules context="RubySourceLine%r&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%r&lt;_rule" attribute="Ruby String">
+        <DetectChar attribute="Ruby String" context="RubySourceLine%r&lt;_nested" char="&lt;"/>
+        <IncludeRules context="RubySourceLineRegExSpecial"/>
+      </context>
+
+      <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+        delimiter character
+        -->
+      <context name="RubySourceLine%r_" attribute="Ruby Regular Expression">
+        <DetectChar attribute="Ruby GDL input" context="#pop!RubySourceLineRegExMode" char="1" dynamic="true" endRegion="GdlInput"/>
+        <StringDetect attribute="Ruby String Char" String="\%1" dynamic="true"/>
+        <IncludeRules context="RubySourceLineRegExSpecial"/>
+      </context>
+
+
+      <!-- shell command specific contexts -->
+
+      <context name="RubySourceLine%x(" attribute="Ruby Command">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=")" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%x(_rule"/>
+      </context>
+      <context name="RubySourceLine%x(_nested" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="#pop" char=")"/>
+        <IncludeRules context="RubySourceLine%x(_rule"/>
+      </context>
+      <context name="RubySourceLine%x(_rule" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="RubySourceLine%x(_nested" char="("/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%x{" attribute="Ruby Command">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="}" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%x{_rule"/>
+      </context>
+      <context name="RubySourceLine%x{_nested" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="#pop" char="}"/>
+        <IncludeRules context="RubySourceLine%x{_rule"/>
+      </context>
+      <context name="RubySourceLine%x{_rule" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="RubySourceLine%x{_nested" char="{"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%x[" attribute="Ruby Command">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char="]" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%x[_rule"/>
+      </context>
+      <context name="RubySourceLine%x[_nested" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="#pop" char="]"/>
+        <IncludeRules context="RubySourceLine%x[_rule"/>
+      </context>
+      <context name="RubySourceLine%x[_rule" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="RubySourceLine%x[_nested" char="["/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <context name="RubySourceLine%x&lt;" attribute="Ruby Command">
+        <DetectChar attribute="Ruby GDL input" context="#pop#pop!RubySourceLineOp1" char=">" endRegion="GdlInput"/>
+        <IncludeRules context="RubySourceLine%x&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%x&lt;_nested" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="#pop" char=">"/>
+        <IncludeRules context="RubySourceLine%x&lt;_rule"/>
+      </context>
+      <context name="RubySourceLine%x&lt;_rule" attribute="Ruby Command">
+        <DetectChar attribute="Ruby Command" context="RubySourceLine%x&lt;_nested" char="&lt;"/>
+        <IncludeRules context="RubySourceLineDQuoteSpecial"/>
+      </context>
+
+      <!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+        delimiter character
+        -->
+      <context name="RubySourceLine%x_" attribute="Ruby Command">
+        <IncludeRules context="RubySourceLine%Q_"/>
+      </context>
+
+    </contexts>
+
+
+    <itemDatas>
+      <!-- HAML itemData -->
+
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Other code embedded in haml" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Escaped Text" defStyleNum="dsSpecialChar"/>
+      <itemData name="Operator" defStyleNum="dsPreprocessor"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Doctype" defStyleNum="dsDataType" bold="1"/>
+      <itemData name="Filter" defStyleNum="dsOthers"/>
+      <itemData name="Element Id" defStyleNum="dsFloat" bold="1"/>
+      <itemData name="Element Class" defStyleNum="dsFloat"/>
+      <itemData name="Special Attribute" defStyleNum="dsAttribute"/>
+      <itemData name="Div Id" defStyleNum="dsDecVal" bold="1"/>
+      <itemData name="Div Class" defStyleNum="dsDecVal"/>
+      <itemData name="Tag" defStyleNum="dsKeyword"/>
+      <itemData name="Entity" defStyleNum="dsDecVal"/>
+      <!-- use these to mark errors and alerts things -->
+      <itemData name="Error" defStyleNum="dsError"/>
+
+      <!-- Ruby itemData -->
+
+      <itemData name="Ruby Normal Text" defStyleNum="dsNormal"/>
+
+      <itemData name="Ruby Keyword" defStyleNum="dsControlFlow"/>
+      <itemData name="Ruby Attribute Definition" defStyleNum="dsOthers"/>
+      <itemData name="Ruby Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->
+      <itemData name="Ruby Definition" defStyleNum="dsKeyword"/>
+      <itemData name="Ruby Pseudo variable" defStyleNum="dsDecVal"/>
+
+      <itemData name="Ruby Number" defStyleNum="dsDecVal"/>
+      <itemData name="Ruby Number Suffix" defStyleNum="dsBuiltIn"/>
+
+      <itemData name="Ruby Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->
+      <itemData name="Ruby String" defStyleNum="dsString"/>
+      <itemData name="Ruby String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="Ruby Raw String" defStyleNum="dsVerbatimString"/> <!-- #DD4A4A -->
+      <itemData name="Ruby Char Literal" defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="Ruby Char" defStyleNum="dsChar"/>
+
+      <itemData name="Ruby Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->
+      <itemData name="Ruby Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->
+      <itemData name="Ruby Regular Expression" defStyleNum="dsSpecialString" spellChecking="false"/> <!-- #4A5704 -->
+      <itemData name="Ruby Substitution"	defStyleNum="dsSpecialChar"/>
+      <!-- short for 'general delimited input' -->
+      <itemData name="Ruby GDL input" defStyleNum="dsOthers"/>
+
+      <itemData name="Ruby Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->
+      <itemData name="Ruby Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->
+      <itemData name="Ruby Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->
+      <itemData name="Ruby Constant" defStyleNum="dsDataType"/>
+      <itemData name="Ruby Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->
+      <itemData name="Ruby Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
+      <itemData name="Ruby Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
+      <itemData name="Ruby Member" defStyleNum="dsAttribute"/>
+      <itemData name="Ruby Instance Variable" defStyleNum="dsOthers"/>
+      <itemData name="Ruby Class Variable" defStyleNum="dsOthers"/>
+
+      <itemData name="Ruby Comment" defStyleNum="dsComment"/>
+
+      <itemData name="Ruby Here Document" defStyleNum="dsDocumentation"/>
+
+      <itemData name="Ruby Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
+      <itemData name="Ruby Operator" defStyleNum="dsOperator" bold="1"/> <!-- #FF9FEC -->
+
+    </itemDatas>
+  </highlighting>
+  <general>
+    <folding indentationsensitive="1"/>
+    <emptyLines>
+      <emptyLine regexpr="\s+"/>
+    </emptyLines>
+    <comments>
+      <comment name="singleLine" start="/" position="afterwhitespace"/>
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="!?"/>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/hamlet.xml b/xml/hamlet.xml
--- a/xml/hamlet.xml
+++ b/xml/hamlet.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!-- names must start with a letter, ideogram or underscore. \w matches any
   word character *or* a number, hence the lookahead -->
diff --git a/xml/haskell.xml b/xml/haskell.xml
--- a/xml/haskell.xml
+++ b/xml/haskell.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd" [
-  <!ENTITY symbolops "\-!#\$&#37;&amp;\*\+/&lt;=&gt;\?&#92;@\^\|~\.:">
+<!DOCTYPE language [
+  <!ENTITY symbolops "\-!#\$&#37;&amp;\*\+/&lt;=&gt;\?&#92;&#92;@\^\|~\.:">
 ]>
-<language name="Haskell" version="20" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
+<language name="Haskell" alternativeNames="HS" version="22" kateversion="5.53" section="Sources" extensions="*.hs;*.chs;*.hs-boot" mimetype="text/x-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL" indenter="haskell" style="haskell">
   <highlighting>
   <list name="keywords">
     <item>case</item>
@@ -473,7 +473,8 @@
       <RegExpr attribute="Special"          context="#stay" String="(::|=&gt;|-&gt;|&lt;-|=)(?![&symbolops;])" />
       <RegExpr attribute="Signature"        context="#stay" String="\s*[a-z_][a-zA-Z0-9_']*\s*(?=::([^&symbolops;]|$))|\s*(\([&symbolops;]*\))*\s*(?=::[^&symbolops;])" />
       <RegExpr attribute="Function"         context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[a-z_][a-zA-Z0-9_']*" />
-      <RegExpr attribute="Operator"         context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[&symbolops;]+" />
+      <!-- Match backslash operators before general operators (order matters for precedence) -->
+      <RegExpr attribute="Operator"         context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*\\[!#\$%&amp;\*\+/&lt;=&gt;\?\\@\^\|~\.:]+|([A-Z][a-zA-Z0-9_']*\.)*[&symbolops;]+" />
       <RegExpr attribute="Type"             context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*|'(?![A-Z]')([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
 
       <RegExpr    attribute="Float"   context="#stay" String ="\d+\.\d+([Ee][+-]?\d+)?|\d+[Ee][+-]?\d+"/>
@@ -541,11 +542,12 @@
     </context>
     <context attribute="Normal" lineEndContext="#pop" name="import">
       <DetectSpaces attribute="Normal" />
+      <IncludeRules context="FindComment" />
       <keyword attribute="Keyword"          context="#stay" String="import_keywords" />
       <RegExpr attribute="Function"         context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[a-z][a-zA-Z0-9_']*" />
       <RegExpr attribute="Type"             context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*[A-Z][a-zA-Z0-9_']*" />
-
-      <IncludeRules context="FindComment" />
+      <!-- Add operator matching to import context (backslash operators matched first) -->
+      <RegExpr attribute="Operator"         context="#stay" String="([A-Z][a-zA-Z0-9_']*\.)*\\[!#\$%&amp;\*\+/&lt;=&gt;\?\\@\^\|~\.:]+|([A-Z][a-zA-Z0-9_']*\.)*[&symbolops;]+" />
     </context>
 
     <!-- Haddock -->
diff --git a/xml/haxe.xml b/xml/haxe.xml
--- a/xml/haxe.xml
+++ b/xml/haxe.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
   ========================================================================
 
diff --git a/xml/html.xml b/xml/html.xml
--- a/xml/html.xml
+++ b/xml/html.xml
@@ -1,184 +1,329 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY name          "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY attributeName "[A-Za-z_:*#\(\[][\)\]\w.:_-]*">
-	<!ENTITY entref        "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+  <!-- https://html.spec.whatwg.org/#named-character-references -->
+	<!ENTITY entname_without_semicolon "([AaEeIiOoUuYy]?acute|[AaEeIiOoUu]circ|[AaEeIiOoUu]grave|AElig|aelig|AMP|amp|[Aa]ring|brvbar|[Cc]?cedil|cent|COPY|copy|curren|deg|divide|ETH|eth|frac1[24]|frac34|GT|gt|iexcl|iquest|laquo|LT|lt|macr|micro|middot|nbsp|not|[AaNnOo]tilde|ord[fm]|[Oo]slash|[AaEeIiOoUuy]?uml|para|plusmn|pound|QUOT|quot|raquo|REG|reg|sect|shy|sup[123]|szlig|THORN|thorn|times|yen)">
+  <!-- https://html.spec.whatwg.org/#named-character-reference-state -->
+  <!-- Longest entity: CounterClockwiseContourIntegral (len=31) -->
+  <!ENTITY entref "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|[A-Za-z][A-Za-z0-9]{1,30});|&amp;&entname_without_semicolon;(?=[^;]|$)">
 ]>
-<language name="HTML" version="14" kateversion="5.53" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm" mimetype="text/html"  author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+<language name="HTML" version="20" kateversion="5.79" section="Markup" extensions="*.htm;*.html;*.shtml;*.shtm;*.aspx" mimetype="text/html" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
 
 <highlighting>
 <contexts>
+
+  <!-- https://html.spec.whatwg.org/#syntax -->
+
   <context name="Start" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="FindText" />
     <IncludeRules context="FindHTML" />
   </context>
 
-  <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
+  <context name="FindText" attribute="Normal Text" lineEndContext="#stay">
     <DetectSpaces/>
     <DetectIdentifier/>
+  </context>
+
+  <context name="FindComment" attribute="Normal Text" lineEndContext="#stay">
     <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+  </context>
+
+  <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="FindElements" />
+    <IncludeRules context="FindComment" />
+
+    <!-- TODO -->
+    <!-- as long as kde gives DTDs the text/html mimetype--><!-- <IncludeRules context="FindDTDRules" /> -->
+    <WordDetect attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE" insensitive="true"/>
+
+    <IncludeRules context="FindEntity" />
+    <IncludeRules context="FindErrors" />
+  </context>
+
+  <context name="FindForeign" attribute="Normal Text" lineEndContext="#stay">
+    <IncludeRules context="FindElements" />
+    <IncludeRules context="FindComment" />
+    <IncludeRules context="FindCDATA" />
+    <IncludeRules context="FindEntity" />
+    <IncludeRules context="FindErrors" />
+  </context>
+
+  <context name="FindElements" attribute="Other Text" lineEndContext="#pop">
+    <RegExpr attribute="Element Symbols" context="ElementTagName" String="&lt;(?=(&name;))" />
+    <RegExpr attribute="Element Symbols" context="ElementTagNameClose" String="&lt;/(?=(&name;))" />
+  </context>
+
+  <context name="FindErrors" attribute="Other Text" lineEndContext="#pop">
+    <!--
+    (error) incorrectly-opened-comment
+      "<!" not immediately followed by two "-"
+      All content that follows up to a ">" is treated as a comment.
+    (error) cdata-in-html-content
+      CDATA section outside of foreign content (SVG or MathML).
+      The parser treats such CDATA sections as comments.
+    -->
+    <StringDetect attribute="Error" context="Bogus Comment" String="&lt;!"/>
+    <!-- (error) unexpected-question-mark-instead-of-tag-name: treated as a comment. -->
+    <StringDetect attribute="Error" context="Bogus Comment" String="&lt;?"/>
+    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
+  </context>
+
+  <context name="FindCDATA" attribute="Other Text" lineEndContext="#pop">
     <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype"  />
-    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
-    <IncludeRules context="FindSpecialHTMLTags" />
+  </context>
+
+  <context name="ElementTagName" attribute="Other Text" lineEndContext="#pop">
     <IncludeRules context="FindHTMLTags" />
-    <!-- as long as kde gives DTDs the text/html mimetype--><IncludeRules context="FindDTDRules" />
-    <IncludeRules context="FindEntityRefs" />
+    <IncludeRules context="FindSpecialHTMLTags" />
+    <StringDetect attribute="Element" context="#pop!El Open" String="%1" dynamic="true" />
   </context>
 
+  <context name="ElementTagNameClose" attribute="Other Text" lineEndContext="#pop">
+    <IncludeRules context="FindHTMLTagsClose" />
+    <StringDetect attribute="Element" context="#pop!El Close" String="%1" dynamic="true" />
+  </context>
+
   <!-- This allows you to insert HTML tags in other syntax definitions -->
   <context name="FindSpecialHTMLTags" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="CSS" String="&lt;style\b" insensitive="true" beginRegion="style" />
-    <RegExpr attribute="Element" context="JS" String="&lt;script\b" insensitive="true" beginRegion="script" />
+    <!-- Raw text elements -->
+    <WordDetect attribute="Element" context="#pop!CSS" String="style" insensitive="true" beginRegion="style" />
+    <WordDetect attribute="Element" context="#pop!JS" String="script" insensitive="true" beginRegion="script" />
+    <!-- Foreign Elements (CDATA sections can only be used in foreign content) -->
+    <WordDetect attribute="Element" context="#pop!SVG" String="svg" insensitive="true" beginRegion="svg"/>
+    <WordDetect attribute="Element" context="#pop!MATH" String="math" insensitive="true" beginRegion="math"/>
+    <!-- Escapable raw text elements -->
+    <WordDetect attribute="Element" context="#pop!Textarea" String="textarea" insensitive="true" beginRegion="textarea"/>
+    <WordDetect attribute="Element" context="#pop!Title" String="title" insensitive="true"/>
   </context>
 
   <context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">
-    <WordDetect attribute="Element" context="El Open" String="&lt;pre" insensitive="true" beginRegion="pre" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;div" insensitive="true" beginRegion="div" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;table" insensitive="true" beginRegion="table" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;ul" insensitive="true" beginRegion="ul" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;ol" insensitive="true" beginRegion="ol" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;dl" insensitive="true" beginRegion="dl" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;article" insensitive="true" beginRegion="article" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;aside" insensitive="true" beginRegion="aside" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;details" insensitive="true" beginRegion="details" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;figure" insensitive="true" beginRegion="figure" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;footer" insensitive="true" beginRegion="footer" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;header" insensitive="true" beginRegion="header" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;main" insensitive="true" beginRegion="main" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;nav" insensitive="true" beginRegion="nav" />
-    <WordDetect attribute="Element" context="El Open" String="&lt;section" insensitive="true" beginRegion="section" />
-    <RegExpr attribute="Element" context="El Open" String="&lt;&name;" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/pre" insensitive="true" endRegion="pre" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/div" insensitive="true" endRegion="div" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/table" insensitive="true" endRegion="table" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/ul" insensitive="true" endRegion="ul" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/ol" insensitive="true" endRegion="ol" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/dl" insensitive="true" endRegion="dl" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/article" insensitive="true" endRegion="article" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/aside" insensitive="true" endRegion="aside" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/details" insensitive="true" endRegion="details" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/figure" insensitive="true" endRegion="figure" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/footer" insensitive="true" endRegion="footer" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/header" insensitive="true" endRegion="header" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/main" insensitive="true" endRegion="main" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/nav" insensitive="true" endRegion="nav" />
-    <WordDetect attribute="Element" context="El Close" String="&lt;/section" insensitive="true" endRegion="section" />
-    <RegExpr attribute="Element" context="El Close" String="&lt;/&name;" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="pre" insensitive="true" beginRegion="pre" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="div" insensitive="true" beginRegion="div" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="table" insensitive="true" beginRegion="table" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="ul" insensitive="true" beginRegion="ul" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="ol" insensitive="true" beginRegion="ol" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="dl" insensitive="true" beginRegion="dl" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="article" insensitive="true" beginRegion="article" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="aside" insensitive="true" beginRegion="aside" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="details" insensitive="true" beginRegion="details" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="figure" insensitive="true" beginRegion="figure" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="footer" insensitive="true" beginRegion="footer" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="header" insensitive="true" beginRegion="header" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="main" insensitive="true" beginRegion="main" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="nav" insensitive="true" beginRegion="nav" />
+    <WordDetect attribute="Element" context="#pop!El Open" String="section" insensitive="true" beginRegion="section" />
   </context>
 
+  <context name="FindHTMLTagsClose" attribute="Normal Text" lineEndContext="#stay">
+    <WordDetect attribute="Element" context="#pop!El Close" String="pre" insensitive="true" endRegion="pre" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="div" insensitive="true" endRegion="div" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="table" insensitive="true" endRegion="table" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="ul" insensitive="true" endRegion="ul" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="ol" insensitive="true" endRegion="ol" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="dl" insensitive="true" endRegion="dl" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="article" insensitive="true" endRegion="article" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="aside" insensitive="true" endRegion="aside" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="details" insensitive="true" endRegion="details" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="figure" insensitive="true" endRegion="figure" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="footer" insensitive="true" endRegion="footer" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="header" insensitive="true" endRegion="header" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="main" insensitive="true" endRegion="main" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="nav" insensitive="true" endRegion="nav" />
+    <WordDetect attribute="Element" context="#pop!El Close" String="section" insensitive="true" endRegion="section" />
+  </context>
+
   <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+    <IncludeRules context="FindEntity" />
     <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
   </context>
-
-  <context name="FindPEntityRefs" attribute="Other Text" lineEndContext="#stay">
+  <context name="FindEntity" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
-    <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
-    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
   </context>
 
   <context name="FindAttributes" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Attribute" context="#stay" String="^&attributeName;|\s+&attributeName;" />
-    <DetectChar attribute="Attribute" context="Value" char="=" />
+    <DetectChar attribute="Attribute Separator" context="Value" char="=" />
+    <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;(\s+&attributeName;)*\s*|\s+" />
   </context>
 
-  <context name="FindDTDRules" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(?:ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
-  </context>
+  <!--
+  Comments must have the following format:
 
+  - The string "<!-""-".
+  - Optionally, text, with the additional restriction that the text must not
+    start with the string ">", nor start with the string "->", nor contain
+    the strings "<!-"""-", "-""->", or "-""-!>", nor end with the string "<!-".
+  - The string "-""->".
 
-  <context name="Comment" attribute="Comment" lineEndContext="#stay">
+  The text is allowed to end with the string "<!", as in "<!-""- bla <!-""->".
+
+  - https://html.spec.whatwg.org/#parse-error-nested-comment
+      ignore "<!-""-"
+  - https://html.spec.whatwg.org/#parse-error-abrupt-closing-of-empty-comment
+      with "<!-""->" or "<!-""-""->") the comment is closed
+
+  comment := start ( ">" | "->" | (* - end) end )
+  start := "<!-" "-"
+  end := "-" "->"
+  -->
+  <context name="Comment" attribute="Comment" lineEndContext="Comment content" fallthroughContext="Comment content">
+    <StringDetect attribute="Error" context="#pop" String="&gt;" endRegion="comment" />
+    <StringDetect attribute="Error" context="#pop" String="-&gt;" endRegion="comment" />
+  </context>
+  <context name="Comment content" attribute="Comment" lineEndContext="#stay">
     <DetectSpaces/>
-    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
+    <StringDetect attribute="Comment" context="#pop#pop" String="--&gt;" endRegion="comment" />
     <IncludeRules context="##Comments" />
     <DetectIdentifier/>
-    <RegExpr attribute="Error" context="#stay" String="-(?:-(?!-&gt;))+" />
   </context>
 
+  <context name="Bogus Comment" attribute="Comment" lineEndContext="#stay">
+    <DetectChar attribute="Comment" context="#pop" char="&gt;" endRegion="comment" />
+  </context>
+
   <context name="CDATA" attribute="Other Text" lineEndContext="#stay">
-    <DetectSpaces/>
-    <DetectIdentifier/>
+    <IncludeRules context="FindText" />
     <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
-    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
   </context>
 
-  <context name="PI" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
-  </context>
+  <!--
+    DOCTYPE
 
-  <context name="Doctype" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
-    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
-  </context>
+    https://html.spec.whatwg.org/#the-doctype
+    https://html.spec.whatwg.org/#after-doctype-name-state (for public identifier)
 
-  <context name="Doctype Internal Subset" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
-    <IncludeRules context="FindDTDRules" />
-    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
-    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:-]*" beginRegion="pi" />
-    <IncludeRules context="FindPEntityRefs" />
-  </context>
+    <!DOCTYPE html>
+    <!DOCTYPE html SYSTEM "about:legacy-compat">
+    <!DOCTYPE html SYSTEM 'about:legacy-compat'>
 
-  <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay">
+    HTML does not support Internal Subset (e.g. <!ENTITY ...>)
+
+    @{
+  -->
+
+  <context name="Doctype" attribute="Other Text" lineEndContext="#stay">
     <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
-    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
-    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
+    <DetectChar attribute="Value" context="Doctype DQ" char="&quot;" />
+    <DetectChar attribute="Value" context="Doctype SQ" char="&apos;" />
   </context>
 
-  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
+  <context name="Doctype DQ" attribute="Value" lineEndContext="#stay">
     <DetectChar attribute="Value" context="#pop" char="&quot;" />
-    <IncludeRules context="FindPEntityRefs" />
+    <IncludeRules context="Doctype Value" />
   </context>
 
-  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
+  <context name="Doctype SQ" attribute="Value" lineEndContext="#stay">
     <DetectChar attribute="Value" context="#pop" char="&apos;" />
-    <IncludeRules context="FindPEntityRefs" />
+    <IncludeRules context="Doctype Value" />
   </context>
 
-  <context name="El Open" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
-    <DetectChar attribute="Element" context="#pop" char="&gt;" />
+  <context name="Doctype Value" attribute="Value" lineEndContext="#stay">
+    <!-- no entity, only predefined strings -->
+    <DetectChar attribute="Error" context="#pop" char="&amp;"/>
+    <!--
+      https://html.spec.whatwg.org/#parse-error-abrupt-doctype-public-identifier
+      https://html.spec.whatwg.org/#parse-error-abrupt-doctype-system-identifier
+    -->
+    <DetectChar attribute="Error" context="#pop#pop" char="&gt;"/>
+  </context>
+
+  <!--
+    @} DOCTYPE
+  -->
+
+  <context name="El Open" attribute="Error" lineEndContext="#stay">
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" />
+    <DetectChar attribute="Element Symbols" context="#pop" char="&gt;" />
     <IncludeRules context="FindAttributes" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
 
-  <context name="El Close" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+  <context name="El Close" attribute="Error" lineEndContext="#stay">
+    <DetectChar attribute="Element Symbols" context="#pop" char="&gt;" />
+    <DetectSpaces attribute="Other Text"/>
   </context>
 
-  <context name="El Close 2" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+  <context name="SVG" attribute="Error" lineEndContext="#stay">
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="svg" />
+    <DetectChar attribute="Element Symbols" context="SVG content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
   </context>
+  <context name="SVG content" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="FindText" />
+    <RegExpr attribute="Element Symbols" context="SVG content Close" String="&lt;/(?=svg\b)" insensitive="true" />
+    <IncludeRules context="FindForeign" />
+  </context>
+  <context name="SVG content Close" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="svg" />
+  </context>
 
-  <context name="El Close 3" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+  <context name="MATH" attribute="Error" lineEndContext="#stay">
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="math" />
+    <DetectChar attribute="Element Symbols" context="MATH content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
   </context>
+  <context name="MATH content" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="FindText" />
+    <RegExpr attribute="Element Symbols" context="MATH content Close" String="&lt;/(?=math\b)" insensitive="true" />
+    <IncludeRules context="FindForeign" />
+  </context>
+  <context name="MATH content Close" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="math" />
+  </context>
 
-  <context name="CSS" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
-    <DetectChar attribute="Element" context="CSS content" char="&gt;" />
+  <context name="Textarea" attribute="Error" lineEndContext="#stay">
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="textarea" />
+    <DetectChar attribute="Element Symbols" context="Textarea content" char="&gt;" />
     <IncludeRules context="FindAttributes" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
   </context>
+  <context name="Textarea content" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="FindText" />
+    <RegExpr attribute="Element Symbols" context="Textarea content Close" String="&lt;/(?=textarea\b)" insensitive="true" />
+    <IncludeRules context="FindEntity" />
+    <DetectChar attribute="Error" context="#stay" char="&amp;" />
+  </context>
+  <context name="Textarea content Close" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="textarea" />
+  </context>
 
+  <context name="Title" attribute="Error" lineEndContext="#stay">
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" />
+    <DetectChar attribute="Element Symbols" context="Title content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+  </context>
+  <context name="Title content" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="FindText" />
+    <RegExpr attribute="Element Symbols" context="Title content Close" String="&lt;/(?=title\b)" insensitive="true" />
+    <IncludeRules context="FindEntity" />
+    <DetectChar attribute="Error" context="#stay" char="&amp;" />
+  </context>
+  <context name="Title content Close" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" />
+  </context>
+
+  <context name="CSS" attribute="Error" lineEndContext="#stay">
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="style" />
+    <DetectChar attribute="Element Symbols" context="CSS content" char="&gt;" />
+    <IncludeRules context="FindAttributes" />
+  </context>
+
   <context name="CSS content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/style\b" insensitive="true" endRegion="style" />
+    <RegExpr attribute="Element Symbols" context="CSS content Close" String="&lt;/(?=style\b)" insensitive="true" />
     <IncludeRules context="##CSS" includeAttrib="true"/>
   </context>
+  <context name="CSS content Close" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="style" />
+  </context>
 
-  <context name="JS" attribute="Other Text" lineEndContext="#stay">
+  <context name="JS" attribute="Error" lineEndContext="#stay">
     <RegExpr attribute="Attribute" context="Script-Type" String="(?:\s+|^)type(?=\=|\s|$)" insensitive="true"/>
-    <DetectChar attribute="Element" context="JS content" char="&gt;" />
+    <DetectChar attribute="Element Symbols" context="JS content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="DefaultJS" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
-    <IncludeRules context="FindAttributes" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="script" />
+    <DetectChar attribute="Attribute Separator" context="Value" char="=" />
+    <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;|\s+" />
   </context>
 
   <context name="JS content" attribute="Other Text" lineEndContext="#stay">
@@ -186,25 +331,36 @@
     <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
   </context>
   <context name="Default JS content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
-    <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
+    <IncludeRules context="FindScriptTagClose" />
+    <RegExpr attribute="Comment" context="#pop!JS comment close" String="//(?=.*?&lt;/script\b)" insensitive="true" />
   </context>
 
+  <context name="FindScriptTagClose" attribute="Other Text" lineEndContext="#stay">
+    <RegExpr attribute="Element Symbols" context="ScriptTagClose" String="&lt;/(?=script\b)" insensitive="true" />
+  </context>
+  <context name="ScriptTagClose" attribute="Other Text" lineEndContext="#stay">
+    <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="script" />
+  </context>
+
   <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
-    <RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
     <DetectSpaces />
+    <IncludeRules context="FindScriptTagClose" />
     <IncludeRules context="##Comments" />
+    <DetectIdentifier/>
   </context>
 
-  <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Value NQ">
+  <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="Value NQ">
     <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
     <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
     <DetectSpaces />
   </context>
 
-  <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-    <IncludeRules context="FindEntityRefs" />
-    <RegExpr attribute="Value" context="#stay" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
+  <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+    <!-- '{' and '}' are valid, but used with twig -->
+    <RegExpr attribute="Value" String="[^&gt;&lt;&quot;&apos;&amp;\s=`{}]+" />
+    <IncludeRules context="FindEntity" />
+    <AnyChar attribute="Error" String="&amp;&lt;&quot;&apos;`=" />
+    <AnyChar attribute="Value" String="{}" />
   </context>
 
   <context name="Value DQ" attribute="Value" lineEndContext="#stay">
@@ -220,11 +376,11 @@
   <!-- Read content from the "type" attribute to change the language to
        highlight in the <script> tag. The default language is JavaScript. -->
 
-  <context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+  <context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop">
     <DetectSpaces />
     <DetectChar attribute="Attribute" context="#pop!Script-Type Value" char="=" />
   </context>
-  <context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Value">
+  <context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Value">
     <DetectSpaces />
     <!-- TypeScript -->
     <StringDetect attribute="Value" context="#pop#pop!TypeScript" String="&quot;text/typescript&quot;"/>
@@ -250,8 +406,8 @@
     <StringDetect attribute="Value" context="#pop#pop!Script HTML template" String="&apos;text/html&apos;"/>
   </context>
 
-  <context name="JSX" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="JSX content" char="&gt;" />
+  <context name="JSX" attribute="Error" lineEndContext="#stay">
+    <DetectChar attribute="Element Symbols" context="JSX content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="JSX content" attribute="Other Text" lineEndContext="#stay">
@@ -259,8 +415,8 @@
     <IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>
   </context>
 
-  <context name="TypeScript" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="TypeScript content" char="&gt;" />
+  <context name="TypeScript" attribute="Error" lineEndContext="#stay">
+    <DetectChar attribute="Element Symbols" context="TypeScript content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="TypeScript content" attribute="Other Text" lineEndContext="#stay">
@@ -268,26 +424,30 @@
     <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
   </context>
 
-  <context name="MustacheJS" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="MustacheJS content" char="&gt;" />
+  <context name="MustacheJS" attribute="Error" lineEndContext="#stay">
+    <DetectChar attribute="Element Symbols" context="MustacheJS content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="MustacheJS content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <IncludeRules context="FindScriptTagClose" />
     <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
-    <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
+    <WordDetect attribute="Error" context="#stay" String="&lt;script" insensitive="true" />
     <IncludeRules context="Base##Mustache/Handlebars (HTML)" includeAttrib="true"/>
   </context>
 
-  <context name="Script HTML template" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="Script HTML template content" char="&gt;" />
+  <context name="Script HTML template" attribute="Error" lineEndContext="#stay">
+    <DetectChar attribute="Element Symbols" context="Script HTML template content" char="&gt;" />
     <IncludeRules context="DefaultJS" />
   </context>
   <context name="Script HTML template content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El Close 2" String="&lt;/script\b" insensitive="true" endRegion="script" />
+    <IncludeRules context="FindText" />
+    <IncludeRules context="FindScriptTagClose" />
     <StringDetect attribute="Error" context="#stay" String="&lt;script&gt;" insensitive="true" />
-    <RegExpr attribute="Error" context="#stay" String="&lt;script\b" insensitive="true" />
-    <IncludeRules context="FindHTML" />
+    <WordDetect attribute="Error" context="#stay" String="&lt;script" insensitive="true" />
+    <IncludeRules context="FindElements" />
+    <IncludeRules context="FindComment" />
+    <IncludeRules context="FindEntity" />
+    <IncludeRules context="FindErrors" />
   </context>
 
 </contexts>
@@ -296,13 +456,13 @@
   <itemData name="Other Text" defStyleNum="dsNormal" spellChecking="false" />
   <itemData name="Comment" defStyleNum="dsComment" />
   <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" spellChecking="false" />
-  <itemData name="Processing Instruction" defStyleNum="dsKeyword" spellChecking="false" />
   <itemData name="Doctype" defStyleNum="dsDataType" bold="1" spellChecking="false" />
   <itemData name="Element" defStyleNum="dsKeyword" spellChecking="false" />
+  <itemData name="Element Symbols" defStyleNum="dsDataType" spellChecking="false" />
   <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false" />
+  <itemData name="Attribute Separator" defStyleNum="dsOperator" spellChecking="false" />
   <itemData name="Value" defStyleNum="dsString" spellChecking="false" />
   <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false" />
-  <itemData name="PEntityRef" defStyleNum="dsDecVal" spellChecking="false" />
   <itemData name="Error" defStyleNum="dsError" spellChecking="false" />
 </itemDatas>
 
diff --git a/xml/idl.xml b/xml/idl.xml
new file mode 100644
--- /dev/null
+++ b/xml/idl.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="IDL" version="7" kateversion="5.0" section="Sources" extensions="*.idl" mimetype="text/x-idl-src">
+  <highlighting>
+    <list name="keywords">
+      <item>any</item>
+      <item>attribute</item>
+      <item>case</item>
+      <item>const</item>
+      <item>context</item>
+      <item>default</item>
+      <item>enum</item>
+      <item>exception</item>
+      <item>FALSE</item>
+      <item>fixed</item>
+      <item>public</item>
+      <item>in</item>
+      <item>inout</item>
+      <item>interface</item>
+      <item>module</item>
+      <item>Object</item>
+      <item>oneway</item>
+      <item>out</item>
+      <item>raises</item>
+      <item>readonly</item>
+      <item>sequence</item>
+      <item>struct</item>
+      <item>switch</item>
+      <item>TRUE</item>
+      <item>typedef</item>
+      <item>unsigned</item>
+      <item>union</item>
+    </list>
+    <list name="types">
+      <item>boolean</item>
+      <item>char</item>
+      <item>double</item>
+      <item>float</item>
+      <item>long</item>
+      <item>octet</item>
+      <item>short</item>
+      <item>string</item>
+      <item>void</item>
+      <item>wchar</item>
+      <item>wstring</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Data Type" context="#stay" String="types" />
+        <HlCOct attribute="Octal" context="#stay"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <HlCChar attribute="Char" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <IncludeRules context="FindComments" />
+        <AnyChar attribute="Symbol" context="#stay" String="!%&amp;()+,-&lt;=&gt;?[]^{|}~"/>
+        <StringDetect attribute="Comment" context="Some Context3" String="#if 0" insensitive="false"/>
+        <DetectChar attribute="Preprocessor" context="Preprocessor" char="#" column="0"/>
+      </context>
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="/" lookAhead="true"/>
+        <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
+      </context>
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <IncludeRules context="##Doxygen" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 1" char="/" char1="/" />
+        <Detect2Chars attribute="Comment" context="#pop!Commentar 2" char="/" char1="*" beginRegion="Comment" />
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="String">
+        <LineContinue attribute="String" context="Some Context"/>
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+      <context attribute="Preprocessor" lineEndContext="#pop" name="Preprocessor">
+        <LineContinue attribute="Preprocessor" context="Some Context2"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Prep. Lib" context="#stay" char="&lt;" char1="&gt;"/>
+        <IncludeRules context="FindComments" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Some Context"/>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Some Context2"/>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Some Context3">
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+        <StringDetect attribute="Comment" context="#pop" String="#endif" column="0"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword"  defStyleNum="dsKeyword"/>
+      <itemData name="Data Type"  defStyleNum="dsDataType"/>
+      <itemData name="Octal"  defStyleNum="dsBaseN"/>
+      <itemData name="Hex"  defStyleNum="dsBaseN"/>
+      <itemData name="Char"  defStyleNum="dsChar"/>
+      <itemData name="String"  defStyleNum="dsString"/>
+      <itemData name="String Char"  defStyleNum="dsChar"/>
+      <itemData name="Comment"  defStyleNum="dsComment"/>
+      <itemData name="Symbol"  defStyleNum="dsOperator"/>
+      <itemData name="Preprocessor"  defStyleNum="dsOthers"/>
+      <itemData name="Prep. Lib"  defStyleNum="dsOthers"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/idris.xml b/xml/idris.xml
--- a/xml/idris.xml
+++ b/xml/idris.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- Based on haskell.xml and idris.vim (https://github.com/idris-hackers/idris-vim/blob/6bdb44b85406b75e3b3a4fa265deab1dbe8c6ff1/syntax/idris.vim) -->
 <language name="Idris" version="7" kateversion="5.0" section="Sources" extensions="*.idr" author="Alexander Shabalin" license="LGPL">
   <highlighting>
diff --git a/xml/ini.xml b/xml/ini.xml
--- a/xml/ini.xml
+++ b/xml/ini.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="INI Files" section="Configuration" extensions="*.ini;*.pls;*.kcfgc" mimetype="" version="10" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
+<!DOCTYPE language>
+<language name="INI Files" section="Configuration" extensions="*.ini;*.INI;*.cfg;*.pls;*.kcfgc;.gitattributes*;.gitconfig*;.gitmodules*;.editorconfig*" mimetype="" version="14" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL" priority="1">
 
 <highlighting>
 <list name="keywords">
@@ -65,14 +65,14 @@
 
 
 <itemDatas>
- <itemData name="Normal Text" defStyleNum="dsDataType" />
- <itemData name="Section" defStyleNum="dsKeyword" />
- <itemData name="Comment" defStyleNum="dsComment" />
- <itemData name="Assignment" defStyleNum="dsOthers" />
- <itemData name="Value" defStyleNum="dsString" />
- <itemData name="Float" defStyleNum="dsFloat" />
- <itemData name="Int" defStyleNum="dsDecVal" />
- <itemData name="Keyword" defStyleNum="dsKeyword" />
+ <itemData name="Normal Text" defStyleNum="dsDataType" spellChecking="false"/>
+ <itemData name="Section" defStyleNum="dsKeyword" spellChecking="false"/>
+ <itemData name="Comment" defStyleNum="dsComment"/>
+ <itemData name="Assignment" defStyleNum="dsOthers" spellChecking="false"/>
+ <itemData name="Value" defStyleNum="dsString" spellChecking="false"/>
+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+ <itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
+ <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
 </itemDatas>
 </highlighting>
 
diff --git a/xml/isocpp.xml b/xml/isocpp.xml
--- a/xml/isocpp.xml
+++ b/xml/isocpp.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY int "(?:[0-9](?:'?[0-9]++)*+)">
     <!ENTITY hex_int "(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f]++)*+)">
@@ -11,7 +11,7 @@
     <!ENTITY punctuators ":&ns_punctuators;">
 
     <!-- printf-like format strings conversion specifiers -->
-    <!ENTITY printf_like "&#37;[-+ #0]*(?:[0-9]+|\*)?(?:\.(?:[0-9]+|\*))?(?:(?:hh|ll|[hljzt])?[dioxXun]|[lL]?[fFeEaAgG]|l?[cs]|[p&#37;])">
+    <!ENTITY printf_like "&#37;[-+ #0]*+(?:[0-9]++|\*)?(?:\.(?:[0-9]++|\*))?(?:(?:hh|ll|[hljzt]|wf?(?:8|16|32|64))?[dioxXubn]|(?:DD|[lLHD])?[fFeEaAgG]|l?[cs]|[p&#37;])">
     <!-- https://en.cppreference.com/w/cpp/utility/format/formatter#Standard_format_specification -->
     <!ENTITY format_like "\{\{|\}\}|\{[0-9]*(?::(?:[^{}]?[&lt;&gt;^])?[-+ #0]*(?:[0-9]+|\{[0-9]*\})?(?:\.(?:[0-9]+|\{[0-9]*\}))?L?[sbBcdoxXaAeEfFgGp]?)?\}">
 
@@ -20,16 +20,27 @@
     <!ENTITY ppemptypp "($|(?=(/\*([^*]|\*[^/])*\*/\s*)?(//.*)?$))">
     <!ENTITY ppcond0 "\s+(?:0|false)\s*&ppemptypp;">
     <!ENTITY ppcond1 "\s+(?:1|true)\s*(\|\|([^/]|/[^*/])+)?&ppemptypp;">
+
+    <!ENTITY ident_internal1  "_[a-zA-Z0-9_]+">
+    <!ENTITY ident_internal2  "[a-zA-Z][a-zA-Z0-9_]*__\b">
+    <!ENTITY ident_internal   "(?:&ident_internal1;|&ident_internal2;)">
+    <!ENTITY ident_member1    "m_[a-zA-Z0-9_]+">
+    <!ENTITY ident_member2    "[a-z][a-zA-Z0-9_]*_\b">
+    <!ENTITY ident_member     "(?:&ident_member1;|&ident_member2;)">
+    <!ENTITY ident_CONST      "[A-Z][A-Z0-9_]{2,}\b">
+    <!ENTITY ident_type       "[a-zA-Z][a-zA-Z0-9_]*_t(?:ype)?\b">
+    <!ENTITY ident_global     "g_[a-zA-Z0-9_]+">
+    <!ENTITY ident_static_prefix  "s_[a-zA-Z0-9_]">
 ]>
 <language
     name="ISO C++"
     section="Sources"
-    version="25"
-    kateversion="5.0"
+    version="32"
+    kateversion="5.79"
     indenter="cstyle"
     style="C++"
     mimetype="text/x-c++src;text/x-c++hdr;text/x-chdr"
-    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.moc"
+    extensions="*.c++;*.cxx;*.cpp;*.cc;*.C;*.cu;*.h;*.hh;*.H;*.h++;*.hxx;*.hpp;*.hcc;*.cuh;*.inl;*.ino;*.pde;*.moc;*.mpp;*.ixx;*.cppm;*.cxxm;*.c++m;*.ccm"
     author="Alex Turbov (i.zaufi@gmail.com)"
     license="LGPL"
     priority="6"
@@ -152,6 +163,8 @@
       <item>likely</item>
       <item>unlikely</item>
       <item>no_unique_address</item>
+      <!-- C++23 -->
+      <item>assume</item>
       <!-- TM TS -->
       <!-- <item>optimize_for_synchronized</item> -->
     </list>
@@ -252,6 +265,8 @@
       <item>ifdef</item>
       <item>ifndef</item>
       <item>elif</item>
+      <item>elifdef</item> <!--C++23-->
+      <item>elifndef</item> <!--C++23-->
       <item>else</item>
       <item>endif</item>
       <item>cmakedefine01</item>
@@ -264,26 +279,25 @@
       <item>undef</item>
       <item>warning</item>
     </list>
-    <list name="preprocessorIfDef">
-      <item>ifdef</item>
-      <item>ifndef</item>
-    </list>
     <list name="preprocessorDefine">
       <item>cmakedefine01</item>
       <item>cmakedefine</item>
       <item>define</item>
+      <item>undef</item>
     </list>
     <list name="preprocessorOther">
       <item>error</item>
       <item>line</item>
       <item>pragma</item>
-      <item>undef</item>
       <item>warning</item>
     </list>
 
     <contexts>
       <context name="Main" attribute="Normal Text" lineEndContext="#stay">
         <DetectSpaces/>
+        <!-- Match punctuators (partial for fast path) -->
+        <AnyChar attribute="Symbol" context="#stay" String=":()]+-*=&gt;!|&amp;~^" />
+        <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
         <!-- Match scope regions -->
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
@@ -292,30 +306,27 @@
         <!-- Detect attributes -->
         <Detect2Chars attribute="Symbol" context="Attribute" char="[" char1="[" />
         <StringDetect attribute="Symbol" context="Attribute" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
+
+        <!-- Match preprocessor directives -->
+        <DetectChar attribute="Preprocessor" context="AfterHash" char="#" lookAhead="1"/>
+        <Detect2Chars attribute="Preprocessor" context="AfterHash" char="%" char1=":" lookAhead="1"/> <!-- Digraph: # -->
+        <StringDetect attribute="Preprocessor" context="AfterHash" String="??=" lookAhead="1"/> <!-- Trigraph: # -->
+
         <!-- Match numbers -->
-        <RegExpr context="Number" String="\.?\d" lookAhead="true" />
+        <RegExpr context="Number" String="\.?[0-9]" lookAhead="true" />
         <!-- Match comments -->
         <IncludeRules context="match comments and region markers" />
+        <!-- Match punctuators -->
+        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Match keywords -->
         <IncludeRules context="match keywords" />
         <!-- Match string literals -->
-        <IncludeRules context="match string" />
+        <AnyChar context="SelectString" String="UuLR&quot;'" lookAhead="1"/>
         <!-- Match GCC extensions -->
         <IncludeRules context="DetectGccExtensions##GCCExtensions" />
         <!-- Match most used namespaces and styles -->
-        <StringDetect attribute="Standard Classes" context="Standard Classes" String="std::" />
-        <StringDetect attribute="Boost Stuff" context="Boost Stuff" String="boost::" />
-        <StringDetect attribute="Boost Stuff" context="Boost Stuff" String="BOOST_" />
-        <StringDetect attribute="Internals" context="InternalsNS" String="detail::" />
-        <StringDetect attribute="Internals" context="InternalsNS" String="details::" />
-        <StringDetect attribute="Internals" context="InternalsNS" String="aux::" />
-        <StringDetect attribute="Internals" context="InternalsNS" String="internals::" />
+        <RegExpr context="DispatchNamespace" String="(std::)|(boost::|BOOST_)|details?::|aux::|internals::" lookAhead="1"/>
         <IncludeRules context="match identifier" />
-        <!-- Match preprocessor directives -->
-        <RegExpr attribute="Preprocessor" context="AfterHash" String="&ispphash;" lookAhead="true" />
-        <!-- Match punctuators -->
-        <AnyChar attribute="Separator Symbol" context="#stay" String="&separators;" />
-        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
         <!-- Match invalid symbols -->
         <AnyChar attribute="Error" context="#stay" String="$@`" />
       </context>
@@ -325,7 +336,7 @@
         <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
       </context>
 
-      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="##Doxygen" />
         <Detect2Chars attribute="Comment" context="#pop!Comment 1" char="/" char1="/" />
         <Detect2Chars attribute="Comment" context="#pop!Comment 2" char="/" char1="*" beginRegion="Comment" />
@@ -336,7 +347,7 @@
         <Detect2Chars attribute="Comment" context="MatchCommentAndRegionMarkers" char="/" char1="*" lookAhead="true" />
       </context>
 
-      <context name="MatchCommentAndRegionMarkers" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="MatchCommentAndRegionMarkers" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
         <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//BEGIN" beginRegion="Region1" firstNonSpace="true" />
         <StringDetect attribute="Region Marker" context="#pop!Region Marker" String="//END" endRegion="Region1" firstNonSpace="true" />
         <IncludeRules context="MatchComment" />
@@ -348,67 +359,133 @@
         <keyword attribute="Keyword" context="#stay" String="keywords" />
       </context>
 
-      <context name="match string" attribute="Normal Text" lineEndContext="#pop">
-        <DetectChar attribute="String" context="String" char="&quot;" />
-        <Detect2Chars attribute="String" context="String" char="U" char1="&quot;" />
-        <Detect2Chars attribute="String" context="String16" char="u" char1="&quot;" />
-        <Detect2Chars attribute="String" context="String16" char="L" char1="&quot;" />
-        <StringDetect attribute="String" context="String8" String="u8&quot;" />
-        <Detect2Chars attribute="Raw String Delimiter" context="RawString" char="R" char1="&quot;" />
-        <StringDetect attribute="Raw String Delimiter" context="RawString" String="uR&quot;" />
-        <StringDetect attribute="Raw String Delimiter" context="RawString" String="UR&quot;" />
-        <StringDetect attribute="Raw String Delimiter" context="RawString" String="LR&quot;" />
-        <StringDetect attribute="Raw String Delimiter" context="RawString" String="u8R&quot;" />
-        <DetectChar attribute="Char" context="Char8 Literal" char="'" />
-        <Detect2Chars attribute="Char" context="Char16 Literal" char="L" char1="'" />
-        <Detect2Chars attribute="Char" context="Char16 Literal" char="u" char1="'" />
-        <Detect2Chars attribute="Char" context="Char32 Literal" char="U" char1="'" />
-        <StringDetect attribute="Char" context="Char8 Literal" String="u8'" />
+
+      <context name="SelectStringPP" attribute="Preprocessor" lineEndContext="#pop">
+        <IncludeRules context="SelectString"/>
       </context>
+      <context name="SelectString" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String8" char="&quot;"/>
+        <DetectChar attribute="Char" context="#pop!Char8" char="'"/>
+        <Detect2Chars context="#pop!SelectStringPrefix" char="U" char1="&quot;" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectStringPrefix" char="u" char1="&quot;" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectStringPrefix" char="L" char1="&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!SelectStringPrefix" String="u8&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="R&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="uR&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="UR&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="LR&quot;" lookAhead="1"/>
+        <StringDetect context="#pop!RawString" String="u8R&quot;" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectCharPrefix" char="U" char1="'" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectCharPrefix" char="u" char1="'" lookAhead="1"/>
+        <Detect2Chars context="#pop!SelectCharPrefix" char="L" char1="'" lookAhead="1"/>
+        <StringDetect context="#pop!SelectCharPrefix" String="u8'" lookAhead="1"/>
 
+        <!-- match identifier -->
+        <keyword attribute="Data Type" context="#pop" String="types"/>
+        <RegExpr context="#pop!DispatchIdentifier" String="(&ident_internal2;)|(&ident_member2;)|(&ident_CONST;)|(&ident_type;)" lookAhead="1"/>
+        <DetectIdentifier context="#pop"/>
+      </context>
+
+      <context name="SelectStringPrefix" attribute="String" lineEndContext="#pop">
+        <Detect2Chars attribute="String Literal Prefix" context="#pop!StringPrefix8" char="u" char1="8"/>
+        <AnyChar attribute="String Literal Prefix" context="#pop!StringPrefix16" String="uL"/>
+        <DetectChar attribute="String Literal Prefix" context="#pop!StringPrefix32" char="U"/>
+      </context>
+      <context name="StringPrefix8" attribute="String" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String8" char="&quot;"/>
+      </context>
+      <context name="StringPrefix16" attribute="String" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String16" char="&quot;"/>
+      </context>
+      <context name="StringPrefix32" attribute="String" lineEndContext="#pop">
+        <DetectChar attribute="String" context="#pop!String32" char="&quot;"/>
+      </context>
+
+      <context name="SelectCharPrefix" attribute="String" lineEndContext="#pop">
+        <Detect2Chars attribute="Char Literal Prefix" context="#pop!CharPrefix8" char="u" char1="8"/>
+        <AnyChar attribute="Char Literal Prefix" context="#pop!CharPrefix16" String="uL"/>
+        <DetectChar attribute="Char Literal Prefix" context="#pop!CharPrefix32" char="U"/>
+      </context>
+      <context name="CharPrefix8" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="#pop!Char8" char="'"/>
+      </context>
+      <context name="CharPrefix16" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="#pop!Char16" char="'"/>
+      </context>
+      <context name="CharPrefix32" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="#pop!Char32" char="'"/>
+      </context>
+
       <context name="match identifier" attribute="Normal Text" lineEndContext="#pop">
         <keyword attribute="Data Type" context="#stay" String="types" />
         <keyword attribute="Type Modifiers" context="#stay" String="modifiers" />
         <keyword attribute="Standard Macros" context="#stay" String="StdMacros" />
-        <RegExpr attribute="Internals" context="#stay" String="_[a-zA-Z0-9_]+|[a-zA-Z][a-zA-Z0-9_]*__\b" />
-        <RegExpr attribute="Data Members (m_*)" context="#stay" String="m_[a-zA-Z0-9_]+|[a-z][a-zA-Z0-9_]*_\b" />
-        <RegExpr attribute="Globals (g_*)" context="#stay" String="g_[a-zA-Z0-9_]+" />
-        <RegExpr attribute="Statics (s_*)" context="#stay" String="s_[a-zA-Z0-9_]+" />
-        <RegExpr attribute="CONSTS/MACROS" context="#stay" String="[A-Z][A-Z0-9_]{2,}\b" />
-        <RegExpr attribute="Types (*_t/*_type)" context="#stay" String="[a-zA-Z][a-zA-Z0-9_]*_t(ype)?\b" />
+        <RegExpr context="DispatchIdentifier" String="(&ident_internal;)|(&ident_member;)|(&ident_CONST;)|(&ident_type;)|(&ident_global;)|&ident_static_prefix;" lookAhead="1"/>
         <DetectIdentifier />
       </context>
+      <context name="DispatchIdentifier" attribute="Normal Text" lineEndContext="#pop">
+        <StringDetect context="#pop" String="%2" dynamic="1" attribute="Data Members (m_*)"/>
+        <StringDetect context="#pop" String="%4" dynamic="1" attribute="Types (*_t/*_type)"/>
+        <StringDetect context="#pop" String="%3" dynamic="1" attribute="CONSTS/MACROS"/>
+        <StringDetect context="#pop" String="%1" dynamic="1" attribute="Internals"/>
+        <StringDetect context="#pop" String="%5" dynamic="1" attribute="Globals (g_*)"/>
+        <DetectIdentifier context="#pop" attribute="Statics (s_*)"/>
+      </context>
 
-      <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="DispatchNamespace" attribute="Normal Text" lineEndContext="#pop">
+        <StringDetect context="#pop!Standard Classes" String="%1" dynamic="1" attribute="Standard Classes"/>
+        <StringDetect context="#pop!Boost Stuff" String="%2" dynamic="1" attribute="Boost Stuff"/>
+        <DetectIdentifier context="#pop!InternalsNS" attribute="Internals"/>
+      </context>
+
+      <context name="DispatchNamespacePP" attribute="Preprocessor" lineEndContext="#pop">
+        <StringDetect context="#pop!Standard Classes In PP" String="%1" dynamic="1" attribute="Standard Classes"/>
+        <StringDetect context="#pop!Boost Stuff In PP" String="%2" dynamic="1" attribute="Boost Stuff"/>
+        <DetectIdentifier context="#pop!InternalsNS In PP" attribute="Internals"/>
+      </context>
+
+      <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
         <RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|&int;(?:&exp_float;|\.&int;?&exp_float;?)" />
+        <WordDetect attribute="Decimal" context="IntSuffix" String="0" weakDeliminator="."/>
         <IncludeRules context="Integer" />
       </context>
 
-      <context name="Integer" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="Integer" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar context="#pop!IntStartsWith0" char="0" lookAhead="1"/>
+        <RegExpr attribute="Decimal" context="IntSuffix" String="&int;" />
+        <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']++" />
+      </context>
+      <context name="IntStartsWith0" attribute="Normal Text" lineEndContext="#pop">
         <RegExpr attribute="Hex" context="IntSuffix" String="0[xX]&hex_int;" />
         <RegExpr attribute="Binary" context="IntSuffix" String="0[Bb][01](?:'?[01]++)*+" />
         <RegExpr attribute="Octal" context="IntSuffix" String="0(?:'?[0-7]++)++" />
-        <RegExpr attribute="Decimal" context="IntSuffix" String="0(?![xXbB0-9])|[1-9](?:'?[0-9]++)*+" />
-        <RegExpr attribute="Error" context="#pop" String="[._0-9A-Za-z']++" />
+        <DetectChar attribute="Decimal" context="IntSuffix" char="0"/>
       </context>
 
-      <context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">
+      <context name="IntSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
         <DetectChar attribute="Error" context="#stay" char="'" />
-        <AnyChar attribute="Error" context="#pop!IntSuffixPattern" String="uUlLimunshyd_" lookAhead="true" />
+        <AnyChar context="#pop!IntSuffixPattern" String="uUlLzZimunshyd_" lookAhead="1"/>
       </context>
 
-      <context name="IntSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">
-        <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="([Uu][Ll]{0,2}|[Ll]{0,2}[Uu]?)\b" />
+      <context name="IntSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
+        <DetectChar context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1"/>
+        <!-- https://en.cppreference.com/w/cpp/language/integer_literal#The_type_of_the_literal -->
+        <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="([Uu](LL?|ll?|[Zz])?|(LL?|ll?|[Zz])[Uu]?)\b"/>
         <!-- https://en.cppreference.com/w/cpp/language/user_literal#Standard_library -->
-        <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|[hyd])\b" />
-        <DetectChar attribute="Error" context="#pop!NumericUserSuffixPattern" char="_" lookAhead="true" />
+        <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|[hyd])\b"/>
       </context>
 
-      <context name="FloatSuffix" attribute="Error" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="NumericSuffixError">
-        <AnyChar attribute="Standard Suffix" context="NumericSuffixError" String="fFlL" />
+      <context name="FloatSuffix" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
+        <DetectChar attribute="Error" context="#stay" char="'" />
+        <AnyChar context="#pop!FloatSuffixPattern" String="fFlLbBimshd_" lookAhead="1"/>
+      </context>
+
+      <context name="FloatSuffixPattern" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="NumericSuffixError">
+        <DetectChar context="#pop!NumericUserSuffixPattern" char="_" lookAhead="1"/>
+        <!-- https://en.cppreference.com/w/cpp/language/floating_literal#Syntax -->
+        <RegExpr attribute="Standard Suffix" context="NumericSuffixError" String="[fF](?:16|32|64|128)?|[lL]|bf16|BF16"/>
         <!-- https://en.cppreference.com/w/cpp/language/user_literal#Standard_library -->
-        <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|h)\b" />
-        <DetectChar attribute="Error" context="#pop!NumericUserSuffixPattern" char="_" lookAhead="true" />
+        <RegExpr attribute="Standard Classes" context="NumericSuffixError" String="(?:i[fl]?|min|[mun]?s|[hd])\b"/>
       </context>
 
       <context name="NumericUserSuffixPattern" attribute="Error" lineEndContext="#pop#pop">
@@ -419,87 +496,109 @@
         must be separated from the operator with whitespace or parentheses in the source
         -->
         <RegExpr attribute="Error" context="#pop#pop" String="_[eEpP][+-]" />
-        <RegExpr attribute="UDL Numeric Suffix" context="NumericSuffixError" String="_[_[:alnum:]]*" />
+        <DetectIdentifier attribute="UDL Numeric Suffix" context="NumericSuffixError"/>
       </context>
 
-      <context name="NumericSuffixError" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="true" fallthroughContext="#pop#pop#pop">
-        <RegExpr attribute="Error" context="#pop#pop#pop" String="\.[_0-9A-Za-z]*|[_0-9A-Za-z]+" />
+      <context name="NumericSuffixError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
+        <AnyChar attribute="Error" String=".'0123456789"/>
+        <DetectIdentifier attribute="Error"/>
       </context>
 
-      <context name="CheckUDLOperator" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="CheckUDLOperator" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
         <DetectSpaces />
         <Detect2Chars attribute="String" context="UDLOperatorName" char="&quot;" char1="&quot;" />
       </context>
 
-      <context name="UDLOperatorName" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!IdentifierError">
+      <context name="UDLOperatorName" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!IdentifierError">
         <DetectSpaces />
         <RegExpr attribute="Normal Text" context="#pop#pop" String="_[_[:alnum:]]*\b" />
       </context>
 
-      <context name="IdentifierError" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop">
+      <context name="IdentifierError" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop">
         <RegExpr attribute="Error" context="#pop#pop" String=".[^\s()]*" />
       </context>
 
 
-      <context name="Char8 Literal" attribute="Char" lineEndContext="#pop" fallthrough="true" fallthroughContext="Char Literal Close">
-        <RegExpr attribute="String Char" context="Char Literal Close" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})" />
-        <DetectChar attribute="Error" context="#pop" char="'" />
-        <RegExpr attribute="Char" context="Char Literal Close" String="." />
+      <context name="Char8" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
+        <HlCStringChar attribute="String Char" context="CharClose"/>
+        <IncludeRules context="FindSingleChar"/>
       </context>
 
-      <context name="Char16 Literal" attribute="Char" lineEndContext="#pop" fallthrough="true" fallthroughContext="Char Literal Close">
-        <RegExpr attribute="String Char" context="Char Literal Close" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4})" />
-        <DetectChar attribute="Error" context="#pop" char="'" />
-        <RegExpr attribute="Char" context="Char Literal Close" String="." />
+      <context name="Char16" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
+        <RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4})|" />
+        <IncludeRules context="FindSingleChar"/>
       </context>
 
-      <context name="Char32 Literal" attribute="Char" lineEndContext="#pop" fallthrough="true" fallthroughContext="Char Literal Close">
-        <RegExpr attribute="String Char" context="Char Literal Close" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,8}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})" />
+      <context name="Char32" attribute="Char" lineEndContext="#pop" fallthroughContext="CharClose">
+        <RegExpr attribute="String Char" context="CharClose" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|x[0-9A-Fa-f]{1,8}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|" />
+        <IncludeRules context="FindSingleChar"/>
+      </context>
+
+      <context name="FindSingleChar" attribute="Char" lineEndContext="#pop">
         <DetectChar attribute="Error" context="#pop" char="'" />
-        <RegExpr attribute="Char" context="Char Literal Close" String="." />
+        <RegExpr attribute="Char" context="CharClose" String="." />
       </context>
 
-      <context name="Char Literal Close" attribute="Error" lineEndContext="#pop#pop">
+      <context name="CharClose" attribute="Error" lineEndContext="#pop#pop">
         <DetectChar attribute="Char" context="#pop#pop" char="'" />
       </context>
 
 
-      <context name="String" attribute="String" lineEndContext="#pop">
+      <context name="String8" attribute="String" lineEndContext="#pop">
         <IncludeRules context="string normal char" />
-        <RegExpr attribute="String Char" context="StringNoHex" String="\\x[0-9A-Fa-f]{1,8}" />
+        <Detect2Chars context="String8EscapeX" char="\" char1="x" lookAhead="1"/>
         <IncludeRules context="string special char" />
       </context>
+      <context name="String8EscapeX" attribute="String" lineEndContext="#pop">
+        <HlCStringChar attribute="String Char" context="#pop!StringNoHex"/>
+        <IncludeRules context="string special char x" />
+      </context>
 
-      <context name="String8" attribute="String" lineEndContext="#pop">
+      <context name="String16" attribute="String" lineEndContext="#pop">
         <IncludeRules context="string normal char" />
-        <RegExpr attribute="String Char" context="StringNoHex" String="\\x[0-9A-Fa-f]{1,2}" />
+        <Detect2Chars context="String16EscapeX" char="\" char1="x" lookAhead="1"/>
         <IncludeRules context="string special char" />
       </context>
+      <context name="String16EscapeX" attribute="String" lineEndContext="#pop">
+        <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,4}" />
+        <IncludeRules context="string special char x" />
+      </context>
 
-      <context name="String16" attribute="String" lineEndContext="#pop">
+      <context name="String32" attribute="String" lineEndContext="#pop">
         <IncludeRules context="string normal char" />
-        <RegExpr attribute="String Char" context="StringNoHex" String="\\x[0-9A-Fa-f]{1,4}" />
+        <Detect2Chars context="String32EscapeX" char="\" char1="x" lookAhead="1"/>
         <IncludeRules context="string special char" />
       </context>
+      <context name="String32EscapeX" attribute="String" lineEndContext="#pop">
+        <RegExpr attribute="String Char" context="#pop!StringNoHex" String="\\x[0-9A-Fa-f]{1,8}" />
+        <IncludeRules context="string special char x" />
+      </context>
 
-      <context name="StringNoHex" attribute="Error" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="StringNoHex" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop">
         <RegExpr attribute="Error" context="#pop" String="[0-9A-Fa-f]{1,}" />
       </context>
 
       <context name="string special char" attribute="String" lineEndContext="#pop">
-        <RegExpr attribute="String Char" context="#stay" String="\\(?:[tnvbrfa'&quot;\\?]|[0-7]{1,3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})|&printf_like;|&format_like;" />
-        <RegExpr attribute="Error" context="#stay" String="\\(?:u[^&quot;]{0,3}|U[^&quot;]{0,7}|.)" />
-        <LineContinue attribute="String" context="#stay" />
+        <HlCStringChar attribute="String Char"/>
+        <!-- \x{n...} is defined in "string special char x" -->
+        <RegExpr attribute="String Char" String="\\(?:u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8}|u{[0-9A-Fa-f]+}|o{[0-7]+}|N{[- A-Z0-9]+})|&printf_like;|&format_like;"/>
+        <AnyChar attribute="String" String="%{}"/>
+        <RegExpr attribute="Error" String="\\(?:u{([0-9A-Fa-f]+|})?|u[0-9A-Fa-f]{0,3}|U[0-9A-Fa-f]{0,7}|o{([0-7]+|})?|N{([- A-Z0-9]+|})?|.)"/>
+        <LineContinue attribute="Separator Symbol"/>
       </context>
+      <context name="string special char x" attribute="String" lineEndContext="#pop">
+        <RegExpr attribute="String Char" String="\\x{[0-9A-Fa-f]+}" context="#pop"/>
+        <RegExpr attribute="Error" String="\\x({([0-9A-Fa-f]+|})?)?" context="#pop"/>
+      </context>
 
       <context name="string normal char" attribute="String" lineEndContext="#pop">
+        <DetectChar attribute="String" context="UDLStringSuffix" char="&quot;" />
         <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->
         <!-- % -> printf format ; {} -> std::format -->
         <RegExpr attribute="String" context="#stay" String="[^%\\&quot;{}]+" />
-        <DetectChar attribute="String" context="UDLStringSuffix" char="&quot;" />
       </context>
 
-      <context name="UDLStringSuffix" attribute="String" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+      <context name="UDLStringSuffix" attribute="String" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
         <WordDetect attribute="Standard Classes" context="#pop#pop" String="sv" />
         <WordDetect attribute="Standard Classes" context="#pop#pop" String="s" />
         <RegExpr attribute="UDL String Suffix" context="#pop#pop" String="_[_0-9A-Za-z]*\b" />
@@ -512,9 +611,10 @@
         <Detect2Chars attribute="Symbol" context="#pop" char="]" char1="]" />
         <StringDetect attribute="Symbol" context="#pop" String=":&gt;:&gt;" /> <!-- Digraph: ]] -->
         <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;" />
+        <IncludeRules context="match comments" />
+        <AnyChar attribute="Symbol" context="#stay" String="&punctuators;#" />
         <!-- Attributes may contain some text: [[deprecated("Reason text")]] -->
-        <DetectChar attribute="String" context="String" char="&quot;" />
+        <DetectChar attribute="String" context="String8" char="&quot;" />
         <AnyChar attribute="Decimal" context="Integer" String="0123456789" lookAhead="true" />
         <!-- This keyword may appear in Attribute context. For example in code:
         [[using CC: opt(1), debug]]
@@ -531,19 +631,23 @@
         <IncludeRules context="Attribute" />
       </context>
 
-      <context name="AttributeNamespace" attribute="Attribute" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
+      <context name="AttributeNamespace" attribute="Attribute" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectSpaces />
         <IncludeRules context="DetectNamespaceGccAttributes##GCCExtensions" />
         <DetectIdentifier />
       </context>
 
-      <context name="RawString" attribute="String" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!LineError">
-        <RegExpr attribute="Raw String Delimiter" context="#pop!InRawString" String="([^\(]{0,16})\(" beginRegion="Raw String" />
+      <context name="RawString" attribute="String" lineEndContext="#stay">
+        <AnyChar attribute="Raw String Literal Prefix" String="uUL8R"/>
+        <!-- A sequence of one or more basic character set, except parentheses, backslash and spaces,
+             at most 16 characters long -->
+        <RegExpr attribute="Raw String Delimiter" context="#pop!InRawString" String="&quot;([\x21-\x27\x2A-\x5B\x5D-\x7E]{0,16})\(" beginRegion="Raw String"/>
+        <RegExpr attribute="Error" context="#pop" String="&quot;(\s+|\w+\s*|&quot;|[^\s\w]+)?"/>
       </context>
 
       <context name="InRawString" attribute="Raw String" lineEndContext="#stay" dynamic="true">
         <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->
-        <RegExpr attribute="Raw String" context="#stay" String="[^%)]+" />
+        <RegExpr attribute="Raw String" context="#stay" String="[^%){}]+" />
         <RegExpr attribute="String Char" context="#stay" String="&printf_like;|&format_like;" />
         <StringDetect attribute="Raw String Delimiter" context="#pop" String=")%1&quot;" dynamic="true" endRegion="Raw String" />
       </context>
@@ -551,40 +655,44 @@
       <context name="Region Marker" attribute="Region Marker" lineEndContext="#pop" />
 
       <context name="DetectNSEnd" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char=":" char1=":"/>
+        <IncludeRules context="match comments and region markers" />
+        <AnyChar context="#pop" String="&ns_punctuators;&separators; &#9;#:" lookAhead="1"/>
         <!-- This keyword may appear in InternalsNS context. For example in code:
           details::some_class::template some_templated_static();
           and it should be displayed as keyword, not like part of details namespace...
           -->
-        <WordDetect attribute="Keyword" context="#stay" String="template" />
-        <DetectIdentifier context="#stay" />
-        <AnyChar attribute="Separator Symbol" context="#pop" String="&separators;" />
-        <AnyChar attribute="Symbol" context="#pop" String="&ns_punctuators; &#9;" />
+        <WordDetect attribute="Keyword" context="#pop" String="template" />
+        <DetectIdentifier context="#stay"/>
       </context>
 
-      <context name="Standard Classes" attribute="Standard Classes" lineEndContext="#stay">
+      <context name="Standard Classes" attribute="Standard Classes" lineEndContext="#stay" fallthroughContext="#pop">
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="Boost Stuff" attribute="Boost Stuff" lineEndContext="#stay">
+      <context name="Boost Stuff" attribute="Boost Stuff" lineEndContext="#stay" fallthroughContext="#pop">
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="InternalsNS" attribute="Internals" lineEndContext="#stay">
+      <context name="InternalsNS" attribute="Internals" lineEndContext="#stay" fallthroughContext="#pop">
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="Standard Classes In PP" attribute="Standard Classes" lineEndContext="#pop">
+      <context name="Standard Classes In PP" attribute="Standard Classes" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="InPreprocessor" />
+        <Detect2Chars attribute="Symbol" char="#" char1="#"/>
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="Boost Stuff In PP" attribute="Boost Stuff" lineEndContext="#pop">
+      <context name="Boost Stuff In PP" attribute="Boost Stuff" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="InPreprocessor" />
+        <Detect2Chars attribute="Symbol" char="#" char1="#"/>
         <IncludeRules context="DetectNSEnd" />
       </context>
 
-      <context name="InternalsNS In PP" attribute="Internals" lineEndContext="#pop">
+      <context name="InternalsNS In PP" attribute="Internals" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="InPreprocessor" />
+        <Detect2Chars attribute="Symbol" char="#" char1="#"/>
         <IncludeRules context="DetectNSEnd" />
       </context>
 
@@ -603,51 +711,52 @@
         <DetectIdentifier />
       </context>
 
-      <context name="AfterHash" attribute="Error" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!AfterHashLineError">
-        <RegExpr attribute="Preprocessor" context="#pop!PreprocessorCmd" String="&pphash;(?=.)" firstNonSpace="true" />
-      </context>
-
-      <context name="AfterHashLineError" attribute="Region Marker" lineEndContext="#pop">
-        <LineContinue attribute="Error" context="#stay" />
-        <RegExpr attribute="Error" context="#pop!LineError" String="[^\\]+" />
+      <context name="AfterHash" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop!LineError">
+        <RegExpr attribute="Preprocessor" context="#pop!PreprocessorCmd" String="&pphash;(?=.)|" firstNonSpace="true" />
       </context>
 
       <context name="LineError" attribute="Error" lineEndContext="#pop">
         <LineContinue attribute="Error" context="#stay" />
+        <RegExpr attribute="Error" context="#stay" String="[^\\]+" />
       </context>
 
-      <context name="PreprocessorCmd" attribute="Error" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!AfterHashLineError">
+
+      <context name="PreprocessorCmd" attribute="Error" lineEndContext="#pop" fallthroughContext="#pop!LineError">
         <WordDetect attribute="Preprocessor" context="#pop!Include" String="include" />
-        <keyword attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="preprocessorIfDef" beginRegion="PP" lookAhead="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="ifdef" beginRegion="PP" lookAhead="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="ifndef" beginRegion="PP" lookAhead="true" />
         <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIf" String="if" beginRegion="PP" lookAhead="true" />
         <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIf" String="elif" endRegion="PP" beginRegion="PP" lookAhead="true" />
         <WordDetect attribute="Preprocessor" context="PreprocessorEndOfLineSpace" String="else" endRegion="PP" beginRegion="PP" />
         <WordDetect attribute="Preprocessor" context="PreprocessorEndOfLineSpace" String="endif" endRegion="PP" />
-        <keyword attribute="Preprocessor" context="#pop!Preprocessor" String="preprocessorOther" />
+        <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="elifdef" endRegion="PP" beginRegion="PP" lookAhead="true" />
+        <WordDetect attribute="Preprocessor" context="#pop!PreprocessorIfDef" String="elifndef" endRegion="PP" beginRegion="PP" lookAhead="true" />
         <keyword attribute="Preprocessor" context="#pop!Define" String="preprocessorDefine" />
+        <keyword attribute="Preprocessor" context="#pop!Preprocessor" String="preprocessorOther" />
         <!-- GCC extension -->
         <WordDetect attribute="Preprocessor" context="#pop!Include" String="include_next" />
         <Int attribute="Preprocessor" context="#pop!Preprocessor"/>
       </context>
 
-      <context name="Include" attribute="Preprocessor" lineEndContext="#pop" >
-        <LineContinue attribute="Preprocessor" context="#stay" />
+      <context name="Include" attribute="Preprocessor" lineEndContext="#pop">
+        <DetectSpaces/>
         <RangeDetect attribute="Prep. Lib" context="PreprocessorEndOfLineSpace" char="&quot;" char1="&quot;" />
         <RangeDetect attribute="Prep. Lib" context="PreprocessorEndOfLineSpace" char="&lt;" char1="&gt;" />
         <IncludeRules context="Preprocessor" />
+        <DetectIdentifier/>
       </context>
 
-      <context name="PreprocessorIfDef" attribute="Preprocessor" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!LineError">
+      <context name="PreprocessorIfDef" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!LineError">
         <RegExpr attribute="Preprocessor" context="#pop!Preprocessor" String="\w+\s+([_A-Za-z][A-Za-z0-9]*\s*|(?=//|/\*))" />
       </context>
 
-      <context name="PreprocessorIf" attribute="Preprocessor" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!LineError">
+      <context name="PreprocessorIf" attribute="Preprocessor" lineEndContext="#pop" fallthroughContext="#pop!LineError">
         <RegExpr attribute="Preprocessor" context="#pop!Inscoped" String="\w+&ppcond1;" />
         <RegExpr attribute="Preprocessor" context="#pop!Outscoped" String="\w+&ppcond0;" />
         <RegExpr attribute="Preprocessor" context="#pop!Preprocessor" String="\w+\s+(?=[^\s])" />
       </context>
 
-      <context name="PreprocessorEndOfLineSpace" attribute="Preprocessor" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop!LineError">
+      <context name="PreprocessorEndOfLineSpace" attribute="Preprocessor" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!LineError">
         <DetectSpaces />
         <IncludeRules context="match comments" />
       </context>
@@ -679,9 +788,9 @@
 
       <context name="In Define" attribute="Preprocessor" lineEndContext="#pop">
         <DetectSpaces/>
-        <IncludeRules context="InPreprocessor" />
-        <!-- Match scope regions -->
-        <AnyChar attribute="Symbol" context="#stay" String="{}" />
+        <LineContinue attribute="Separator Symbol" context="#stay" />
+        <!-- Match scope regions and punctuators (partial for fast path) -->
+        <AnyChar attribute="Symbol" context="#stay" String="#:(){}]+-*%=&gt;!|&amp;~^" />
         <!-- Detect attributes -->
         <Detect2Chars attribute="Symbol" context="Attribute In PP" char="[" char1="[" />
         <StringDetect attribute="Symbol" context="Attribute In PP" String="&lt;:&lt;:" /> <!-- Digraph: [[ -->
@@ -695,23 +804,15 @@
         <!-- Match keywords -->
         <IncludeRules context="match keywords" />
         <!-- Match string literals -->
-        <IncludeRules context="match string" />
+        <AnyChar context="SelectStringPP" String="UuLR&quot;'" lookAhead="1"/>
         <!-- Match GCC extensions -->
         <IncludeRules context="DetectGccExtensionsInPP##GCCExtensions" />
         <!-- Match most used namespaces and styles -->
-        <StringDetect attribute="Standard Classes" context="Standard Classes In PP" String="std::" />
-        <StringDetect attribute="Boost Stuff" context="Boost Stuff In PP" String="boost::" />
-        <StringDetect attribute="Boost Stuff" context="Boost Stuff In PP" String="BOOST_" />
-        <StringDetect attribute="Internals" context="InternalsNS In PP" String="detail::" />
-        <StringDetect attribute="Internals" context="InternalsNS In PP" String="details::" />
-        <StringDetect attribute="Internals" context="InternalsNS In PP" String="aux::" />
-        <StringDetect attribute="Internals" context="InternalsNS In PP" String="internals::" />
+        <RegExpr context="DispatchNamespacePP" String="(std::)|(boost::|BOOST_)|details?::|aux::|internals::" lookAhead="1"/>
         <keyword attribute="Standard Macros" context="#stay" String="InMacro" />
         <IncludeRules context="match identifier" />
-        <!-- Match preprocessor directives -->
-        <DetectChar attribute="Preprocessor" context="#stay" char="#" />
         <!-- Match invalid symbols -->
-        <AnyChar attribute="Error" context="#stay" String="$@`" />
+        <AnyChar attribute="Error" context="#stay" String="$@`\" />
       </context>
 
       <context name="InPreprocessor" attribute="Normal Text" lineEndContext="#pop">
@@ -726,13 +827,13 @@
         <!-- prevent incorrect highlighting in case of not closed properly comment block -->
         <Detect2Chars attribute="Comment" context="#stay" char="*" char1="/" />
         <IncludeRules context="match comments" />
-        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
         <LineContinue context="#stay" />
       </context>
 
       <context name="Outscoped" attribute="Comment" lineEndContext="#stay">
         <DetectSpaces />
-        <RegExpr attribute="Preprocessor" context="Outscoped AfterHash" String="&ispphash;" firstNonSpace="true" lookAhead="true" />
+        <RegExpr attribute="Preprocessor" context="Outscoped AfterHash" String="&ispphash;|" firstNonSpace="true" lookAhead="true" />
         <IncludeRules context="Outscoped Common" />
       </context>
 
@@ -748,18 +849,18 @@
 
       <context name="Outscoped 2" attribute="Comment" lineEndContext="#stay">
         <IncludeRules context="Outscoped Common" />
-        <RegExpr attribute="Preprocessor" context="#pop!PreprocessorEndOfLineSpace" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Preprocessor" context="#pop!PreprocessorEndOfLineSpace" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
       </context>
 
       <context name="Inscoped" attribute="Normal Text" lineEndContext="#stay">
         <DetectSpaces />
-        <RegExpr attribute="Preprocessor" context="Inscoped AfterHash" String="&ispphash;" firstNonSpace="true" lookAhead="true" />
+        <RegExpr attribute="Preprocessor" context="Inscoped AfterHash" String="&ispphash;|" firstNonSpace="true" lookAhead="true" />
         <IncludeRules context="Main" />
       </context>
 
-      <context name="Inscoped AfterHash" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop!AfterHash">
+      <context name="Inscoped AfterHash" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!AfterHash">
         <DetectSpaces />
-        <RegExpr attribute="Preprocessor" context="#pop!Outscoped 2" String="&pphash;el(?:se|if)" endRegion="PP" beginRegion="PP"/>
+        <RegExpr attribute="Preprocessor" context="#pop!Outscoped 2" String="&pphash;el(?:se|if(n?def)?)" endRegion="PP" beginRegion="PP"/>
         <RegExpr attribute="Preprocessor" context="#pop#pop!PreprocessorEndOfLineSpace" String="&pphash;endif\b" endRegion="PP" />
       </context>
 
@@ -770,9 +871,9 @@
         <!-- prevent incorrect highlighting in case of not closed properly comment block -->
         <Detect2Chars attribute="Comment" context="#stay" char="*" char1="/" />
         <IncludeRules context="match comments" />
-        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if" beginRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Comment" context="#stay" String="&pphash;el(se|if)" beginRegion="PP" endRegion="PP" firstNonSpace="true" />
-        <RegExpr attribute="Comment" context="PreprocessorEndOfLineSpace" String="&pphash;endif" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="Outscoped intern" String="&pphash;if|" beginRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="#stay" String="&pphash;el(se|if(n?def)?)|" beginRegion="PP" endRegion="PP" firstNonSpace="true" />
+        <RegExpr attribute="Comment" context="PreprocessorEndOfLineSpace" String="&pphash;endif|" endRegion="PP" firstNonSpace="true" />
       </context>
     </contexts>
 
@@ -790,10 +891,13 @@
       <itemData name="Binary"             defStyleNum="dsBaseN"     spellChecking="false" />
       <itemData name="Float"              defStyleNum="dsFloat"     spellChecking="false" />
       <itemData name="Char"               defStyleNum="dsChar"      spellChecking="false" />
+      <itemData name="Char Literal Prefix" defStyleNum="dsChar"     spellChecking="false" />
       <itemData name="String"             defStyleNum="dsString"    spellChecking="true"  />
       <itemData name="String Char"        defStyleNum="dsSpecialChar" spellChecking="false" />
-      <itemData name="Raw String"         defStyleNum="dsVerbatimString" spellChecking="true"  />
-      <itemData name="Raw String Delimiter" defStyleNum="dsString"  spellChecking="false"  />
+      <itemData name="String Literal Prefix" defStyleNum="dsString" spellChecking="true" />
+      <itemData name="Raw String"         defStyleNum="dsVerbatimString" spellChecking="true" />
+      <itemData name="Raw String Delimiter" defStyleNum="dsString"  spellChecking="false" />
+      <itemData name="Raw String Literal Prefix" defStyleNum="dsString" spellChecking="false" />
       <itemData name="Comment"            defStyleNum="dsComment"   spellChecking="true"  />
       <itemData name="Symbol"             defStyleNum="dsOperator"  spellChecking="false" />
       <itemData name="Separator Symbol"   defStyleNum="dsOperator"  spellChecking="false" />
@@ -809,15 +913,15 @@
       <itemData name="Boost Stuff"        defStyleNum="dsExtension" spellChecking="false" />
       <itemData name="Internals"          defStyleNum="dsNormal"    spellChecking="false" color="#808080" selColor="#808080" />
       <itemData name="Region Marker"      defStyleNum="dsRegionMarker" spellChecking="false" />
-      <itemData name="UDL Numeric Suffix" defStyleNum="dsDecVal"    spellChecking="false" />
-      <itemData name="UDL String Suffix"  defStyleNum="dsString"    spellChecking="false" />
+      <itemData name="UDL Numeric Suffix" defStyleNum="dsOperator"  spellChecking="false" />
+      <itemData name="UDL String Suffix"  defStyleNum="dsOperator"  spellChecking="false" />
       <itemData name="Standard Suffix"    defStyleNum="dsBuiltIn"   spellChecking="false" />
       <itemData name="Error"              defStyleNum="dsError"     spellChecking="false" />
     </itemDatas>
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace"/>
       <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" additionalDeliminator="#&quot;" />
diff --git a/xml/isocpp.xml.patch b/xml/isocpp.xml.patch
new file mode 100644
--- /dev/null
+++ b/xml/isocpp.xml.patch
@@ -0,0 +1,12 @@
+--- isocpp.xml.2	2022-10-28 15:30:42.000000000 -0700
++++ isocpp.xml	2022-10-28 15:30:47.000000000 -0700
+@@ -445,8 +445,8 @@
+       </context>
+ 
+       <context name="Number" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+-        <WordDetect attribute="Decimal" context="IntSuffix" String="0" weakDeliminator="."/>
+         <RegExpr attribute="Float" context="FloatSuffix" String="\.&int;&exp_float;?|0[xX](?:\.&hex_int;&exp_hexfloat;?|&hex_int;(?:&exp_hexfloat;|\.&hex_int;?&exp_hexfloat;?))|&int;(?:&exp_float;|\.&int;?&exp_float;?)" />
++        <WordDetect attribute="Decimal" context="IntSuffix" String="0" weakDeliminator="."/>
+         <IncludeRules context="Integer" />
+       </context>
+ 
diff --git a/xml/j.xml b/xml/j.xml
--- a/xml/j.xml
+++ b/xml/j.xml
@@ -1,121 +1,129 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-Changes:
-
-Version 1.5 (2015-04-29) by Igor Zhuravlov
-- language/@kateversion upgraded from "2.4" to "3.4"
-
-Version 1.4 (2015-04-20) by Igor Zhuravlov
-- merge versions 1.2 and 1.3
-- removed not used def and defc entities
-- approached color scheme to JQt
-- separated out color scheme to j14.katehlcolor file
-- dropped ExpArg: n. m. u. v. x. y.
-- reformatted a bit
-
-Version 1.3 (2014-05-26) by greg heil
-- based on version 1.1
-- add Foldable feature
-- change color scheme
-- add def and defc entities
-- split long lines
-
-Version 1.2 (2013-09-29) by Igor Zhuravlov
-- fix Adverb regexp's pattern
-- fix Verb regexp's pattern
-
-Version 1.1 (2013-03-18) by Igor Zhuravlov
-- fix enum entity's exponent definition
-- rework String regexp's pattern
-- use entities in Number regexp's pattern
-- use entities in Control regexp's pattern
-
-Version 1.0 (2012-03-21) by Igor Zhuravlov
-- initial release
-
--->
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-  <!ENTITY unum "\d+">                                 <!-- Unsigned integer number -->
-  <!ENTITY anum "[a-z\d]+">                            <!-- Non-10-based unsigned integer number, e.g. 1a -->
-  <!ENTITY bnum "\b&unum;b_?&anum;(\.&anum;)\b">       <!-- Based integer number, e.g. 36b_1a.z2 -->
-  <!ENTITY inum "_?&unum;">                            <!-- Integer number -->
+  <!ENTITY unum "\d+">                                 <!-- Unsigned integer number, e.g. 123 -->
+  <!ENTITY inum "_?&unum;">                            <!-- Integer number, e.g. _123 -->
+  <!ENTITY anum "[a-z\d]+">                            <!-- Non-decimal unsigned integer number, e.g. 1a -->
+  <!ENTITY bnum "\b_?&unum;b_?&anum;(\.&anum;)?\b">    <!-- Non-decimal number, e.g. _36b_1a.z2 -->
   <!ENTITY xnum "\b&inum;x\b">                         <!-- Extended precision integer number, e.g. _123x -->
   <!ENTITY rnum "\b&inum;r&inum;\b">                   <!-- Rational number, e.g. _1r23 -->
-  <!ENTITY fnum "&inum;(\.&unum;)?">                   <!-- Floating point number, e.g. 1.23 -->
-  <!ENTITY enum "(&fnum;(e&inum;)?|_?_|_\.)">          <!-- Exponential (scientific) notation, e.g. 1.2e_3 -->
-  <!ENTITY cnum "&enum;((j|a[dr])&enum;)?">            <!-- Complex number, e.g. 1.2e3j4.5e_6 -->
-  <!ENTITY pnum "\b&cnum;([px]&cnum;)?(?![a-z\d_.])">  <!-- Number based on pi or e, e.g. 1j2p3j4 -->
-  <!ENTITY name "[a-zA-Z][a-zA-Z\d_]*">                <!-- Name -->
+  <!ENTITY fnum "&inum;(\.&unum;)?">                   <!-- Floating point number, e.g. _1.23 -->
+  <!ENTITY enum "(&fnum;(e&inum;)?|_?_|_\.)">          <!-- Exponential (scientific) notation, e.g. _1.2e_3 -->
+  <!ENTITY cnum "&enum;((j|a[dr])&enum;)?">            <!-- Complex number, e.g. _1.2e3j_4.5e_6 -->
+  <!ENTITY pnum "\b&cnum;([px]&cnum;)?(?![a-z\d_.])">  <!-- Number based on pi or on e, e.g. _1j2p3j4 -->
+  <!ENTITY name "[a-zA-Z]\w*">                         <!-- Name -->
   <!ENTITY lname "\b&name;_(&name;)?_\b">              <!-- Locative, a__ means a_base_ -->
   <!ENTITY ilname "\b&name;__&name;\b">                <!-- Indirect locative -->
 ]>
 <!--
-  j.xml syntax highlighting for J programming language under Kate
+  J language Syntax Highlighting Definition
+  See updates and changelog at https://github.com/jip/syntax-highlighting
 
-  J is a modern, high-level, general-purpose, high-performance, portable programming language
-  http://www.jsoftware.com
+  J is a high-level, general-purpose programming language
+  https://www.jsoftware.com
 
-  Kate is a KDE Advanced Text Editor
-  http://kate.kde.org/
+  This file is part of the KDE's KSyntaxHighlighting framework
+  https://invent.kde.org/frameworks/syntax-highlighting
+
+  SPDX-FileCopyrightText: 2012,2013,2015,2016,2020,2023,2026 Igor Zhuravlov <zhuravlov.ip@ya.ru>
+  SPDX-FileCopyrightText: 2014 greg heil <gheil.j@gmail.com>
+  SPDX-License-Identifier: GPL-3.0-or-later
 -->
 <language name="J"
           section="Scripts"
-          version="5"
+          version="7"
           kateversion="5.0"
-          extensions="*.ijs;*.ijt;*.IJS;*.IJT"
+          extensions="*.ijs;*.ijt;*.ijx"
           mimetype="text/x-j;text/x-jsrc"
           author="Igor Zhuravlov (zhuravlov.ip@ya.ru), greg heil (gheil.j@gmail.com)"
           indenter="normal"
           license="GPL">
   <highlighting>
+    <list name="controls">
+      <item>{{</item>
+      <item>}}</item>
+      <item>assert.</item>
+      <item>break.</item>
+      <item>case.</item>
+      <item>catch.</item>
+      <item>catchd.</item>
+      <item>catcht.</item>
+      <item>continue.</item>
+      <item>do.</item>
+      <item>else.</item>
+      <item>elseif.</item>
+      <item>end.</item>
+      <item>for.</item>
+      <item>fcase.</item>
+      <item>if.</item>
+      <item>return.</item>
+      <item>select.</item>
+      <item>throw.</item>
+      <item>try.</item>
+      <item>while.</item>
+      <item>whilst.</item>
+    </list>
     <contexts>
       <context attribute="Sentence" lineEndContext="#pop" name="sentence">
         <DetectSpaces/>
-        <RegExpr      attribute="Foldable"       context="#stay"        String=":\s*0|\bdefine\b" beginRegion="Fold"/>
-        <LineContinue attribute="Foldable"       context="#stay"        char=")" endRegion="Fold" column="0"/>
-        <StringDetect attribute="Comment"        context="#stay"        String="NB.(" beginRegion="Fold"/>
-        <StringDetect attribute="Comment"        context="#stay"        String="NB.)" endRegion="Fold"/>
+        <StringDetect attribute="Comment"        context="#stay"        String="NB.(" beginRegion="CommentBlock"/>
+        <StringDetect attribute="Comment"        context="#stay"        String="NB.)" endRegion="CommentBlock"/>
+        <StringDetect attribute="Annotation"     context="annotation"   String="NB. * "/>
         <StringDetect attribute="Comment"        context="comment line" String="NB."/>
+        <RegExpr      attribute="Foldable"       context="noun block"   String="(?&lt;![.\w])0\s+:\s*0|\bNote\s*&apos;" beginRegion="DefBlock"/>
+        <RegExpr      attribute="Foldable"       context="#stay"        String=":\s*0|\bdefine\b" beginRegion="DefBlock"/>
+        <LineContinue attribute="Foldable"       context="#stay"        char=")" endRegion="DefBlock" column="0"/>
+        <StringDetect attribute="Foldable"       context="#stay"        String="{{" beginRegion="DDBlock"/>
+        <StringDetect attribute="Foldable"       context="#stay"        String="}}" endRegion="DDBlock"/>
         <RegExpr      attribute="String"         context="#stay"        String="&apos;([^&apos;]|&apos;&apos;)*&apos;"/>
-        <RegExpr      attribute="Adverb"         context="#stay"        String="([/\\]\.|\b[bfMt]\.|\bt:|[~/\\}])(?![.:])"/>
-        <RegExpr      attribute="Verb"           context="#stay"        String="(_?\d:|p\.\.|[ACeEIjLor]\.|[_/\\iqsux]:|\{::|[=!\]]|[-&lt;&gt;+*%$|,#\{][.:]?|[;\[]:?|[~}&quot;ip][.:]|[?^]\.?)(?![.:])"/>
+        <RegExpr      attribute="Adverb"         context="#stay"        String="([/\\]\.|/\.\.|\]:|\b[bfM]\.|[~/\\}])(?![.:])"/>
+        <RegExpr      attribute="Verb"           context="#stay"        String="(_?\d:|p\.\.|[AcCeEIjLor]\.|__?:|[/\\iqsuxZ]:|\{::|[=!\]]|[-&lt;&gt;+*%$|,#\{][.:]?|[;\[]:?|[~}&quot;ip][.:]|[?^]\.?|\b[uv](\b|\.))(?![.:])"/>
         <RegExpr      attribute="Number"         context="#stay"        String="&bnum;|&xnum;|&rnum;|&pnum;"/>
-        <AnyChar      attribute="Parens"         context="#stay"        String="()"/>
-        <RegExpr      attribute="Conjunction"    context="#stay"        String="(&quot;|[@&amp;][.:]?|[.:][.:]?|[!D][.:]|&amp;\.:|[;dHT]\.|`:?|[LS^]:)(?![.:])"/>
-        <RegExpr      attribute="Control"        context="#stay"        String="\b(assert|break|f?case|catch[dt]?|continue|do|else(if)?|end|for(_&name;)?|(goto|label)_&name;|if|return|select|throw|try|whil(e|st))\.(?![.:])"/>
-        <Detect2Chars attribute="Copulae Global" context="#stay"        char="=" char1=":"/>
-        <Detect2Chars attribute="Copulae Local"  context="#stay"        char="=" char1="."/>
-        <RegExpr      attribute="ExpArg"         context="#stay"        String="\b[nmuvxy](?![\w:.])"/>
-        <RegExpr      attribute="Noun"           context="#stay"        String="\ba[.:](?![.:])"/>
+        <AnyChar      attribute="Parenthese"     context="#stay"        String="()"/>
+        <RegExpr      attribute="Conjunction"    context="#stay"        String="(&quot;|[:@&amp;][.:]?|;?\.|![.:]|&amp;\.:|[;[\]Hmt]\.|`:?|[LS^]:)(?![.:])"/>
+        <keyword      attribute="Control"        context="#stay"        String="controls"/>
+        <RegExpr      attribute="Control"        context="#stay"        String="\b(for|goto|label)_&name;\.(?![.:])"/>
+        <StringDetect attribute="Copulae Global" context="#stay"        String="=:"/>
+        <StringDetect attribute="Copulae Local"  context="#stay"        String="=."/>
+        <RegExpr      attribute="Noun"           context="#stay"        String="\b(a[.:](?![.:])|[mnxy](?![\w.:]))"/>
       </context>
+      <context attribute="NounBlock" lineEndContext="#stay" name="noun block">
+        <DetectChar   attribute="Foldable"       context="#pop"         char=")" endRegion="DefBlock" column="0"/>
+      </context>
+      <context attribute="Annotation" lineEndContext="#pop" name="annotation">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
       <context attribute="Comment" lineEndContext="#pop" name="comment line">
-        <DetectSpaces />
+        <DetectSpaces/>
         <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
       </context>
     </contexts>
     <itemDatas>
-      <itemData name="Sentence"       defStyleNum="dsNormal"/>
-      <itemData name="Adverb"         defStyleNum="dsKeyword"      spellChecking="false"/>
-      <itemData name="Comment"        defStyleNum="dsComment"      spellChecking="true"/>
-      <itemData name="Conjunction"    defStyleNum="dsKeyword"      spellChecking="false"/>
-      <itemData name="Control"        defStyleNum="dsKeyword"      spellChecking="false"/>
-      <itemData name="Copulae Global" defStyleNum="dsKeyword"      spellChecking="false"/>
-      <itemData name="Copulae Local"  defStyleNum="dsKeyword"      spellChecking="false"/>
-      <itemData name="ExpArg"         defStyleNum="dsKeyword"      spellChecking="false" italic="true"/>
-      <itemData name="Foldable"       defStyleNum="dsRegionMarker" spellChecking="false"/>
-      <itemData name="Noun"           defStyleNum="dsKeyword"      spellChecking="false" bold="true"/>
-      <itemData name="Number"         defStyleNum="dsDecVal"       spellChecking="false"/>
-      <itemData name="Parens"         defStyleNum="dsRegionMarker" spellChecking="false"/>
-      <itemData name="String"         defStyleNum="dsString"       spellChecking="false"/>
-      <itemData name="Verb"           defStyleNum="dsKeyword"      spellChecking="false"/>
+      <itemData name="Sentence"       defStyleNum="dsNormal"        spellChecking="false"/>
+      <itemData name="Adverb"         defStyleNum="dsOperator"      spellChecking="false" bold="true"/>
+      <itemData name="Annotation"     defStyleNum="dsAnnotation"    spellChecking="false"/>
+      <itemData name="Comment"        defStyleNum="dsComment"       spellChecking="true"/>
+      <itemData name="Conjunction"    defStyleNum="dsOperator"      spellChecking="false" bold="true"/>
+      <itemData name="Control"        defStyleNum="dsControlFlow"   spellChecking="false"/>
+      <itemData name="Copulae Global" defStyleNum="dsBuiltIn"       spellChecking="false"/>
+      <itemData name="Copulae Local"  defStyleNum="dsBuiltIn"       spellChecking="false" bold="false"/>
+      <itemData name="Foldable"       defStyleNum="dsRegionMarker"  spellChecking="false"/>
+      <itemData name="Noun"           defStyleNum="dsKeyword"       spellChecking="false"/>
+      <itemData name="NounBlock"      defStyleNum="dsNormal"        spellChecking="false"/>
+      <itemData name="Number"         defStyleNum="dsDecVal"        spellChecking="false"/>
+      <itemData name="Parenthese"     defStyleNum="dsRegionMarker"  spellChecking="false"/>
+      <itemData name="String"         defStyleNum="dsString"        spellChecking="false"/>
+      <itemData name="Verb"           defStyleNum="dsOperator"      spellChecking="false" bold="true"/>
     </itemDatas>
   </highlighting>
   <general>
+    <keywords casesensitive="true" weakDeliminator=".{}"/>
     <comments>
-      <comment name="multiLine" start="NB.(" end="NB.)" region="Fold"/>
-      <comment name="singleLine" start="NB."/>
+      <comment name="singleLine" start="NB." position="afterwhitespace"/>
+      <comment name="multiLine" start="NB.(" end="NB.)" region="CommentBlock"/>
     </comments>
     <folding indentationsensitive="true"/>
   </general>
diff --git a/xml/java.xml b/xml/java.xml
--- a/xml/java.xml
+++ b/xml/java.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY int "(?:[0-9]++(_++[0-9]++)*+)">
 	<!ENTITY hex "(?:[0-9a-fA-F]++(_++[0-9a-fA-F]++)*+)">
@@ -7,7 +7,7 @@
 	<!ENTITY float "(\b&int;(\.((&int;&exp;?+|&exp;)[fFdD]?\b|[fFdD]\b)?|&exp;[fFdD]?\b|[fFdD]\b)|\.&int;&exp;?[fFdD]?\b)">
 	<!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?&int;[fFdD]?\b">
 ]>
-<language name="Java" version="10" kateversion="5.62" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<language name="Java" version="13" kateversion="5.79" section="Sources" extensions="*.java" mimetype="text/x-java" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<list name="java15">
 			<item>ACTIVE</item>
@@ -154,7 +154,6 @@
 			<item>Any</item>
 			<item>AnyHolder</item>
 			<item>AnySeqHelper</item>
-			<item>AnySeqHelper</item>
 			<item>AnySeqHolder</item>
 			<item>AppConfigurationEntry</item>
 			<item>AppConfigurationEntry.LoginModuleControlFlag</item>
@@ -171,7 +170,6 @@
 			<item>AreaAveragingScaleFilter</item>
 			<item>ArithmeticException</item>
 			<item>Array</item>
-			<item>Array</item>
 			<item>ArrayBlockingQueue</item>
 			<item>ArrayIndexOutOfBoundsException</item>
 			<item>ArrayList</item>
@@ -195,20 +193,15 @@
 			<item>AtomicStampedReference</item>
 			<item>Attr</item>
 			<item>Attribute</item>
-			<item>Attribute</item>
-			<item>Attribute</item>
 			<item>AttributeChangeNotification</item>
 			<item>AttributeChangeNotificationFilter</item>
 			<item>AttributeException</item>
 			<item>AttributeInUseException</item>
 			<item>AttributeList</item>
-			<item>AttributeList</item>
-			<item>AttributeList</item>
 			<item>AttributeListImpl</item>
 			<item>AttributeModificationException</item>
 			<item>AttributeNotFoundException</item>
 			<item>AttributeSet</item>
-			<item>AttributeSet</item>
 			<item>AttributeSet.CharacterAttribute</item>
 			<item>AttributeSet.ColorAttribute</item>
 			<item>AttributeSet.FontAttribute</item>
@@ -219,8 +212,6 @@
 			<item>AttributedCharacterIterator.Attribute</item>
 			<item>AttributedString</item>
 			<item>Attributes</item>
-			<item>Attributes</item>
-			<item>Attributes</item>
 			<item>Attributes.Name</item>
 			<item>Attributes2</item>
 			<item>Attributes2Impl</item>
@@ -238,7 +229,6 @@
 			<item>AuthPermission</item>
 			<item>AuthProvider</item>
 			<item>AuthenticationException</item>
-			<item>AuthenticationException</item>
 			<item>AuthenticationNotSupportedException</item>
 			<item>Authenticator</item>
 			<item>Authenticator.RequestorType</item>
@@ -370,7 +360,6 @@
 			<item>BinaryRefAddr</item>
 			<item>BindException</item>
 			<item>Binding</item>
-			<item>Binding</item>
 			<item>BindingHelper</item>
 			<item>BindingHolder</item>
 			<item>BindingIterator</item>
@@ -407,7 +396,6 @@
 			<item>BorderUIResource.TitledBorderUIResource</item>
 			<item>BoundedRangeModel</item>
 			<item>Bounds</item>
-			<item>Bounds</item>
 			<item>Box</item>
 			<item>Box.Filler</item>
 			<item>BoxLayout</item>
@@ -494,21 +482,14 @@
 			<item>CertStoreParameters</item>
 			<item>CertStoreSpi</item>
 			<item>Certificate</item>
-			<item>Certificate</item>
-			<item>Certificate</item>
 			<item>Certificate.CertificateRep</item>
 			<item>CertificateEncodingException</item>
-			<item>CertificateEncodingException</item>
 			<item>CertificateException</item>
-			<item>CertificateException</item>
 			<item>CertificateExpiredException</item>
-			<item>CertificateExpiredException</item>
 			<item>CertificateFactory</item>
 			<item>CertificateFactorySpi</item>
 			<item>CertificateNotYetValidException</item>
-			<item>CertificateNotYetValidException</item>
 			<item>CertificateParsingException</item>
-			<item>CertificateParsingException</item>
 			<item>ChangeEvent</item>
 			<item>ChangeListener</item>
 			<item>ChangedCharSetException</item>
@@ -646,7 +627,6 @@
 			<item>ConfigurationException</item>
 			<item>ConfirmationCallback</item>
 			<item>ConnectException</item>
-			<item>ConnectException</item>
 			<item>ConnectIOException</item>
 			<item>Connection</item>
 			<item>ConnectionEvent</item>
@@ -661,16 +641,13 @@
 			<item>ContainerListener</item>
 			<item>ContainerOrderFocusTraversalPolicy</item>
 			<item>ContentHandler</item>
-			<item>ContentHandler</item>
 			<item>ContentHandlerFactory</item>
 			<item>ContentModel</item>
 			<item>Context</item>
-			<item>Context</item>
 			<item>ContextList</item>
 			<item>ContextNotEmptyException</item>
 			<item>ContextualRenderedImageFactory</item>
 			<item>Control</item>
-			<item>Control</item>
 			<item>Control.Type</item>
 			<item>ControlFactory</item>
 			<item>ControllerEventListener</item>
@@ -693,15 +670,9 @@
 			<item>CubicCurve2D.Float</item>
 			<item>Currency</item>
 			<item>Current</item>
-			<item>Current</item>
-			<item>Current</item>
 			<item>CurrentHelper</item>
-			<item>CurrentHelper</item>
-			<item>CurrentHelper</item>
 			<item>CurrentHolder</item>
 			<item>CurrentOperations</item>
-			<item>CurrentOperations</item>
-			<item>CurrentOperations</item>
 			<item>Cursor</item>
 			<item>CustomMarshal</item>
 			<item>CustomValue</item>
@@ -729,7 +700,6 @@
 			<item>DOMImplementationRegistry</item>
 			<item>DOMImplementationSource</item>
 			<item>DOMLocator</item>
-			<item>DOMLocator</item>
 			<item>DOMResult</item>
 			<item>DOMSource</item>
 			<item>DOMStringList</item>
@@ -755,12 +725,10 @@
 			<item>DataFormatException</item>
 			<item>DataInput</item>
 			<item>DataInputStream</item>
-			<item>DataInputStream</item>
 			<item>DataLine</item>
 			<item>DataLine.Info</item>
 			<item>DataOutput</item>
 			<item>DataOutputStream</item>
-			<item>DataOutputStream</item>
 			<item>DataSource</item>
 			<item>DataTruncation</item>
 			<item>DatabaseMetaData</item>
@@ -774,7 +742,6 @@
 			<item>DatatypeConstants.Field</item>
 			<item>DatatypeFactory</item>
 			<item>Date</item>
-			<item>Date</item>
 			<item>DateFormat</item>
 			<item>DateFormat.Field</item>
 			<item>DateFormatSymbols</item>
@@ -817,7 +784,6 @@
 			<item>DefaultListModel</item>
 			<item>DefaultListSelectionModel</item>
 			<item>DefaultLoaderRepository</item>
-			<item>DefaultLoaderRepository</item>
 			<item>DefaultMenuLayout</item>
 			<item>DefaultMetalTheme</item>
 			<item>DefaultMutableTreeNode</item>
@@ -842,8 +808,6 @@
 			<item>DelayQueue</item>
 			<item>Delayed</item>
 			<item>Delegate</item>
-			<item>Delegate</item>
-			<item>Delegate</item>
 			<item>DelegationPermission</item>
 			<item>Deprecated</item>
 			<item>Descriptor</item>
@@ -885,7 +849,6 @@
 			<item>DocFlavor.URL</item>
 			<item>DocPrintJob</item>
 			<item>Document</item>
-			<item>Document</item>
 			<item>DocumentBuilder</item>
 			<item>DocumentBuilderFactory</item>
 			<item>DocumentEvent</item>
@@ -935,7 +898,6 @@
 			<item>DuplicateNameHelper</item>
 			<item>Duration</item>
 			<item>DynAny</item>
-			<item>DynAny</item>
 			<item>DynAnyFactory</item>
 			<item>DynAnyFactoryHelper</item>
 			<item>DynAnyFactoryOperations</item>
@@ -943,31 +905,24 @@
 			<item>DynAnyOperations</item>
 			<item>DynAnySeqHelper</item>
 			<item>DynArray</item>
-			<item>DynArray</item>
 			<item>DynArrayHelper</item>
 			<item>DynArrayOperations</item>
 			<item>DynEnum</item>
-			<item>DynEnum</item>
 			<item>DynEnumHelper</item>
 			<item>DynEnumOperations</item>
 			<item>DynFixed</item>
-			<item>DynFixed</item>
 			<item>DynFixedHelper</item>
 			<item>DynFixedOperations</item>
 			<item>DynSequence</item>
-			<item>DynSequence</item>
 			<item>DynSequenceHelper</item>
 			<item>DynSequenceOperations</item>
 			<item>DynStruct</item>
-			<item>DynStruct</item>
 			<item>DynStructHelper</item>
 			<item>DynStructOperations</item>
 			<item>DynUnion</item>
-			<item>DynUnion</item>
 			<item>DynUnionHelper</item>
 			<item>DynUnionOperations</item>
 			<item>DynValue</item>
-			<item>DynValue</item>
 			<item>DynValueBox</item>
 			<item>DynValueBoxOperations</item>
 			<item>DynValueCommon</item>
@@ -975,7 +930,6 @@
 			<item>DynValueHelper</item>
 			<item>DynValueOperations</item>
 			<item>DynamicImplementation</item>
-			<item>DynamicImplementation</item>
 			<item>DynamicMBean</item>
 			<item>ECField</item>
 			<item>ECFieldF2m</item>
@@ -992,8 +946,6 @@
 			<item>EOFException</item>
 			<item>EditorKit</item>
 			<item>Element</item>
-			<item>Element</item>
-			<item>Element</item>
 			<item>ElementIterator</item>
 			<item>ElementType</item>
 			<item>Ellipse2D</item>
@@ -1007,7 +959,6 @@
 			<item>Encoding</item>
 			<item>EncryptedPrivateKeyInfo</item>
 			<item>Entity</item>
-			<item>Entity</item>
 			<item>EntityReference</item>
 			<item>EntityResolver</item>
 			<item>EntityResolver2</item>
@@ -1062,7 +1013,6 @@
 			<item>Fidelity</item>
 			<item>Field</item>
 			<item>FieldNameHelper</item>
-			<item>FieldNameHelper</item>
 			<item>FieldPosition</item>
 			<item>FieldView</item>
 			<item>File</item>
@@ -1074,7 +1024,6 @@
 			<item>FileDescriptor</item>
 			<item>FileDialog</item>
 			<item>FileFilter</item>
-			<item>FileFilter</item>
 			<item>FileHandler</item>
 			<item>FileImageInputStream</item>
 			<item>FileImageOutputStream</item>
@@ -1139,12 +1088,9 @@
 			<item>Formattable</item>
 			<item>FormattableFlags</item>
 			<item>Formatter</item>
-			<item>Formatter</item>
 			<item>FormatterClosedException</item>
 			<item>ForwardRequest</item>
-			<item>ForwardRequest</item>
 			<item>ForwardRequestHelper</item>
-			<item>ForwardRequestHelper</item>
 			<item>Frame</item>
 			<item>Future</item>
 			<item>FutureTask</item>
@@ -1349,7 +1295,6 @@
 			<item>IncompatibleClassChangeError</item>
 			<item>IncompleteAnnotationException</item>
 			<item>InconsistentTypeCode</item>
-			<item>InconsistentTypeCode</item>
 			<item>InconsistentTypeCodeHelper</item>
 			<item>IndexColorModel</item>
 			<item>IndexOutOfBoundsException</item>
@@ -1384,8 +1329,6 @@
 			<item>InputMismatchException</item>
 			<item>InputSource</item>
 			<item>InputStream</item>
-			<item>InputStream</item>
-			<item>InputStream</item>
 			<item>InputStreamReader</item>
 			<item>InputSubset</item>
 			<item>InputVerifier</item>
@@ -1416,7 +1359,6 @@
 			<item>InterruptedNamingException</item>
 			<item>InterruptibleChannel</item>
 			<item>IntrospectionException</item>
-			<item>IntrospectionException</item>
 			<item>Introspector</item>
 			<item>Invalid</item>
 			<item>InvalidActivityException</item>
@@ -1427,21 +1369,16 @@
 			<item>InvalidApplicationException</item>
 			<item>InvalidAttributeIdentifierException</item>
 			<item>InvalidAttributeValueException</item>
-			<item>InvalidAttributeValueException</item>
 			<item>InvalidAttributesException</item>
 			<item>InvalidClassException</item>
 			<item>InvalidDnDOperationException</item>
 			<item>InvalidKeyException</item>
-			<item>InvalidKeyException</item>
 			<item>InvalidKeySpecException</item>
 			<item>InvalidMarkException</item>
 			<item>InvalidMidiDataException</item>
 			<item>InvalidName</item>
-			<item>InvalidName</item>
-			<item>InvalidName</item>
 			<item>InvalidNameException</item>
 			<item>InvalidNameHelper</item>
-			<item>InvalidNameHelper</item>
 			<item>InvalidNameHolder</item>
 			<item>InvalidObjectException</item>
 			<item>InvalidOpenTypeException</item>
@@ -1466,7 +1403,6 @@
 			<item>InvalidTypeForEncoding</item>
 			<item>InvalidTypeForEncodingHelper</item>
 			<item>InvalidValue</item>
-			<item>InvalidValue</item>
 			<item>InvalidValueHelper</item>
 			<item>InvocationEvent</item>
 			<item>InvocationHandler</item>
@@ -1695,7 +1631,6 @@
 			<item>LinkedHashSet</item>
 			<item>LinkedList</item>
 			<item>List</item>
-			<item>List</item>
 			<item>ListCellRenderer</item>
 			<item>ListDataEvent</item>
 			<item>ListDataListener</item>
@@ -1999,9 +1934,7 @@
 			<item>NameNotFoundException</item>
 			<item>NameParser</item>
 			<item>NameValuePair</item>
-			<item>NameValuePair</item>
 			<item>NameValuePairHelper</item>
-			<item>NameValuePairHelper</item>
 			<item>NameValuePairSeqHelper</item>
 			<item>NamedNodeMap</item>
 			<item>NamedValue</item>
@@ -2100,7 +2033,6 @@
 			<item>OBJ_ADAPTER</item>
 			<item>OMGVMCID</item>
 			<item>ORB</item>
-			<item>ORB</item>
 			<item>ORBIdHelper</item>
 			<item>ORBInitInfo</item>
 			<item>ORBInitInfoOperations</item>
@@ -2108,7 +2040,6 @@
 			<item>ORBInitializerOperations</item>
 			<item>ObjID</item>
 			<item>Object</item>
-			<item>Object</item>
 			<item>ObjectAlreadyActive</item>
 			<item>ObjectAlreadyActiveHelper</item>
 			<item>ObjectChangeListener</item>
@@ -2117,9 +2048,7 @@
 			<item>ObjectHelper</item>
 			<item>ObjectHolder</item>
 			<item>ObjectIdHelper</item>
-			<item>ObjectIdHelper</item>
 			<item>ObjectImpl</item>
-			<item>ObjectImpl</item>
 			<item>ObjectInput</item>
 			<item>ObjectInputStream</item>
 			<item>ObjectInputStream.GetField</item>
@@ -2162,7 +2091,6 @@
 			<item>OpenMBeanParameterInfo</item>
 			<item>OpenMBeanParameterInfoSupport</item>
 			<item>OpenType</item>
-			<item>OpenType</item>
 			<item>OperatingSystemMXBean</item>
 			<item>Operation</item>
 			<item>OperationNotSupportedException</item>
@@ -2175,8 +2103,6 @@
 			<item>OutputDeviceAssigned</item>
 			<item>OutputKeys</item>
 			<item>OutputStream</item>
-			<item>OutputStream</item>
-			<item>OutputStream</item>
 			<item>OutputStreamWriter</item>
 			<item>OverlappingFileLockException</item>
 			<item>OverlayLayout</item>
@@ -2228,7 +2154,6 @@
 			<item>PanelUI</item>
 			<item>Paper</item>
 			<item>ParagraphView</item>
-			<item>ParagraphView</item>
 			<item>Parameter</item>
 			<item>ParameterBlock</item>
 			<item>ParameterDescriptor</item>
@@ -2240,7 +2165,6 @@
 			<item>ParseException</item>
 			<item>ParsePosition</item>
 			<item>Parser</item>
-			<item>Parser</item>
 			<item>ParserAdapter</item>
 			<item>ParserConfigurationException</item>
 			<item>ParserDelegator</item>
@@ -2254,7 +2178,6 @@
 			<item>Pattern</item>
 			<item>PatternSyntaxException</item>
 			<item>Permission</item>
-			<item>Permission</item>
 			<item>PermissionCollection</item>
 			<item>Permissions</item>
 			<item>PersistenceDelegate</item>
@@ -2277,8 +2200,6 @@
 			<item>Point2D.Float</item>
 			<item>PointerInfo</item>
 			<item>Policy</item>
-			<item>Policy</item>
-			<item>Policy</item>
 			<item>PolicyError</item>
 			<item>PolicyErrorCodeHelper</item>
 			<item>PolicyErrorHelper</item>
@@ -2316,7 +2237,6 @@
 			<item>PreparedStatement</item>
 			<item>PresentationDirection</item>
 			<item>Principal</item>
-			<item>Principal</item>
 			<item>PrincipalHolder</item>
 			<item>PrintEvent</item>
 			<item>PrintException</item>
@@ -2394,7 +2314,6 @@
 			<item>Provider.Service</item>
 			<item>ProviderException</item>
 			<item>Proxy</item>
-			<item>Proxy</item>
 			<item>Proxy.Type</item>
 			<item>ProxySelector</item>
 			<item>PublicKey</item>
@@ -2472,7 +2391,6 @@
 			<item>Ref</item>
 			<item>RefAddr</item>
 			<item>Reference</item>
-			<item>Reference</item>
 			<item>ReferenceQueue</item>
 			<item>ReferenceUriSchemesSupported</item>
 			<item>Referenceable</item>
@@ -2820,7 +2738,6 @@
 			<item>StateEditable</item>
 			<item>StateFactory</item>
 			<item>Statement</item>
-			<item>Statement</item>
 			<item>StreamCorruptedException</item>
 			<item>StreamHandler</item>
 			<item>StreamPrintService</item>
@@ -2999,14 +2916,11 @@
 			<item>TimeZone</item>
 			<item>TimeoutException</item>
 			<item>Timer</item>
-			<item>Timer</item>
-			<item>Timer</item>
 			<item>TimerAlarmClockNotification</item>
 			<item>TimerMBean</item>
 			<item>TimerNotification</item>
 			<item>TimerTask</item>
 			<item>Timestamp</item>
-			<item>Timestamp</item>
 			<item>TitledBorder</item>
 			<item>TooManyListenersException</item>
 			<item>ToolBarUI</item>
@@ -3055,10 +2969,7 @@
 			<item>TypeInfo</item>
 			<item>TypeInfoProvider</item>
 			<item>TypeMismatch</item>
-			<item>TypeMismatch</item>
-			<item>TypeMismatch</item>
 			<item>TypeMismatchHelper</item>
-			<item>TypeMismatchHelper</item>
 			<item>TypeNotPresentException</item>
 			<item>TypeVariable</item>
 			<item>Types</item>
@@ -3076,7 +2987,6 @@
 			<item>ULongSeqHelper</item>
 			<item>ULongSeqHolder</item>
 			<item>UNKNOWN</item>
-			<item>UNKNOWN</item>
 			<item>UNSUPPORTED_POLICY</item>
 			<item>UNSUPPORTED_POLICY_VALUE</item>
 			<item>URI</item>
@@ -3115,7 +3025,6 @@
 			<item>UnknownFormatFlagsException</item>
 			<item>UnknownGroupException</item>
 			<item>UnknownHostException</item>
-			<item>UnknownHostException</item>
 			<item>UnknownObjectException</item>
 			<item>UnknownServiceException</item>
 			<item>UnknownUserException</item>
@@ -3219,7 +3128,6 @@
 			<item>X509CRLSelector</item>
 			<item>X509CertSelector</item>
 			<item>X509Certificate</item>
-			<item>X509Certificate</item>
 			<item>X509EncodedKeySpec</item>
 			<item>X509ExtendedKeyManager</item>
 			<item>X509Extension</item>
@@ -3530,7 +3438,6 @@
 			<item>SimpleScriptContext</item>
 			<item>SimpleTypeVisitor6</item>
 			<item>SOAPBinding</item>
-			<item>SOAPBinding</item>
 			<item>SOAPBody</item>
 			<item>SOAPBodyElement</item>
 			<item>SOAPConnection</item>
@@ -3705,6 +3612,8 @@
 			
 <!-- 			end new classes -->
 		</list>
+
+		<!-- https://docs.oracle.com/javase/specs/jls/se20/html/jls-3.html#jls-Keyword -->
 		<list name="keywords">
 			<item>abstract</item>
 			<item>class</item>
@@ -3714,7 +3623,6 @@
 			<item>false</item>
 			<item>implements</item>
 			<item>instanceof</item>
-			<item>@interface</item>
 			<item>interface</item>
 			<item>native</item>
 			<item>new</item>
@@ -3730,6 +3638,11 @@
 			<item>transient</item>
 			<item>true</item>
 			<item>volatile</item>
+			<!-- contextual -->
+			<item>non-sealed</item>
+			<item>permits</item>
+			<item>record</item>
+			<item>sealed</item>
 		</list>
 		<list name="control flow">
 			<item>assert</item>
@@ -3748,6 +3661,7 @@
 			<item>throw</item>
 			<item>try</item>
 			<item>while</item>
+			<item>yield</item>
 		</list>
 		<list name="types">
 			<item>boolean</item>
@@ -3764,6 +3678,25 @@
 			<item>var</item>
 			<item>void</item>
 		</list>
+
+		<list name="annotations">
+			<!-- builtin -->
+			<item>@Override</item>
+			<item>@Deprecated</item>
+			<item>@SuppressWarnings</item>
+			<item>@SafeVarargs</item>
+			<item>@FunctionalInterface</item>
+			<item>@interface</item>
+			<!-- java.lang.annotation -->
+			<item>@Retention</item>
+			<item>@Documented</item>
+			<item>@Target</item>
+			<item>@Inherited</item>
+			<item>@Repeatable</item>
+		</list>
+
+		<!-- https://docs.oracle.com/javase/specs/jls/se20/html/jls-3.html -->
+
 		<contexts>
 			<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
 				<DetectSpaces context="#stay"/>
@@ -3783,6 +3716,7 @@
 
 				<AnyChar context="Number" String="0123456789" lookAhead="1"/>
 
+				<StringDetect attribute="Text Block" context="TextBlock" String="&quot;&quot;&quot;"/>
 				<DetectChar attribute="String" context="String" char="&quot;"/>
 				<DetectChar context="Char" char="'" lookAhead="1"/>
 
@@ -3795,6 +3729,7 @@
 				<WordDetect attribute="Keyword" context="ImportsOrStaticImports" String="import" />
 
 				<RegExpr attribute="Function" context="#stay" String="\b[_a-zA-Z]\w*(?=[\s]*(/\*\s*\d+\s*\*/\s*)?[(])" />
+				<WordDetect attribute="Keyword" context="ImportsOrStaticImports" String="non-sealed" />
 				<DetectIdentifier attribute="Normal Text"/>
 			</context>
 
@@ -3831,6 +3766,11 @@
 				<RegExpr attribute="Error" context="#pop" String="\\(u+[0-9a-fA-F]*|.)?"/>
 			</context>
 
+			<context attribute="Text Block" lineEndContext="#stay" name="TextBlock">
+				<DetectChar context="StringEscapedChar" char="\" lookAhead="1"/>
+				<StringDetect attribute="Text Block" context="#pop" String="&quot;&quot;&quot;"/>
+			</context>
+
 			<context attribute="Normal Text" lineEndContext="#stay" name="Printf" fallthroughContext="#pop">
 				<DetectChar attribute="Symbol" context="#pop!InPrintf" char="("/>
 				<DetectSpaces attribute="Normal Text" context="#stay"/>
@@ -3898,6 +3838,7 @@
 			<itemData name="Binary"       defStyleNum="dsBaseN" spellChecking="false"/>
 			<itemData name="Float"        defStyleNum="dsFloat" spellChecking="false"/>
 			<itemData name="Char"         defStyleNum="dsChar" spellChecking="false"/>
+			<itemData name="Text Block"   defStyleNum="dsString"/>
 			<itemData name="String"       defStyleNum="dsString"/>
 			<itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>
 			<itemData name="PrintfString" defStyleNum="dsString"/>
@@ -3909,7 +3850,7 @@
 	</highlighting>
 	<general>
 		<comments>
-			<comment name="singleLine" start="//"/>
+			<comment name="singleLine" start="//" position="afterwhitespace"/>
 			<comment name="multiLine" start="/*" end="*/" region="Comment"/>
 		</comments>
 		<keywords casesensitive="1"/>
diff --git a/xml/javadoc.xml b/xml/javadoc.xml
--- a/xml/javadoc.xml
+++ b/xml/javadoc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Javadoc" version="6" kateversion="5.62" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
+<!DOCTYPE language>
+<language name="Javadoc" version="7" kateversion="5.79" section="Markup" extensions="" license="LGPL" author="Alfredo Luiz Foltran Fialho (alfoltran@ig.com.br)">
 	<highlighting>
 		<contexts>
 			<context name="Start" attribute="Normal Text" lineEndContext="#stay">
diff --git a/xml/javascript-react.xml b/xml/javascript-react.xml
--- a/xml/javascript-react.xml
+++ b/xml/javascript-react.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY simpleName "(?:[a-z][a-z\d]*:)?[a-z][a-z\d]*">
 	<!ENTITY baseName   "[a-zA-Z_\$[:^ascii:]](?:[\w\$\-\.[:^ascii:]]*[\w\$[:^ascii:]])?">
@@ -53,7 +53,7 @@
      * v1 [2018-06-20]: Initial version
 -->
 
-<language name="JavaScript React (JSX)" version="10" kateversion="5.53" section="Scripts" indenter="cstyle"
+<language name="JavaScript React (JSX)" alternativeNames="JSX" version="11" kateversion="5.53" section="Scripts" indenter="cstyle"
           priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"
           author="Nibaldo González (nibgonz@gmail.com)" license="MIT">
 
diff --git a/xml/javascript.xml b/xml/javascript.xml
--- a/xml/javascript.xml
+++ b/xml/javascript.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!ENTITY identifier "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
 
@@ -7,7 +7,7 @@
   <!ENTITY DecimalIntegerLiteral "(0|[1-9][0-9]*+(_[0-9]++)*+)">
   <!ENTITY DecimalDigits "([0-9]++(_[0-9]++)*+)">
   <!ENTITY ExponentPart "([eE][+-]?&DecimalDigits;)">
-  <!ENTITY float "&DecimalIntegerLiteral;(\.&DecimalDigits;?&ExponentPart;?|&ExponentPart;)|\.&DecimalDigits;&ExponentPart;?">
+  <!ENTITY float "\b&DecimalIntegerLiteral;(\.&DecimalDigits;?&ExponentPart;?|&ExponentPart;)|\.&DecimalDigits;&ExponentPart;?">
 ]>
 
 <!--
@@ -23,7 +23,7 @@
    * QML
    * CoffeeScript (embedded)
 -->
-<language name="JavaScript" version="20" kateversion="5.53" section="Scripts" extensions="*.js;*.kwinscript;*.julius"
+<language name="JavaScript" alternativeNames="JS" version="26" kateversion="5.53" section="Scripts" extensions="*.js;*.mjs;*.cjs;*.kwinscript;*.julius"
           mimetype="text/x-javascript;application/x-javascript;application/javascript;text/javascript" indenter="cstyle"
           author="Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net)" license="">
 
@@ -60,6 +60,8 @@
       <item>typeof</item>
       <item>var</item>
       <item>void</item>
+      <item>set</item>
+      <item>get</item>
     </list>
     <list name="reserved">
       <item>async</item>
@@ -1075,7 +1077,6 @@
       <item>port</item>
       <item>prefix</item>
       <item>previous</item>
-      <item>previousDibling</item>
       <item>product</item>
       <item>productSub</item>
       <item>profile</item>
@@ -1649,38 +1650,42 @@
       <context name="Shebang Line" attribute="Comment" lineEndContext="#pop!Normal" />
 
       <!-- Normal Syntax of JavaScript. -->
-      <!-- NOTE: These IncludeRules rules, except BuiltInClasses and FindBrackets are included in qml.xml -->
+      <!-- NOTE: These IncludeRules rules, except BuiltInClasses, FindBrackets, FindPrivateOperator, FindE4X are included in qml.xml -->
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces/>
+        <IncludeRules context="FindSomeSymbols" />
+        <IncludeRules context="FindBrackets" />
+        <IncludeRules context="FindPrivateOperator" />
+        <IncludeRules context="FindComments" />
         <IncludeRules context="FindNumbers" />
+        <IncludeRules context="FindMembers" />
         <IncludeRules context="FindKeywords" />
         <IncludeRules context="FindStrings" />
         <IncludeRules context="BuiltInClasses" />
         <IncludeRules context="FindObjectMembersAndFunctions" />
-        <IncludeRules context="FindBrackets" />
-        <IncludeRules context="JSBase" />
+        <IncludeRules context="FindIdentifier" />
+        <IncludeRules context="FindE4X" />
+        <IncludeRules context="FindRegex" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindSomeSymbols">
+        <IncludeRules context="FindArrowFunction" />
+        <!-- symbol that is not used in any other context (fast path) -->
+        <AnyChar attribute="Symbol" String=":!%&amp;+,-*=&gt;?|~^;" />
+      </context>
 
       <!-- Base Syntax. Used by the TypeScript highlighter. -->
       <context attribute="Normal Text" lineEndContext="#stay" name="JSBase">
-        <AnyChar context="NoRegExp" String="])" />
-        <!--DetectIdentifier-->
-        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
-        <RegExpr context="NoRegExp" String="&identifier;" />
-
+        <DetectChar attribute="Symbol" char="?" />
+        <IncludeRules context="FindIdentifier" />
+        <IncludeRules context="FindE4X" />
         <IncludeRules context="FindComments" />
-
-        <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
-        <RegExpr attribute="Symbol" context="#stay" String="&lt;(?=/\*|//)" />
-        <Detect2Chars attribute="Symbol" context="NoRegExp" char="&lt;" char1="/" />
-        <Detect2Chars attribute="Symbol" context="NoRegExp" char="/" char1="&gt;" />
-
-        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
-
-        <!-- NOTE: The brackets {}()[] are highlighted as Normal Text. -->
-        <Detect2Chars attribute="Special Operators" context="#stay" char="=" char1="&gt;" />
-        <AnyChar attribute="Symbol" String=":!%&amp;+,-/.*&lt;=&gt;?|~^&#59;" />
+        <IncludeRules context="FindRegex" />
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="JSBaseSomeSymboles">
+        <IncludeRules context="FindArrowFunction" />
+        <!-- symbol that is not used in any other context (fast path) -->
+        <AnyChar attribute="Symbol" String="!%&amp;+,-*=&gt;|~^;" />
+      </context>
 
 
       <!-- Content Contexts -->
@@ -1703,8 +1708,27 @@
         <DetectChar attribute="Symbol" context="#pop#pop" char="/" />
       </context>
 
+      <!-- E4X extension (=xml inside JavaScript), see bug #373713 -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindE4X">
+        <RegExpr attribute="Symbol" context="#stay" String="&lt;(?=[^/]|/\*|//|$)" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="&lt;" char1="/" />
+        <Detect2Chars attribute="Symbol" context="NoRegExp" char="/" char1="&gt;" />
+      </context>
+
+      <!--DetectIdentifier-->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindIdentifier">
+        <!-- Do not start RegExp after non-ASCII characters (see bug #393633) -->
+        <RegExpr context="NoRegExp" String="&identifier;" />
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindRegex">
+        <DetectChar attribute="Regular Expression" context="(regex caret first check)" char="/" />
+      </context>
+
       <!-- Object, within { ... } -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindBrackets">
+        <DetectChar attribute="Normal Text" context="#stay" char="(" />
+        <DetectChar attribute="Normal Text" context="NoRegExp" char=")" />
         <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
         <DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" />
         <DetectChar attribute="Normal Text" context="NoRegExp" char="]" endRegion="List" />
@@ -1731,6 +1755,11 @@
         <IncludeRules context="Normal" />
       </context>
 
+      <!-- '#' in "#identifier" -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindPrivateOperator">
+        <DetectChar attribute="Private Member Operator" char="#" />
+      </context>
+
       <!-- Keywords -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindKeywords">
         <WordDetect attribute="Keyword" context="FunctionDeclaration" String="function" />
@@ -1742,24 +1771,42 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="FunctionDeclaration" fallthrough="true" fallthroughContext="#pop">
         <DetectSpaces />
+        <IncludeRules context="FindPrivateOperator" />
         <RegExpr attribute="Function Declaration" context="#pop" String="&identifier;(?=\s*\()" /> <!-- NoRegExp -->
         <IncludeRules context="FindComments" />
       </context>
 
       <!-- Numbers -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindNumbers">
-        <RegExpr attribute="Float" context="NoRegExp" String="\b&float;" />
-        <RegExpr attribute="Hex" context="NumericSufix" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+"/>
+        <RegExpr attribute="Float" context="NoRegExp" String="&float;" />
+        <AnyChar context="Integer" String="0123456789" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Integer">
+        <RegExpr attribute="Hex" context="#pop!NumericSufix" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+"/>
         <!-- 07 is octal, 08 is decimal -->
-        <RegExpr attribute="Octal" context="NumericSufix" String="\b0([oO][0-7]++(_[0-7]++)*+|0*+[1-7][0-7]*+(_[0-7]++)*+(?!_?[89]))" />
-        <RegExpr attribute="Binary" context="NumericSufix" String="\b0[bB][01]++(_[01]++)*+" />
-        <RegExpr attribute="Decimal" context="NumericSufix" String="\b0*+([1-9][0-9]*+(_[0-9]++)*+)?"/>
+        <RegExpr attribute="Octal" context="#pop!NumericSufix" String="\b0([oO][0-7]++(_[0-7]++)*+|0*+[1-7][0-7]*+(_[0-7]++)*+(?!_?[89]))" />
+        <RegExpr attribute="Binary" context="#pop!NumericSufix" String="\b0[bB][01]++(_[01]++)*+" />
+        <!-- 0000_8 is invalid -->
+        <RegExpr attribute="Decimal" context="#pop!NumericSufix" String="\b0*+([1-9][0-9]*+(_[0-9]++)*+)?"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="NumericSufix" fallthrough="true" fallthroughContext="#pop!NoRegExp">
         <DetectChar attribute="Normal Text" context="#pop!NoRegExp" char="n" />
+        <IncludeRules context="NumericSufixError" />
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NumericSufixError">
         <RegExpr attribute="Error" context="#pop!NoRegExp" String="[0-9]*(&identifier;)?"/>
       </context>
 
+      <!-- Find => -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindArrowFunction">
+        <Detect2Chars attribute="Special Operators" context="#stay" char="=" char1="&gt;" />
+      </context>
+
+      <!-- Find Objects Member -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindMembers">
+        <DetectChar attribute="Symbol" context="Object Member" char="." lookAhead="true" />
+      </context>
+
       <!-- Find Objects Member and Functions -->
       <context attribute="Normal Text" lineEndContext="#stay" name="FindObjectMembersAndFunctions">
         <!-- Tagged Template Literals -->
@@ -1768,7 +1815,6 @@
         <RegExpr attribute="Function Name" context="Function" String="(&identifier;)(?=\s*\()" lookAhead="true" />
         <IncludeRules context="BuiltInConstants" />
         <RegExpr attribute="Objects" context="Object Member" String="&identifier;(?=\s*\.)" />
-        <DetectChar attribute="Symbol" context="Object Member" char="." lookAhead="true" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Function">
         <keyword attribute="Function (Built-in)" context="#pop" String="functions" />
@@ -1777,6 +1823,7 @@
       </context>
 
       <context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Object Member">
+        <IncludeRules context="FindPrivateOperator" />
         <IncludeRules context="DefaultMemberObject" />
         <!-- Common functions and properties, only for autocomplete keywords -->
         <keyword attribute="Object Member" context="#pop!NoRegExp" String="dom_property" />
@@ -2030,6 +2077,7 @@
       <itemData name="Comment"      defStyleNum="dsComment" />
       <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
       <itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="Private Member Operator" defStyleNum="dsNormal" spellChecking="false" />
       <itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false" />
       <itemData name="Pattern Internal Operator" defStyleNum="dsSpecialChar" spellChecking="false" />
       <itemData name="Pattern Character Class" defStyleNum="dsSpecialChar" spellChecking="false" />
@@ -2042,7 +2090,7 @@
 
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace"/>
       <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="1" />
diff --git a/xml/jinja.xml b/xml/jinja.xml
new file mode 100644
--- /dev/null
+++ b/xml/jinja.xml
@@ -0,0 +1,298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<!-- Base Jinja syntax for embedding into other grammars by the jinjize script. -->
+<!-- Also serves as a standalone grammar for pure Jinja macro definiton files. -->
+<language name="Jinja" version="1" kateversion="5.62" section="Other" license="MIT"
+          extensions="*.jinja;*.jinja2;*.j2" mimetype="text/jinja"
+          priority="-99" author="zoltan.gera@qt.io">
+  <highlighting>
+    <list name="jinja_operators">
+      <item>and</item>
+      <item>in</item>
+      <item>not</item>
+      <item>or</item>
+    </list>
+    <list name="jinja_ctrlflows">
+      <item>break</item>
+      <item>continue</item>
+      <item>else</item>
+      <item>elif</item>
+      <item>endfor</item>
+      <item>endif</item>
+      <item>for</item>
+      <item>if</item>
+      <item>recursive</item>
+    </list>
+    <list name="jinja_keywords">
+      <item>autoescape</item>
+      <item>block</item>
+      <item>call</item>
+      <item>debug</item>
+      <item>do</item>
+      <item>endautoescape</item>
+      <item>endblock</item>
+      <item>endcall</item>
+      <item>endfilter</item>
+      <item>endmacro</item>
+      <item>endraw</item>
+      <item>endset</item>
+      <item>endtrans</item>
+      <item>endwith</item>
+      <item>extends</item>
+      <item>filter</item>
+      <item>macro</item>
+      <item>notrimmed</item>
+      <item>pluralize</item>
+      <item>raw</item>
+      <item>required</item>
+      <item>scoped</item>
+      <item>set</item>
+      <item>trans</item>
+      <item>trimmed</item>
+      <item>with</item>
+    </list>
+    <list name="jinja_imports">
+      <item>as</item>
+      <item>context</item>
+      <item>from</item>
+      <item>include</item>
+      <item>ignore</item>
+      <item>import</item>
+      <item>missing</item>
+      <item>with</item>
+      <item>without</item>
+    </list>
+    <list name="jinja_constants">
+      <item>false</item>
+      <item>none</item>
+      <item>true</item>
+      <item>False</item>
+      <item>None</item>
+      <item>True</item>
+    </list>
+    <list name="jinja_globals">
+      <item>caller</item>
+      <item>cycler</item>
+      <item>dict</item>
+      <item>joiner</item>
+      <item>kwargs</item>
+      <item>lipsum</item>
+      <item>loop</item>
+      <item>namespace</item>
+      <item>range</item>
+      <item>self</item>
+      <item>super</item>
+      <item>varargs</item>
+    </list>
+    <list name="jinja_builtin_filters">
+      <item>abs</item>
+      <item>attr</item>
+      <item>batch</item>
+      <item>capitalize</item>
+      <item>center</item>
+      <item>default</item>
+      <item>dictsort</item>
+      <item>escape</item>
+      <item>filesizeformat</item>
+      <item>first</item>
+      <item>float</item>
+      <item>forceescape</item>
+      <item>format</item>
+      <item>groupby</item>
+      <item>indent</item>
+      <item>int</item>
+      <item>items</item>
+      <item>join</item>
+      <item>last</item>
+      <item>length</item>
+      <item>list</item>
+      <item>lower</item>
+      <item>map</item>
+      <item>max</item>
+      <item>min</item>
+      <item>pprint</item>
+      <item>random</item>
+      <item>reject</item>
+      <item>rejectattr</item>
+      <item>replace</item>
+      <item>reverse</item>
+      <item>round</item>
+      <item>safe</item>
+      <item>select</item>
+      <item>selectattr</item>
+      <item>slice</item>
+      <item>sort</item>
+      <item>string</item>
+      <item>striptags</item>
+      <item>sum</item>
+      <item>title</item>
+      <item>tojson</item>
+      <item>trim</item>
+      <item>truncate</item>
+      <item>unique</item>
+      <item>upper</item>
+      <item>urlencode</item>
+      <item>urlize</item>
+      <item>wordcount</item>
+      <item>wordwrap</item>
+      <item>xmlattr</item>
+    </list>
+    <list name="jinja_builtin_tests">
+      <item>boolean</item>
+      <item>callable</item>
+      <item>defined</item>
+      <item>divisibleby</item>
+      <item>eq</item>
+      <item>escaped</item>
+      <item>even</item>
+      <item>false</item>
+      <item>filter</item>
+      <item>float</item>
+      <item>ge</item>
+      <item>gt</item>
+      <item>in</item>
+      <item>integer</item>
+      <item>iterable</item>
+      <item>le</item>
+      <item>lower</item>
+      <item>lt</item>
+      <item>mapping</item>
+      <item>ne</item>
+      <item>none</item>
+      <item>number</item>
+      <item>odd</item>
+      <item>sameas</item>
+      <item>sequence</item>
+      <item>string</item>
+      <item>test</item>
+      <item>true</item>
+      <item>undefined</item>
+      <item>upper</item>
+    </list>
+    <contexts>
+      <context name="jinja_boot" attribute="jinja_normal" lineEndContext="#stay">
+        <Detect2Chars context="jinja_statement_boot" attribute="jinja_delimiter" beginRegion="jinjaStatement" char="{" char1="%" />
+        <Detect2Chars context="jinja_expression_boot" attribute="jinja_delimiter" beginRegion="jinjaExpression" char="{" char1="{" />
+        <Detect2Chars context="jinja_comment_boot" attribute="jinja_delimiter" beginRegion="jinjaComment" char="{" char1="#" />
+      </context>
+      <context name="jinja_statement_boot" attribute="jinja_normal" fallthroughContext="#pop!jinja_statement_1st">
+        <AnyChar context="#pop!jinja_statement_1st" attribute="jinja_delimiter" String="-+" />
+      </context>
+      <context name="jinja_expression_boot" attribute="jinja_normal" fallthroughContext="#pop!jinja_expression">
+        <AnyChar context="#pop!jinja_expression" attribute="jinja_delimiter" String="-+" />
+      </context>
+      <context name="jinja_comment_boot" attribute="jinja_normal" fallthroughContext="#pop!jinja_comment">
+        <AnyChar context="#pop!jinja_comment" attribute="jinja_delimiter" String="-+" />
+      </context>
+      <context name="jinja_statement_1st" attribute="jinja_code" lineEndContext="#stay" fallthroughContext="#pop!jinja_statement">
+        <DetectSpaces context="#stay" attribute="jinja_code" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" beginRegion="jinjaFor" String="for" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" endRegion="jinjaFor" String="endfor" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" beginRegion="jinjaIf" String="if" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_ctrlflow" endRegion="jinjaIf" String="endif" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaAutoescape" String="autoescape" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaAutoescape" String="endautoescape" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaBlock" String="block" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaBlock" String="endblock" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaCall" String="call" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaCall" String="endcall" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaFilter" String="filter" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaFilter" String="endfilter" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaMacro" String="macro" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaMacro" String="endmacro" />
+        <!-- TODO: Use multi-stacking to avoid Jinja highlighting inside the raw region. -->
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaRaw" String="raw" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaRaw" String="endraw" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaTrans" String="trans" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaTrans" String="endtrans" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" beginRegion="jinjaWith" String="with" />
+        <WordDetect context="#pop!jinja_statement" attribute="jinja_keyword" endRegion="jinjaWith" String="endwith" />
+      </context>
+      <context name="jinja_statement" attribute="jinja_code" lineEndContext="#pop!jinja_statement_1st">
+        <DetectSpaces context="#stay" attribute="jinja_code" />
+        <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaStatement" String="-%}" />
+        <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaStatement" String="+%}" />
+        <Detect2Chars context="#pop" attribute="jinja_delimiter" endRegion="jinjaStatement" char="%" char1="}" />
+        <IncludeRules context="jinja_source" />
+      </context>
+      <context name="jinja_expression" attribute="jinja_code" lineEndContext="#stay">
+        <DetectSpaces context="#stay" attribute="jinja_code" />
+        <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaExpression" String="-}}" />
+        <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaExpression" String="+}}" />
+        <Detect2Chars context="#pop" attribute="jinja_delimiter" endRegion="jinjaExpression" char="}" char1="}" />
+        <IncludeRules context="jinja_source" />
+      </context>
+      <context name="jinja_comment" attribute="jinja_comment" lineEndContext="#stay">
+        <DetectSpaces context="#stay" attribute="jinja_comment" />
+        <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaComment" String="-#}" />
+        <StringDetect context="#pop" attribute="jinja_delimiter" endRegion="jinjaComment" String="+#}" />
+        <Detect2Chars context="#pop" attribute="jinja_delimiter" endRegion="jinjaComment" char="#" char1="}" />
+      </context>
+      <context name="jinja_source" attribute="jinja_code" lineEndContext="#stay">
+        <HlCHex context="#stay" attribute="jinja_basen" />
+        <HlCOct context="#stay" attribute="jinja_basen" />
+        <Float context="#stay" attribute="jinja_float" />
+        <Int context="#stay" attribute="jinja_decimal" />
+        <DetectChar context="jinja_string1" attribute="jinja_string" char="'" />
+        <DetectChar context="jinja_string2" attribute="jinja_string" char="&quot;" />
+        <AnyChar context="#stay" attribute="jinja_operator" String=".[]{}()+-*/%&lt;&gt;=!~" />
+        <DetectChar context="jinja_filter" attribute="jinja_operator" char="|" />
+        <WordDetect context="jinja_test" attribute="jinja_operator" String="is" />
+        <keyword context="#stay" attribute="jinja_operator" String="jinja_operators" />
+        <keyword context="#stay" attribute="jinja_ctrlflow" String="jinja_ctrlflows" />
+        <keyword context="#stay" attribute="jinja_keyword" String="jinja_keywords" />
+        <keyword context="#stay" attribute="jinja_import" String="jinja_imports" />
+        <keyword context="#stay" attribute="jinja_constant" String="jinja_constants" />
+        <keyword context="#stay" attribute="jinja_builtin" String="jinja_globals" />
+        <RegExpr context="#stay" attribute="jinja_function" String="[a-zA-Z_][a-zA-Z0-9_]*(?=\()" />
+      </context>
+      <context name="jinja_string1" attribute="jinja_string" lineEndContext="#stay">
+        <DetectChar context="#pop" attribute="jinja_string" char="'"/>
+        <IncludeRules context="jinja_string_common"/>
+      </context>
+      <context name="jinja_string2" attribute="jinja_string" lineEndContext="#stay">
+        <DetectChar context="#pop" attribute="jinja_string" char="&quot;"/>
+        <IncludeRules context="jinja_string_common"/>
+      </context>
+      <context name="jinja_string_common" attribute="jinja_string" lineEndContext="#stay">
+        <DetectSpaces context="#stay" attribute="jinja_string" />
+        <HlCStringChar context="#stay" attribute="jinja_escape" />
+        <RegExpr context="#stay" attribute="jinja_escape" String="\\[uU][0-9a-fA-F]{4,8}" />
+      </context>
+      <context name="jinja_filter" attribute="jinja_code" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces context="#stay" attribute="jinja_code" />
+        <keyword context="#pop" attribute="jinja_builtin" String="jinja_builtin_filters" />
+        <DetectIdentifier context="#pop" attribute="jinja_function" />
+      </context>
+      <context name="jinja_test" attribute="jinja_code" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces context="#stay" attribute="jinja_code" />
+        <WordDetect context="#stay" attribute="jinja_operator" String="not" />
+        <keyword context="#pop" attribute="jinja_builtin" String="jinja_builtin_tests" />
+        <DetectIdentifier context="#pop" attribute="jinja_function" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="jinja_normal" defStyleNum="dsNormal" spellChecking="false" />
+      <itemData name="jinja_delimiter" defStyleNum="dsRegionMarker" bold="true" spellChecking="false" />
+      <itemData name="jinja_code" defStyleNum="dsNormal" spellChecking="false" />
+      <itemData name="jinja_comment" defStyleNum="dsComment" spellChecking="true" />
+      <itemData name="jinja_basen" defStyleNum="dsBaseN" spellChecking="false" />
+      <itemData name="jinja_float" defStyleNum="dsFloat" spellChecking="false" />
+      <itemData name="jinja_decimal" defStyleNum="dsDecVal" spellChecking="false" />
+      <itemData name="jinja_string" defStyleNum="dsString" spellChecking="true" />
+      <itemData name="jinja_escape" defStyleNum="dsSpecialChar" spellChecking="false" />
+      <itemData name="jinja_operator" defStyleNum="dsOperator" spellChecking="false" />
+      <itemData name="jinja_ctrlflow" defStyleNum="dsControlFlow" spellChecking="false" />
+      <itemData name="jinja_keyword" defStyleNum="dsKeyword" spellChecking="false" />
+      <itemData name="jinja_import" defStyleNum="dsImport" spellChecking="false" />
+      <itemData name="jinja_constant" defStyleNum="dsConstant" spellChecking="false" />
+      <itemData name="jinja_builtin" defStyleNum="dsBuiltIn" spellChecking="false" />
+      <itemData name="jinja_function" defStyleNum="dsFunction" spellChecking="false" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+
+<!-- kate: tab-width 2; replace-tabs on; indent-width 2; -->
diff --git a/xml/jira.xml b/xml/jira.xml
new file mode 100644
--- /dev/null
+++ b/xml/jira.xml
@@ -0,0 +1,779 @@
+<?xml version = '1.0' encoding = 'UTF-8'?>
+<!DOCTYPE language [
+
+  <!ENTITY start "(^|(?&lt;=\s))">
+  <!ENTITY citation "&start;\?\?(?=[^\s][^?]+\?\?([\s.,;:-]|$))">
+  <!ENTITY deleted "&start;\-(?=[^\s][^\-]+\-([\s.,;:?]|$))">
+  <!ENTITY emphasis "&start;_(?=[^\s][^_]+_([\s.,;:-]|\?|$))">
+  <!ENTITY inserted "&start;\+(?=[^\s][^\+]+\+([\s.,;:-]|\?|$))">
+  <!ENTITY monospaced "&start;\{\{(?=[^\s][^}]+\}\}([\s.,;:-]|$))">
+  <!ENTITY strong "&start;\*(?=[^\s][^\*]+\*([\s.,;:-]|\?|$))">
+  <!ENTITY subscript "&start;~(?=[^\s][^~]+~([\s.,;:-]|\?|$))">
+  <!ENTITY superscript "&start;\^(?=[^\s][^\^]+\^([\s.,;:-]|\?|$))">
+
+  <!ENTITY attachment     "&start;\[\^(?=[^]\s][^]]+\])">
+  <!ENTITY bracketAnchor  "&start;\[#(?=[^]\s][^]]+\])">
+  <!ENTITY taggedLink     "&start;\[(?=[^]\s|][^]|]+(\|[^]\s|][^]|]+)?\])">
+  <!ENTITY userTag        "&start;\[~(?=[^]\s][^]]+\])">
+
+  <!ENTITY embeddedItem   "&start;!(?=[^!\s][^!]+!)">
+
+  <!ENTITY panel          "&start;\{panel(?=[^\}]*\})">
+
+  <!ENTITY code           "&start;\{code(?=[^\}]*\})">
+
+  <!ENTITY url "(http:|https:|ftp:|mailto:)[^]|) ]*(?=$|[]|\s|\)])">
+]>
+<language name="Jira" section="Markup" version="15" kateversion="6.22" extensions="*.jira" mimetype="" license="FDL" >
+  <highlighting>
+
+    <!--
+    Documentation about the Jira syntax: https://jira.atlassian.com/secure/WikiRendererHelpAction.jspa?section=all
+    -->
+
+    <contexts>
+
+      <!-- Main Context -->
+      <context name="Start" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
+        <IncludeRules context="FindHeader" />
+        <IncludeRules context="FindBlockQuote" />
+        <IncludeRules context="FindText" />
+        <IncludeRules context="FindListItem" />
+        <IncludeRules context="FindIcons" />
+        <IncludeRules context="FindTables" />
+        <IncludeRules context="FindColor" />
+        <IncludeRules context="FindQuote" />
+        <IncludeRules context="FindNoFormat" />
+        <IncludeRules context="FindPanels" />
+        <IncludeRules context="FindCode" />
+        <IncludeRules context="FindTextBreaks" />
+        <IncludeRules context="FindEmbeddedItems" />
+        <IncludeRules context="FindLinks" />
+        <IncludeRules context="FindEscapeSequences" />
+        <IncludeRules context="FindLineBreaks" />
+      </context>
+
+
+      <!-- Contexts -->
+
+      <!-- Headings -->
+      <context name="Header" attribute="Header" lineEndContext="#pop" />
+
+
+      <!-- Images / Attachments -->
+      <context name="EmbeddedItemContent" attribute="Link" lineEndContext="#stay" fallthroughContext="EmbeddedItemLink">
+        <!-- !spaceKey:pageTitle^attachment.mov! -->
+        <RegExpr String="[^:!|]+(?=:[^!|]*\^)" attribute="Label" context="EmbeddedItemPageTitle" />
+      </context>
+      <context name="EmbeddedItemLink" attribute="Link" lineEndContext="#stay">
+        <DetectChar char="|" attribute="Special Character" context="EmbeddedItemAttributes" />
+        <DetectChar char="!" attribute="Special Character" context="#pop#pop" />
+      </context>
+      <context name="EmbeddedItemPageTitle" attribute="Label" lineEndContext="#stay">
+        <DetectChar char=":" attribute="Special Character" context="#stay" />
+        <DetectChar char="^" attribute="Special Character" context="#pop!EmbeddedItemLink" />
+      </context>
+      <context name="EmbeddedItemAttributes" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="!" attribute="Special Character" context="#pop#pop#pop" />
+        <DetectChar char="=" attribute="Normal" context="EmbeddedItemAttributeValue" />
+        <DetectIdentifier attribute="AttributeKeyword" context="#stay" />
+      </context>
+      <context name="EmbeddedItemAttributeValue" attribute="AttributeValue" lineEndContext="#stay">
+        <DetectChar char="," attribute="Normal" context="#pop" />
+        <DetectChar char="!" attribute="Special Character" context="#pop#pop#pop#pop" />
+        <DetectIdentifier attribute="AttributeValue" context="#stay" />
+      </context>
+
+      <context name="PanelStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char=":" attribute="Special Character" context="PanelAttributes" />
+        <DetectChar char="}" attribute="Special Character" context="PanelContent" />
+      </context>
+      <context name="PanelContent" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
+        <StringDetect String="{panel}" attribute="Special Character" context="#pop#pop" />
+        <IncludeRules context="FindBlockQuote" />
+        <IncludeRules context="FindText" />
+        <IncludeRules context="FindListItem" />
+        <IncludeRules context="FindIcons" />
+        <IncludeRules context="FindTables" />
+        <IncludeRules context="FindColor" />
+        <IncludeRules context="FindQuote" />
+        <IncludeRules context="FindNoFormat" />
+        <IncludeRules context="FindCode" />
+        <IncludeRules context="FindTextBreaks" />
+        <IncludeRules context="FindEmbeddedItems" />
+        <IncludeRules context="FindLinks" />
+        <IncludeRules context="FindEscapeSequences" />
+        <IncludeRules context="FindLineBreaks" />
+      </context>
+      <context name="PanelAttributes" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!PanelContent" />
+        <DetectChar char="=" attribute="Normal" context="PanelAttributeValue" />
+        <DetectIdentifier attribute="AttributeKeyword" context="#stay" />
+      </context>
+      <context name="PanelAttributeValue" attribute="AttributeValue" lineEndContext="#stay">
+        <DetectChar char="|" attribute="Special Character" context="#pop" />
+        <DetectChar char="}" attribute="Special Character" context="#pop#pop!PanelContent" />
+      </context>
+
+
+      <!-- See https://confluence.atlassian.com/display/DOC/Code+Block+Macro for keywords -->
+      <context name="CodeContext" lineEndContext="#stay" attribute="Normal" fallthroughContext="JavaCodeStartTagContent">
+        <!-- TODO see note -->
+          <!-- Note: Commented out lines are for languages that Jira supports but KTextEditor does not yet. -->
+<!--         <RegExpr String=":(?= *actionscript3 *[|}])" attribute="Special Character" context="JavaCodeStartTagContent" /> -->
+        <RegExpr String=":(?= *(ada|title=[- \w]+\.(adb|ads|ada|a)) *[|}])" attribute="Special Character" context="AdaCodeStartTagContent" />
+<!--         <RegExpr String=":(?= *AppleScript *[|}])" attribute="Special Character" context="AppleScriptCodeStartTagContent" /> -->
+        <RegExpr String=":(?= *(bash|title=[- \w]*\.(sh|bash)) *[|}])" attribute="Special Character" context="BashCodeStartTagContent" />
+        <RegExpr String=":(?= *(csharp|title=[- \w]*\.(cs|ashx)) *[|}])" attribute="Special Character" context="CSharpCodeStartTagContent" />
+        <RegExpr String=":(?= *(coldfusion|title=[- \w]*\.(cfm|cfc|cfml|dbm)) *[|}])" attribute="Special Character" context="ColdFusionCodeStartTagContent" />
+        <RegExpr String=":(?= *(c(pp)?|title=[- \w]*\.([cChH]|cpp|hpp|cxx|c\+\+|cc|cu|hh)) *[|}])" attribute="Special Character" context="CppCodeStartTagContent" />
+        <RegExpr String=":(?= *(css|title=[- \w]*\.css) *[|}])" attribute="Special Character" context="CssCodeStartTagContent" />
+        <RegExpr String=":(?= *(delphi|title=[- \w]*\.(p|pas|pp)) *[|}])" attribute="Special Character" context="PascalCodeStartTagContent" />
+        <RegExpr String=":(?= *(diff|title=[- \w]*\.(diff|patch)) *[|}])" attribute="Special Character" context="DiffCodeStartTagContent" />
+        <RegExpr String=":(?= *(erlang|title=[- \w]*\.erl) *[|}])" attribute="Special Character" context="ErlangCodeStartTagContent" />
+        <RegExpr String=":(?= *(groovy|title=([- \w]*\.(groovy|gradle|gvy)|Jenkinsfile)) *[|}])" attribute="Special Character" context="GroovyCodeStartTagContent" />
+        <RegExpr String=":(?= *(haskell|title=[- \w]*\.c?hs) *[|}])" attribute="Special Character" context="HaskellCodeStartTagContent" />
+        <RegExpr String=":(?= *(html|title=[- \w]*\.(s?html?|aspx)) *[|}])" attribute="Special Character" context="HtmlCodeStartTagContent" />
+        <RegExpr String=":(?= *(java|title=[- \w]*\.java) *[|}])" attribute="Special Character" context="JavaCodeStartTagContent" />
+<!--         <RegExpr String=":(?= *javafx *[|}])" attribute="Special Character" context="JavaCodeStartTagContent" /> -->
+        <RegExpr String=":(?= *(javascript|title=[- \w]*\.([cm]?js)) *[|}])" attribute="Special Character" context="JavaScriptCodeStartTagContent" />
+        <RegExpr String=":(?= *(json|title=[- \w]*\.json) *[|}])" attribute="Special Character" context="JsonCodeStartTagContent" />
+        <RegExpr String=":(?= *(lua|title=[- \w]*\.(lua|rockspec)) *[|}])" attribute="Special Character" context="LuaCodeStartTagContent" />
+        <RegExpr String=":(?= *none *[|}])" attribute="Special Character" context="NoneCodeStartTagContent" />
+<!-- <RegExpr String=":(?= *nyan *[|}])" attribute="Special Character" context="NyanCodeStartTagContent" /> -->
+        <RegExpr String=":(?= *(perl|title=[- \w]*\.(pl|PL|pm)) *[|}])" attribute="Special Character" context="PerlCodeStartTagContent" />
+        <RegExpr String=":(?= *(php|title=[- \w]*\.php) *[|}])" attribute="Special Character" context="PhpCodeStartTagContent" />
+        <RegExpr String=":(?= *(powershell|title=[- \w]*\.(ps1|psm1|psd1)) *[|}])" attribute="Special Character" context="PowerShellCodeStartTagContent" />
+        <RegExpr String=":(?= *(python|title=[- \w]*\.py) *[|}])" attribute="Special Character" context="PythonCodeStartTagContent" />
+        <RegExpr String=":(?= *(ruby|title=([- \w]*\.(rb|rake|gemspec)|Rakefile|Gemfile|Vagrantfile)) *[|}])" attribute="Special Character" context="RubyCodeStartTagContent" />
+        <RegExpr String=":(?= *(ruby|title=([- \w]*\.erv)) *[|}])" attribute="Special Character" context="RHTMLCodeStartTagContent" />
+        <RegExpr String=":(?= *(scala|title=[- \w]*\.(scala|sbt)) *[|}])" attribute="Special Character" context="ScalaCodeStartTagContent" />
+        <RegExpr String=":(?= *(sql|title=[- \w]*\.sql) *[|}])" attribute="Special Character" context="SqlCodeStartTagContent" />
+        <RegExpr String=":(?= *(swift|title=[- \w]*\.swift) *[|}])" attribute="Special Character" context="SwiftCodeStartTagContent" />
+<!--         <RegExpr String=":(?= *vb *[|}])" attribute="Special Character" context="VisualBasicCodeStartTagContent" /> -->
+        <RegExpr String=":(?= *(xml|title=[- \w]*\.(xml|xslt?)) *[|}])" attribute="Special Character" context="XmlCodeStartTagContent" />
+        <RegExpr String=":(?= *(yaml|title=[- \w]*\.ya?ml) *[|}])" attribute="Special Character" context="YamlCodeStartTagContent" />
+      </context>
+
+      <context name="FindCodeAttributes" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="|" attribute="Special Character" context="#stay" />
+        <DetectChar char="=" attribute="Normal" context="CodeAttributeValue" />
+        <DetectIdentifier attribute="AttributeKeyword" context="#stay" />
+      </context>
+      <context name="CodeAttributeValue" attribute="AttributeValue" lineEndContext="#stay">
+        <AnyChar String="|}" context="#pop" lookAhead="true" />
+      </context>
+
+      <context name="FindEndCode" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="{code}" attribute="Special Character" context="#pop#pop#pop" />
+      </context>
+
+      <context name="AdaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="AdaCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="AdaCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Ada" />
+      </context>
+
+      <context name="BashCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="BashCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="BashCodeContent" attribute="Normal" lineEndContext="#stay" fallthroughContext="Command##Bash">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Bash" />
+      </context>
+
+      <context name="CSharpCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="CSharpCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="CSharpCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##C#" />
+      </context>
+
+      <context name="ColdFusionCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="ColdFusionCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="ColdFusionCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##ColdFusion" />
+      </context>
+
+      <context name="CppCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="CppCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="CppCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##C++" />
+      </context>
+
+      <context name="CssCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="CssCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="CssCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##CSS" />
+      </context>
+
+      <context name="DiffCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="DiffCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="DiffCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Diff" />
+      </context>
+
+      <context name="ErlangCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="ErlangCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="ErlangCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Erlang" />
+      </context>
+
+      <context name="GroovyCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="GroovyCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="GroovyCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Groovy" />
+      </context>
+
+      <context name="HaskellCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="HaskellCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="HaskellCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Haskell" />
+      </context>
+
+      <context name="HtmlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="HtmlCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="HtmlCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##HTML" />
+      </context>
+
+      <context name="JavaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="JavaCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="JavaCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Java" />
+      </context>
+
+      <context name="JavaScriptCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="JavaScriptCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="JavaScriptCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="Normal##JavaScript" />
+      </context>
+
+      <context name="JsonCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="JsonCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="JsonCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##JSON" />
+      </context>
+
+      <context name="LuaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="LuaCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="LuaCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Lua" />
+      </context>
+
+      <context name="NoneCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="NoneCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="NoneCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+      </context>
+
+      <context name="PascalCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="PascalCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="PascalCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Pascal" />
+      </context>
+
+      <context name="PerlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="PerlCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="PerlCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Perl" />
+      </context>
+
+      <context name="PhpCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="PhpCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="PhpCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="phpsource##PHP/PHP" />
+      </context>
+
+      <context name="PowerShellCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="PowerShellCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="PowerShellCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##PowerShell" />
+      </context>
+
+      <context name="PythonCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="PythonCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="PythonCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Python" />
+      </context>
+
+      <context name="RubyCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="RubyCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="RubyCodeContent" attribute="Normal" lineEndContext="#stay" fallthroughContext="Expr##Ruby">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="Ruby##Ruby" />
+      </context>
+
+      <context name="RHTMLCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="RHTMLCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="RHTMLCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Ruby/Rails/RHTML" />
+      </context>
+
+      <context name="ScalaCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="ScalaCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="ScalaCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##Scala" />
+      </context>
+
+      <context name="SqlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="SqlCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="SqlCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##SQL" />
+      </context>
+
+      <context name="SwiftCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="SwiftCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="SwiftCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="Normal##Swift" />
+      </context>
+
+      <context name="XmlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="XmlCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="XmlCodeContent" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##XML" />
+      </context>
+
+      <context name="YamlCodeStartTagContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="YamlCodeContent" />
+        <IncludeRules context="FindCodeAttributes" />
+      </context>
+      <context name="YamlCodeContent" attribute="Normal" lineEndContext="#stay" fallthroughContext="Lvl0Text##YAML">
+        <IncludeRules context="FindEndCode" />
+        <IncludeRules context="##YAML" />
+      </context>
+
+
+      <!-- Links -->
+      <context name="BracketAnchorContent" attribute="Link" lineEndContext="#stay">
+        <DetectChar char="]" attribute="Special Character" context="#pop" />
+      </context>
+
+      <context name="AttachmentLinkContent" attribute="Link" lineEndContext="#stay">
+        <DetectChar char="]" attribute="Special Character" context="#pop" />
+      </context>
+
+      <context name="UserTagContent" attribute="Link" lineEndContext="#stay">
+        <DetectChar char="]" attribute="Special Character" context="#pop" />
+      </context>
+
+      <context name="TaggedLinkContent" attribute="Link" lineEndContext="#stay" fallthroughContext="TaggedLinkUrl">
+        <DetectChar char="|" attribute="Special Character" context="TaggedLinkUrl" />
+        <RegExpr String="[^]|]+(?=\|)" attribute="Label" context="#stay" />
+      </context>
+      <context name="TaggedLinkUrl" attribute="Link" lineEndContext="#stay">
+        <DetectChar char="]" attribute="Special Character" context="#pop#pop" />
+      </context>
+
+      <context name="BraceAnchorContent" attribute="Link" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop#pop" />
+      </context>
+
+
+      <!-- Text Effects -->
+      <context name="ColorTagColor" attribute="Normal" lineEndContext="#stay">
+        <!-- Black and White have been skipped on purpose. -->
+        <StringDetect String="silver}"  context="ColorSilverTagColor" lookAhead="true" />
+        <StringDetect String="gray}"  context="ColorGrayTagColor" lookAhead="true" />
+        <StringDetect String="red}"  context="ColorRedTagColor" lookAhead="true" />
+        <StringDetect String="maroon}"  context="ColorMaroonTagColor" lookAhead="true" />
+        <StringDetect String="yellow}"  context="ColorYellowTagColor" lookAhead="true" />
+        <StringDetect String="olive}"  context="ColorOliveTagColor" lookAhead="true" />
+        <StringDetect String="lime}"  context="ColorLimeTagColor" lookAhead="true" />
+        <StringDetect String="green}"  context="ColorGreenTagColor" lookAhead="true" />
+        <StringDetect String="aqua}"  context="ColorAquaTagColor" lookAhead="true" />
+        <StringDetect String="teal}"  context="ColorTealTagColor" lookAhead="true" />
+        <StringDetect String="blue}"  context="ColorBlueTagColor" lookAhead="true" />
+        <StringDetect String="navy}"  context="ColorNavyTagColor" lookAhead="true" />
+        <StringDetect String="fuchsia}"  context="ColorFuchsiaTagColor" lookAhead="true" />
+        <StringDetect String="purple}"  context="ColorPurpleTagColor" lookAhead="true" />
+        <DetectChar char="}"  attribute="Special Character" context="HighlightedColorContent" />
+      </context>
+      <context name="HighlightedColorContent" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <StringDetect String="{color}" attribute="Special Character" context="#pop#pop" />
+      </context>
+      <context name="ColorSilverTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!SilverContent" />
+        <StringDetect String="silver" attribute="Silver" />
+      </context>
+      <context name="SilverContent" attribute="Silver" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorGrayTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!GrayContent" />
+        <StringDetect String="gray" attribute="Gray" />
+      </context>
+      <context name="GrayContent" attribute="Gray" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorRedTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!RedContent" />
+        <StringDetect String="red" attribute="Red" />
+      </context>
+      <context name="RedContent" attribute="Red" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorMaroonTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!MaroonContent" />
+        <StringDetect String="maroon" attribute="Maroon" />
+      </context>
+      <context name="MaroonContent" attribute="Maroon" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorYellowTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!YellowContent" />
+        <StringDetect String="yellow" attribute="Yellow" />
+      </context>
+      <context name="YellowContent" attribute="Yellow" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorOliveTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!OliveContent" />
+        <StringDetect String="olive" attribute="Olive" />
+      </context>
+      <context name="OliveContent" attribute="Olive" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorLimeTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!LimeContent" />
+        <StringDetect String="lime" attribute="Lime" />
+      </context>
+      <context name="LimeContent" attribute="Lime" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorGreenTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!GreenContent" />
+        <StringDetect String="green" attribute="Green" />
+      </context>
+      <context name="GreenContent" attribute="Green" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorAquaTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!AquaContent" />
+        <StringDetect String="aqua" attribute="Aqua" />
+      </context>
+      <context name="AquaContent" attribute="Aqua" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorTealTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!TealContent" />
+        <StringDetect String="teal" attribute="Teal" />
+      </context>
+      <context name="TealContent" attribute="Teal" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorBlueTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!BlueContent" />
+        <StringDetect String="blue" attribute="Blue" />
+      </context>
+      <context name="BlueContent" attribute="Blue" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorNavyTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!NavyContent" />
+        <StringDetect String="navy" attribute="Navy" />
+      </context>
+      <context name="NavyContent" attribute="Navy" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorFuchsiaTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!FuchsiaContent" />
+        <StringDetect String="fuchsia" attribute="Fuchsia" />
+      </context>
+      <context name="FuchsiaContent" attribute="Fuchsia" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+      <context name="ColorPurpleTagColor" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Special Character" context="#pop!PurpleContent" />
+        <StringDetect String="purple" attribute="Purple" />
+      </context>
+      <context name="PurpleContent" attribute="Purple" lineEndContext="#stay">
+        <IncludeRules context="HighlightedColorContent" />
+      </context>
+
+      <context name="BlockQuote" lineEndContext="#stay" lineEmptyContext="#pop" attribute="Block Quotation"/>
+      <context name="BoldContent" attribute="Bold" lineEndContext="#stay">
+        <DetectChar char="*" attribute="Special Character" context="#pop" />
+      </context>
+      <context name="CitationContent" attribute="Citation" lineEndContext="#stay">
+        <Detect2Chars char="?" char1="?" attribute="Special Character" context="#pop" />
+      </context>
+      <context name="DeletedContent" attribute="Stroked Out" lineEndContext="#stay">
+        <DetectChar char="-" attribute="Special Character" context="#pop" />
+      </context>
+      <context name="InsertedContent" attribute="Underlined" lineEndContext="#stay">
+        <DetectChar char="+" attribute="Special Character" context="#pop" />
+      </context>
+      <context name="ItalicContent" attribute="Italic" lineEndContext="#stay">
+        <DetectChar char="_" attribute="Special Character" context="#pop" />
+      </context>
+      <context name="Monospaced" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars char="}" char1="}" attribute="Special Character" context="#pop" />
+      </context>
+      <context name="Quote" attribute="Block Quotation" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <StringDetect String="{quote}" context="#pop" attribute="Special Character" />
+      </context>
+      <context name="SubscriptContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="~" attribute="Special Character" context="#pop" />
+      </context>
+      <context name="SuperscriptContent" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="^" attribute="Special Character" context="#pop" />
+      </context>
+
+
+      <!-- Tables -->
+      <context name="TableHeaderRow" attribute="Bold" lineEndContext="#pop">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <Detect2Chars char="|" char1="|" attribute="Special Character" context="#stay" />
+        <IncludeRules context="FindTextBreaks" />
+        <IncludeRules context="FindEscapeSequences" />
+        <IncludeRules context="FindIcons" />
+      </context>
+      <context name="TableRegularRow" attribute="Normal" lineEndContext="#pop">
+        <DetectSpaces />
+        <DetectChar char="|" attribute="Special Character" context="#stay" />
+        <IncludeRules context="FindText" />
+        <IncludeRules context="FindTextBreaks" />
+        <IncludeRules context="FindEscapeSequences" />
+        <IncludeRules context="FindLinks" />
+        <IncludeRules context="FindColor" />
+        <IncludeRules context="FindIcons" />
+      </context>
+
+      <context name="NoFormat" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces />
+        <DetectIdentifier />
+        <StringDetect String="{noformat}" attribute="Special Character" context="#pop" />
+      </context>
+
+
+      <!-- Rules to Include -->
+
+      <!-- BlockQuotes -->
+      <context name="FindBlockQuote" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="bq. " context="BlockQuote" attribute="Special Character" column="0" />
+      </context>
+
+      <!-- Colors -->
+      <context name="FindColor" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="\{color:(?=[^}]+\})" attribute="Special Character" context="ColorTagColor" />
+      </context>
+
+      <!-- Headings -->
+      <context name="FindHeader" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="^h[1-6]\. " context="Header" attribute="Special Character" column="0" />
+      </context>
+
+      <!-- Quotes -->
+      <context name="FindQuote" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="{quote}" context="Quote" attribute="Special Character" />
+      </context>
+
+      <!-- Text Breaks -->
+      <context name="FindTextBreaks" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="\" attribute="Special Character" />
+        <StringDetect String="----" attribute="Special Character" column="0" />
+        <StringDetect String="---" attribute="Special Character" />
+        <Detect2Chars char="-" char1="-" attribute="Special Character" />
+      </context>
+
+      <!-- Embedded Items -->
+      <context name="FindEmbeddedItems" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&embeddedItem;" attribute="Special Character" context="EmbeddedItemContent" />
+      </context>
+
+      <!-- Links -->
+      <context name="FindLinks" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&bracketAnchor;" attribute="Special Character" context="BracketAnchorContent" />
+        <RegExpr String="&attachment;" attribute="Special Character" context="AttachmentLinkContent" />
+        <RegExpr String="&userTag;" attribute="Special Character" context="UserTagContent" />
+        <RegExpr String="&taggedLink;" attribute="Special Character" context="TaggedLinkContent" />
+        <RegExpr String="\{anchor:(?=[^}]+\})" attribute="Special Character" context="BraceAnchorContent" />
+        <RegExpr String="&url;" attribute="Link" />
+      </context>
+
+      <!-- Lists -->
+      <context name="FindListItem" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="^([*#]+|-)(?=\s)" attribute="Special Character" context="#stay" column="0" />
+      </context>
+
+      <!-- Text Effects -->
+      <context name="FindTextEffects" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&strong;" attribute="Special Character" context="BoldContent" />
+        <RegExpr String="&citation;" attribute="Special Character" context="CitationContent" />
+        <RegExpr String="&deleted;" attribute="Special Character" context="DeletedContent" />
+        <RegExpr String="&inserted;" attribute="Special Character" context="InsertedContent" />
+        <RegExpr String="&subscript;" attribute="Special Character" context="SubscriptContent" />
+        <RegExpr String="&superscript;" attribute="Special Character" context="SuperscriptContent" />
+        <RegExpr String="&monospaced;" attribute="Special Character" context="Monospaced" />
+      </context>
+      <context name="EmphasisOrIdentifier" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&emphasis;" attribute="Special Character" context="#pop!ItalicContent" />
+        <DetectIdentifier context="#pop" />
+      </context>
+
+      <!-- Text -->
+      <context name="FindText" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="_" context="EmphasisOrIdentifier" lookAhead="true" />
+        <DetectIdentifier />
+        <IncludeRules context="FindTextEffects" />
+      </context>
+
+      <!-- Tables -->
+      <context name="FindTables" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars char="|" char1="|" attribute="Special Character" context="TableHeaderRow" column="0" />
+        <DetectChar char="|" attribute="Special Character" context="TableRegularRow" column="0" />
+      </context>
+
+      <!-- No format -->
+      <context name="FindNoFormat" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="{noformat}" context="NoFormat" attribute="Special Character" />
+      </context>
+
+      <!-- Panels -->
+      <context name="FindPanels" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&panel;" attribute="Special Character" context="PanelStartTagContent" />
+      </context>
+
+      <!-- Code -->
+      <context name="FindCode" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&code;" attribute="Special Character" context="CodeContext" />
+      </context>
+
+      <!-- Escape Sequences -->
+      <context name="FindEscapeSequences" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="\\[^ \\]" attribute="EscapeSequence" />
+      </context>
+
+      <!-- Line Breaks -->
+      <context name="FindLineBreaks" attribute="Normal" lineEndContext="#stay">
+        <LineContinue attribute="Special Character" />
+      </context>
+
+      <!-- Icons -->
+      <context name="FindIcons" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String=":\)|:\(|:P|:D|;\)|\(([yni/x!+-?*]|on|off|[*][rgby]|flag|flagoff)\)" attribute="Special Character" />
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal" defStyleNum="dsNormal" /><!-- Must be first. -->
+
+      <itemData name="Bold" defStyleNum="dsNormal" bold="true" />
+      <itemData name="Header" defStyleNum="dsKeyword" />
+      <itemData name="Italic" defStyleNum="dsNormal" italic="true" />
+      <itemData name="Citation" defStyleNum="dsNormal" italic="true" />
+      <itemData name="Block Quotation" defStyleNum="dsNormal" />
+      <itemData name="Special Character" defStyleNum="dsDecVal" bold="true" />
+      <itemData name="Stroked Out" defStyleNum="dsNormal" strikeOut="true" />
+      <itemData name="Underlined" defStyleNum="dsNormal" underline="true" />
+      <itemData name="AttributeKeyword" defStyleNum="dsOthers" spellChecking="false" />
+      <itemData name="AttributeValue" defStyleNum="dsString" spellChecking="false" />
+      <itemData name="EscapeSequence" defStyleNum="dsChar" spellChecking="false" />
+      <itemData name="Link" defStyleNum="dsPreprocessor" spellChecking="false" />
+      <itemData name="Label" defStyleNum="dsAnnotation" spellChecking="false" />
+
+      <!-- Colors -->
+      <itemData name="Silver" defStyleNum="dsNormal" color="silver" />
+      <itemData name="Gray" defStyleNum="dsNormal" color="gray" />
+      <itemData name="Red" defStyleNum="dsNormal" color="red" />
+      <itemData name="Maroon" defStyleNum="dsNormal" color="maroon" />
+      <itemData name="Yellow" defStyleNum="dsNormal" color="yellow" />
+      <itemData name="Olive" defStyleNum="dsNormal" color="olive" />
+      <itemData name="Lime" defStyleNum="dsNormal" color="lime" />
+      <itemData name="Green" defStyleNum="dsNormal" color="green" />
+      <itemData name="Aqua" defStyleNum="dsNormal" color="aqua" />
+      <itemData name="Teal" defStyleNum="dsNormal" color="teal" />
+      <itemData name="Blue" defStyleNum="dsNormal" color="blue" />
+      <itemData name="Navy" defStyleNum="dsNormal" color="navy" />
+      <itemData name="Fuchsia" defStyleNum="dsNormal" color="fuchsia" />
+      <itemData name="Purple" defStyleNum="dsNormal" color="purple" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="0" />
+  </general>
+</language>
diff --git a/xml/json.xml b/xml/json.xml
--- a/xml/json.xml
+++ b/xml/json.xml
@@ -1,18 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
  ***************************************************************************
  ** Writing a Kate Highlighting XML File
  ** http://kate-editor.org/article/writing_a_kate_highlighting_xml_file
  **
  ** Introducing JSON
- ** http://www.json.org/
+ ** https://www.json.org/
  **
  ** The application/json Media Type for JavaScript Object Notation (JSON)
  ** http://tools.ietf.org/html/rfc4627
+ ** https://www.json.org/json-en.html
  ***************************************************************************
 -->
-<language name="JSON" section="Markup" version="6" kateversion="2.4" extensions="*.json;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme" mimetype="application/json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
+<language name="JSON" section="Markup" version="10" kateversion="2.4" extensions="*.json;*.jsonl;*.ndjson;.kateproject;.arcconfig;*.geojson;*.gltf;*.theme;*.cast" mimetype="application/json;application/x-ndjson;application/geo+json" author="Sebastian Pipping (sebastian@pipping.org)" license="GPL">
   <highlighting>
     <list name="Constants">
       <item>null</item>
@@ -20,62 +21,69 @@
       <item>false</item>
     </list>
 
+    <!--
+      Comments with JSONC are used by generate-jsonc.pl
+      which generates a jsonc.xml which supports .json and .jsonc
+      with priority="1"
+    -->
+
     <contexts>
       <context name="Normal" lineEndContext="#stay" attribute="Style_Error">
+        <DetectChar char="&quot;"  context="String_Value" attribute="Style_String_Value" />
         <DetectChar char="{"       context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" />
         <DetectChar char="["       context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" />
 
         <DetectSpaces context="#stay" attribute="Style_Normal" />
+        <!-- JSONC -->
+
+        <keyword String="Constants" context="#stay" attribute="Style_Keyword" />
+
+        <RegExpr String="-?\b((0\b|[1-9][0-9]*)\.[0-9]+(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Float" />
+        <RegExpr String="-?\b(0\b|[1-9][0-9]*(?:[eE][+-]?[0-9]+)?)" context="#stay" attribute="Style_Decimal" />
       </context>
 
       <context name="Pair" lineEndContext="#stay" attribute="Style_Error">
         <DetectChar char="&quot;"  context="String_Key" attribute="Style_String_Key" />
         <DetectChar char=":"       context="Value" attribute="Style_Seperator_Pair" />
         <DetectChar char="}"       context="#pop" endRegion="Region_Object" attribute="Style_Seperator_Pair" />
-        <DetectChar char=","       context="#stay" attribute="Style_Seperator_Pair" />
 
         <DetectSpaces context="#stay" attribute="Style_Normal" />
+        <!-- JSONC -->
       </context>
 
       <context name="String_Key" lineEndContext="#stay" attribute="Style_String_Key">
         <DetectChar char="&quot;"  context="#pop" attribute="Style_String_Key" />
-        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" insensitive="false" minimal="false" attribute="Style_String_Key_Char" />
+        <DetectChar char="\"       context="String_Key_Char" lookAhead="1"/>
       </context>
 
-      <context name="Value" lineEndContext="#stay" attribute="Style_Error" >
-        <DetectChar char="&quot;"  context="String_Value" attribute="Style_String_Value" />
-        <DetectChar char="{"       context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" />
-        <DetectChar char="["       context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" />
-        <AnyChar String="},"       context="#pop" lookAhead="true" />
-
-        <DetectSpaces context="#stay" attribute="Style_Normal" />
-
-        <keyword String="Constants" context="#stay" attribute="Style_Keyword" />
+      <context name="String_Key_Char" lineEndContext="#stay" attribute="Style_Normal">
+        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#pop" attribute="Style_String_Key_Char" />
+        <RegExpr String="\\(u[0-9a-fA-f]+|.)?" context="#pop" attribute="Style_Error" />
+      </context>
 
-        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Float" />
-        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Decimal" />
+      <context name="Value" lineEndContext="#stay" attribute="Style_Error" >
+        <DetectChar char="," context="#pop" attribute="Style_Seperator_Pair" />
+        <DetectChar char="}" context="#pop#pop" attribute="Style_Seperator_Pair" endRegion="Region_Object"/>
+        <IncludeRules context="Normal"/>
       </context>
 
       <context name="String_Value" lineEndContext="#stay" attribute="Style_String_Value">
         <DetectChar char="&quot;"  context="#pop" attribute="Style_String_Value" />
-        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#stay" insensitive="false" minimal="false" attribute="Style_String_Value_Char" />
+        <DetectChar char="\"       context="String_Key_Value" lookAhead="1" />
       </context>
 
+      <context name="String_Key_Value" lineEndContext="#stay" attribute="Style_Normal">
+        <RegExpr String="\\(?:[&quot;\\/bfnrt]|u[0-9a-fA-f]{4})" context="#pop"  attribute="Style_String_Value_Char" />
+        <RegExpr String="\\(u[0-9a-fA-f]+|.)?" context="#pop" attribute="Style_Error" />
+      </context>
+
       <context name="Array" lineEndContext="#stay" attribute="Style_Error">
         <DetectChar char=","       context="#stay" attribute="Style_Seperator_Array" />
         <DetectChar char="]"       context="#pop" endRegion="Region_Array" attribute="Style_Seperator_Array" />
 
-        <DetectChar char="{"       context="Pair" beginRegion="Region_Object" attribute="Style_Seperator_Pair" />
-        <DetectChar char="["       context="Array" beginRegion="Region_Array" attribute="Style_Seperator_Array" />
-        <DetectChar char="&quot;"  context="String_Value" attribute="Style_String_Value" />
-
-        <DetectSpaces context="#stay" attribute="Style_Normal" />
-
-        <keyword String="Constants" context="#stay" attribute="Style_Keyword" />
-
-        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)\.[0-9]+(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Float" />
-        <RegExpr String="-?(?:[0-9]|[1-9][0-9]+)(?:[eE][+-]?[0-9]+)?" context="#stay" insensitive="false" minimal="false" attribute="Style_Decimal" />
+        <IncludeRules context="Normal"/>
       </context>
+
     </contexts>
 
     <itemDatas>
@@ -100,4 +108,3 @@
 <!--
 // kate: space-indent on; indent-width 2; replace-tabs on;
 -->
-
diff --git a/xml/jsp.xml b/xml/jsp.xml
--- a/xml/jsp.xml
+++ b/xml/jsp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language version="9" kateversion="5.62" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
+<!DOCTYPE language>
+<language version="11" kateversion="5.79" name="JSP" section="Markup" extensions="*.jsp;*.JSP" mimetype="text/html" casesensitive="false" author="Rob Martin (rob@gamepimp.com)" license="LGPL">
   <highlighting>
 
     <list name="jsp-reserved-words">
@@ -27,15 +27,13 @@
         <RegExpr String="&lt;%@\s*[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Standard Directive"/>
         <RegExpr String="&lt;\s*jsp:(declaration|expression|scriptlet)\s*&gt;" attribute="Jsp Scriptlet" context="Jsp Scriptlet"/>
         <RegExpr String="&lt;\s*\/?s*jsp:[a-zA-Z0-9_\.]*" attribute="Jsp Directive" context="Jsp Xml Directive"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <StringDetect String="&lt;!--" attribute="Html Comment" context="Html Comment" beginRegion="HtmlComment"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?[a-zA-Z0-9_]*:\$?[a-zA-Z0-9_]*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <StringDetect String="&lt;![CDATA[" attribute="Normal Text" context="#stay"/>
         <StringDetect String="]]&gt;" attribute="Normal Text" context="#stay"/>
-        <RegExpr String="&lt;script\b" attribute="Normal Text" context="JS" beginRegion="script" />
-        <RegExpr String="&lt;style\b" attribute="Normal Text" context="CSS" beginRegion="style" />
+        <WordDetect String="&lt;script" attribute="Normal Text" context="JS" beginRegion="script" />
+        <WordDetect String="&lt;style" attribute="Normal Text" context="CSS" beginRegion="style" />
         <RegExpr String="&lt;\s*\/?\s*[a-zA-Z0-9_]*" attribute="Normal Text" context="Html Attribute"/>
       </context>
 
@@ -57,7 +55,7 @@
       </context>
 
       <context name="JS content" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Normal Text" context="#pop#pop!Html Attribute" String="&lt;/script\b" endRegion="script" />
+        <WordDetect attribute="Normal Text" context="#pop#pop!Html Attribute" String="&lt;/script" endRegion="script" />
         <RegExpr attribute="Jsp Comment" context="JS comment close" String="//(?=.*&lt;/script)" />
         <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
       </context>
@@ -71,18 +69,14 @@
       <context name="Jsp Standard Directive" attribute="Jsp Param Name" lineEndContext="#stay">
         <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Standard Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
       </context>
 
       <context name="Jsp Xml Directive" attribute="Jsp Param Name" lineEndContext="#stay">
         <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Xml Directive Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Comment" attribute="Jsp Comment" lineEndContext="#stay">
@@ -94,33 +88,25 @@
       <context name="Jsp Custom Tag" attribute="Identifier" lineEndContext="#stay">
         <RegExpr String="\/?&gt;" attribute="Keyword" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Jsp Custom Tag Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Standard Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
         <Detect2Chars char="%" char1="&gt;" attribute="Jsp Directive" context="#pop#pop"/>
       </context>
 
       <context name="Jsp Xml Directive Value" attribute="Jsp Param Value" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="Jsp Double Quoted Param Value"/>
         <DetectChar char="'" attribute="Jsp Param Value" context="Jsp Single Quoted Param Value"/>
         <RegExpr String="\s*\/?\s*&gt;" attribute="Jsp Directive" context="#pop#pop"/>
       </context>
 
       <context name="Jsp Custom Tag Value" attribute="Normal Text" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <DetectChar char="&quot;" attribute="Types" context="Jsp Double Quoted Custom Tag Value"/>
         <DetectChar char="'" attribute="Types" context="Jsp Single Quoted Custom Tag Value"/>
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop"/>
@@ -128,30 +114,22 @@
 
       <context name="Jsp Double Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
         <DetectChar char="&quot;" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Single Quoted Param Value" attribute="Jsp Param Value" lineEndContext="#stay">
         <DetectChar char="'" attribute="Jsp Param Value" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Double Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
         <DetectChar char="&quot;" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Single Quoted Custom Tag Value" attribute="Types" lineEndContext="#stay">
         <DetectChar char="'" attribute="Types" context="#pop#pop"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Jsp Scriptlet" attribute="Normal Text" lineEndContext="#stay">
@@ -170,16 +148,12 @@
       <context name="Html Attribute" attribute="Identifier" lineEndContext="#stay">
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop"/>
         <RegExpr String="\s*=\s*" attribute="Normal Text" context="Html Value"/>
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
       </context>
 
       <context name="Html Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="Html Double Quoted Value"/>
         <RegExpr String="('|&amp;#39;)" attribute="Types" context="Html Single Quoted Value"/>
         <RegExpr String="\s*#?-?_?\.?[a-zA-Z0-9]*" attribute="Types" context="Html Unquoted Value"/>
@@ -187,36 +161,38 @@
       </context>
 
       <context name="Html Double Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="(&quot;|&amp;quot;|&amp;#34;)" attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Single Quoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="('|&amp;#39;)" attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Unquoted Value" attribute="Types" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
-        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
+        <IncludeRules context="FindJspScriptlet"/>
+        <IncludeRules context="FindJspCustomTag"/>
         <RegExpr String="\/?&gt;" attribute="Normal Text" context="#pop#pop#pop"/>
         <DetectSpaces attribute="Types" context="#pop#pop"/>
       </context>
 
       <context name="Html Comment" attribute="Html Comment" lineEndContext="#stay">
-        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
-        <RegExpr String="&lt;%(!|=)?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
-        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <IncludeRules context="FindJspScriptlet"/>
         <RegExpr String="\/*--&gt;" attribute="Html Comment" context="#pop" endRegion="HtmlComment"/>
         <IncludeRules context="##Comments" />
+      </context>
+
+      <context name="FindJspScriptlet" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="$" char1="{" attribute="Jsp Expression" context="Jsp Expression"/>
+        <StringDetect String="&lt;%--" attribute="Jsp Comment" context="Jsp Comment" beginRegion="JspComment"/>
+        <RegExpr String="&lt;%[!=]?" attribute="Jsp Scriptlet" context="Jsp Scriptlet" beginRegion="JspScriptlet"/>
+      </context>
+
+      <context name="FindJspCustomTag" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="&lt;\s*\/?\s*\$?\w*:\$?\w*" attribute="Keyword" context="Jsp Custom Tag"/>
       </context>
 
     </contexts>
diff --git a/xml/julia.xml b/xml/julia.xml
--- a/xml/julia.xml
+++ b/xml/julia.xml
@@ -27,16 +27,16 @@
   Author: Timothy E. Holy, Washington University in St. Louis
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-  <!ENTITY int "[0-9]([0-9_]*[0-9])?">
-  <!ENTITY hex "[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?">
+  <!ENTITY int "[0-9]+(_[0-9]+)*">
+  <!ENTITY hex "[0-9a-fA-F]+(_[0-9a-fA-F]+)*">
   <!ENTITY function_disallowed_chars "\s.,(){}\[\];:&#37;'&quot;&amp;$=/?\|^#@">
   <!ENTITY function_disallowed_first_char "0-9!&function_disallowed_chars;">
   <!ENTITY function_begin_boundary "(?:(?&lt;=[&function_disallowed_chars;!]|^)(?=[^&function_disallowed_first_char;]))">
 ]>
 
-<language name="Julia" style="julia" indenter="julia" section="Sources" version="13" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" alternativeNames="JL" style="julia" indenter="julia" section="Sources" version="16" kateversion="5.62" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="cflow_begin">
@@ -45,11 +45,11 @@
       <item>if</item>
       <item>begin</item>
       <item>do</item>
+      <item>try</item>
     </list>
     <list name="cflow_eb">
       <item>else</item>
       <item>elseif</item>
-      <item>try</item>
       <item>catch</item>
       <item>finally</item>
     </list>
@@ -74,7 +74,6 @@
     <list name="keywords">
       <item>abstract</item>
       <item>bitstype</item>
-      <item>ccall</item>
       <item>const</item>
       <item>export</item>
       <item>global</item>
@@ -84,7 +83,6 @@
       <item>module</item>
       <item>where</item>
       <item>new</item>
-      <item>in</item>
       <item>struct</item>
       <item>ans</item>
       <!-- C Interface -->
@@ -114,8 +112,6 @@
       <item>Exception</item>
       <item>Expr</item>
       <item>Float</item>
-      <item>Float32</item>
-      <item>Float64</item>
       <item>Function</item>
       <item>ObjectIdDict</item>
       <item>Int</item>
@@ -132,7 +128,6 @@
       <item>None</item>
       <item>NTuple</item>
       <item>Number</item>
-      <item>Ptr</item>
       <item>Range</item>
       <item>Range1</item>
       <item>Ranges</item>
@@ -423,7 +418,6 @@
       <item>InsertionSort</item>
       <item>MergeSort</item>
       <item>QuickSort</item>
-      <item>InsertionSort</item>
       <!-- Libc -->
       <item>MS_ASYNC</item>
       <item>MS_INVALIDATE</item>
@@ -440,7 +434,6 @@
       <item>Meta</item>
       <item>StackTraces</item>
       <item>Sys</item>
-      <item>Libc</item>
       <item>Docs</item>
       <item>Threads</item>
       <item>Iterators</item>
@@ -493,14 +486,15 @@
         <keyword context="controlflow-block" attribute="Control Flow" String="cflow_begin"
                  beginRegion="block" />
         <keyword context="#stay" attribute="Control Flow" String="cflow"/>
-        <keyword context="#stay" attribute="Keyword" String="block_end"
-                 endRegion="block" />
+        <WordDetect context="#stay" attribute="Keyword" String="end"
+                    endRegion="block" />
 
         <IncludeRules context="coderoot"/>
       </context>
 
       <context name="subsetting" attribute="Normal Text" lineEndContext="#stay">
-        <keyword context="#stay" attribute="Keyword" String="block_end"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect context="#stay" attribute="Keyword" String="end"/>
         <IncludeRules context="coderoot"/>
         <DetectChar attribute="Normal Text" context="#pop" char="]"/>
       </context>
@@ -543,718 +537,32 @@
         <StringDetect attribute="Command String" context="Block-Backtick-String" String="```" beginRegion="block-string"/>
         <DetectChar attribute="Command String" context="Backtick-String" char="`"/>
 
-        <!-- Multi-character operators
-        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->
-        <StringDetect context="#stay" attribute="Operator" String="..."/>
+        <!-- Subsetting. This is needed because the `end` keyword has a special meaning in subsetting operations and should not be used for folding -->
+        <DetectChar attribute="Normal Text" context="subsetting" char="["/>
+
         <Detect2Chars context="type-annotation" attribute="Operator" char=":" char1=":"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String="&lt;--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String=".//=" />
-        <StringDetect context="#stay" attribute="Operator" String="//=" />
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;=" />
-        <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;=" />
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;=" />
-        <StringDetect context="#stay" attribute="Operator" String=".--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String="--&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;--" />
-        <StringDetect context="#stay" attribute="Operator" String="&lt;--" />
-        <StringDetect context="#stay" attribute="Operator" String=".===" />
-        <StringDetect context="#stay" attribute="Operator" String="===" />
-        <StringDetect context="#stay" attribute="Operator" String=".!==" />
-        <StringDetect context="#stay" attribute="Operator" String="!==" />
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;" />
-        <StringDetect context="#stay" attribute="Operator" String=".+=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="+" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".-=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="-" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".−=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="−" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".*=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="*" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String="./=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="/" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".\=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="\" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".^=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="^" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".÷=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="÷" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".%=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="%" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".|=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&amp;=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".⊻=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="⊻" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".:=" />
-        <Detect2Chars context="#stay" attribute="Operator" char=":" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".$=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="$" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".=&gt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&amp;&amp;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".||" />
-        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="|"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".==" />
-        <Detect2Chars context="#stay" attribute="Operator" char="=" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".!=" />
-        <Detect2Chars context="#stay" attribute="Operator" char="!" char1="="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;|" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="|"/>
-        <StringDetect context="#stay" attribute="Operator" String=".|&gt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="|" char1="&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="."/>
-        <StringDetect context="#stay" attribute="Operator" String=".++" />
-        <Detect2Chars context="#stay" attribute="Operator" char="+" char1="+"/>
-        <StringDetect context="#stay" attribute="Operator" String=".//" />
-        <Detect2Chars context="#stay" attribute="Operator" char="/" char1="/"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&lt;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;" />
-        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="~"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="←"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="→"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⬿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⭌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&lt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⪿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="…"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⁝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="$"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="+"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="-"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="−"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="¦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="|"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="±"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨦"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨨"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨫"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨬"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨭"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨹"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨺"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩁"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩂"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩐"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩢"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="*"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="/"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⌿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="÷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="%"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&amp;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="·"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋅"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="×"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="\"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∩"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∧"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="∤"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⅋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="≀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋆"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⋒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦾"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⦿"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⧷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨇"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨲"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨳"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨴"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨶"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨸"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨻"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨼"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨽"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩀"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩃"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩄"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩎"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩚"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩞"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⩠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⫛"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⊍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="▷"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟖"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟗"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⨟"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="^"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="↓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⇵"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟰"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⟱"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤈"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤊"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤋"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤒"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⤓"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥉"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥌"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥍"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥏"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥑"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥔"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥕"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥘"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥙"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥜"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥝"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥠"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥡"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥣"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥥"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥮"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="⥯"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￪"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="￬"/>
 
         <!-- subtype operator -->
         <Detect2Chars context="type-annotation" attribute="Operator" char="&lt;" char1=":"/>
 
-        <!-- Look-ahead for adjoint ' after variable, number literal, closing braces and .' -->
-        <RegExpr context="_adjoint" attribute="Variable" String="[a-zA-Z]\w*(?=')" />
-        <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?(?=')" />
-        <!-- <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" /> -->
+        <!-- Character operators
+        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->
+        <RegExpr context="#stay" attribute="Operator" String="\.\.\.?|[:$]=?|\.?(?:&gt;&gt;&gt;=|&lt;--&gt;|//=|&lt;&lt;=|&gt;&gt;=|--&gt;|&lt;--|===|!==|&gt;&gt;&gt;|[-+*/\\^÷%|&amp;⊻]=|=&gt;|&amp;&amp;|\|\|?|&gt;=|&lt;=|==|!=|&lt;\||\|&gt;|\+\+|//|&lt;&lt;|&gt;&gt;|&lt;:|&gt;:|[\Q=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌￩￫⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻&gt;&lt;≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&amp;··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯￪￬\E])" />
 
+        <!-- Identifiers, numbers -->
+        <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers -->
+        <DetectIdentifier context="_adjoint" attribute="Variable" />
+        <RegExpr context="_adjoint" attribute="Float" String="0x(&hex;\.?|(&hex;)?\.&hex;)[pP][+-]?[0-9]+(im)?"/>
+        <RegExpr context="_adjoint" attribute="Hex" String="0x&hex;(im)?" />
+        <RegExpr context="_adjoint" attribute="Octal" String="0o[0-7]+(_[0-7]+)*(im)?" />
+        <RegExpr context="_adjoint" attribute="Binary" String="0b[01]+(_[01]+)*(im)?" />
+        <RegExpr context="_adjoint" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />
+
         <!-- If ' is not the adjoint operator, it starts a character or an unterminated char -->
         <RegExpr context="#stay" attribute="Char" String="'[^']*(''[^']*)*'(?=[^']|$)" />
         <RegExpr context="#stay" attribute="Incomplete Char" String="'[^']*(''[^']*)*" />
 
         <RegExpr context="#stay" attribute="Macro" String="@[a-zA-Z_]\w*" />
-
-        <!-- Identifiers, numbers and braces -->
-        <!-- We can't use HlCHex, Int, and Float because we need to allow the "im" at the end of complex numbers -->
-        <DetectIdentifier context="#stay" attribute="Variable" />
-        <RegExpr context="#stay" attribute="Float" String="0x(&hex;\.?|(&hex;)?\.&hex;)[pP][+-]?\d+(im)?"/>
-        <RegExpr context="#stay" attribute="Hex" String="0x&hex;(im)?" />
-        <RegExpr context="#stay" attribute="Octal" String="0o[0-7]([0-7_]*[0-7])?(im)?" />
-        <RegExpr context="#stay" attribute="Binary" String="0b[01]([01_]*[01])?(im)?" />
-        <RegExpr context="#stay" attribute="Float" String="(&int;(\.&int;)?|\.&int;)([eEfF][+-]?\d+)?(im)?" />
-
-        <!-- Single-character operators
-        this was generated semi-automatically using operators in https://github.com/JuliaLang/julia/blob/master/src/julia-parser.scm -->
-        <AnyChar context="#stay" attribute="Operator" String="=≔⩴≕~←→↔↚↛↞↠↢↣↦↤↮⇎⇍⇏⇐⇒⇔⇴⇶⇷⇸⇹⇺⇻⇼⇽⇾⇿⟵⟶⟷⟹⟺⟻⟼⟽⟾⟿⤀⤁⤂⤃⤄⤅⤆⤇⤌⤍⤎⤏⤐⤑⤔⤕⤖⤗⤘⤝⤞⤟⤠⥄⥅⥆⥇⥈⥊⥋⥎⥐⥒⥓⥖⥗⥚⥛⥞⥟⥢⥤⥦⥧⥨⥩⥪⥫⥬⥭⥰⧴⬱⬰⬲⬳⬴⬵⬶⬷⬸⬹⬺⬻⬼⬽⬾⬿⭀⭁⭂⭃⭄⭇⭈⭉⭊⭋⭌￩￫⇜⇝↜↝↩↪↫↬↼↽⇀⇁⇄⇆⇇⇉⇋⇌⇚⇛⇠⇢↷↶↺↻&gt;&lt;≥≤≡≠≢∈∉∋∌⊆⊈⊂⊄⊊∝∊∍∥∦∷∺∻∽∾≁≃≂≄≅≆≇≈≉≊≋≌≍≎≐≑≒≓≖≗≘≙≚≛≜≝≞≟≣≦≧≨≩≪≫≬≭≮≯≰≱≲≳≴≵≶≷≸≹≺≻≼≽≾≿⊀⊁⊃⊅⊇⊉⊋⊏⊐⊑⊒⊜⊩⊬⊮⊰⊱⊲⊳⊴⊵⊶⊷⋍⋐⋑⋕⋖⋗⋘⋙⋚⋛⋜⋝⋞⋟⋠⋡⋢⋣⋤⋥⋦⋧⋨⋩⋪⋫⋬⋭⋲⋳⋴⋵⋶⋷⋸⋹⋺⋻⋼⋽⋾⋿⟈⟉⟒⦷⧀⧁⧡⧣⧤⧥⩦⩧⩪⩫⩬⩭⩮⩯⩰⩱⩲⩳⩵⩶⩷⩸⩹⩺⩻⩼⩽⩾⩿⪀⪁⪂⪃⪄⪅⪆⪇⪈⪉⪊⪋⪌⪍⪎⪏⪐⪑⪒⪓⪔⪕⪖⪗⪘⪙⪚⪛⪜⪝⪞⪟⪠⪡⪢⪣⪤⪥⪦⪧⪨⪩⪪⪫⪬⪭⪮⪯⪰⪱⪲⪳⪴⪵⪶⪷⪸⪹⪺⪻⪼⪽⪾⪿⫀⫁⫂⫃⫄⫅⫆⫇⫈⫉⫊⫋⫌⫍⫎⫏⫐⫑⫒⫓⫔⫕⫖⫗⫘⫙⫷⫸⫹⫺⊢⊣⟂⫪⫫…⁝⋮⋱⋰⋯:$+-−¦|⊕⊖⊞⊟∪∨⊔±∓∔∸≏⊎⊻⊽⋎⋓⧺⧻⨈⨢⨣⨤⨥⨦⨧⨨⨩⨪⨫⨬⨭⨮⨹⨺⩁⩂⩅⩊⩌⩏⩐⩒⩔⩖⩗⩛⩝⩡⩢⩣*/⌿÷%&amp;··⋅∘×\∩∧⊗⊘⊙⊚⊛⊠⊡⊓∗∙∤⅋≀⊼⋄⋆⋇⋉⋊⋋⋌⋏⋒⟑⦸⦼⦾⦿⧶⧷⨇⨰⨱⨲⨳⨴⨵⨶⨷⨸⨻⨼⨽⩀⩃⩄⩋⩍⩎⩑⩓⩕⩘⩚⩜⩞⩟⩠⫛⊍▷⨝⟕⟖⟗⨟^↑↓⇵⟰⟱⤈⤉⤊⤋⤒⤓⥉⥌⥍⥏⥑⥔⥕⥘⥙⥜⥝⥠⥡⥣⥥⥮⥯￪￬"/>
-
-        <!-- Subsetting. This is needed because the `end` keyword has a special meaning in subsetting operations and should not be used for folding -->
-        <DetectChar attribute="Normal Text" context="subsetting" char="["/>
       </context>
 
       <!-- Context for user block (#BEGIN...#END) -->
@@ -1262,9 +570,9 @@
         <IncludeRules context="1-comment" />
       </context>
 
-      <!-- Context entered after encountering an ' adjoint operator -->
-      <context name="_adjoint" attribute="Operator" lineEndContext="#pop">
-        <RegExpr context="#pop" attribute="Operator" String="'+" />
+      <!-- Context entered after encountering an identifier or a number -->
+      <context name="_adjoint" attribute="Operator" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Operator" char="'" />
       </context>
 
       <!-- Context entered after encountering an " (string) -->
@@ -1361,16 +669,18 @@
 
       <!-- 1-line comment: #pop@EOL  -->
       <context name="1-comment" lineEndContext="#pop" attribute="Comment">
-        <DetectSpaces />
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
       </context>
 
       <context name="block-comment" lineEndContext="#stay" attribute="Comment">
-        <DetectSpaces />
         <Detect2Chars char="=" char1="#" context="#pop" attribute="Comment" endRegion="block-comment"/>
+        <IncludeRules context="1-comment" />
       </context>
       <context name="controlflow-block" lineEndContext="#stay" attribute="Normal Text">
         <keyword context="#stay" attribute="Control Flow" String="cflow_eb" endRegion="block" beginRegion="block" />
-        <keyword context="#pop" attribute="Control Flow" String="block_end" endRegion="block" />
+        <WordDetect context="#pop" attribute="Control Flow" String="end" endRegion="block" />
         <IncludeRules context="_normal" />
       </context>
       <context name="parametric-type" lineEndContext="#stay" attribute="Data Type">
@@ -1401,13 +711,19 @@
       </context>
 
       <!-- context for imports -->
-      <context name="import" lineEndContext="#stay" lineEmptyContext="#stay"  attribute="Normal Text">
+      <context name="import" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">
+        <DetectSpaces attribute="Normal Text"/>
         <IncludeRules context="comment-rules"/>
-        <RegExpr attribute="Module" context="#stay" String="[^:,\s]+\s*(?=,)"/>
-        <RegExpr attribute="Module" context="import_vars" String="[^:,\s]+\s*(?=:)"/>
-        <RegExpr attribute="Module" context="#pop" String="[^:,\s]+\s*(?![,:])"/>
+        <RegExpr attribute="Module" context="import_list" String="[^:,\s]+"/>
       </context>
+      <context name="import_list" lineEndContext="#pop#pop" attribute="Normal Text">
+        <DetectSpaces attribute="Normal Text"/>
+        <IncludeRules context="comment-rules"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=","/>
+        <DetectChar attribute="Normal Text" context="#pop!import_vars" char=":"/>
+      </context>
       <context name="import_vars" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">
+        <DetectSpaces attribute="Normal Text"/>
         <IncludeRules context="comment-rules"/>
         <!-- we don't know if these are types, variables, or functions,
         so no highlighting here -->
diff --git a/xml/k.xml b/xml/k.xml
new file mode 100644
--- /dev/null
+++ b/xml/k.xml
@@ -0,0 +1,424 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY kDateTime1 "(?:\d{4}\.\d\dm|\d{4}\.\d\d\.\d\d(?:|[DT](?:\d*|\d\d:\d\d|\d\d:\d\d:\d\d|\d\d:\d\d:\d\d\.\d*)))">
+  <!ENTITY kDateTime2 "\d+D(?:\d*|\d\d:\d\d|\d\d:\d\d:\d\d|\d\d:\d\d:\d\d\.\d*)">
+  <!ENTITY kDateTime3 "(?:\d+t|\d\d:\d*|\d\d:\d\d:\d\d(?:|\.\d+))">
+
+  <!ENTITY kNumber1 "[-]?(?:0(?:n|Ne|ne|Nf|nf)|(?:[\d]+\.[\d]*|\.?[\d]+)e[-]?\d+|(?:[\d]+\.[\d]*[ef]?|\.[\d]+[ef]?|[\d]+[ef]))">
+  <!ENTITY kNumber2 "[-]?(?:0N[hj]?|[\d]+[ijh]?)">
+]>
+<language name="k" version="7" kateversion="5.0" section="Scripts" extensions="*.k" license="LGPLv2+" author="James Schmitz (james.schmitz@gmail.com)">
+<highlighting>
+    <list name="flowcontrol" >
+      <item>while</item>
+      <item>if</item>
+      <item>do</item>
+    </list>
+    <list name="kkeywords" >
+      <item>abs</item>
+      <item>acos</item>
+      <item>asin</item>
+      <item>atan</item>
+      <item>avg</item>
+      <item>bin</item>
+      <item>by</item>
+      <item>cos</item>
+      <item>delete</item>
+      <item>div</item>
+      <item>exec</item>
+      <item>exit</item>
+      <item>exp</item>
+      <item>from</item>
+      <item>getenv</item>
+      <item>i</item>
+      <item>in</item>
+      <item>insert</item>
+      <item>last</item>
+      <item>like</item>
+      <item>log</item>
+      <item>max</item>
+      <item>min</item>
+      <item>prd</item>
+      <item>select</item>
+      <item>setenv</item>
+      <item>sin</item>
+      <item>sqrt</item>
+      <item>ss</item>
+      <item>sum</item>
+      <item>tan</item>
+      <item>update</item>
+      <item>wavg</item>
+      <item>within</item>
+      <item>wsum</item>
+      <item>xexp</item>
+    </list>
+    <list name="DotQ">
+      <item>.Q.addmonths</item>
+      <item>.Q.addr</item>
+      <item>.Q.host</item>
+      <item>.Q.chk</item>
+      <item>.Q.cn</item>
+      <item>.Q.dd</item>
+      <item>.Q.dpft</item>
+      <item>.Q.dsftg</item>
+      <item>.Q.def</item>
+      <item>.Q.en</item>
+      <item>.Q.fc</item>
+      <item>.Q.fk</item>
+      <item>.Q.fmt</item>
+      <item>.Q.foo</item>
+      <item>.Q.fs</item>
+      <item>.Q.ft</item>
+      <item>.Q.fu</item>
+      <item>.Q.gc</item>
+      <item>.Q.hdpf</item>
+      <item>.Q.ind</item>
+      <item>.Q.j10</item>
+      <item>.Q.x10</item>
+      <item>.Q.j12</item>
+      <item>.Q.x12</item>
+      <item>.Q.k</item>
+      <item>.Q.l</item>
+      <item>.Q.opt</item>
+      <item>.Q.par</item>
+      <item>.Q.qp</item>
+      <item>.Q.qt</item>
+      <item>.Q.s</item>
+      <item>.Q.s1</item>
+      <item>.Q.ty</item>
+      <item>.Q.v</item>
+      <item>.Q.V</item>
+      <item>.Q.view</item>
+      <item>.Q.w</item>
+      <item>.Q.M</item>
+      <item>.Q.pf</item>
+      <item>.Q.pt</item>
+      <item>.Q.PD</item>
+      <item>.Q.PV</item>
+      <item>.Q.pd</item>
+      <item>.Q.pv</item>
+      <item>.Q.pn</item>
+      <item>.Q.bv</item>
+      <item>.Q.vp</item>
+      <item>.Q.P</item>
+      <item>.Q.D</item>
+      <item>.Q.u</item>
+    </list>
+    <list name="Doth" >
+      <item>.h.br</item>
+      <item>.h.c0</item>
+      <item>.h.c1</item>
+      <item>.h.cd</item>
+      <item>.h.code</item>
+      <item>.h.data</item>
+      <item>.h.eb</item>
+      <item>.h.ec</item>
+      <item>.h.ed</item>
+      <item>.h.edsn</item>
+      <item>.h.es</item>
+      <item>.h.ex</item>
+      <item>.h.fram</item>
+      <item>.h.ha</item>
+      <item>.h.hb</item>
+      <item>.h.hc</item>
+      <item>.h.he</item>
+      <item>.h.hn</item>
+      <item>.h.hp</item>
+      <item>.h.hr</item>
+      <item>.h.ht</item>
+      <item>.h.hta</item>
+      <item>.h.htac</item>
+      <item>.h.htc</item>
+      <item>.h.html</item>
+      <item>.h.http</item>
+      <item>.h.hu</item>
+      <item>.h.hug</item>
+      <item>.h.hy</item>
+      <item>.h.iso8601</item>
+      <item>.h.jx</item>
+      <item>.h.logo</item>
+      <item>.h.nbr</item>
+      <item>.h.pre</item>
+      <item>.h.text</item>
+      <item>.h.tx</item>
+      <item>.h.ty</item>
+      <item>.h.uh</item>
+      <item>.h.xd</item>
+      <item>.h.xmp</item>
+      <item>.h.xs</item>
+      <item>.h.xt</item>
+    </list>
+    <list name="Doto" >
+      <item>.o.B0</item>
+      <item>.o.C0</item>
+      <item>.o.Cols</item>
+      <item>.o.Columns</item>
+      <item>.o.FG</item>
+      <item>.o.Fkey</item>
+      <item>.o.Gkey</item>
+      <item>.o.Key</item>
+      <item>.o.PS</item>
+      <item>.o.Special</item>
+      <item>.o.Stats</item>
+      <item>.o.T</item>
+      <item>.o.T0</item>
+      <item>.o.TI</item>
+      <item>.o.Tables</item>
+      <item>.o.Ts</item>
+      <item>.o.TypeInfo</item>
+      <item>.o.ex</item>
+      <item>.o.o</item>
+      <item>.o.t</item>
+    </list>
+    <list name="Dotz" >
+      <item>.z.a</item>
+      <item>.z.ac</item>
+      <item>.z.b</item>
+      <item>.z.bm</item>
+      <item>.z.c</item>
+      <item>.z.exit</item>
+      <item>.z.f</item>
+      <item>.z.h</item>
+      <item>.z.i</item>
+      <item>.z.k</item>
+      <item>.z.K</item>
+      <item>.z.l</item>
+      <item>.z.n</item>
+      <item>.z.N</item>
+      <item>.z.o</item>
+      <item>.z.p</item>
+      <item>.z.P</item>
+      <item>.z.pc</item>
+      <item>.z.pg</item>
+      <item>.z.ph</item>
+      <item>.z.pi</item>
+      <item>.z.po</item>
+      <item>.z.pp</item>
+      <item>.z.ps</item>
+      <item>.z.pw</item>
+      <item>.z.q</item>
+      <item>.z.s</item>
+      <item>.z.ts</item>
+      <item>.z.u</item>
+      <item>.z.vs</item>
+      <item>.z.w</item>
+      <item>.z.W</item>
+      <item>.z.ws</item>
+      <item>.z.x</item>
+      <item>.z.z</item>
+      <item>.z.Z</item>
+      <item>.z.t</item>
+      <item>.z.T</item>
+      <item>.z.d</item>
+      <item>.z.D</item>
+      <item>.z.zd</item>
+    </list>
+    <list name="Dotq" >
+      <item>.q.aj</item>
+      <item>.q.aj0</item>
+      <item>.q.all</item>
+      <item>.q.and</item>
+      <item>.q.any</item>
+      <item>.q.asc</item>
+      <item>.q.asof</item>
+      <item>.q.attr</item>
+      <item>.q.avgs</item>
+      <item>.q.ceiling</item>
+      <item>.q.cols</item>
+      <item>.q.cor</item>
+      <item>.q.count</item>
+      <item>.q.cov</item>
+      <item>.q.cross</item>
+      <item>.q.csv</item>
+      <item>.q.cut</item>
+      <item>.q.deltas</item>
+      <item>.q.desc</item>
+      <item>.q.dev</item>
+      <item>.q.differ</item>
+      <item>.q.distinct</item>
+      <item>.q.each</item>
+      <item>.q.ej</item>
+      <item>.q.enlist</item>
+      <item>.q.eval</item>
+      <item>.q.except</item>
+      <item>.q.fby</item>
+      <item>.q.fills</item>
+      <item>.q.first</item>
+      <item>.q.fkeys</item>
+      <item>.q.flip</item>
+      <item>.q.floor</item>
+      <item>.q.get</item>
+      <item>.q.group</item>
+      <item>.q.gtime</item>
+      <item>.q.hclose</item>
+      <item>.q.hcount</item>
+      <item>.q.hdel</item>
+      <item>.q.hopen</item>
+      <item>.q.hsym</item>
+      <item>.q.iasc</item>
+      <item>.q.idesc</item>
+      <item>.q.ij</item>
+      <item>.q.inter</item>
+      <item>.q.inv</item>
+      <item>.q.key</item>
+      <item>.q.keys</item>
+      <item>.q.lj</item>
+      <item>.q.load</item>
+      <item>.q.lower</item>
+      <item>.q.lsq</item>
+      <item>.q.ltime</item>
+      <item>.q.ltrim</item>
+      <item>.q.mavg</item>
+      <item>.q.maxs</item>
+      <item>.q.mcount</item>
+      <item>.q.md5</item>
+      <item>.q.mdev</item>
+      <item>.q.med</item>
+      <item>.q.meta</item>
+      <item>.q.mins</item>
+      <item>.q.mmax</item>
+      <item>.q.mmin</item>
+      <item>.q.mmu</item>
+      <item>.q.mod</item>
+      <item>.q.msum</item>
+      <item>.q.neg</item>
+      <item>.q.next</item>
+      <item>.q.not</item>
+      <item>.q.null</item>
+      <item>.q.or</item>
+      <item>.q.over</item>
+      <item>.q.parse</item>
+      <item>.q.peach</item>
+      <item>.q.pj</item>
+      <item>.q.plist</item>
+      <item>.q.prds</item>
+      <item>.q.prev</item>
+      <item>.q.prior</item>
+      <item>.q.rand</item>
+      <item>.q.rank</item>
+      <item>.q.ratios</item>
+      <item>.q.raze</item>
+      <item>.q.read0</item>
+      <item>.q.read1</item>
+      <item>.q.reciprocal</item>
+      <item>.q.reverse</item>
+      <item>.q.rload</item>
+      <item>.q.rotate</item>
+      <item>.q.rsave</item>
+      <item>.q.rtrim</item>
+      <item>.q.save</item>
+      <item>.q.scan</item>
+      <item>.q.set</item>
+      <item>.q.show</item>
+      <item>.q.signum</item>
+      <item>.q.ssr</item>
+      <item>.q.string</item>
+      <item>.q.sublist</item>
+      <item>.q.sums</item>
+      <item>.q.sv</item>
+      <item>.q.system</item>
+      <item>.q.tables</item>
+      <item>.q.til</item>
+      <item>.q.trim</item>
+      <item>.q.txf</item>
+      <item>.q.type</item>
+      <item>.q.uj</item>
+      <item>.q.ungroup</item>
+      <item>.q.union</item>
+      <item>.q.upper</item>
+      <item>.q.upsert</item>
+      <item>.q.value</item>
+      <item>.q.var</item>
+      <item>.q.view</item>
+      <item>.q.views</item>
+      <item>.q.vs</item>
+      <item>.q.where</item>
+      <item>.q.wj</item>
+      <item>.q.wj1</item>
+      <item>.q.xasc</item>
+      <item>.q.xbar</item>
+      <item>.q.xcol</item>
+      <item>.q.xcols</item>
+      <item>.q.xdesc</item>
+      <item>.q.xgroup</item>
+      <item>.q.xkey</item>
+      <item>.q.xlog</item>
+      <item>.q.xprev</item>
+      <item>.q.xrank</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
+        <RegExpr attribute="kSystemCommand" String="^\\[^\s].*" context="#stay" column="0" />
+        <DetectChar attribute="String" context="string" char="&quot;" />
+        <AnyChar attribute="kSeparators" String="{([|])}" context="#stay" />
+        <RegExpr attribute="kHSym" String="`:[\w/:.]*" context="#stay" />
+        <RegExpr attribute="kSymbol" String="(`[a-zA-Z\d.][\w:.]*|`|\d[a-zA-Z\d:.]*s)" context="#stay" />
+        <keyword attribute="FlowControl" context="#stay" String="flowcontrol" />
+        <RegExpr attribute="FlowControl" String="\$(?=\[)" context="#stay" />
+        <keyword attribute="kKeyword" context="#stay" String="kkeywords" />
+        <keyword attribute="DotQfunctions" context="#stay" String="DotQ" />
+        <keyword attribute="Dotzfunctions" context="#stay" String="Dotz" />
+        <keyword attribute="Dothfunctions" context="#stay" String="Doth" />
+        <keyword attribute="Dotofunctions" context="#stay" String="Doto" />
+        <keyword attribute="Dotqfunctions" context="#stay" String="Dotq" />
+        <RegExpr attribute="kIdentifier" String="(?:[a-zA-Z][\w.]*|\.[a-zA-Z][\w.]*)" context="#stay" />
+        <RegExpr attribute="kBool" String="[01]+b" context="#stay" />
+        <RegExpr attribute="kByte" String="0x[0-9a-fA-F]*" context="#stay" />
+        <RegExpr attribute="kGuid" String="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" context="#stay" />
+        <RegExpr attribute="kDateTime" String="&kDateTime1;|&kDateTime2;|&kDateTime3;" context="#stay" />
+        <RegExpr attribute="kNumber" String="&kNumber1;|&kNumber2;" context="#stay" />
+        <Detect2Chars attribute="Comment" context="comment" char=" " char1="/" />
+        <RegExpr String="^\\[\s]*$" attribute="CommentToEOF" context="commentToEOF" column="0" />
+        <RegExpr String="^/[\s]*$" attribute="MultiLineComment" context="multicomment" beginRegion="Comment" column="0" />
+        <DetectChar attribute="Comment" context="comment" char="/" firstNonSpace="true" /> 
+      </context>
+      <context attribute="String" lineEndContext="#stay" name="string" >
+        <DetectChar attribute="String" context="#pop" char="&quot;" />
+      </context>
+      <context name="comment" attribute="Comment" lineEndContext="#pop" >
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+      <context name="multicomment" attribute="MultiLineComment" lineEndContext="#stay" >
+        <RegExpr String="^\\[\s]*$" attribute="MultiLineComment" context="#pop" endRegion="Comment" column="0" />
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+      <context name="commentToEOF" attribute="CommentToEOF" lineEndContext="#stay" >
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" spellChecking="false" defStyleNum="dsNormal" />
+      <itemData name="kSystemCommand" spellChecking="false" defStyleNum="dsOthers" />
+      <itemData name="kSeparators" defStyleNum="dsNormal" />
+      <itemData name="kSymbol" spellChecking="false" defStyleNum="dsOthers" />
+      <itemData name="kHSym" spellChecking="false" defStyleNum="dsOthers" />
+      <itemData name="FlowControl" defStyleNum="dsKeyword" />
+      <itemData name="kKeyword" defStyleNum="dsKeyword" />
+      <itemData name="Dothfunctions" defStyleNum="dsKeyword" />
+      <itemData name="DotQfunctions" defStyleNum="dsKeyword" />
+      <itemData name="Dotzfunctions" defStyleNum="dsKeyword" />
+      <itemData name="Dotofunctions" defStyleNum="dsKeyword" />
+      <itemData name="Dotqfunctions" defStyleNum="dsKeyword" />
+      <itemData name="kIdentifier" spellChecking="false" defStyleNum="dsNormal" />
+      <itemData name="kNumber" spellChecking="false" defStyleNum="dsDecVal" />
+      <itemData name="kBool" spellChecking="false" defStyleNum="dsBaseN" />
+      <itemData name="kGuid" spellChecking="false" defStyleNum="dsBaseN" />
+      <itemData name="kByte" spellChecking="false" defStyleNum="dsBaseN" />
+      <itemData name="String" spellChecking="false" defStyleNum="dsString" />
+      <itemData name="kDateTime" spellChecking="false" defStyleNum="dsOthers" />
+      <itemData name="Comment" spellChecking="true" defStyleNum="dsComment" />
+      <itemData name="MultiLineComment" spellChecking="true" defStyleNum="dsComment" />
+      <itemData name="CommentToEOF" defStyleNum="dsComment" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="/" />
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="`#'@$&quot;" />
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/kotlin.xml b/xml/kotlin.xml
--- a/xml/kotlin.xml
+++ b/xml/kotlin.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY int "(?:[0-9]++(_++[0-9]++)*+)">
     <!ENTITY hex "(?:[0-9a-fA-F]++(_++[0-9a-fA-F]++)*+)">
@@ -8,7 +8,7 @@
     <!ENTITY hexfloat "\b0[xX](&hex;\.?+&hex;?+|\.&hex;?)[pP][-+]?&int;[fF]?\b">
 ]>
 <!-- kotlin language syntax http://kotlinlang.org -->
-<language name="Kotlin" version="10" kateversion="5.62" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
+<language name="Kotlin" alternativeNames="KT" version="12" kateversion="5.62" section="Sources" extensions="*.kt;*.kts" license="LGPLv2+" author="Sergey Mashkov (sergey.mashkov@jetbrains.com)" style="cstyle" indenter="cstyle">
     <highlighting>
         <list name="keywords">
             <item>package</item>
@@ -29,8 +29,6 @@
             <item>open</item>
             <item>final</item>
 
-            <item>get</item>
-            <item>set</item>
             <item>fun</item>
             <item>var</item>
             <item>val</item>
@@ -58,8 +56,16 @@
             <item>typealias</item>
             <item>typeof</item>
             <item>override</item>
+            <item>abstract</item>
             <item>infix</item>
             <item>operator</item>
+
+            <item>annotation</item>
+            <item>const</item>
+            <item>lateinit</item>
+            <item>inner</item>
+            <item>external</item>
+            <item>noinline</item>
         </list>
         <list name="controlFlowKeyword">
             <item>if</item>
@@ -100,6 +106,8 @@
             <item>Double</item>
 
             <item>Boolean</item>
+
+            <item>dynamic</item>
         </list>
 
         <contexts>
@@ -117,8 +125,7 @@
                 <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
                 <DetectChar attribute="Annotation" context="Annotation" char="@" />
 
-                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
-                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+                <IncludeRules context="Comment"/>
 
                 <AnyChar attribute="Symbol" context="#stay" String="()[]&amp;|+,-/*&lt;=&gt;;!%?:~^"/>
 
@@ -147,6 +154,11 @@
                 <DetectIdentifier attribute="Normal Text"/>
             </context>
 
+            <context attribute="Normal Text" lineEndContext="#stay" name="Comment">
+                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
+                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+            </context>
+
             <context attribute="Normal Text" lineEndContext="#stay" name="Number">
                 <IncludeRules context="FindFloat"/>
                 <RegExpr attribute="Hex" context="#pop" String="\b0[xX]&hex;[lL]?\b"/>
@@ -164,7 +176,10 @@
             </context>
 
             <context attribute="Normal Text" lineEndContext="#pop" name="Annotation" fallthroughContext="#pop">
-                <DetectIdentifier attribute="Annotation" context="#pop"/>
+                <DetectIdentifier attribute="Annotation"/>
+                <DetectChar attribute="Symbol" char=":"/>
+                <RangeDetect attribute="Annotation" context="#pop" char="[" char1="]"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context attribute="Normal Text" lineEndContext="#stay" name="Char">
@@ -220,10 +235,12 @@
                 <WordDetect attribute="Keyword" context="TypeName" String="as" />
                 <DetectIdentifier attribute="Imports" context="#stay"/>
                 <DetectChar attribute="Symbol" context="#pop" char=";"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="VariableDeclaration" lineEndContext="#stay" attribute="Normal Text">
                 <DetectIdentifier attribute="Variable" context="#pop" />
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="TypeDeclaration" lineEndContext="#stay" attribute="Normal Text">
@@ -233,6 +250,8 @@
                 <DetectChar attribute="Symbol" context="Parameters" char="(" />
                 <DetectChar attribute="Symbol" context="SuperTypes" char=":" />
                 <DetectChar attribute="Symbol" context="#pop" char="{" lookAhead="true" />
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="SuperTypes" lineEndContext="#stay" attribute="Normal Text">
@@ -244,10 +263,13 @@
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
 
                 <DetectIdentifier attribute="Data Type" context="#stay"/>
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="FunctionDeclaration" lineEndContext="#stay" attribute="Normal Text">
                 <keyword attribute="Keyword" context="#stay" String="keywords"/>
+                <DetectChar attribute="Annotation" context="Annotation" char="@" />
                 <DetectChar attribute="Symbol" context="#stay" char="." />
                 <DetectChar attribute="Symbol" context="Parameters" char="(" />
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
@@ -256,6 +278,8 @@
                 <AnyChar attribute="Symbol" context="#pop" String="{=" lookAhead="true" />
 
                 <DetectIdentifier attribute="Function" context="#stay"/>
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="TypeParameters" lineEndContext="#stay" attribute="Normal Text">
@@ -268,9 +292,13 @@
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
 
                 <DetectIdentifier attribute="Data Type" context="DataTypeSuffix"/>
+
+                <IncludeRules context="Comment"/>
             </context>
             <context name="DataTypeSuffix" lineEndContext="#pop" attribute="Normal Text" fallthroughContext="#pop">
                 <DetectChar attribute="Symbol" context="#pop" char="?"/>
+
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="Parameters" lineEndContext="#stay" attribute="Normal Text">
@@ -280,6 +308,7 @@
                 <DetectChar attribute="Symbol" context="Expression" char="=" />
                 <DetectIdentifier attribute="Variable" context="#stay"/>
                 <DetectChar attribute="Symbol" context="#stay" char=","/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="TypeName" lineEndContext="#stay" attribute="Normal Text">
@@ -287,6 +316,7 @@
                 <DetectChar attribute="Symbol" context="FunctionType" char="(" />
                 <Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;" />
                 <DetectIdentifier attribute="Data Type" context="#pop!DataTypeSuffix"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="FunctionType" lineEndContext="#stay" attribute="Normal Text">
@@ -294,6 +324,7 @@
                 <DetectIdentifier attribute="Data Type" context="DataTypeSuffix"/>
                 <Detect2Chars attribute="Symbol" context="#stay" char="-" char1="&gt;" />
                 <DetectChar attribute="Symbol" context="#stay" char="," />
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="Expression" lineEndContext="#stay" attribute="Normal Text">
@@ -314,14 +345,14 @@
                 <DetectChar context="String" char="&quot;" lookAhead="1"/>
                 <DetectChar context="Char" char="'" lookAhead="1"/>
 
-                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
-                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+                <IncludeRules context="Comment"/>
 
                 <DetectIdentifier attribute="Normal Text"/>
             </context>
             <context name="MaybeTypeParameters" lineEndContext="#pop" attribute="Normal Text">
                 <RegExpr context="#pop!TypeParameters" String="&lt;\w" lookAhead="1" />
                 <DetectChar attribute="Symbol" context="#pop" char="&lt;"/>
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="ExpressionInner" lineEndContext="#stay" attribute="Normal Text">
diff --git a/xml/latex.xml b/xml/latex.xml
--- a/xml/latex.xml
+++ b/xml/latex.xml
@@ -1,973 +1,6349 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-    <!ENTITY bullet "&#xd7;">
-    <!ENTITY envname "[a-zA-Z]+\*?">
-]>
-<language name="LaTeX" version="19" section="Markup" kateversion="5.0" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
-  <highlighting>
-    <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
-         Using a DetectChar rule with lookAhead to detect "\" at the beginning
-         avoids the requirement of the delimiter in the keyword. -->
-    <list name="beginEnv">
-      <item>\begin</item>
-    </list>
-
-    <list name="endEnv">
-      <item>\end</item>
-    </list>
-
-    <list name="Label">
-      <item>\Autocite</item>
-      <item>\autocite</item>
-      <item>\autoref</item>
-      <item>\Cite</item>
-      <item>\cite</item>
-      <item>\Citeauthor</item>
-      <item>\citeauthor</item>
-      <item>\citep</item>
-      <item>\citet</item>
-      <item>\citetitle</item>
-      <item>\citeurl</item>
-      <item>\citeyear</item>
-      <item>\cref</item>
-      <item>\Cref</item>
-      <item>\cref*</item>
-      <item>\Cref*</item>
-      <item>\eqref</item>
-      <item>\Footcite</item>
-      <item>\footcite</item>
-      <item>\footfullcite</item>
-      <item>\fullcite</item>
-      <item>\label</item>
-      <item>\nocite</item>
-      <item>\pagecite</item>
-      <item>\pageref</item>
-      <item>\Parencite</item>
-      <item>\parencite</item>
-      <item>\ref</item>
-      <item>\subref</item>
-      <item>\subref*</item>
-      <item>\supercite</item>
-      <item>\Textcite</item>
-      <item>\textcite</item>
-      <item>\vpageref</item>
-      <item>\vref</item>
-    </list>
-
-    <list name="macroFancyLabel">
-      <item>\documentclass</item>
-      <item>\includegraphics</item>
-      <item>\include</item>
-      <item>\usepackage</item>
-      <item>\bibliography</item>
-      <item>\bibliographystyle</item>
-    </list>
-
-    <list name="FancyLabel">
-      <item>\cites</item>
-      <item>\Cites</item>
-      <item>\parencites</item>
-      <item>\Parencites</item>
-      <item>\autocites</item>
-      <item>\Autocites</item>
-      <item>\supercites</item>
-      <item>\footcites</item>
-      <item>\Footcites</item>
-    </list>
-
-    <list name="Sectioning">
-      <item>\part*</item>
-      <item>\part</item>
-      <item>\chapter*</item>
-      <item>\chapter</item>
-      <item>\section*</item>
-      <item>\section</item>
-      <item>\subsection*</item>
-      <item>\subsection</item>
-      <item>\subsubsection*</item>
-      <item>\subsubsection</item>
-      <item>\paragraph*</item>
-      <item>\paragraph</item>
-      <item>\subparagraph*</item>
-      <item>\subparagraph</item>
-    </list>
-
-    <list name="SpecialCommand">
-      <item>\column</item>
-      <item>\definecolor</item>
-      <item>\geometry</item>
-      <item>\hspace*</item>
-      <item>\hspace</item>
-      <item>\input</item>
-      <item>\newboolean</item>
-      <item>\rule</item>
-      <item>\setboolean</item>
-      <item>\setcounter</item>
-      <item>\setlength</item>
-      <item>\special</item>
-      <item>\textcolor</item>
-      <item>\vspace*</item>
-      <item>\vspace</item>
-    </list>
-
-    <list name="Footnoting">
-      <item>\footnote*</item>
-      <item>\footnote</item>
-    </list>
-
-    <list name="NewCommand">
-      <item>\renewcommand*</item>
-      <item>\renewcommand</item>
-      <item>\providecommand*</item>
-      <item>\providecommand</item>
-      <item>\newcommand*</item>
-      <item>\newcommand</item>
-    </list>
-
-    <list name="DefCommand">
-      <item>\edef</item>
-      <item>\gdef</item>
-      <item>\xdef</item>
-    </list>
-
-    <list name="MathModeEnsure">
-      <item>\ensuremath</item>
-    </list>
-
-    <list name="iffalse">
-      <item>\iffalse</item>
-    </list>
-
-    <list name="iffalseend">
-      <item>\fi</item>
-      <item>\else</item>
-    </list>
-
-    <list name="Verb">
-      <item>verb*</item>
-      <item>verb</item>
-      <item>Verb</item>
-    </list>
-
-    <list name="Lstinline">
-      <item>lstinline</item>
-    </list>
-
-    <list name="MintParam">
-      <item>mint</item>
-    </list>
-
-    <list name="ListingsEnv">
-      <item>lstlisting*</item>
-      <item>lstlisting</item>
-    </list>
-
-    <list name="MintedEnv">
-      <item>minted*</item>
-      <item>minted</item>
-    </list>
-
-    <list name="VerbatimEnv">
-      <item>Verbatim*</item>
-      <item>Verbatim</item>
-      <item>BVerbatim*</item>
-      <item>BVerbatim</item>
-      <item>LVerbatim*</item>
-      <item>LVerbatim</item>
-      <item>verbatim*</item>
-      <item>verbatim</item>
-      <item>boxedverbatim*</item>
-      <item>boxedverbatim</item>
-    </list>
-
-    <list name="CommentEnv">
-      <item>comment*</item>
-      <item>comment</item>
-    </list>
-
-    <list name="MathEnvParam">
-      <item>alignat*</item>
-      <item>alignat</item>
-      <item>xalignat*</item>
-      <item>xalignat</item>
-      <item>xxalignat*</item>
-      <item>xxalignat</item>
-    </list>
-
-    <list name="MathEnv">
-      <item>Bmatrix*</item>
-      <item>Bmatrix</item>
-      <item>IEEEeqnarray*</item>
-      <item>IEEEeqnarray</item>
-      <item>IEEEeqnarraybox*</item>
-      <item>IEEEeqnarraybox</item>
-      <item>Vmatrix*</item>
-      <item>Vmatrix</item>
-      <item>align*</item>
-      <item>align</item>
-      <item>bmatrix*</item>
-      <item>bmatrix</item>
-      <item>cases*</item>
-      <item>cases</item>
-      <item>displaymath*</item>
-      <item>displaymath</item>
-      <item>eqnarray*</item>
-      <item>eqnarray</item>
-      <item>equation*</item>
-      <item>equation</item>
-      <item>flalign*</item>
-      <item>flalign</item>
-      <item>gather*</item>
-      <item>gather</item>
-      <item>math*</item>
-      <item>math</item>
-      <item>multline*</item>
-      <item>multline</item>
-      <item>pmatrix*</item>
-      <item>pmatrix</item>
-      <item>smallmatrix*</item>
-      <item>smallmatrix</item>
-      <item>subeqnarray*</item>
-      <item>subeqnarray</item>
-      <item>vmatrix*</item>
-      <item>vmatrix</item>
-    </list>
-
-    <list name="TabEnv">
-      <item>tabularx*</item>
-      <item>tabularx</item>
-      <item>tabular*</item>
-      <item>tabular</item>
-      <item>supertabular*</item>
-      <item>supertabular</item>
-      <item>mpsupertabular*</item>
-      <item>mpsupertabular</item>
-      <item>xtabular*</item>
-      <item>xtabular</item>
-      <item>mpxtabular*</item>
-      <item>mpxtabular</item>
-      <item>longtable*</item>
-      <item>longtable</item>
-    </list>
-
-    <list name="MathModeText">
-      <item>\text</item>
-      <item>\textit</item>
-      <item>\textbf</item>
-      <item>\textmd</item>
-      <item>\textsl</item>
-      <item>\textsc</item>
-      <item>\textrm</item>
-      <item>\textsf</item>
-      <item>\texttt</item>
-      <item>\textup</item>
-      <item>\textlf</item>
-      <item>\textnormal</item>
-      <item>\shortintertext</item>
-      <item>\intertext</item>
-      <item>\mbox</item>
-      <item>\emph</item>
-    </list>
-
-    <list name="ResetHL">
-      <item>\KileResetHL</item>
-      <item>\KateResetHL</item>
-    </list>
-
-    <contexts>
-      <!-- Normal text -->
-      <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="\" attribute="Normal Text" context="LatexMacro" lookAhead="true"/>
-        <DetectChar char="$" attribute="Math" context="MathModeTex"/>
-        <RegExpr String="^&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" column="0"/>
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-      </context>
-
-      <context name="LatexMacro" attribute="Normal Text" lineEndContext="#pop">
-        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block"/>
-        <keyword String="endEnv" attribute="Structure" context="#pop!FindEndEnvironment"/>
-        <keyword String="Label" attribute="Structure" context="#pop!Label"/>
-        <keyword String="macroFancyLabel" attribute="Builtin Macro" context="#pop!FancyLabel"/>
-        <keyword String="FancyLabel" attribute="Structure" context="#pop!FancyLabel"/>
-        <keyword String="Sectioning" attribute="Structure" context="#pop!Sectioning"/>
-        <keyword String="SpecialCommand" attribute="Macro" context="#pop!SpecialCommand"/>
-        <keyword String="Footnoting" attribute="Macro" context="#pop!Footnoting"/>
-        <keyword String="NewCommand" attribute="Macro" context="#pop!NewCommand"/>
-        <keyword String="DefCommand" attribute="Macro" context="#pop!DefCommand"/>
-        <Detect2Chars char="\" char1="(" attribute="Math" context="#pop!MathModeLatex"/>
-        <Detect2Chars char="\" char1="[" attribute="Math" context="#pop!MathModeLatexEquation" beginRegion="mathMode"/>
-        <keyword String="MathModeEnsure" attribute="Math" context="#pop!MathModeEnsure"/>
-        <keyword String="iffalse" attribute="Comment" context="#pop!Multiline Comment"/>
-        <DetectChar char="\" attribute="Macro" context="#pop!ContrSeq"/>
-      </context>
-
-      <!-- NoWeb -->
-      <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="^@\s*$" attribute="Normal Text" context="#pop" column="0"/>
-      </context>
-
-      <!-- LaTeX sectioning commands -->
-      <context name="Sectioning" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <IncludeRules context="FindComments"/>
-      </context>
-      <context name="SectioningInside" attribute="Sectioning Text" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <Detect2Chars char="\" char1="(" attribute="Sectioning Math" context="SectioningMathMode" />
-        <DetectChar char="\" attribute="Sectioning Macro" context="SectioningContrSeq"/>
-        <DetectChar char="$" attribute="Sectioning Math" context="SectioningMathMode" />
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-      </context>
-      <context name="SectioningContrSeq" attribute="Macro" lineEndContext="#pop">
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z]+(?:\+?|\*{0,3})|." attribute="Sectioning Macro" context="#pop" />
-      </context>
-      <context name="SectioningMathMode" attribute="Sectioning Math" lineEndContext="#stay">
-        <Detect2Chars char="$" char1="$" attribute="Error" context="#stay" />
-        <DetectChar char="$" attribute="Sectioning Math" context="#pop" />
-        <Detect2Chars char="\" char1=")" attribute="Sectioning Math" context="#pop" />
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
-        <DetectChar char="\" attribute="Sectioning Macro Mathmode" context="SectioningMathContrSeq"/>
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-      </context>
-      <context name="SectioningMathContrSeq" attribute="Sectioning Macro Mathmode" lineEndContext="#pop">
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="&envname;|." attribute="Sectioning Macro Mathmode" context="#pop" />
-      </context>
-
-      <!-- LaTeX Footnote commands -->
-      <context name="Footnoting" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <IncludeRules context="FindComments"/>
-      </context>
-      <context name="FootnotingInside" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <IncludeRules context="Normal Text"/>
-      </context>
-
-      <!-- LaTeX commands \newcommand and \renewcommand -->
-      <context name="NewCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
-        <RegExpr String="(?:\[\d\](?:\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>
-        <DetectChar char="}" attribute="Error" context="#pop"/>
-      </context>
-
-      <!-- LaTeX command \def -->
-      <context name="DefCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <RegExpr String="\\[a-zA-Z]+[^\{]*\{" attribute="Normal Text" context="#pop!CommandParameter"/>
-        <DetectChar char="}" attribute="Error" context="#pop"/>
-      </context>
-
-      <!-- parse command argument -->
-      <context name="CommandParameter" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
-        <IncludeRules context="FindComments"/>
-      </context>
-
-      <!-- LaTeX command in text mode -->
-      <context name="ContrSeq" attribute="Macro" lineEndContext="#pop">
-        <keyword String="Verb" attribute="Macro" context="Verb"/>
-        <keyword String="Lstinline" attribute="Macro" context="Lstinline"/>
-        <keyword String="MintParam" attribute="Macro" context="MintParam"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[a-zA-Z@]+(?:\+?|\*{0,3})|." attribute="Macro" context="#pop" />
-      </context>
-
-      <!-- \mint command with parameter-->
-      <context name="MintParam" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay"/>
-        <AnyChar String="}]" attribute="Normal Text" context="Verb"/>
-      </context>
-
-      <!-- verb command -->
-      <context name="Verb" attribute="Verbatim" lineEndContext="#pop#pop" >
-        <RegExpr String="(.)" attribute="Normal Text" context="VerbEnd" />
-      </context>
-      <context name="VerbEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
-        <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
-      </context>
-
-      <!-- lstinline command, different from verb as it takes options -->
-      <context name="Lstinline" attribute="Verbatim" lineEndContext="#pop#pop" >
-        <DetectSpaces/>
-        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
-        <DetectChar char="{" attribute="Normal Text" context="LstinlineParameter"/>
-        <RegExpr String="(.)" attribute="Normal Text" context="LstinlineEnd" />
-      </context>
-      <context name="LstinlineEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
-        <!-- TODO DetectChar segfault -->
-        <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
-      </context>
-      <context name="LstinlineParameter" attribute="Verbatim" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
-      </context>
-
-      <!-- label -->
-      <context name="Label" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
-        <DetectChar char="[" attribute="Normal Text" context="LabelOption"/>
-      </context>
-
-      <context name="LabelOption" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex"/>
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathModeTex" />
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <DetectChar char="]" attribute="Normal Text" context="#pop"/>
-      </context>
-
-      <context name="LabelParameter" attribute="Reference" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
-      </context>
-
-      <!-- labels from biblatex commands -->
-      <context name="FancyLabel" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
-        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
-        <DetectChar char="(" attribute="Normal Text" context="FancyLabelRoundBrackets"/>
-      </context>
-
-      <context name="FancyLabelParameter" attribute="Environment" lineEndContext="#stay">
-        <DetectSpaces/>
-        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex"/>
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathModeTex" />
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
-      </context>
-
-      <context name="FancyLabelOption" attribute="Option Text" lineEndContext="#stay">
-        <IncludeRules context="LabelOption"/>
-      </context>
-
-      <context name="FancyLabelRoundBrackets" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathModeTex" />
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <DetectChar char=")" attribute="Normal Text" context="#pop"/>
-      </context>
-
-      <!-- Special commands -->
-      <context name="SpecialCommand" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
-      </context>
-
-      <context name="SpecialCommandParameterOption" attribute="Option Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />
-        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
-        <DetectChar char="$" attribute="Math" context="MathModeTex" />
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
-        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
-      </context>
-
-      <!-- end of an environment -->
-      <context name="FindEndEnvironment" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Normal Text" context="EndEnvironment"/>
-        <RegExpr String="\S" attribute="Normal Text" context="#pop"/>
-      </context>
-
-      <context name="EndEnvironment" attribute="Environment" lineEndContext="#stay">
-        <RegExpr String="&envname;" attribute="Environment" context="LatexEnvEnd"/>
-        <RegExpr String="." attribute="Error" context="#pop#pop"/>
-      </context>
-
-      <context name="LatexEnvEnd" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" endRegion="block" context="#pop#pop#pop"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-
-      <!-- start of an environment -->
-      <context name="FindBeginEnvironment" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="BeginEnvironment"/>
-        <RegExpr String="." attribute="Normal Text" context="#pop"/>
-      </context>
-
-      <!-- filter the environment name and check the type -->
-      <context name="BeginEnvironment" attribute="Environment" lineEndContext="#stay">
-        <keyword String="ListingsEnv" attribute="Environment" context="ListingsEnv"/>
-        <keyword String="MintedEnv" attribute="Environment" context="MintedEnv"/>
-        <keyword String="VerbatimEnv" attribute="Environment" context="VerbatimEnv" lookAhead="true"/>
-        <keyword String="CommentEnv" attribute="Environment" context="CommentEnv"/>
-        <keyword String="MathEnvParam" attribute="Environment" context="MathEnvWithParam"/>
-        <keyword String="MathEnv" attribute="Environment" context="MathEnv"/>
-        <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>
-        <RegExpr String="." attribute="Error" context="#pop"/>
-      </context>
-
-      <!-- environment type 1: normal -->
-      <context name="LatexEnv" attribute="Error" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
-      </context>
-
-      <context name="VerbatimEnv" attribute="Environment" lineEndContext="#stay">
-        <WordDetect String="verbatim*" attribute="Environment" context="VerbatimEnv1"/>
-        <WordDetect String="verbatim" attribute="Environment" context="VerbatimEnv1"/>
-        <WordDetect String="boxedverbatim*" attribute="Environment" context="VerbatimEnv2"/>
-        <WordDetect String="boxedverbatim" attribute="Environment" context="VerbatimEnv2"/>
-
-        <WordDetect String="Verbatim*" attribute="Environment" context="VerbatimEnv3"/>
-        <WordDetect String="Verbatim" attribute="Environment" context="VerbatimEnv3"/>
-        <WordDetect String="BVerbatim*" attribute="Environment" context="VerbatimEnv4"/>
-        <WordDetect String="BVerbatim" attribute="Environment" context="VerbatimEnv4"/>
-        <WordDetect String="LVerbatim*" attribute="Environment" context="VerbatimEnv5"/>
-        <WordDetect String="LVerbatim" attribute="Environment" context="VerbatimEnv5"/>
-      </context>
-
-      <!-- environment type 2: verbatim without parameter -->
-      <context name="VerbatimEnv1" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim1"/>
-      </context>
-      <context name="Verbatim1" attribute="Verbatim" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
-      </context>
-
-      <context name="VerbatimEnv2" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="Verbatim2"/>
-      </context>
-      <context name="Verbatim2" attribute="Verbatim" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{boxedverbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
-      </context>
-
-      <!-- environment type 3: verbatim with optional parameter -->
-      <context name="VerbatimEnv3" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv3Param"/>
-      </context>
-      <context name="VerbatimEnv3Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim3">
-        <DetectSpaces/>
-        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim3"/>
-      </context>
-      <context name="Verbatim3" attribute="Verbatim" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{Verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
-      </context>
-
-      <context name="VerbatimEnv4" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv4Param"/>
-      </context>
-      <context name="VerbatimEnv4Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim4">
-        <DetectSpaces/>
-        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim4"/>
-      </context>
-      <context name="Verbatim4" attribute="Verbatim" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{BVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
-      </context>
-
-      <context name="VerbatimEnv5" attribute="Error" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv5Param"/>
-      </context>
-      <context name="VerbatimEnv5Param" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Verbatim5">
-        <DetectSpaces/>
-        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim5"/>
-      </context>
-      <context name="Verbatim5" attribute="Verbatim" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{LVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
-      </context>
-
-      <!-- environment type 4: listings environment with optional parameter and HL switching-->
-      <context name="ListingsEnv" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="#pop!ListingsEnvParam"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-      <context name="ListingsEnvParam" attribute="Normal Text" lineEndContext="#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop!UnknownHighlighting">
-        <DetectSpaces/>
-        <DetectChar char="[" attribute="Normal Text" context="#pop!ListingsEnvParamInside"/>
-        <IncludeRules context="FindComments"/>
-      </context>
-      <context name="ListingsEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
-        <DetectIdentifier/>
-        <RegExpr String="\s*language\s*=\s*(?=[^],])" attribute="Normal Text" context="HighlightingSelector"/>
-        <DetectChar char="]" attribute="Normal Text" context="ListingsEnvParamEnd"/>
-        <IncludeRules context="FindComments"/>
-      </context>
-      <context name="ListingsEnvParamEnd" attribute="Normal Text" lineEndContext="#pop#pop!UnknownHighlighting" fallthrough="true" fallthroughContext="#pop#pop!UnknownHighlighting">
-        <DetectSpaces/>
-        <IncludeRules context="FindComments"/>
-      </context>
-
-      <!-- environment type 5: minted environment with optional and HL switching -->
-      <context name="MintedEnv" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="#pop!MintedEnvParam"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-      <context name="MintedEnvParam" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="[" attribute="Normal Text" context="#pop!MintedEnvParamInside"/>
-        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
-        <IncludeRules context="FindComments"/>
-      </context>
-      <context name="MintedEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="]" attribute="Normal Text" context="#pop!MintedEnvLang"/>
-        <IncludeRules context="FindComments"/>
-        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
-      </context>
-      <context name="MintedEnvLang" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
-        <IncludeRules context="FindComments"/>
-      </context>
-
-      <!-- parse verbatim text for lstinline and minted -->
-      <context name="UnknownHighlighting" attribute="Verbatim" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="\\end(?=\s*\{(?:lstlisting|minted)\*?\})" attribute="Structure" context="UnknownHighlightingEnd"/>
-      </context>
-      <context name="UnknownHighlightingEnd" attribute="Environment" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop#pop" endRegion="block"/>
-        <DetectIdentifier/>
-      </context>
-
-
-      <!-- Selector for different highlightning schemes, in case the language is not implemented we pop and thus fallback to verbatim -->
-      <context name="HighlightingSelector" attribute="Normal Text" lineEndContext="#stay">
-        <WordDetect String="C++" insensitive="true" context="HighlightingBeginC++"/>
-        <WordDetect String="Python" insensitive="true" context="HighlightingBeginPython"/>
-        <AnyChar String="}]" context="#pop!UnknownHighlighting"/>
-        <RegExpr String="[^]}]*" context="#stay"/>
-      </context>
-
-      <context name="HighlightingCommon" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="\\end\s*\{(?:lstlisting|minted)\*?\}" attribute="Structure" lookAhead="true" context="#pop#pop#pop#pop#pop#pop"/>
-      </context>
-
-      <context name="HighlightingBeginC++" attribute="Normal Text" lineEndContext="#stay">
-        <AnyChar String="}]" context="HighlightingC++"/>
-        <!-- Eat the trailing characters including } or ] after the language specification -->
-        <RegExpr String="[^]}]*" context="#stay"/>
-      </context>
-
-      <context name="HighlightingC++" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="HighlightingCommon"/>
-        <IncludeRules context="##C++" includeAttrib="true"/>
-      </context>
-
-      <context name="HighlightingBeginPython" attribute="Normal Text" lineEndContext="#stay">
-        <AnyChar String="}]" context="HighlightingPython"/>
-        <RegExpr String="[^]}]*" context="#stay"/>
-      </context>
-
-      <context name="HighlightingPython" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="HighlightingCommon"/>
-        <IncludeRules context="##Python"/>
-      </context>
-
-      <!-- end of verbatim environment -->
-      <context name="VerbFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
-        <keyword String="VerbatimEnv" attribute="Environment"/>
-      </context>
-
-      <!-- begin comment environment -->
-      <context name="CommentEnv" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="BlockComment"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-       </context>
-
-      <!-- parse comment text -->
-      <context name="BlockComment" attribute="Comment" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <RegExpr String="\\end(?=\s*\{comment\*?\})" attribute="Structure" context="CommFindEnd"/>
-      </context>
-
-      <!-- end of comment environment -->
-      <context name="CommFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
-        <keyword String="CommentEnv" attribute="Environment"/>
-      </context>
-
-      <!-- environment type 4: math environment with its own mathmode -->
-      <context name="MathEnv" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-
-      <!-- environment type 5: math environment with its own mathmode and parameter -->
-      <context name="MathEnvWithParam" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="MathEnvWithParamInside"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-      <context name="MathEnvWithParamInside" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="MathEnvParamInside"/>
-      </context>
-      <context name="MathEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop!MathModeEnv"/>
-      </context>
-
-      <!-- parse math environment -->
-      <context name="MathModeEnv" attribute="Math" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="\" attribute="Math" context="BackslashMathModeEnv" lookAhead="true"/>
-        <DetectChar char="$" attribute="Error" context="#stay"/>
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-      </context>
-      <context name="BackslashMathModeEnv" attribute="Math" lineEndContext="#pop">
-        <keyword String="beginEnv" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block"/>
-        <keyword String="endEnv" attribute="Structure" context="#pop!MathFindEnd"/>
-        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText"/>
-        <Detect2Chars char="\" char1="(" attribute="Error" context="#pop"/>
-        <Detect2Chars char="\" char1=")" attribute="Error" context="#pop"/>
-        <Detect2Chars char="\" char1="[" attribute="Error" context="#pop"/>
-        <Detect2Chars char="\" char1="]" attribute="Error" context="#pop"/>
-        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
-      </context>
-
-      <!-- end of math environment -->
-      <context name="MathFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
-        <keyword String="MathEnvParam" attribute="Environment" context="MathFindEndInside"/>
-        <keyword String="MathEnv" attribute="Environment" context="MathFindEndInside"/>
-        <RegExpr String="&envname;" attribute="Environment" context="NoMathFindEndInside"/>
-        <RegExpr String="." attribute="Error" context="#pop"/>
-      </context>
-      <context name="MathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-      <context name="NoMathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop" endRegion="block"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-
-      <!-- environment type 9: tabular -->
-      <context name="TabEnv" attribute="Environment" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop#pop">
-        <DetectChar char="}" attribute="Normal Text" context="Tab"/>
-        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
-      </context>
-
-      <!-- parse tabular text -->
-      <context name="Tab" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="&amp;" attribute="Ampersand" context="#stay"/>
-        <Detect2Chars char="@" char1="{" attribute="Column Separator" context="Column Separator"/>
-        <RegExpr String="\\end\b" attribute="Structure" context="TabFindEnd"/> <!-- endEnv -->
-        <IncludeRules context="Normal Text" />
-      </context>
-
-      <context name="Column Separator" attribute="Column Separator" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Column Separator" context="Column Separator"/>
-        <DetectChar char="}" attribute="Column Separator" context="#pop"/>
-      </context>
-
-      <!-- end of tabular environment -->
-      <context name="TabFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
-        <keyword String="TabEnv" attribute="Environment" context="#stay"/>
-      </context>
-
-      <!-- math mode: starting with $ -->
-      <context name="MathModeTex" attribute="Math" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!MathMode">
-        <DetectChar char="$" attribute="Math" context="#pop!MathModeDisplay" beginRegion="mathMode"/>
-      </context>
-      <context name="MathMode" attribute="Math" lineEndContext="#stay">
-        <DetectChar char="$" attribute="Math" context="#pop"/>
-        <IncludeRules context="MathModeCommon"/>
-      </context>
-
-      <!-- math mode: starting with $$ -->
-      <context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">
-        <Detect2Chars char="$" char1="$" attribute="Math" context="#pop" endRegion="mathMode"/>
-        <DetectChar char="$" attribute="Error" context="#stay"/>
-        <IncludeRules context="MathModeCommon"/>
-      </context>
-
-      <!-- math mode: starting with \( -->
-      <context name="MathModeLatex" attribute="Math" lineEndContext="#stay">
-        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop"/>
-        <IncludeRules context="MathModeCommon"/>
-      </context>
-
-      <!-- math mode: starting with \[ -->
-      <context name="MathModeLatexEquation" attribute="Math" lineEndContext="#stay">
-        <Detect2Chars char="\" char1="]" attribute="Math" context="#pop" endRegion="mathMode"/>
-        <IncludeRules context="MathModeCommon"/>
-      </context>
-
-      <!-- math mode: \ensuremath{...} -->
-      <context name="MathModeEnsure" attribute="Math" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Math" context="#pop!MathModeEnsureInside"/>
-        <RegExpr String="." attribute="Error" context="#pop"/>
-      </context>
-      <context name="MathModeEnsureInside" attribute="Math" lineEndContext="#stay">
-        <DetectChar char="{" attribute="Math" context="MathModeEnsureInside" />
-        <DetectChar char="}" attribute="Math" context="#pop" />
-        <IncludeRules context="MathModeCommon"/>
-      </context>
-
-      <!-- math mode common -->
-      <context name="MathModeCommon" attribute="Math" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="\" attribute="Math" context="BackslashMathModeCommon" lookAhead="true"/>
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-      </context>
-      <context name="BackslashMathModeCommon" attribute="Math" lineEndContext="#pop">
-        <keyword String="beginEnv" attribute="Structure" context="#pop!MathEnvironment" beginRegion="block"/>
-        <keyword String="endEnv" attribute="Structure" context="#pop!MathEnvironmentEnd"/>
-        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText" />
-        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
-      </context>
-      <context name="MathEnvironment" attribute="Math" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentInside"/>
-        <RegExpr String="." attribute="Error" context="#pop"/>
-      </context>
-      <context name="MathEnvironmentInside" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
-        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
-        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#stay"/>
-      </context>
-      <context name="MathEnvironmentEnd" attribute="Math" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentEndInside"/>
-        <RegExpr String="." attribute="Error" context="#pop"/>
-      </context>
-      <context name="MathEnvironmentEndInside" attribute="Environment" lineEndContext="#stay">
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop" endRegion="block"/>
-        <WordDetect String="ensuremath" attribute="Environment" context="#pop!LatexEnvEnd"/>
-        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
-        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#pop#pop"/>
-      </context>
-
-      <!-- command in mathmode -->
-      <context name="MathContrSeq" attribute="Macro Mathmode" lineEndContext="#pop">
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RegExpr String="&envname;|." attribute="Macro Mathmode" context="#pop" />
-      </context>
-
-      <!-- text in mathmode -->
-      <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="MathContrSeq">
-        <DetectSpaces/>
-        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
-      </context>
-      <context name="MathModeTextInside" attribute="Normal Text" lineEndContext="#stay" >
-        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
-      </context>
-
-      <context name="MathModeTextParameterStart" attribute="Normal Text" lineEndContext="#stay" >
-        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
-        <RangeDetect char="$" char1="$" attribute="Math" context="#stay"/>
-        <DetectChar char="{" attribute="Normal Text" context="MathModeTextInside" lookAhead="true"/>
-        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
-        <IncludeRules context="FindComments"/>
-        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
-      </context>
-
-      <!-- iffalse aka multiline comment -->
-      <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay">
-        <DetectChar char="\" attribute="Comment" context="BackslashMultilineComment" lookAhead="true"/>
-      </context>
-      <context name="BackslashMultilineComment" attribute="Comment" lineEndContext="#pop">
-        <keyword String="iffalseend" attribute="Comment" context="#pop#pop"/>
-        <DetectChar char="\" attribute="Comment" context="#pop"/>
-      </context>
-
-      <!-- comment -->
-      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="&#037;+\s*BEGIN\b" attribute="Region Marker" context="RegionComment" firstNonSpace="true" beginRegion="region-marker"/>
-        <RegExpr String="&#037;+\s*END\b" attribute="Region Marker" context="RegionComment" firstNonSpace="true" endRegion="region-marker"/>
-        <DetectChar char="%" attribute="Comment" context="Comment"/>
-      </context>
-      <context name="RegionComment" attribute="Region Marker" lineEndContext="#pop"/>
-      <context name="Comment" attribute="Comment" lineEndContext="#pop">
-        <DetectSpaces/>
-        <IncludeRules context="##Comments" />
-        <DetectIdentifier/>
-        <DetectChar char="\" attribute="Comment" context="BackslashComment" lookAhead="true"/>
-      </context>
-      <context name="BackslashComment" attribute="Comment" lineEndContext="#pop">
-        <keyword String="ResetHL" attribute="Comment" context="#pop!Normal Text"/>
-        <DetectChar char="\" attribute="Comment" context="#pop"/>
-      </context>
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Option Text" defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Macro" defStyleNum="dsFunction" spellChecking="false"/>
-      <itemData name="Comment" defStyleNum="dsComment" spellChecking="false"/>
-      <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
-      <itemData name="Math" defStyleNum="dsSpecialString" spellChecking="false"/>
-      <!-- begin/end -->
-      <itemData name="Structure" defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Builtin Macro" defStyleNum="dsBuiltIn" spellChecking="false"/>
-      <itemData name="Macro Mathmode" defStyleNum="dsSpecialChar" spellChecking="false"/>
-      <itemData name="Environment" defStyleNum="dsExtension" spellChecking="false"/>
-      <itemData name="Reference" defStyleNum="dsExtension" spellChecking="false"/>
-      <itemData name="Verbatim" defStyleNum="dsVerbatimString" spellChecking="false"/>
+<!DOCTYPE language
+[
+    <!ENTITY bullet "&#xd7;">
+    <!ENTITY envname "[a-zA-Z]+\*?">
+]>
+<language name="LaTeX" version="25" section="Markup" kateversion="5.79" priority="10" extensions="*.tex;*.ltx;*.dtx;*.sty;*.cls;*.bbx;*.cbx;*.lbx;*.tikz;*.pgf" mimetype="text/x-tex" casesensitive="1" author="Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)+Holger Danielsson (holger.danielsson@versanet.de)+Michel Ludwig (michel.ludwig@kdemail.net)+Thomas Braun (thomas.braun@virtuell-zuhause.de)" license="LGPL" >
+  <highlighting>
+    <!-- NOTE: Keywords of kind "\something" do not need a delimiter before "\".
+         Using a DetectChar rule with lookAhead to detect "\" at the beginning
+         avoids the requirement of the delimiter in the keyword. -->
+    <list name="beginEnv">
+      <item>\begin</item>
+    </list>
+
+    <list name="endEnv">
+      <item>\end</item>
+    </list>
+
+    <list name="Label">
+      <item>\Autocite</item>
+      <item>\autocite</item>
+      <item>\autoref</item>
+      <item>\Cite</item>
+      <item>\cite</item>
+      <item>\Citeauthor</item>
+      <item>\citeauthor</item>
+      <item>\citep</item>
+      <item>\citet</item>
+      <item>\citetitle</item>
+      <item>\citeurl</item>
+      <item>\citeyear</item>
+      <item>\cref</item>
+      <item>\Cref</item>
+      <item>\cref*</item>
+      <item>\Cref*</item>
+      <item>\eqref</item>
+      <item>\Footcite</item>
+      <item>\footcite</item>
+      <item>\footfullcite</item>
+      <item>\fullcite</item>
+      <item>\label</item>
+      <item>\nocite</item>
+      <item>\pagecite</item>
+      <item>\pageref</item>
+      <item>\Parencite</item>
+      <item>\parencite</item>
+      <item>\ref</item>
+      <item>\subref</item>
+      <item>\subref*</item>
+      <item>\supercite</item>
+      <item>\Textcite</item>
+      <item>\textcite</item>
+      <item>\vpageref</item>
+      <item>\vref</item>
+    </list>
+
+    <list name="macroFancyLabel">
+      <item>\documentclass</item>
+      <item>\includegraphics</item>
+      <item>\include</item>
+      <item>\usepackage</item>
+      <item>\bibliography</item>
+      <item>\bibliographystyle</item>
+    </list>
+
+    <list name="FancyLabel">
+      <item>\cites</item>
+      <item>\Cites</item>
+      <item>\parencites</item>
+      <item>\Parencites</item>
+      <item>\autocites</item>
+      <item>\Autocites</item>
+      <item>\supercites</item>
+      <item>\footcites</item>
+      <item>\Footcites</item>
+    </list>
+
+    <list name="Sectioning">
+      <item>\part*</item>
+      <item>\part</item>
+      <item>\chapter*</item>
+      <item>\chapter</item>
+      <item>\section*</item>
+      <item>\section</item>
+      <item>\subsection*</item>
+      <item>\subsection</item>
+      <item>\subsubsection*</item>
+      <item>\subsubsection</item>
+      <item>\paragraph*</item>
+      <item>\paragraph</item>
+      <item>\subparagraph*</item>
+      <item>\subparagraph</item>
+    </list>
+
+    <list name="SpecialCommand">
+      <item>\column</item>
+      <item>\definecolor</item>
+      <item>\geometry</item>
+      <item>\hspace*</item>
+      <item>\hspace</item>
+      <item>\input</item>
+      <item>\newboolean</item>
+      <item>\rule</item>
+      <item>\setboolean</item>
+      <item>\setcounter</item>
+      <item>\setlength</item>
+      <item>\special</item>
+      <item>\textcolor</item>
+      <item>\vspace*</item>
+      <item>\vspace</item>
+    </list>
+
+    <list name="Footnoting">
+      <item>\footnote*</item>
+      <item>\footnote</item>
+    </list>
+
+    <list name="NewCommand">
+      <item>\renewcommand*</item>
+      <item>\renewcommand</item>
+      <item>\providecommand*</item>
+      <item>\providecommand</item>
+      <item>\newcommand*</item>
+      <item>\newcommand</item>
+    </list>
+
+    <list name="DefCommand">
+      <item>\edef</item>
+      <item>\gdef</item>
+      <item>\xdef</item>
+    </list>
+
+    <list name="MathModeEnsure">
+      <item>\ensuremath</item>
+    </list>
+
+    <list name="iffalse">
+      <item>\iffalse</item>
+    </list>
+
+    <list name="iffalseend">
+      <item>\fi</item>
+      <item>\else</item>
+    </list>
+
+    <list name="Verb">
+      <item>verb*</item>
+      <item>verb</item>
+      <item>Verb</item>
+    </list>
+
+    <list name="Lstinline">
+      <item>lstinline</item>
+    </list>
+
+    <list name="MintParam">
+      <item>mint</item>
+    </list>
+
+    <list name="ListingsEnv">
+      <item>lstlisting*</item>
+      <item>lstlisting</item>
+    </list>
+
+    <list name="MintedEnv">
+      <item>minted*</item>
+      <item>minted</item>
+    </list>
+
+    <list name="MintedCodeLang">
+      <!-- ABAP lexers -->
+      <item>abapcode*</item>
+      <item>abapcode</item>
+      <!-- ActionScript 2.0 lexers -->
+      <item>actionscriptcode*</item>
+      <item>actionscriptcode</item>
+      <item>ascode*</item>
+      <item>ascode</item>
+      <!-- Ada lexers -->
+      <item>adacode*</item>
+      <item>adacode</item>
+      <!-- Agda lexers -->
+      <item>agdacode*</item>
+      <item>agdacode</item>
+      <!-- Apache Configuration lexers -->
+      <item>apacheconfcode*</item>
+      <item>apacheconfcode</item>
+      <item>aconfcode*</item>
+      <item>aconfcode</item>
+      <item>apachecode*</item>
+      <item>apachecode</item>
+      <!-- AutoHotKey lexers -->
+      <item>autohotkeycode*</item>
+      <item>autohotkeycode</item>
+      <item>ahkcode*</item>
+      <item>ahkcode</item>
+      <!-- AWK lexers -->
+      <item>awkcode*</item>
+      <item>awkcode</item>
+      <item>gawkcode*</item>
+      <item>gawkcode</item>
+      <item>mawkcode*</item>
+      <item>mawkcode</item>
+      <item>nawkcode*</item>
+      <item>nawkcode</item>
+      <!-- Bash lexers -->
+      <item>bashcode*</item>
+      <item>bashcode</item>
+      <item>shcode*</item>
+      <item>shcode</item>
+      <item>kshcode*</item>
+      <item>kshcode</item>
+      <item>zshcode*</item>
+      <item>zshcode</item>
+      <item>shellcode*</item>
+      <item>shellcode</item>
+      <!-- BibTeX lexers -->
+      <item>bibtexcode*</item>
+      <item>bibtexcode</item>
+      <item>bibcode*</item>
+      <item>bibcode</item>
+      <!-- Boo lexers -->
+      <item>boocode*</item>
+      <item>boocode</item>
+      <!-- C lexers -->
+      <item>ccode*</item>
+      <item>ccode</item>
+      <!-- CMake lexers -->
+      <item>cmakecode*</item>
+      <item>cmakecode</item>
+      <!-- C# lexers -->
+      <item>csharpcode*</item>
+      <item>csharpcode</item>
+      <item>cscode*</item>
+      <item>cscode</item>
+      <!-- Clojure lexers -->
+      <item>clojurecode*</item>
+      <item>clojurecode</item>
+      <item>cljcode*</item>
+      <item>cljcode</item>
+      <!-- CoffeeScript lexers -->
+      <item>coffeecode*</item>
+      <item>coffeecode</item>
+      <!-- Common Lisp lexers -->
+      <item>commonlispcode*</item>
+      <item>commonlispcode</item>
+      <item>clcode*</item>
+      <item>clcode</item>
+      <item>lispcode*</item>
+      <item>lispcode</item>
+      <!-- C++ lexers -->
+      <item>cppcode*</item>
+      <item>cppcode</item>
+      <!-- CSS lexers -->
+      <item>csscode*</item>
+      <item>csscode</item>
+      <!-- D lexers -->
+      <item>dcode*</item>
+      <item>dcode</item>
+      <!-- Dart lexers -->
+      <item>dartcode*</item>
+      <item>dartcode</item>
+      <!-- Pascal lexers -->
+      <item>delphicode*</item>
+      <item>delphicode</item>
+      <item>pascode*</item>
+      <item>pascode</item>
+      <item>pascalcode*</item>
+      <item>pascalcode</item>
+      <item>objectpascalcode*</item>
+      <item>objectpascalcode</item>
+      <!-- Diff lexers -->
+      <item>diffcode*</item>
+      <item>diffcode</item>
+      <item>udiffcode*</item>
+      <item>udiffcode</item>
+      <!-- DTD lexers -->
+      <item>dtdcode*</item>
+      <item>dtdcode</item>
+      <!-- Eiffel lexers -->
+      <item>eiffelcode*</item>
+      <item>eiffelcode</item>
+      <!-- Elixir lexers -->
+      <item>elixircode*</item>
+      <item>elixircode</item>
+      <item>excode*</item>
+      <item>excode</item>
+      <item>exscode*</item>
+      <item>exscode</item>
+      <!-- Elm lexers -->
+      <item>elmcode*</item>
+      <item>elmcode</item>
+      <!-- Email lexers -->
+      <item>emailcode*</item>
+      <item>emailcode</item>
+      <item>emlcode*</item>
+      <item>emlcode</item>
+      <!-- Erlang lexers -->
+      <item>erlangcode*</item>
+      <item>erlangcode</item>
+      <!-- Fish lexers -->
+      <item>fishcode*</item>
+      <item>fishcode</item>
+      <item>fishshellcode*</item>
+      <item>fishshellcode</item>
+      <!-- ANS-Forth94 lexers -->
+      <item>forthcode*</item>
+      <item>forthcode</item>
+      <!-- Fortran (Fixed Format) lexers -->
+      <item>fortranfixedcode*</item>
+      <item>fortranfixedcode</item>
+      <!-- Fortran (Free Format) lexers -->
+      <item>fortrancode*</item>
+      <item>fortrancode</item>
+      <item>fcode*</item>
+      <item>fcode</item>
+      <!-- GAP lexers -->
+      <item>gapcode*</item>
+      <item>gapcode</item>
+      <!-- Godot lexers -->
+      <item>gdscriptcode*</item>
+      <item>gdscriptcode</item>
+      <item>gdcode*</item>
+      <item>gdcode</item>
+      <!-- GLSL lexers -->
+      <item>glslcode*</item>
+      <item>glslcode</item>
+      <!-- G-Code lexers -->
+      <item>gcodecode*</item>
+      <item>gcodecode</item>
+      <!-- Gnuplot lexers -->
+      <item>gnuplotcode*</item>
+      <item>gnuplotcode</item>
+      <!-- Go lexers -->
+      <item>gocode*</item>
+      <item>gocode</item>
+      <item>golangcode*</item>
+      <item>golangcode</item>
+      <!-- Groovy lexers -->
+      <item>groovycode*</item>
+      <item>groovycode</item>
+      <!-- Haml lexers -->
+      <item>hamlcode*</item>
+      <item>hamlcode</item>
+      <!-- Haskell lexers -->
+      <item>haskellcode*</item>
+      <item>haskellcode</item>
+      <item>hscode*</item>
+      <item>hscode</item>
+      <!-- Haxe lexers -->
+      <item>haxecode*</item>
+      <item>haxecode</item>
+      <item>hxslcode*</item>
+      <item>hxslcode</item>
+      <item>hxcode*</item>
+      <item>hxcode</item>
+      <!-- HTML lexers -->
+      <item>htmlcode*</item>
+      <item>htmlcode</item>
+      <!-- IDL lexers -->
+      <item>idlcode*</item>
+      <item>idlcode</item>
+      <!-- Idris lexers -->
+      <item>idriscode*</item>
+      <item>idriscode</item>
+      <item>idrcode*</item>
+      <item>idrcode</item>
+      <!-- Inform lexers -->
+      <item>informcode*</item>
+      <item>informcode</item>
+      <item>icode*</item>
+      <item>icode</item>
+      <!-- INI Files lexers -->
+      <item>inicode*</item>
+      <item>inicode</item>
+      <item>cfgcode*</item>
+      <item>cfgcode</item>
+      <item>dosinicode*</item>
+      <item>dosinicode</item>
+      <!-- J lexers -->
+      <item>jcode*</item>
+      <item>jcode</item>
+      <!-- Java lexers -->
+      <item>javacode*</item>
+      <item>javacode</item>
+      <!-- JavaScript lexers -->
+      <item>javascriptcode*</item>
+      <item>javascriptcode</item>
+      <item>jscode*</item>
+      <item>jscode</item>
+      <!-- JCL lexers -->
+      <item>jclcode*</item>
+      <item>jclcode</item>
+      <!-- JSON lexers -->
+      <item>jsoncode*</item>
+      <item>jsoncode</item>
+      <item>jsonobjectcode*</item>
+      <item>jsonobjectcode</item>
+      <!-- Julia lexers -->
+      <item>juliacode*</item>
+      <item>juliacode</item>
+      <item>jlcode*</item>
+      <item>jlcode</item>
+      <!-- Kconfig lexers -->
+      <item>kconfigcode*</item>
+      <item>kconfigcode</item>
+      <item>menuconfigcode*</item>
+      <item>menuconfigcode</item>
+      <item>linuxconfigcode*</item>
+      <item>linuxconfigcode</item>
+      <item>kernelconfigcode*</item>
+      <item>kernelconfigcode</item>
+      <!-- Kotlin lexers -->
+      <item>kotlincode*</item>
+      <item>kotlincode</item>
+      <!-- LSL lexers -->
+      <item>lslcode*</item>
+      <item>lslcode</item>
+      <!-- LESSCSS lexers -->
+      <item>lesscode*</item>
+      <item>lesscode</item>
+      <!-- LilyPond lexers -->
+      <item>lilypondcode*</item>
+      <item>lilypondcode</item>
+      <!-- Literate Haskell lexers -->
+      <item>literatehaskellcode*</item>
+      <item>literatehaskellcode</item>
+      <item>lhaskellcode*</item>
+      <item>lhaskellcode</item>
+      <item>lhscode*</item>
+      <item>lhscode</item>
+      <!-- LLVM lexers -->
+      <item>llvmcode*</item>
+      <item>llvmcode</item>
+      <!-- Logtalk lexers -->
+      <item>logtalkcode*</item>
+      <item>logtalkcode</item>
+      <!-- Lua lexers -->
+      <item>luacode*</item>
+      <item>luacode</item>
+      <!-- Makefile lexers -->
+      <item>makecode*</item>
+      <item>makecode</item>
+      <item>makefilecode*</item>
+      <item>makefilecode</item>
+      <item>mfcode*</item>
+      <item>mfcode</item>
+      <item>bsdmakecode*</item>
+      <item>bsdmakecode</item>
+      <!-- Mako lexers -->
+      <item>makocode*</item>
+      <item>makocode</item>
+      <!-- Markdown lexers -->
+      <item>markdowncode*</item>
+      <item>markdowncode</item>
+      <item>mdcode*</item>
+      <item>mdcode</item>
+      <!-- Mason lexers -->
+      <item>masoncode*</item>
+      <item>masoncode</item>
+      <!-- Mathematica lexers -->
+      <item>mathematicacode*</item>
+      <item>mathematicacode</item>
+      <item>mmacode*</item>
+      <item>mmacode</item>
+      <item>nbcode*</item>
+      <item>nbcode</item>
+      <!-- Matlab lexers -->
+      <item>matlabcode*</item>
+      <item>matlabcode</item>
+      <!-- Maxima lexers -->
+      <item>maximacode*</item>
+      <item>maximacode</item>
+      <item>macsymacode*</item>
+      <item>macsymacode</item>
+      <!-- Meson lexers -->
+      <item>mesoncode*</item>
+      <item>mesoncode</item>
+      <item>mesonbuildcode*</item>
+      <item>mesonbuildcode</item>
+      <!-- Modelica lexers -->
+      <item>modelicacode*</item>
+      <item>modelicacode</item>
+      <!-- Modula-2 lexers -->
+      <item>modulacode*</item>
+      <item>modulacode</item>
+      <item>mcode*</item>
+      <item>mcode</item>
+      <!-- SQL (MySQL) lexers -->
+      <item>mysqlcode*</item>
+      <item>mysqlcode</item>
+      <!-- NSIS lexers -->
+      <item>nsiscode*</item>
+      <item>nsiscode</item>
+      <item>nsicode*</item>
+      <item>nsicode</item>
+      <item>nshcode*</item>
+      <item>nshcode</item>
+      <!-- Intel x86 (NASM) lexers -->
+      <item>nasmcode*</item>
+      <item>nasmcode</item>
+      <!-- Nemerle lexers -->
+      <item>nemerlecode*</item>
+      <item>nemerlecode</item>
+      <!-- nesC lexers -->
+      <item>nesccode*</item>
+      <item>nesccode</item>
+      <!-- Nim lexers -->
+      <item>nimrodcode*</item>
+      <item>nimrodcode</item>
+      <item>nimcode*</item>
+      <item>nimcode</item>
+      <!-- Nix lexers -->
+      <item>nixoscode*</item>
+      <item>nixoscode</item>
+      <item>nixcode*</item>
+      <item>nixcode</item>
+      <!-- Objective-C lexers -->
+      <item>objectiveccode*</item>
+      <item>objectiveccode</item>
+      <item>objccode*</item>
+      <item>objccode</item>
+      <!-- Objective-C++ lexers -->
+      <item>objectivecppcode*</item>
+      <item>objectivecppcode</item>
+      <item>objcppcode*</item>
+      <item>objcppcode</item>
+      <!-- Objective Caml lexers -->
+      <item>ocamlcode*</item>
+      <item>ocamlcode</item>
+      <!-- Octave lexers -->
+      <item>octavecode*</item>
+      <item>octavecode</item>
+      <!-- Perl lexers -->
+      <item>perlcode*</item>
+      <item>perlcode</item>
+      <item>plcode*</item>
+      <item>plcode</item>
+      <!-- PHP/PHP lexers -->
+      <item>phpcode*</item>
+      <item>phpcode</item>
+      <!-- Pig lexers -->
+      <item>pigcode*</item>
+      <item>pigcode</item>
+      <!-- Pike lexers -->
+      <item>pikecode*</item>
+      <item>pikecode</item>
+      <!-- Pony lexers -->
+      <item>ponycode*</item>
+      <item>ponycode</item>
+      <!-- PostScript lexers -->
+      <item>postscriptcode*</item>
+      <item>postscriptcode</item>
+      <item>postscrcode*</item>
+      <item>postscrcode</item>
+      <!-- POV-Ray lexers -->
+      <item>povcode*</item>
+      <item>povcode</item>
+      <!-- PowerShell lexers -->
+      <item>powershellcode*</item>
+      <item>powershellcode</item>
+      <item>pwshcode*</item>
+      <item>pwshcode</item>
+      <item>poshcode*</item>
+      <item>poshcode</item>
+      <item>pscode*</item>
+      <item>pscode</item>
+      <item>psmcode*</item>
+      <item>psmcode</item>
+      <!-- Praat lexers -->
+      <item>praatcode*</item>
+      <item>praatcode</item>
+      <!-- Prolog lexers -->
+      <item>prologcode*</item>
+      <item>prologcode</item>
+      <!-- Protobuf lexers -->
+      <item>protobufcode*</item>
+      <item>protobufcode</item>
+      <item>protocode*</item>
+      <item>protocode</item>
+      <!-- Pug lexers -->
+      <item>pugcode*</item>
+      <item>pugcode</item>
+      <item>jadecode*</item>
+      <item>jadecode</item>
+      <!-- Puppet lexers -->
+      <item>puppetcode*</item>
+      <item>puppetcode</item>
+      <!-- Python lexers -->
+      <item>pythoncode*</item>
+      <item>pythoncode</item>
+      <item>pycode*</item>
+      <item>pycode</item>
+      <item>sagecode*</item>
+      <item>sagecode</item>
+      <!-- QML lexers -->
+      <item>qmlcode*</item>
+      <item>qmlcode</item>
+      <item>qbscode*</item>
+      <item>qbscode</item>
+      <!-- RelaxNG-Compact lexers -->
+      <item>rngcompactcode*</item>
+      <item>rngcompactcode</item>
+      <item>rnccode*</item>
+      <item>rnccode</item>
+      <!-- RPM Spec lexers -->
+      <item>speccode*</item>
+      <item>speccode</item>
+      <!-- Racket lexers -->
+      <item>racketcode*</item>
+      <item>racketcode</item>
+      <item>rktcode*</item>
+      <item>rktcode</item>
+      <!-- REXX lexers -->
+      <item>rexxcode*</item>
+      <item>rexxcode</item>
+      <item>arexxcode*</item>
+      <item>arexxcode</item>
+      <!-- Ruby/Rails/RHTML lexers -->
+      <item>rhtmlcode*</item>
+      <item>rhtmlcode</item>
+      <item>htmlerbcode*</item>
+      <item>htmlerbcode</item>
+      <item>htmlrubycode*</item>
+      <item>htmlrubycode</item>
+      <!-- reStructuredText lexers -->
+      <item>rstcode*</item>
+      <item>rstcode</item>
+      <item>restcode*</item>
+      <item>restcode</item>
+      <!-- Ruby lexers -->
+      <item>rubycode*</item>
+      <item>rubycode</item>
+      <item>rbcode*</item>
+      <item>rbcode</item>
+      <item>dubycode*</item>
+      <item>dubycode</item>
+      <!-- Rust lexers -->
+      <item>rustcode*</item>
+      <item>rustcode</item>
+      <item>rscode*</item>
+      <item>rscode</item>
+      <!-- SML lexers -->
+      <item>smlcode*</item>
+      <item>smlcode</item>
+      <!-- SASS lexers -->
+      <item>sasscode*</item>
+      <item>sasscode</item>
+      <!-- Scala lexers -->
+      <item>scalacode*</item>
+      <item>scalacode</item>
+      <!-- Scheme lexers -->
+      <item>schemecode*</item>
+      <item>schemecode</item>
+      <item>scmcode*</item>
+      <item>scmcode</item>
+      <!-- scilab lexers -->
+      <item>scilabcode*</item>
+      <item>scilabcode</item>
+      <!-- SCSS lexers -->
+      <item>scsscode*</item>
+      <item>scsscode</item>
+      <!-- sed lexers -->
+      <item>sedcode*</item>
+      <item>sedcode</item>
+      <item>gsedcode*</item>
+      <item>gsedcode</item>
+      <item>ssedcode*</item>
+      <item>ssedcode</item>
+      <!-- Sieve lexers -->
+      <item>sievecode*</item>
+      <item>sievecode</item>
+      <!-- Smali lexers -->
+      <item>smalicode*</item>
+      <item>smalicode</item>
+      <!-- Solidity lexers -->
+      <item>soliditycode*</item>
+      <item>soliditycode</item>
+      <!-- Spice lexers -->
+      <item>spicecode*</item>
+      <item>spicecode</item>
+      <item>spicelangcode*</item>
+      <item>spicelangcode</item>
+      <!-- SQL lexers -->
+      <item>sqlcode*</item>
+      <item>sqlcode</item>
+      <!-- Stan lexers -->
+      <item>stancode*</item>
+      <item>stancode</item>
+      <!-- Stata lexers -->
+      <item>statacode*</item>
+      <item>statacode</item>
+      <item>docode*</item>
+      <item>docode</item>
+      <!-- Swift lexers -->
+      <item>swiftcode*</item>
+      <item>swiftcode</item>
+      <!-- SystemVerilog lexers -->
+      <item>systemverilogcode*</item>
+      <item>systemverilogcode</item>
+      <item>svcode*</item>
+      <item>svcode</item>
+      <!-- TOML lexers -->
+      <item>tomlcode*</item>
+      <item>tomlcode</item>
+      <!-- TADS 3 lexers -->
+      <item>tadscode*</item>
+      <item>tadscode</item>
+      <!-- Tcl/Tk lexers -->
+      <item>tclcode*</item>
+      <item>tclcode</item>
+      <!-- Tcsh lexers -->
+      <item>tcshcode*</item>
+      <item>tcshcode</item>
+      <item>cshcode*</item>
+      <item>cshcode</item>
+      <!-- Terraform lexers -->
+      <item>terraformcode*</item>
+      <item>terraformcode</item>
+      <item>tfcode*</item>
+      <item>tfcode</item>
+      <!-- LaTeX lexers -->
+      <item>texcode*</item>
+      <item>texcode</item>
+      <item>latexcode*</item>
+      <item>latexcode</item>
+      <!-- Todo.txt lexers -->
+      <item>todotxtcode*</item>
+      <item>todotxtcode</item>
+      <!-- TypeScript lexers -->
+      <item>typescriptcode*</item>
+      <item>typescriptcode</item>
+      <item>tscode*</item>
+      <item>tscode</item>
+      <!-- Vala lexers -->
+      <item>valacode*</item>
+      <item>valacode</item>
+      <item>vapicode*</item>
+      <item>vapicode</item>
+      <!-- Velocity lexers -->
+      <item>velocitycode*</item>
+      <item>velocitycode</item>
+      <!-- Verilog lexers -->
+      <item>verilogcode*</item>
+      <item>verilogcode</item>
+      <item>vcode*</item>
+      <item>vcode</item>
+      <!-- VHDL lexers -->
+      <item>vhdlcode*</item>
+      <item>vhdlcode</item>
+      <!-- XML lexers -->
+      <item>xmlcode*</item>
+      <item>xmlcode</item>
+      <!-- x.org Configuration lexers -->
+      <item>xorgconfcode*</item>
+      <item>xorgconfcode</item>
+      <!-- xslt lexers -->
+      <item>xsltcode*</item>
+      <item>xsltcode</item>
+      <!-- YAML lexers -->
+      <item>yamlcode*</item>
+      <item>yamlcode</item>
+      <!-- YANG lexers -->
+      <item>yangcode*</item>
+      <item>yangcode</item>
+      <!-- Mako lexers -->
+    </list>
+
+    <list name="VerbatimEnv">
+      <item>Verbatim*</item>
+      <item>Verbatim</item>
+      <item>BVerbatim*</item>
+      <item>BVerbatim</item>
+      <item>LVerbatim*</item>
+      <item>LVerbatim</item>
+      <item>verbatim*</item>
+      <item>verbatim</item>
+      <item>boxedverbatim*</item>
+      <item>boxedverbatim</item>
+    </list>
+
+    <list name="CommentEnv">
+      <item>comment*</item>
+      <item>comment</item>
+    </list>
+
+    <list name="MathEnvParam">
+      <item>alignat*</item>
+      <item>alignat</item>
+      <item>xalignat*</item>
+      <item>xalignat</item>
+      <item>xxalignat*</item>
+      <item>xxalignat</item>
+    </list>
+
+    <list name="MathEnv">
+      <item>Bmatrix*</item>
+      <item>Bmatrix</item>
+      <item>IEEEeqnarray*</item>
+      <item>IEEEeqnarray</item>
+      <item>IEEEeqnarraybox*</item>
+      <item>IEEEeqnarraybox</item>
+      <item>Vmatrix*</item>
+      <item>Vmatrix</item>
+      <item>align*</item>
+      <item>align</item>
+      <item>bmatrix*</item>
+      <item>bmatrix</item>
+      <item>cases*</item>
+      <item>cases</item>
+      <item>displaymath*</item>
+      <item>displaymath</item>
+      <item>eqnarray*</item>
+      <item>eqnarray</item>
+      <item>equation*</item>
+      <item>equation</item>
+      <item>flalign*</item>
+      <item>flalign</item>
+      <item>gather*</item>
+      <item>gather</item>
+      <item>math*</item>
+      <item>math</item>
+      <item>multline*</item>
+      <item>multline</item>
+      <item>pmatrix*</item>
+      <item>pmatrix</item>
+      <item>smallmatrix*</item>
+      <item>smallmatrix</item>
+      <item>subeqnarray*</item>
+      <item>subeqnarray</item>
+      <item>vmatrix*</item>
+      <item>vmatrix</item>
+    </list>
+
+    <list name="TabEnv">
+      <item>tabularx*</item>
+      <item>tabularx</item>
+      <item>tabular*</item>
+      <item>tabular</item>
+      <item>supertabular*</item>
+      <item>supertabular</item>
+      <item>mpsupertabular*</item>
+      <item>mpsupertabular</item>
+      <item>xtabular*</item>
+      <item>xtabular</item>
+      <item>mpxtabular*</item>
+      <item>mpxtabular</item>
+      <item>longtable*</item>
+      <item>longtable</item>
+    </list>
+
+    <list name="TabuEnv">
+      <item>tabu*</item>
+      <item>tabu</item>
+      <item>longtabu*</item>
+      <item>longtabu</item>
+    </list>
+
+    <list name="MathModeText">
+      <item>\text</item>
+      <item>\textit</item>
+      <item>\textbf</item>
+      <item>\textmd</item>
+      <item>\textsl</item>
+      <item>\textsc</item>
+      <item>\textrm</item>
+      <item>\textsf</item>
+      <item>\texttt</item>
+      <item>\textup</item>
+      <item>\textlf</item>
+      <item>\textnormal</item>
+      <item>\shortintertext</item>
+      <item>\intertext</item>
+      <item>\mbox</item>
+      <item>\emph</item>
+    </list>
+
+    <list name="ResetHL">
+      <item>\KileResetHL</item>
+      <item>\KateResetHL</item>
+    </list>
+
+    <contexts>
+      <!-- Normal text -->
+      <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Normal Text" context="LatexMacro" lookAhead="true"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex"/>
+        <RegExpr String="^&lt;&lt;.*&gt;&gt;=" attribute="Normal Text" context="NoWeb" column="0"/>
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+      </context>
+
+      <context name="LatexMacro" attribute="Normal Text" lineEndContext="#pop">
+        <WordDetect String="\begin" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block" additionalDeliminator="\"/>
+        <WordDetect String="\end" attribute="Structure" context="#pop!FindEndEnvironment" additionalDeliminator="\"/>
+        <keyword String="Label" attribute="Structure" context="#pop!Label"/>
+        <keyword String="macroFancyLabel" attribute="Builtin Macro" context="#pop!FancyLabel"/>
+        <keyword String="FancyLabel" attribute="Structure" context="#pop!FancyLabel"/>
+        <keyword String="Sectioning" attribute="Structure" context="#pop!Sectioning"/>
+        <keyword String="SpecialCommand" attribute="Macro" context="#pop!SpecialCommand"/>
+        <keyword String="Footnoting" attribute="Macro" context="#pop!Footnoting"/>
+        <keyword String="NewCommand" attribute="Macro" context="#pop!NewCommand"/>
+        <keyword String="DefCommand" attribute="Macro" context="#pop!DefCommand"/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="#pop!MathModeLatex"/>
+        <Detect2Chars char="\" char1="[" attribute="Math" context="#pop!MathModeLatexEquation" beginRegion="mathMode"/>
+        <keyword String="MathModeEnsure" attribute="Math" context="#pop!MathModeEnsure"/>
+        <keyword String="iffalse" attribute="Comment" context="#pop!Multiline Comment"/>
+        <DetectChar char="\" attribute="Macro" context="#pop!ContrSeq"/>
+      </context>
+
+      <!-- NoWeb -->
+      <context name="NoWeb" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="^@\s*$" attribute="Normal Text" context="#pop" column="0"/>
+      </context>
+
+      <!-- LaTeX sectioning commands -->
+      <context name="Sectioning" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="#pop!SectioningInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="SectioningInside" attribute="Sectioning Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="SectioningInside"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <Detect2Chars char="\" char1="(" attribute="Sectioning Math" context="SectioningMathMode" />
+        <DetectChar char="\" attribute="Sectioning Macro" context="SectioningContrSeq"/>
+        <DetectChar char="$" attribute="Sectioning Math" context="SectioningMathMode" />
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+      </context>
+      <context name="SectioningContrSeq" attribute="Macro" lineEndContext="#pop">
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z]+(?:\+?|\*{0,3})|." attribute="Sectioning Macro" context="#pop" />
+      </context>
+      <context name="SectioningMathMode" attribute="Sectioning Math" lineEndContext="#stay">
+        <Detect2Chars char="$" char1="$" attribute="Error" context="#stay" />
+        <DetectChar char="$" attribute="Sectioning Math" context="#pop" />
+        <Detect2Chars char="\" char1=")" attribute="Sectioning Math" context="#pop" />
+        <Detect2Chars char="\" char1="]" attribute="Error" context="#stay" />
+        <DetectChar char="\" attribute="Sectioning Macro Mathmode" context="SectioningMathContrSeq"/>
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+      </context>
+      <context name="SectioningMathContrSeq" attribute="Sectioning Macro Mathmode" lineEndContext="#pop">
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;|." attribute="Sectioning Macro Mathmode" context="#pop" />
+      </context>
+
+      <!-- LaTeX Footnote commands -->
+      <context name="Footnoting" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="FootnotingInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="FootnotingInside"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <IncludeRules context="Normal Text"/>
+      </context>
+
+      <!-- LaTeX commands \newcommand and \renewcommand -->
+      <context name="NewCommand" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
+        <RegExpr String="(?:\[\d\](?:\[[^\]]*\])?)?\{" attribute="Normal Text" context="LabelParameter"/>
+        <DetectChar char="}" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- LaTeX command \def -->
+      <context name="DefCommand" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <RegExpr String="\\[a-zA-Z]+[^\{]*\{" attribute="Normal Text" context="#pop!CommandParameter"/>
+        <DetectChar char="}" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- parse command argument -->
+      <context name="CommandParameter" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="CommandParameter"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <RegExpr String="\\." attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+
+      <!-- LaTeX command in text mode -->
+      <context name="ContrSeq" attribute="Macro" lineEndContext="#pop">
+        <keyword String="Verb" attribute="Macro" context="Verb"/>
+        <keyword String="Lstinline" attribute="Macro" context="Lstinline"/>
+        <keyword String="MintParam" attribute="Macro" context="MintParam"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[a-zA-Z@]+(?:\+?|\*{0,3})|." attribute="Macro" context="#pop" />
+      </context>
+
+      <!-- \mint command with parameter-->
+      <context name="MintParam" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="}" char1="[" attribute="Normal Text" context="#stay"/>
+        <AnyChar String="}]" attribute="Normal Text" context="Verb"/>
+      </context>
+
+      <!-- verb command -->
+      <context name="Verb" attribute="Verbatim" lineEndContext="#pop#pop" >
+        <RegExpr String="(.)" attribute="Normal Text" context="VerbEnd" />
+      </context>
+      <context name="VerbEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
+        <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
+      </context>
+
+      <!-- lstinline command, different from verb as it takes options -->
+      <context name="Lstinline" attribute="Verbatim" lineEndContext="#pop#pop" >
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
+        <DetectChar char="{" attribute="Normal Text" context="LstinlineParameter"/>
+        <RegExpr String="(.)" attribute="Normal Text" context="LstinlineEnd" />
+      </context>
+      <context name="LstinlineEnd" attribute="Verbatim" lineEndContext="#pop#pop#pop" dynamic="true" >
+        <!-- TODO DetectChar segfault -->
+        <StringDetect String="%1" attribute="Normal Text" context="#pop#pop#pop" dynamic="true" />
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="[^%1\xd7]*" attribute="Verbatim" context="#stay" dynamic="true" />
+      </context>
+      <context name="LstinlineParameter" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
+      </context>
+
+      <!-- label -->
+      <context name="Label" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="LabelParameter"/>
+        <DetectChar char="[" attribute="Normal Text" context="LabelOption"/>
+      </context>
+
+      <context name="LabelOption" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex"/>
+        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="]" attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <context name="LabelParameter" attribute="Reference" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+      </context>
+
+      <!-- labels from biblatex commands -->
+      <context name="FancyLabel" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
+        <DetectChar char="[" attribute="Normal Text" context="FancyLabelOption"/>
+        <DetectChar char="(" attribute="Normal Text" context="FancyLabelRoundBrackets"/>
+      </context>
+
+      <context name="FancyLabelParameter" attribute="Environment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex"/>
+        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="FancyLabelParameter"/>
+      </context>
+
+      <context name="FancyLabelOption" attribute="Option Text" lineEndContext="#stay">
+        <IncludeRules context="LabelOption"/>
+      </context>
+
+      <context name="FancyLabelRoundBrackets" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />
+        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char=")" attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <!-- Special commands -->
+      <context name="SpecialCommand" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
+      </context>
+
+      <context name="SpecialCommandParameterOption" attribute="Option Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars char="\" char1="(" attribute="Math" context="MathModeLatex" />
+        <DetectChar char="\" attribute="Macro" context="ContrSeq"/>
+        <DetectChar char="$" attribute="Math" context="MathModeTex" />
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="SpecialCommandParameterOption"/>
+      </context>
+
+      <!-- end of an environment -->
+      <context name="FindEndEnvironment" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Normal Text" context="EndEnvironment"/>
+        <RegExpr String="\S" attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <context name="EndEnvironment" attribute="Environment" lineEndContext="#stay">
+        <RegExpr String="&envname;" attribute="Environment" context="LatexEnvEnd"/>
+        <RegExpr String="." attribute="Error" context="#pop#pop"/>
+      </context>
+
+      <context name="LatexEnvEnd" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" endRegion="block" context="#pop#pop#pop"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+
+      <!-- start of an environment -->
+      <context name="FindBeginEnvironment" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="BeginEnvironment"/>
+        <RegExpr String="." attribute="Normal Text" context="#pop"/>
+      </context>
+
+      <!-- filter the environment name and check the type -->
+      <context name="BeginEnvironment" attribute="Environment" lineEndContext="#stay">
+        <keyword String="ListingsEnv" attribute="Environment" context="ListingsEnv"/>
+        <keyword String="MintedEnv" attribute="Environment" context="MintedEnv"/>
+        <keyword String="VerbatimEnv" attribute="Environment" context="VerbatimEnv" lookAhead="true"/>
+        <keyword String="CommentEnv" attribute="Environment" context="CommentEnv"/>
+        <keyword String="MathEnvParam" attribute="Environment" context="MathEnvWithParam"/>
+        <keyword String="MathEnv" attribute="Environment" context="MathEnv"/>
+        <keyword String="TabEnv" attribute="Environment" context="TabEnv"/>
+        <keyword String="TabuEnv" attribute="Environment" context="TabuEnv"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="(\w+)code\b" attribute="Environment" context="MintedCodeEnv" lookAhead="true"/>
+        <RegExpr String="&envname;" attribute="Environment" context="LatexEnv"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- environment type 1: normal -->
+      <context name="LatexEnv" attribute="Error" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop"/>
+      </context>
+
+      <context name="VerbatimEnv" attribute="Environment" lineEndContext="#stay">
+        <WordDetect String="verbatim*" attribute="Environment" context="VerbatimEnv1"/>
+        <WordDetect String="verbatim" attribute="Environment" context="VerbatimEnv1"/>
+        <WordDetect String="boxedverbatim*" attribute="Environment" context="VerbatimEnv2"/>
+        <WordDetect String="boxedverbatim" attribute="Environment" context="VerbatimEnv2"/>
+
+        <WordDetect String="Verbatim*" attribute="Environment" context="VerbatimEnv3"/>
+        <WordDetect String="Verbatim" attribute="Environment" context="VerbatimEnv3"/>
+        <WordDetect String="BVerbatim*" attribute="Environment" context="VerbatimEnv4"/>
+        <WordDetect String="BVerbatim" attribute="Environment" context="VerbatimEnv4"/>
+        <WordDetect String="LVerbatim*" attribute="Environment" context="VerbatimEnv5"/>
+        <WordDetect String="LVerbatim" attribute="Environment" context="VerbatimEnv5"/>
+      </context>
+
+      <!-- environment type 2: verbatim without parameter -->
+      <context name="VerbatimEnv1" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim1"/>
+      </context>
+      <context name="Verbatim1" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
+      <context name="VerbatimEnv2" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Verbatim2"/>
+      </context>
+      <context name="Verbatim2" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{boxedverbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
+      <!-- environment type 3: verbatim with optional parameter -->
+      <context name="VerbatimEnv3" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv3Param"/>
+      </context>
+      <context name="VerbatimEnv3Param" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!Verbatim3">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim3"/>
+      </context>
+      <context name="Verbatim3" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{Verbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
+      <context name="VerbatimEnv4" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv4Param"/>
+      </context>
+      <context name="VerbatimEnv4Param" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!Verbatim4">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim4"/>
+      </context>
+      <context name="Verbatim4" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{BVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
+      <context name="VerbatimEnv5" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="VerbatimEnv5Param"/>
+      </context>
+      <context name="VerbatimEnv5Param" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!Verbatim5">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#pop!Verbatim5"/>
+      </context>
+      <context name="Verbatim5" attribute="Verbatim" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{LVerbatim\*?\})" attribute="Structure" context="VerbFindEnd"/>
+      </context>
+
+      <!-- environment type 4: listings environment with optional parameter and HL switching-->
+      <context name="ListingsEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop!ListingsEnvParam"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="ListingsEnvParam" attribute="Normal Text" lineEndContext="#pop!UnknownHighlighting" fallthroughContext="#pop!UnknownHighlighting">
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="#pop!ListingsEnvParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="ListingsEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="\s*language\s*=\s*(?=[^],])" attribute="Normal Text" context="HighlightingSelector"/>
+        <DetectChar char="]" attribute="Normal Text" context="ListingsEnvParamEnd"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="ListingsEnvParamEnd" attribute="Normal Text" lineEndContext="#pop#pop!UnknownHighlighting" fallthroughContext="#pop#pop!UnknownHighlighting">
+        <DetectSpaces/>
+        <IncludeRules context="FindComments"/>
+      </context>
+
+      <!-- environment type 5: minted environment with optional and HL switching -->
+      <context name="MintedEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop!MintedEnvParam"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="MintedEnvParam" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="[" attribute="Normal Text" context="#pop!MintedEnvParamInside"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="MintedEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="]" attribute="Normal Text" context="#pop!MintedEnvLang"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="MintedEnvLang" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSelector"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+
+      <!-- environment type 5: minted environment created with newminted -->
+      <context name="MintedCodeEnv" attribute="Environment" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <WordDetect String="abapcode*" attribute="Environment" context="HighlightingABAPCodeEnvS"/>
+        <WordDetect String="abapcode" attribute="Environment" context="HighlightingABAPCodeEnv"/>
+        <WordDetect String="actionscriptcode*" attribute="Environment" context="HighlightingActionScript 2.0CodeEnvS"/>
+        <WordDetect String="actionscriptcode" attribute="Environment" context="HighlightingActionScript 2.0CodeEnv"/>
+        <WordDetect String="ascode*" attribute="Environment" context="HighlightingActionScript 2.0CodeEnvS"/>
+        <WordDetect String="ascode" attribute="Environment" context="HighlightingActionScript 2.0CodeEnv"/>
+        <WordDetect String="adacode*" attribute="Environment" context="HighlightingAdaCodeEnvS"/>
+        <WordDetect String="adacode" attribute="Environment" context="HighlightingAdaCodeEnv"/>
+        <WordDetect String="agdacode*" attribute="Environment" context="HighlightingAgdaCodeEnvS"/>
+        <WordDetect String="agdacode" attribute="Environment" context="HighlightingAgdaCodeEnv"/>
+        <WordDetect String="apacheconfcode*" attribute="Environment" context="HighlightingApache ConfigurationCodeEnvS"/>
+        <WordDetect String="apacheconfcode" attribute="Environment" context="HighlightingApache ConfigurationCodeEnv"/>
+        <WordDetect String="aconfcode*" attribute="Environment" context="HighlightingApache ConfigurationCodeEnvS"/>
+        <WordDetect String="aconfcode" attribute="Environment" context="HighlightingApache ConfigurationCodeEnv"/>
+        <WordDetect String="apachecode*" attribute="Environment" context="HighlightingApache ConfigurationCodeEnvS"/>
+        <WordDetect String="apachecode" attribute="Environment" context="HighlightingApache ConfigurationCodeEnv"/>
+        <WordDetect String="autohotkeycode*" attribute="Environment" context="HighlightingAutoHotKeyCodeEnvS"/>
+        <WordDetect String="autohotkeycode" attribute="Environment" context="HighlightingAutoHotKeyCodeEnv"/>
+        <WordDetect String="ahkcode*" attribute="Environment" context="HighlightingAutoHotKeyCodeEnvS"/>
+        <WordDetect String="ahkcode" attribute="Environment" context="HighlightingAutoHotKeyCodeEnv"/>
+        <WordDetect String="awkcode*" attribute="Environment" context="HighlightingAWKCodeEnvS"/>
+        <WordDetect String="awkcode" attribute="Environment" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="gawkcode*" attribute="Environment" context="HighlightingAWKCodeEnvS"/>
+        <WordDetect String="gawkcode" attribute="Environment" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="mawkcode*" attribute="Environment" context="HighlightingAWKCodeEnvS"/>
+        <WordDetect String="mawkcode" attribute="Environment" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="nawkcode*" attribute="Environment" context="HighlightingAWKCodeEnvS"/>
+        <WordDetect String="nawkcode" attribute="Environment" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="bashcode*" attribute="Environment" context="HighlightingBashCodeEnvS"/>
+        <WordDetect String="bashcode" attribute="Environment" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="shcode*" attribute="Environment" context="HighlightingBashCodeEnvS"/>
+        <WordDetect String="shcode" attribute="Environment" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="kshcode*" attribute="Environment" context="HighlightingBashCodeEnvS"/>
+        <WordDetect String="kshcode" attribute="Environment" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="zshcode*" attribute="Environment" context="HighlightingBashCodeEnvS"/>
+        <WordDetect String="zshcode" attribute="Environment" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="shellcode*" attribute="Environment" context="HighlightingBashCodeEnvS"/>
+        <WordDetect String="shellcode" attribute="Environment" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="bibtexcode*" attribute="Environment" context="HighlightingBibTeXCodeEnvS"/>
+        <WordDetect String="bibtexcode" attribute="Environment" context="HighlightingBibTeXCodeEnv"/>
+        <WordDetect String="bibcode*" attribute="Environment" context="HighlightingBibTeXCodeEnvS"/>
+        <WordDetect String="bibcode" attribute="Environment" context="HighlightingBibTeXCodeEnv"/>
+        <WordDetect String="boocode*" attribute="Environment" context="HighlightingBooCodeEnvS"/>
+        <WordDetect String="boocode" attribute="Environment" context="HighlightingBooCodeEnv"/>
+        <WordDetect String="ccode*" attribute="Environment" context="HighlightingCCodeEnvS"/>
+        <WordDetect String="ccode" attribute="Environment" context="HighlightingCCodeEnv"/>
+        <WordDetect String="cmakecode*" attribute="Environment" context="HighlightingCMakeCodeEnvS"/>
+        <WordDetect String="cmakecode" attribute="Environment" context="HighlightingCMakeCodeEnv"/>
+        <WordDetect String="csharpcode*" attribute="Environment" context="HighlightingC#CodeEnvS"/>
+        <WordDetect String="csharpcode" attribute="Environment" context="HighlightingC#CodeEnv"/>
+        <WordDetect String="cscode*" attribute="Environment" context="HighlightingC#CodeEnvS"/>
+        <WordDetect String="cscode" attribute="Environment" context="HighlightingC#CodeEnv"/>
+        <WordDetect String="clojurecode*" attribute="Environment" context="HighlightingClojureCodeEnvS"/>
+        <WordDetect String="clojurecode" attribute="Environment" context="HighlightingClojureCodeEnv"/>
+        <WordDetect String="cljcode*" attribute="Environment" context="HighlightingClojureCodeEnvS"/>
+        <WordDetect String="cljcode" attribute="Environment" context="HighlightingClojureCodeEnv"/>
+        <WordDetect String="coffeecode*" attribute="Environment" context="HighlightingCoffeeScriptCodeEnvS"/>
+        <WordDetect String="coffeecode" attribute="Environment" context="HighlightingCoffeeScriptCodeEnv"/>
+        <WordDetect String="commonlispcode*" attribute="Environment" context="HighlightingCommon LispCodeEnvS"/>
+        <WordDetect String="commonlispcode" attribute="Environment" context="HighlightingCommon LispCodeEnv"/>
+        <WordDetect String="clcode*" attribute="Environment" context="HighlightingCommon LispCodeEnvS"/>
+        <WordDetect String="clcode" attribute="Environment" context="HighlightingCommon LispCodeEnv"/>
+        <WordDetect String="lispcode*" attribute="Environment" context="HighlightingCommon LispCodeEnvS"/>
+        <WordDetect String="lispcode" attribute="Environment" context="HighlightingCommon LispCodeEnv"/>
+        <WordDetect String="cppcode*" attribute="Environment" context="HighlightingC++CodeEnvS"/>
+        <WordDetect String="cppcode" attribute="Environment" context="HighlightingC++CodeEnv"/>
+        <WordDetect String="csscode*" attribute="Environment" context="HighlightingCSSCodeEnvS"/>
+        <WordDetect String="csscode" attribute="Environment" context="HighlightingCSSCodeEnv"/>
+        <WordDetect String="dcode*" attribute="Environment" context="HighlightingDCodeEnvS"/>
+        <WordDetect String="dcode" attribute="Environment" context="HighlightingDCodeEnv"/>
+        <WordDetect String="dartcode*" attribute="Environment" context="HighlightingDartCodeEnvS"/>
+        <WordDetect String="dartcode" attribute="Environment" context="HighlightingDartCodeEnv"/>
+        <WordDetect String="delphicode*" attribute="Environment" context="HighlightingPascalCodeEnvS"/>
+        <WordDetect String="delphicode" attribute="Environment" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="pascode*" attribute="Environment" context="HighlightingPascalCodeEnvS"/>
+        <WordDetect String="pascode" attribute="Environment" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="pascalcode*" attribute="Environment" context="HighlightingPascalCodeEnvS"/>
+        <WordDetect String="pascalcode" attribute="Environment" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="objectpascalcode*" attribute="Environment" context="HighlightingPascalCodeEnvS"/>
+        <WordDetect String="objectpascalcode" attribute="Environment" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="diffcode*" attribute="Environment" context="HighlightingDiffCodeEnvS"/>
+        <WordDetect String="diffcode" attribute="Environment" context="HighlightingDiffCodeEnv"/>
+        <WordDetect String="udiffcode*" attribute="Environment" context="HighlightingDiffCodeEnvS"/>
+        <WordDetect String="udiffcode" attribute="Environment" context="HighlightingDiffCodeEnv"/>
+        <WordDetect String="dtdcode*" attribute="Environment" context="HighlightingDTDCodeEnvS"/>
+        <WordDetect String="dtdcode" attribute="Environment" context="HighlightingDTDCodeEnv"/>
+        <WordDetect String="eiffelcode*" attribute="Environment" context="HighlightingEiffelCodeEnvS"/>
+        <WordDetect String="eiffelcode" attribute="Environment" context="HighlightingEiffelCodeEnv"/>
+        <WordDetect String="elixircode*" attribute="Environment" context="HighlightingElixirCodeEnvS"/>
+        <WordDetect String="elixircode" attribute="Environment" context="HighlightingElixirCodeEnv"/>
+        <WordDetect String="excode*" attribute="Environment" context="HighlightingElixirCodeEnvS"/>
+        <WordDetect String="excode" attribute="Environment" context="HighlightingElixirCodeEnv"/>
+        <WordDetect String="exscode*" attribute="Environment" context="HighlightingElixirCodeEnvS"/>
+        <WordDetect String="exscode" attribute="Environment" context="HighlightingElixirCodeEnv"/>
+        <WordDetect String="elmcode*" attribute="Environment" context="HighlightingElmCodeEnvS"/>
+        <WordDetect String="elmcode" attribute="Environment" context="HighlightingElmCodeEnv"/>
+        <WordDetect String="emailcode*" attribute="Environment" context="HighlightingEmailCodeEnvS"/>
+        <WordDetect String="emailcode" attribute="Environment" context="HighlightingEmailCodeEnv"/>
+        <WordDetect String="emlcode*" attribute="Environment" context="HighlightingEmailCodeEnvS"/>
+        <WordDetect String="emlcode" attribute="Environment" context="HighlightingEmailCodeEnv"/>
+        <WordDetect String="erlangcode*" attribute="Environment" context="HighlightingErlangCodeEnvS"/>
+        <WordDetect String="erlangcode" attribute="Environment" context="HighlightingErlangCodeEnv"/>
+        <WordDetect String="fishcode*" attribute="Environment" context="HighlightingFishCodeEnvS"/>
+        <WordDetect String="fishcode" attribute="Environment" context="HighlightingFishCodeEnv"/>
+        <WordDetect String="fishshellcode*" attribute="Environment" context="HighlightingFishCodeEnvS"/>
+        <WordDetect String="fishshellcode" attribute="Environment" context="HighlightingFishCodeEnv"/>
+        <WordDetect String="forthcode*" attribute="Environment" context="HighlightingANS-Forth94CodeEnvS"/>
+        <WordDetect String="forthcode" attribute="Environment" context="HighlightingANS-Forth94CodeEnv"/>
+        <WordDetect String="fortranfixedcode*" attribute="Environment" context="HighlightingFortran (Fixed Format)CodeEnvS"/>
+        <WordDetect String="fortranfixedcode" attribute="Environment" context="HighlightingFortran (Fixed Format)CodeEnv"/>
+        <WordDetect String="fortrancode*" attribute="Environment" context="HighlightingFortran (Free Format)CodeEnvS"/>
+        <WordDetect String="fortrancode" attribute="Environment" context="HighlightingFortran (Free Format)CodeEnv"/>
+        <WordDetect String="fcode*" attribute="Environment" context="HighlightingFortran (Free Format)CodeEnvS"/>
+        <WordDetect String="fcode" attribute="Environment" context="HighlightingFortran (Free Format)CodeEnv"/>
+        <WordDetect String="gapcode*" attribute="Environment" context="HighlightingGAPCodeEnvS"/>
+        <WordDetect String="gapcode" attribute="Environment" context="HighlightingGAPCodeEnv"/>
+        <WordDetect String="gdscriptcode*" attribute="Environment" context="HighlightingGodotCodeEnvS"/>
+        <WordDetect String="gdscriptcode" attribute="Environment" context="HighlightingGodotCodeEnv"/>
+        <WordDetect String="gdcode*" attribute="Environment" context="HighlightingGodotCodeEnvS"/>
+        <WordDetect String="gdcode" attribute="Environment" context="HighlightingGodotCodeEnv"/>
+        <WordDetect String="glslcode*" attribute="Environment" context="HighlightingGLSLCodeEnvS"/>
+        <WordDetect String="glslcode" attribute="Environment" context="HighlightingGLSLCodeEnv"/>
+        <WordDetect String="gcodecode*" attribute="Environment" context="HighlightingG-CodeCodeEnvS"/>
+        <WordDetect String="gcodecode" attribute="Environment" context="HighlightingG-CodeCodeEnv"/>
+        <WordDetect String="gnuplotcode*" attribute="Environment" context="HighlightingGnuplotCodeEnvS"/>
+        <WordDetect String="gnuplotcode" attribute="Environment" context="HighlightingGnuplotCodeEnv"/>
+        <WordDetect String="gocode*" attribute="Environment" context="HighlightingGoCodeEnvS"/>
+        <WordDetect String="gocode" attribute="Environment" context="HighlightingGoCodeEnv"/>
+        <WordDetect String="golangcode*" attribute="Environment" context="HighlightingGoCodeEnvS"/>
+        <WordDetect String="golangcode" attribute="Environment" context="HighlightingGoCodeEnv"/>
+        <WordDetect String="groovycode*" attribute="Environment" context="HighlightingGroovyCodeEnvS"/>
+        <WordDetect String="groovycode" attribute="Environment" context="HighlightingGroovyCodeEnv"/>
+        <WordDetect String="hamlcode*" attribute="Environment" context="HighlightingHamlCodeEnvS"/>
+        <WordDetect String="hamlcode" attribute="Environment" context="HighlightingHamlCodeEnv"/>
+        <WordDetect String="haskellcode*" attribute="Environment" context="HighlightingHaskellCodeEnvS"/>
+        <WordDetect String="haskellcode" attribute="Environment" context="HighlightingHaskellCodeEnv"/>
+        <WordDetect String="hscode*" attribute="Environment" context="HighlightingHaskellCodeEnvS"/>
+        <WordDetect String="hscode" attribute="Environment" context="HighlightingHaskellCodeEnv"/>
+        <WordDetect String="haxecode*" attribute="Environment" context="HighlightingHaxeCodeEnvS"/>
+        <WordDetect String="haxecode" attribute="Environment" context="HighlightingHaxeCodeEnv"/>
+        <WordDetect String="hxslcode*" attribute="Environment" context="HighlightingHaxeCodeEnvS"/>
+        <WordDetect String="hxslcode" attribute="Environment" context="HighlightingHaxeCodeEnv"/>
+        <WordDetect String="hxcode*" attribute="Environment" context="HighlightingHaxeCodeEnvS"/>
+        <WordDetect String="hxcode" attribute="Environment" context="HighlightingHaxeCodeEnv"/>
+        <WordDetect String="htmlcode*" attribute="Environment" context="HighlightingHTMLCodeEnvS"/>
+        <WordDetect String="htmlcode" attribute="Environment" context="HighlightingHTMLCodeEnv"/>
+        <WordDetect String="idlcode*" attribute="Environment" context="HighlightingIDLCodeEnvS"/>
+        <WordDetect String="idlcode" attribute="Environment" context="HighlightingIDLCodeEnv"/>
+        <WordDetect String="idriscode*" attribute="Environment" context="HighlightingIdrisCodeEnvS"/>
+        <WordDetect String="idriscode" attribute="Environment" context="HighlightingIdrisCodeEnv"/>
+        <WordDetect String="idrcode*" attribute="Environment" context="HighlightingIdrisCodeEnvS"/>
+        <WordDetect String="idrcode" attribute="Environment" context="HighlightingIdrisCodeEnv"/>
+        <WordDetect String="informcode*" attribute="Environment" context="HighlightingInformCodeEnvS"/>
+        <WordDetect String="informcode" attribute="Environment" context="HighlightingInformCodeEnv"/>
+        <WordDetect String="icode*" attribute="Environment" context="HighlightingInformCodeEnvS"/>
+        <WordDetect String="icode" attribute="Environment" context="HighlightingInformCodeEnv"/>
+        <WordDetect String="inicode*" attribute="Environment" context="HighlightingINI FilesCodeEnvS"/>
+        <WordDetect String="inicode" attribute="Environment" context="HighlightingINI FilesCodeEnv"/>
+        <WordDetect String="cfgcode*" attribute="Environment" context="HighlightingINI FilesCodeEnvS"/>
+        <WordDetect String="cfgcode" attribute="Environment" context="HighlightingINI FilesCodeEnv"/>
+        <WordDetect String="dosinicode*" attribute="Environment" context="HighlightingINI FilesCodeEnvS"/>
+        <WordDetect String="dosinicode" attribute="Environment" context="HighlightingINI FilesCodeEnv"/>
+        <WordDetect String="jcode*" attribute="Environment" context="HighlightingJCodeEnvS"/>
+        <WordDetect String="jcode" attribute="Environment" context="HighlightingJCodeEnv"/>
+        <WordDetect String="javacode*" attribute="Environment" context="HighlightingJavaCodeEnvS"/>
+        <WordDetect String="javacode" attribute="Environment" context="HighlightingJavaCodeEnv"/>
+        <WordDetect String="javascriptcode*" attribute="Environment" context="HighlightingJavaScriptCodeEnvS"/>
+        <WordDetect String="javascriptcode" attribute="Environment" context="HighlightingJavaScriptCodeEnv"/>
+        <WordDetect String="jscode*" attribute="Environment" context="HighlightingJavaScriptCodeEnvS"/>
+        <WordDetect String="jscode" attribute="Environment" context="HighlightingJavaScriptCodeEnv"/>
+        <WordDetect String="jclcode*" attribute="Environment" context="HighlightingJCLCodeEnvS"/>
+        <WordDetect String="jclcode" attribute="Environment" context="HighlightingJCLCodeEnv"/>
+        <WordDetect String="jsoncode*" attribute="Environment" context="HighlightingJSONCodeEnvS"/>
+        <WordDetect String="jsoncode" attribute="Environment" context="HighlightingJSONCodeEnv"/>
+        <WordDetect String="jsonobjectcode*" attribute="Environment" context="HighlightingJSONCodeEnvS"/>
+        <WordDetect String="jsonobjectcode" attribute="Environment" context="HighlightingJSONCodeEnv"/>
+        <WordDetect String="juliacode*" attribute="Environment" context="HighlightingJuliaCodeEnvS"/>
+        <WordDetect String="juliacode" attribute="Environment" context="HighlightingJuliaCodeEnv"/>
+        <WordDetect String="jlcode*" attribute="Environment" context="HighlightingJuliaCodeEnvS"/>
+        <WordDetect String="jlcode" attribute="Environment" context="HighlightingJuliaCodeEnv"/>
+        <WordDetect String="kconfigcode*" attribute="Environment" context="HighlightingKconfigCodeEnvS"/>
+        <WordDetect String="kconfigcode" attribute="Environment" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="menuconfigcode*" attribute="Environment" context="HighlightingKconfigCodeEnvS"/>
+        <WordDetect String="menuconfigcode" attribute="Environment" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="linuxconfigcode*" attribute="Environment" context="HighlightingKconfigCodeEnvS"/>
+        <WordDetect String="linuxconfigcode" attribute="Environment" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="kernelconfigcode*" attribute="Environment" context="HighlightingKconfigCodeEnvS"/>
+        <WordDetect String="kernelconfigcode" attribute="Environment" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="kotlincode*" attribute="Environment" context="HighlightingKotlinCodeEnvS"/>
+        <WordDetect String="kotlincode" attribute="Environment" context="HighlightingKotlinCodeEnv"/>
+        <WordDetect String="lslcode*" attribute="Environment" context="HighlightingLSLCodeEnvS"/>
+        <WordDetect String="lslcode" attribute="Environment" context="HighlightingLSLCodeEnv"/>
+        <WordDetect String="lesscode*" attribute="Environment" context="HighlightingLESSCSSCodeEnvS"/>
+        <WordDetect String="lesscode" attribute="Environment" context="HighlightingLESSCSSCodeEnv"/>
+        <WordDetect String="lilypondcode*" attribute="Environment" context="HighlightingLilyPondCodeEnvS"/>
+        <WordDetect String="lilypondcode" attribute="Environment" context="HighlightingLilyPondCodeEnv"/>
+        <WordDetect String="literatehaskellcode*" attribute="Environment" context="HighlightingLiterate HaskellCodeEnvS"/>
+        <WordDetect String="literatehaskellcode" attribute="Environment" context="HighlightingLiterate HaskellCodeEnv"/>
+        <WordDetect String="lhaskellcode*" attribute="Environment" context="HighlightingLiterate HaskellCodeEnvS"/>
+        <WordDetect String="lhaskellcode" attribute="Environment" context="HighlightingLiterate HaskellCodeEnv"/>
+        <WordDetect String="lhscode*" attribute="Environment" context="HighlightingLiterate HaskellCodeEnvS"/>
+        <WordDetect String="lhscode" attribute="Environment" context="HighlightingLiterate HaskellCodeEnv"/>
+        <WordDetect String="llvmcode*" attribute="Environment" context="HighlightingLLVMCodeEnvS"/>
+        <WordDetect String="llvmcode" attribute="Environment" context="HighlightingLLVMCodeEnv"/>
+        <WordDetect String="logtalkcode*" attribute="Environment" context="HighlightingLogtalkCodeEnvS"/>
+        <WordDetect String="logtalkcode" attribute="Environment" context="HighlightingLogtalkCodeEnv"/>
+        <WordDetect String="luacode*" attribute="Environment" context="HighlightingLuaCodeEnvS"/>
+        <WordDetect String="luacode" attribute="Environment" context="HighlightingLuaCodeEnv"/>
+        <WordDetect String="makecode*" attribute="Environment" context="HighlightingMakefileCodeEnvS"/>
+        <WordDetect String="makecode" attribute="Environment" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="makefilecode*" attribute="Environment" context="HighlightingMakefileCodeEnvS"/>
+        <WordDetect String="makefilecode" attribute="Environment" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="mfcode*" attribute="Environment" context="HighlightingMakefileCodeEnvS"/>
+        <WordDetect String="mfcode" attribute="Environment" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="bsdmakecode*" attribute="Environment" context="HighlightingMakefileCodeEnvS"/>
+        <WordDetect String="bsdmakecode" attribute="Environment" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="makocode*" attribute="Environment" context="HighlightingMakoCodeEnvS"/>
+        <WordDetect String="makocode" attribute="Environment" context="HighlightingMakoCodeEnv"/>
+        <WordDetect String="markdowncode*" attribute="Environment" context="HighlightingMarkdownCodeEnvS"/>
+        <WordDetect String="markdowncode" attribute="Environment" context="HighlightingMarkdownCodeEnv"/>
+        <WordDetect String="mdcode*" attribute="Environment" context="HighlightingMarkdownCodeEnvS"/>
+        <WordDetect String="mdcode" attribute="Environment" context="HighlightingMarkdownCodeEnv"/>
+        <WordDetect String="masoncode*" attribute="Environment" context="HighlightingMasonCodeEnvS"/>
+        <WordDetect String="masoncode" attribute="Environment" context="HighlightingMasonCodeEnv"/>
+        <WordDetect String="mathematicacode*" attribute="Environment" context="HighlightingMathematicaCodeEnvS"/>
+        <WordDetect String="mathematicacode" attribute="Environment" context="HighlightingMathematicaCodeEnv"/>
+        <WordDetect String="mmacode*" attribute="Environment" context="HighlightingMathematicaCodeEnvS"/>
+        <WordDetect String="mmacode" attribute="Environment" context="HighlightingMathematicaCodeEnv"/>
+        <WordDetect String="nbcode*" attribute="Environment" context="HighlightingMathematicaCodeEnvS"/>
+        <WordDetect String="nbcode" attribute="Environment" context="HighlightingMathematicaCodeEnv"/>
+        <WordDetect String="matlabcode*" attribute="Environment" context="HighlightingMatlabCodeEnvS"/>
+        <WordDetect String="matlabcode" attribute="Environment" context="HighlightingMatlabCodeEnv"/>
+        <WordDetect String="maximacode*" attribute="Environment" context="HighlightingMaximaCodeEnvS"/>
+        <WordDetect String="maximacode" attribute="Environment" context="HighlightingMaximaCodeEnv"/>
+        <WordDetect String="macsymacode*" attribute="Environment" context="HighlightingMaximaCodeEnvS"/>
+        <WordDetect String="macsymacode" attribute="Environment" context="HighlightingMaximaCodeEnv"/>
+        <WordDetect String="mesoncode*" attribute="Environment" context="HighlightingMesonCodeEnvS"/>
+        <WordDetect String="mesoncode" attribute="Environment" context="HighlightingMesonCodeEnv"/>
+        <WordDetect String="mesonbuildcode*" attribute="Environment" context="HighlightingMesonCodeEnvS"/>
+        <WordDetect String="mesonbuildcode" attribute="Environment" context="HighlightingMesonCodeEnv"/>
+        <WordDetect String="modelicacode*" attribute="Environment" context="HighlightingModelicaCodeEnvS"/>
+        <WordDetect String="modelicacode" attribute="Environment" context="HighlightingModelicaCodeEnv"/>
+        <WordDetect String="modulacode*" attribute="Environment" context="HighlightingModula-2CodeEnvS"/>
+        <WordDetect String="modulacode" attribute="Environment" context="HighlightingModula-2CodeEnv"/>
+        <WordDetect String="mcode*" attribute="Environment" context="HighlightingModula-2CodeEnvS"/>
+        <WordDetect String="mcode" attribute="Environment" context="HighlightingModula-2CodeEnv"/>
+        <WordDetect String="mysqlcode*" attribute="Environment" context="HighlightingSQL (MySQL)CodeEnvS"/>
+        <WordDetect String="mysqlcode" attribute="Environment" context="HighlightingSQL (MySQL)CodeEnv"/>
+        <WordDetect String="nsiscode*" attribute="Environment" context="HighlightingNSISCodeEnvS"/>
+        <WordDetect String="nsiscode" attribute="Environment" context="HighlightingNSISCodeEnv"/>
+        <WordDetect String="nsicode*" attribute="Environment" context="HighlightingNSISCodeEnvS"/>
+        <WordDetect String="nsicode" attribute="Environment" context="HighlightingNSISCodeEnv"/>
+        <WordDetect String="nshcode*" attribute="Environment" context="HighlightingNSISCodeEnvS"/>
+        <WordDetect String="nshcode" attribute="Environment" context="HighlightingNSISCodeEnv"/>
+        <WordDetect String="nasmcode*" attribute="Environment" context="HighlightingIntel x86 (NASM)CodeEnvS"/>
+        <WordDetect String="nasmcode" attribute="Environment" context="HighlightingIntel x86 (NASM)CodeEnv"/>
+        <WordDetect String="nemerlecode*" attribute="Environment" context="HighlightingNemerleCodeEnvS"/>
+        <WordDetect String="nemerlecode" attribute="Environment" context="HighlightingNemerleCodeEnv"/>
+        <WordDetect String="nesccode*" attribute="Environment" context="HighlightingnesCCodeEnvS"/>
+        <WordDetect String="nesccode" attribute="Environment" context="HighlightingnesCCodeEnv"/>
+        <WordDetect String="nimrodcode*" attribute="Environment" context="HighlightingNimCodeEnvS"/>
+        <WordDetect String="nimrodcode" attribute="Environment" context="HighlightingNimCodeEnv"/>
+        <WordDetect String="nimcode*" attribute="Environment" context="HighlightingNimCodeEnvS"/>
+        <WordDetect String="nimcode" attribute="Environment" context="HighlightingNimCodeEnv"/>
+        <WordDetect String="nixoscode*" attribute="Environment" context="HighlightingNixCodeEnvS"/>
+        <WordDetect String="nixoscode" attribute="Environment" context="HighlightingNixCodeEnv"/>
+        <WordDetect String="nixcode*" attribute="Environment" context="HighlightingNixCodeEnvS"/>
+        <WordDetect String="nixcode" attribute="Environment" context="HighlightingNixCodeEnv"/>
+        <WordDetect String="objectiveccode*" attribute="Environment" context="HighlightingObjective-CCodeEnvS"/>
+        <WordDetect String="objectiveccode" attribute="Environment" context="HighlightingObjective-CCodeEnv"/>
+        <WordDetect String="objccode*" attribute="Environment" context="HighlightingObjective-CCodeEnvS"/>
+        <WordDetect String="objccode" attribute="Environment" context="HighlightingObjective-CCodeEnv"/>
+        <WordDetect String="objectivecppcode*" attribute="Environment" context="HighlightingObjective-C++CodeEnvS"/>
+        <WordDetect String="objectivecppcode" attribute="Environment" context="HighlightingObjective-C++CodeEnv"/>
+        <WordDetect String="objcppcode*" attribute="Environment" context="HighlightingObjective-C++CodeEnvS"/>
+        <WordDetect String="objcppcode" attribute="Environment" context="HighlightingObjective-C++CodeEnv"/>
+        <WordDetect String="ocamlcode*" attribute="Environment" context="HighlightingObjective CamlCodeEnvS"/>
+        <WordDetect String="ocamlcode" attribute="Environment" context="HighlightingObjective CamlCodeEnv"/>
+        <WordDetect String="octavecode*" attribute="Environment" context="HighlightingOctaveCodeEnvS"/>
+        <WordDetect String="octavecode" attribute="Environment" context="HighlightingOctaveCodeEnv"/>
+        <WordDetect String="perlcode*" attribute="Environment" context="HighlightingPerlCodeEnvS"/>
+        <WordDetect String="perlcode" attribute="Environment" context="HighlightingPerlCodeEnv"/>
+        <WordDetect String="plcode*" attribute="Environment" context="HighlightingPerlCodeEnvS"/>
+        <WordDetect String="plcode" attribute="Environment" context="HighlightingPerlCodeEnv"/>
+        <WordDetect String="phpcode*" attribute="Environment" context="HighlightingPHP/PHPCodeEnvS"/>
+        <WordDetect String="phpcode" attribute="Environment" context="HighlightingPHP/PHPCodeEnv"/>
+        <WordDetect String="pigcode*" attribute="Environment" context="HighlightingPigCodeEnvS"/>
+        <WordDetect String="pigcode" attribute="Environment" context="HighlightingPigCodeEnv"/>
+        <WordDetect String="pikecode*" attribute="Environment" context="HighlightingPikeCodeEnvS"/>
+        <WordDetect String="pikecode" attribute="Environment" context="HighlightingPikeCodeEnv"/>
+        <WordDetect String="ponycode*" attribute="Environment" context="HighlightingPonyCodeEnvS"/>
+        <WordDetect String="ponycode" attribute="Environment" context="HighlightingPonyCodeEnv"/>
+        <WordDetect String="postscriptcode*" attribute="Environment" context="HighlightingPostScriptCodeEnvS"/>
+        <WordDetect String="postscriptcode" attribute="Environment" context="HighlightingPostScriptCodeEnv"/>
+        <WordDetect String="postscrcode*" attribute="Environment" context="HighlightingPostScriptCodeEnvS"/>
+        <WordDetect String="postscrcode" attribute="Environment" context="HighlightingPostScriptCodeEnv"/>
+        <WordDetect String="povcode*" attribute="Environment" context="HighlightingPOV-RayCodeEnvS"/>
+        <WordDetect String="povcode" attribute="Environment" context="HighlightingPOV-RayCodeEnv"/>
+        <WordDetect String="powershellcode*" attribute="Environment" context="HighlightingPowerShellCodeEnvS"/>
+        <WordDetect String="powershellcode" attribute="Environment" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="pwshcode*" attribute="Environment" context="HighlightingPowerShellCodeEnvS"/>
+        <WordDetect String="pwshcode" attribute="Environment" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="poshcode*" attribute="Environment" context="HighlightingPowerShellCodeEnvS"/>
+        <WordDetect String="poshcode" attribute="Environment" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="pscode*" attribute="Environment" context="HighlightingPowerShellCodeEnvS"/>
+        <WordDetect String="pscode" attribute="Environment" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="psmcode*" attribute="Environment" context="HighlightingPowerShellCodeEnvS"/>
+        <WordDetect String="psmcode" attribute="Environment" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="praatcode*" attribute="Environment" context="HighlightingPraatCodeEnvS"/>
+        <WordDetect String="praatcode" attribute="Environment" context="HighlightingPraatCodeEnv"/>
+        <WordDetect String="prologcode*" attribute="Environment" context="HighlightingPrologCodeEnvS"/>
+        <WordDetect String="prologcode" attribute="Environment" context="HighlightingPrologCodeEnv"/>
+        <WordDetect String="protobufcode*" attribute="Environment" context="HighlightingProtobufCodeEnvS"/>
+        <WordDetect String="protobufcode" attribute="Environment" context="HighlightingProtobufCodeEnv"/>
+        <WordDetect String="protocode*" attribute="Environment" context="HighlightingProtobufCodeEnvS"/>
+        <WordDetect String="protocode" attribute="Environment" context="HighlightingProtobufCodeEnv"/>
+        <WordDetect String="pugcode*" attribute="Environment" context="HighlightingPugCodeEnvS"/>
+        <WordDetect String="pugcode" attribute="Environment" context="HighlightingPugCodeEnv"/>
+        <WordDetect String="jadecode*" attribute="Environment" context="HighlightingPugCodeEnvS"/>
+        <WordDetect String="jadecode" attribute="Environment" context="HighlightingPugCodeEnv"/>
+        <WordDetect String="puppetcode*" attribute="Environment" context="HighlightingPuppetCodeEnvS"/>
+        <WordDetect String="puppetcode" attribute="Environment" context="HighlightingPuppetCodeEnv"/>
+        <WordDetect String="pythoncode*" attribute="Environment" context="HighlightingPythonCodeEnvS"/>
+        <WordDetect String="pythoncode" attribute="Environment" context="HighlightingPythonCodeEnv"/>
+        <WordDetect String="pycode*" attribute="Environment" context="HighlightingPythonCodeEnvS"/>
+        <WordDetect String="pycode" attribute="Environment" context="HighlightingPythonCodeEnv"/>
+        <WordDetect String="sagecode*" attribute="Environment" context="HighlightingPythonCodeEnvS"/>
+        <WordDetect String="sagecode" attribute="Environment" context="HighlightingPythonCodeEnv"/>
+        <WordDetect String="qmlcode*" attribute="Environment" context="HighlightingQMLCodeEnvS"/>
+        <WordDetect String="qmlcode" attribute="Environment" context="HighlightingQMLCodeEnv"/>
+        <WordDetect String="qbscode*" attribute="Environment" context="HighlightingQMLCodeEnvS"/>
+        <WordDetect String="qbscode" attribute="Environment" context="HighlightingQMLCodeEnv"/>
+        <WordDetect String="rngcompactcode*" attribute="Environment" context="HighlightingRelaxNG-CompactCodeEnvS"/>
+        <WordDetect String="rngcompactcode" attribute="Environment" context="HighlightingRelaxNG-CompactCodeEnv"/>
+        <WordDetect String="rnccode*" attribute="Environment" context="HighlightingRelaxNG-CompactCodeEnvS"/>
+        <WordDetect String="rnccode" attribute="Environment" context="HighlightingRelaxNG-CompactCodeEnv"/>
+        <WordDetect String="speccode*" attribute="Environment" context="HighlightingRPM SpecCodeEnvS"/>
+        <WordDetect String="speccode" attribute="Environment" context="HighlightingRPM SpecCodeEnv"/>
+        <WordDetect String="racketcode*" attribute="Environment" context="HighlightingRacketCodeEnvS"/>
+        <WordDetect String="racketcode" attribute="Environment" context="HighlightingRacketCodeEnv"/>
+        <WordDetect String="rktcode*" attribute="Environment" context="HighlightingRacketCodeEnvS"/>
+        <WordDetect String="rktcode" attribute="Environment" context="HighlightingRacketCodeEnv"/>
+        <WordDetect String="rexxcode*" attribute="Environment" context="HighlightingREXXCodeEnvS"/>
+        <WordDetect String="rexxcode" attribute="Environment" context="HighlightingREXXCodeEnv"/>
+        <WordDetect String="arexxcode*" attribute="Environment" context="HighlightingREXXCodeEnvS"/>
+        <WordDetect String="arexxcode" attribute="Environment" context="HighlightingREXXCodeEnv"/>
+        <WordDetect String="rhtmlcode*" attribute="Environment" context="HighlightingRuby/Rails/RHTMLCodeEnvS"/>
+        <WordDetect String="rhtmlcode" attribute="Environment" context="HighlightingRuby/Rails/RHTMLCodeEnv"/>
+        <WordDetect String="htmlerbcode*" attribute="Environment" context="HighlightingRuby/Rails/RHTMLCodeEnvS"/>
+        <WordDetect String="htmlerbcode" attribute="Environment" context="HighlightingRuby/Rails/RHTMLCodeEnv"/>
+        <WordDetect String="htmlrubycode*" attribute="Environment" context="HighlightingRuby/Rails/RHTMLCodeEnvS"/>
+        <WordDetect String="htmlrubycode" attribute="Environment" context="HighlightingRuby/Rails/RHTMLCodeEnv"/>
+        <WordDetect String="rstcode*" attribute="Environment" context="HighlightingreStructuredTextCodeEnvS"/>
+        <WordDetect String="rstcode" attribute="Environment" context="HighlightingreStructuredTextCodeEnv"/>
+        <WordDetect String="restcode*" attribute="Environment" context="HighlightingreStructuredTextCodeEnvS"/>
+        <WordDetect String="restcode" attribute="Environment" context="HighlightingreStructuredTextCodeEnv"/>
+        <WordDetect String="rubycode*" attribute="Environment" context="HighlightingRubyCodeEnvS"/>
+        <WordDetect String="rubycode" attribute="Environment" context="HighlightingRubyCodeEnv"/>
+        <WordDetect String="rbcode*" attribute="Environment" context="HighlightingRubyCodeEnvS"/>
+        <WordDetect String="rbcode" attribute="Environment" context="HighlightingRubyCodeEnv"/>
+        <WordDetect String="dubycode*" attribute="Environment" context="HighlightingRubyCodeEnvS"/>
+        <WordDetect String="dubycode" attribute="Environment" context="HighlightingRubyCodeEnv"/>
+        <WordDetect String="rustcode*" attribute="Environment" context="HighlightingRustCodeEnvS"/>
+        <WordDetect String="rustcode" attribute="Environment" context="HighlightingRustCodeEnv"/>
+        <WordDetect String="rscode*" attribute="Environment" context="HighlightingRustCodeEnvS"/>
+        <WordDetect String="rscode" attribute="Environment" context="HighlightingRustCodeEnv"/>
+        <WordDetect String="smlcode*" attribute="Environment" context="HighlightingSMLCodeEnvS"/>
+        <WordDetect String="smlcode" attribute="Environment" context="HighlightingSMLCodeEnv"/>
+        <WordDetect String="sasscode*" attribute="Environment" context="HighlightingSASSCodeEnvS"/>
+        <WordDetect String="sasscode" attribute="Environment" context="HighlightingSASSCodeEnv"/>
+        <WordDetect String="scalacode*" attribute="Environment" context="HighlightingScalaCodeEnvS"/>
+        <WordDetect String="scalacode" attribute="Environment" context="HighlightingScalaCodeEnv"/>
+        <WordDetect String="schemecode*" attribute="Environment" context="HighlightingSchemeCodeEnvS"/>
+        <WordDetect String="schemecode" attribute="Environment" context="HighlightingSchemeCodeEnv"/>
+        <WordDetect String="scmcode*" attribute="Environment" context="HighlightingSchemeCodeEnvS"/>
+        <WordDetect String="scmcode" attribute="Environment" context="HighlightingSchemeCodeEnv"/>
+        <WordDetect String="scilabcode*" attribute="Environment" context="HighlightingscilabCodeEnvS"/>
+        <WordDetect String="scilabcode" attribute="Environment" context="HighlightingscilabCodeEnv"/>
+        <WordDetect String="scsscode*" attribute="Environment" context="HighlightingSCSSCodeEnvS"/>
+        <WordDetect String="scsscode" attribute="Environment" context="HighlightingSCSSCodeEnv"/>
+        <WordDetect String="sedcode*" attribute="Environment" context="HighlightingsedCodeEnvS"/>
+        <WordDetect String="sedcode" attribute="Environment" context="HighlightingsedCodeEnv"/>
+        <WordDetect String="gsedcode*" attribute="Environment" context="HighlightingsedCodeEnvS"/>
+        <WordDetect String="gsedcode" attribute="Environment" context="HighlightingsedCodeEnv"/>
+        <WordDetect String="ssedcode*" attribute="Environment" context="HighlightingsedCodeEnvS"/>
+        <WordDetect String="ssedcode" attribute="Environment" context="HighlightingsedCodeEnv"/>
+        <WordDetect String="sievecode*" attribute="Environment" context="HighlightingSieveCodeEnvS"/>
+        <WordDetect String="sievecode" attribute="Environment" context="HighlightingSieveCodeEnv"/>
+        <WordDetect String="smalicode*" attribute="Environment" context="HighlightingSmaliCodeEnvS"/>
+        <WordDetect String="smalicode" attribute="Environment" context="HighlightingSmaliCodeEnv"/>
+        <WordDetect String="soliditycode*" attribute="Environment" context="HighlightingSolidityCodeEnvS"/>
+        <WordDetect String="soliditycode" attribute="Environment" context="HighlightingSolidityCodeEnv"/>
+        <WordDetect String="spicecode*" attribute="Environment" context="HighlightingSpiceCodeEnvS"/>
+        <WordDetect String="spicecode" attribute="Environment" context="HighlightingSpiceCodeEnv"/>
+        <WordDetect String="spicelangcode*" attribute="Environment" context="HighlightingSpiceCodeEnvS"/>
+        <WordDetect String="spicelangcode" attribute="Environment" context="HighlightingSpiceCodeEnv"/>
+        <WordDetect String="sqlcode*" attribute="Environment" context="HighlightingSQLCodeEnvS"/>
+        <WordDetect String="sqlcode" attribute="Environment" context="HighlightingSQLCodeEnv"/>
+        <WordDetect String="stancode*" attribute="Environment" context="HighlightingStanCodeEnvS"/>
+        <WordDetect String="stancode" attribute="Environment" context="HighlightingStanCodeEnv"/>
+        <WordDetect String="statacode*" attribute="Environment" context="HighlightingStataCodeEnvS"/>
+        <WordDetect String="statacode" attribute="Environment" context="HighlightingStataCodeEnv"/>
+        <WordDetect String="docode*" attribute="Environment" context="HighlightingStataCodeEnvS"/>
+        <WordDetect String="docode" attribute="Environment" context="HighlightingStataCodeEnv"/>
+        <WordDetect String="swiftcode*" attribute="Environment" context="HighlightingSwiftCodeEnvS"/>
+        <WordDetect String="swiftcode" attribute="Environment" context="HighlightingSwiftCodeEnv"/>
+        <WordDetect String="systemverilogcode*" attribute="Environment" context="HighlightingSystemVerilogCodeEnvS"/>
+        <WordDetect String="systemverilogcode" attribute="Environment" context="HighlightingSystemVerilogCodeEnv"/>
+        <WordDetect String="svcode*" attribute="Environment" context="HighlightingSystemVerilogCodeEnvS"/>
+        <WordDetect String="svcode" attribute="Environment" context="HighlightingSystemVerilogCodeEnv"/>
+        <WordDetect String="tomlcode*" attribute="Environment" context="HighlightingTOMLCodeEnvS"/>
+        <WordDetect String="tomlcode" attribute="Environment" context="HighlightingTOMLCodeEnv"/>
+        <WordDetect String="tadscode*" attribute="Environment" context="HighlightingTADS 3CodeEnvS"/>
+        <WordDetect String="tadscode" attribute="Environment" context="HighlightingTADS 3CodeEnv"/>
+        <WordDetect String="tclcode*" attribute="Environment" context="HighlightingTcl/TkCodeEnvS"/>
+        <WordDetect String="tclcode" attribute="Environment" context="HighlightingTcl/TkCodeEnv"/>
+        <WordDetect String="tcshcode*" attribute="Environment" context="HighlightingTcshCodeEnvS"/>
+        <WordDetect String="tcshcode" attribute="Environment" context="HighlightingTcshCodeEnv"/>
+        <WordDetect String="cshcode*" attribute="Environment" context="HighlightingTcshCodeEnvS"/>
+        <WordDetect String="cshcode" attribute="Environment" context="HighlightingTcshCodeEnv"/>
+        <WordDetect String="terraformcode*" attribute="Environment" context="HighlightingTerraformCodeEnvS"/>
+        <WordDetect String="terraformcode" attribute="Environment" context="HighlightingTerraformCodeEnv"/>
+        <WordDetect String="tfcode*" attribute="Environment" context="HighlightingTerraformCodeEnvS"/>
+        <WordDetect String="tfcode" attribute="Environment" context="HighlightingTerraformCodeEnv"/>
+        <WordDetect String="texcode*" attribute="Environment" context="HighlightingLaTeXCodeEnvS"/>
+        <WordDetect String="texcode" attribute="Environment" context="HighlightingLaTeXCodeEnv"/>
+        <WordDetect String="latexcode*" attribute="Environment" context="HighlightingLaTeXCodeEnvS"/>
+        <WordDetect String="latexcode" attribute="Environment" context="HighlightingLaTeXCodeEnv"/>
+        <WordDetect String="todotxtcode*" attribute="Environment" context="HighlightingTodo.txtCodeEnvS"/>
+        <WordDetect String="todotxtcode" attribute="Environment" context="HighlightingTodo.txtCodeEnv"/>
+        <WordDetect String="typescriptcode*" attribute="Environment" context="HighlightingTypeScriptCodeEnvS"/>
+        <WordDetect String="typescriptcode" attribute="Environment" context="HighlightingTypeScriptCodeEnv"/>
+        <WordDetect String="tscode*" attribute="Environment" context="HighlightingTypeScriptCodeEnvS"/>
+        <WordDetect String="tscode" attribute="Environment" context="HighlightingTypeScriptCodeEnv"/>
+        <WordDetect String="valacode*" attribute="Environment" context="HighlightingValaCodeEnvS"/>
+        <WordDetect String="valacode" attribute="Environment" context="HighlightingValaCodeEnv"/>
+        <WordDetect String="vapicode*" attribute="Environment" context="HighlightingValaCodeEnvS"/>
+        <WordDetect String="vapicode" attribute="Environment" context="HighlightingValaCodeEnv"/>
+        <WordDetect String="velocitycode*" attribute="Environment" context="HighlightingVelocityCodeEnvS"/>
+        <WordDetect String="velocitycode" attribute="Environment" context="HighlightingVelocityCodeEnv"/>
+        <WordDetect String="verilogcode*" attribute="Environment" context="HighlightingVerilogCodeEnvS"/>
+        <WordDetect String="verilogcode" attribute="Environment" context="HighlightingVerilogCodeEnv"/>
+        <WordDetect String="vcode*" attribute="Environment" context="HighlightingVerilogCodeEnvS"/>
+        <WordDetect String="vcode" attribute="Environment" context="HighlightingVerilogCodeEnv"/>
+        <WordDetect String="vhdlcode*" attribute="Environment" context="HighlightingVHDLCodeEnvS"/>
+        <WordDetect String="vhdlcode" attribute="Environment" context="HighlightingVHDLCodeEnv"/>
+        <WordDetect String="xmlcode*" attribute="Environment" context="HighlightingXMLCodeEnvS"/>
+        <WordDetect String="xmlcode" attribute="Environment" context="HighlightingXMLCodeEnv"/>
+        <WordDetect String="xorgconfcode*" attribute="Environment" context="Highlightingx.org ConfigurationCodeEnvS"/>
+        <WordDetect String="xorgconfcode" attribute="Environment" context="Highlightingx.org ConfigurationCodeEnv"/>
+        <WordDetect String="xsltcode*" attribute="Environment" context="HighlightingxsltCodeEnvS"/>
+        <WordDetect String="xsltcode" attribute="Environment" context="HighlightingxsltCodeEnv"/>
+        <WordDetect String="yamlcode*" attribute="Environment" context="HighlightingYAMLCodeEnvS"/>
+        <WordDetect String="yamlcode" attribute="Environment" context="HighlightingYAMLCodeEnv"/>
+        <WordDetect String="yangcode*" attribute="Environment" context="HighlightingYANGCodeEnvS"/>
+        <WordDetect String="yangcode" attribute="Environment" context="HighlightingYANGCodeEnv"/>
+        <RegExpr String=".+code\*" attribute="Environment" context="UnknownHighlightingCodeEnvS"/>
+        <RegExpr String=".+code" attribute="Environment" context="UnknownHighlightingCodeEnv"/>
+      </context>
+
+      <!-- parse verbatim text for lstinline and minted -->
+      <context name="UnknownHighlightingCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!UnknownHighlightingCodeEnvSParam"/>
+      </context>
+      <context name="UnknownHighlightingCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="UnknownHighlightingCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="UnknownHighlightingCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!UnknownHighlightingBegin"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="UnknownHighlightingCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="UnknownHighlightingBegin"/>
+        <!-- Eat the trailing characters including } or ] after the language specification -->
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="UnknownHighlightingBegin" attribute="Normal Text" lineEndContext="UnknownHighlighting">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="UnknownHighlighting" attribute="Verbatim Code" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="\\end(?=\s*\{(?:lstlisting|minted|[a-zA-Z]+code)\*?\})" attribute="Structure" context="UnknownHighlightingEnd"/>
+      </context>
+      <context name="UnknownHighlightingEnd" attribute="Environment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <DetectIdentifier/>
+      </context>
+
+
+      <!-- Selector for different highlightning schemes, in case the language is not implemented we pop and thus fallback to verbatim -->
+      <context name="HighlightingSelector" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect String="abap" insensitive="true" context="HighlightingABAPCodeEnv"/>
+        <WordDetect String="actionscript" insensitive="true" context="HighlightingActionScript 2.0CodeEnv"/>
+        <WordDetect String="as" insensitive="true" context="HighlightingActionScript 2.0CodeEnv"/>
+        <WordDetect String="ada" insensitive="true" context="HighlightingAdaCodeEnv"/>
+        <WordDetect String="agda" insensitive="true" context="HighlightingAgdaCodeEnv"/>
+        <WordDetect String="apacheconf" insensitive="true" context="HighlightingApache ConfigurationCodeEnv"/>
+        <WordDetect String="aconf" insensitive="true" context="HighlightingApache ConfigurationCodeEnv"/>
+        <WordDetect String="apache" insensitive="true" context="HighlightingApache ConfigurationCodeEnv"/>
+        <WordDetect String="autohotkey" insensitive="true" context="HighlightingAutoHotKeyCodeEnv"/>
+        <WordDetect String="ahk" insensitive="true" context="HighlightingAutoHotKeyCodeEnv"/>
+        <WordDetect String="awk" insensitive="true" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="gawk" insensitive="true" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="mawk" insensitive="true" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="nawk" insensitive="true" context="HighlightingAWKCodeEnv"/>
+        <WordDetect String="bash" insensitive="true" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="sh" insensitive="true" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="ksh" insensitive="true" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="zsh" insensitive="true" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="shell" insensitive="true" context="HighlightingBashCodeEnv"/>
+        <WordDetect String="bibtex" insensitive="true" context="HighlightingBibTeXCodeEnv"/>
+        <WordDetect String="bib" insensitive="true" context="HighlightingBibTeXCodeEnv"/>
+        <WordDetect String="boo" insensitive="true" context="HighlightingBooCodeEnv"/>
+        <WordDetect String="c" insensitive="true" context="HighlightingCCodeEnv"/>
+        <WordDetect String="cmake" insensitive="true" context="HighlightingCMakeCodeEnv"/>
+        <WordDetect String="csharp" insensitive="true" context="HighlightingC#CodeEnv"/>
+        <WordDetect String="cs" insensitive="true" context="HighlightingC#CodeEnv"/>
+        <WordDetect String="clojure" insensitive="true" context="HighlightingClojureCodeEnv"/>
+        <WordDetect String="clj" insensitive="true" context="HighlightingClojureCodeEnv"/>
+        <WordDetect String="coffee" insensitive="true" context="HighlightingCoffeeScriptCodeEnv"/>
+        <WordDetect String="commonlisp" insensitive="true" context="HighlightingCommon LispCodeEnv"/>
+        <WordDetect String="cl" insensitive="true" context="HighlightingCommon LispCodeEnv"/>
+        <WordDetect String="lisp" insensitive="true" context="HighlightingCommon LispCodeEnv"/>
+        <WordDetect String="cpp" insensitive="true" context="HighlightingC++CodeEnv"/>
+        <WordDetect String="css" insensitive="true" context="HighlightingCSSCodeEnv"/>
+        <WordDetect String="d" insensitive="true" context="HighlightingDCodeEnv"/>
+        <WordDetect String="dart" insensitive="true" context="HighlightingDartCodeEnv"/>
+        <WordDetect String="delphi" insensitive="true" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="pas" insensitive="true" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="pascal" insensitive="true" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="objectpascal" insensitive="true" context="HighlightingPascalCodeEnv"/>
+        <WordDetect String="diff" insensitive="true" context="HighlightingDiffCodeEnv"/>
+        <WordDetect String="udiff" insensitive="true" context="HighlightingDiffCodeEnv"/>
+        <WordDetect String="dtd" insensitive="true" context="HighlightingDTDCodeEnv"/>
+        <WordDetect String="eiffel" insensitive="true" context="HighlightingEiffelCodeEnv"/>
+        <WordDetect String="elixir" insensitive="true" context="HighlightingElixirCodeEnv"/>
+        <WordDetect String="ex" insensitive="true" context="HighlightingElixirCodeEnv"/>
+        <WordDetect String="exs" insensitive="true" context="HighlightingElixirCodeEnv"/>
+        <WordDetect String="elm" insensitive="true" context="HighlightingElmCodeEnv"/>
+        <WordDetect String="email" insensitive="true" context="HighlightingEmailCodeEnv"/>
+        <WordDetect String="eml" insensitive="true" context="HighlightingEmailCodeEnv"/>
+        <WordDetect String="erlang" insensitive="true" context="HighlightingErlangCodeEnv"/>
+        <WordDetect String="fish" insensitive="true" context="HighlightingFishCodeEnv"/>
+        <WordDetect String="fishshell" insensitive="true" context="HighlightingFishCodeEnv"/>
+        <WordDetect String="forth" insensitive="true" context="HighlightingANS-Forth94CodeEnv"/>
+        <WordDetect String="fortranfixed" insensitive="true" context="HighlightingFortran (Fixed Format)CodeEnv"/>
+        <WordDetect String="fortran" insensitive="true" context="HighlightingFortran (Free Format)CodeEnv"/>
+        <WordDetect String="f" insensitive="true" context="HighlightingFortran (Free Format)CodeEnv"/>
+        <WordDetect String="gap" insensitive="true" context="HighlightingGAPCodeEnv"/>
+        <WordDetect String="gdscript" insensitive="true" context="HighlightingGodotCodeEnv"/>
+        <WordDetect String="gd" insensitive="true" context="HighlightingGodotCodeEnv"/>
+        <WordDetect String="glsl" insensitive="true" context="HighlightingGLSLCodeEnv"/>
+        <WordDetect String="gcode" insensitive="true" context="HighlightingG-CodeCodeEnv"/>
+        <WordDetect String="gnuplot" insensitive="true" context="HighlightingGnuplotCodeEnv"/>
+        <WordDetect String="go" insensitive="true" context="HighlightingGoCodeEnv"/>
+        <WordDetect String="golang" insensitive="true" context="HighlightingGoCodeEnv"/>
+        <WordDetect String="groovy" insensitive="true" context="HighlightingGroovyCodeEnv"/>
+        <WordDetect String="haml" insensitive="true" context="HighlightingHamlCodeEnv"/>
+        <WordDetect String="haskell" insensitive="true" context="HighlightingHaskellCodeEnv"/>
+        <WordDetect String="hs" insensitive="true" context="HighlightingHaskellCodeEnv"/>
+        <WordDetect String="haxe" insensitive="true" context="HighlightingHaxeCodeEnv"/>
+        <WordDetect String="hxsl" insensitive="true" context="HighlightingHaxeCodeEnv"/>
+        <WordDetect String="hx" insensitive="true" context="HighlightingHaxeCodeEnv"/>
+        <WordDetect String="html" insensitive="true" context="HighlightingHTMLCodeEnv"/>
+        <WordDetect String="idl" insensitive="true" context="HighlightingIDLCodeEnv"/>
+        <WordDetect String="idris" insensitive="true" context="HighlightingIdrisCodeEnv"/>
+        <WordDetect String="idr" insensitive="true" context="HighlightingIdrisCodeEnv"/>
+        <WordDetect String="inform" insensitive="true" context="HighlightingInformCodeEnv"/>
+        <WordDetect String="i" insensitive="true" context="HighlightingInformCodeEnv"/>
+        <WordDetect String="ini" insensitive="true" context="HighlightingINI FilesCodeEnv"/>
+        <WordDetect String="cfg" insensitive="true" context="HighlightingINI FilesCodeEnv"/>
+        <WordDetect String="dosini" insensitive="true" context="HighlightingINI FilesCodeEnv"/>
+        <WordDetect String="j" insensitive="true" context="HighlightingJCodeEnv"/>
+        <WordDetect String="java" insensitive="true" context="HighlightingJavaCodeEnv"/>
+        <WordDetect String="javascript" insensitive="true" context="HighlightingJavaScriptCodeEnv"/>
+        <WordDetect String="js" insensitive="true" context="HighlightingJavaScriptCodeEnv"/>
+        <WordDetect String="jcl" insensitive="true" context="HighlightingJCLCodeEnv"/>
+        <WordDetect String="json" insensitive="true" context="HighlightingJSONCodeEnv"/>
+        <WordDetect String="jsonobject" insensitive="true" context="HighlightingJSONCodeEnv"/>
+        <WordDetect String="julia" insensitive="true" context="HighlightingJuliaCodeEnv"/>
+        <WordDetect String="jl" insensitive="true" context="HighlightingJuliaCodeEnv"/>
+        <WordDetect String="kconfig" insensitive="true" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="menuconfig" insensitive="true" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="linuxconfig" insensitive="true" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="kernelconfig" insensitive="true" context="HighlightingKconfigCodeEnv"/>
+        <WordDetect String="kotlin" insensitive="true" context="HighlightingKotlinCodeEnv"/>
+        <WordDetect String="lsl" insensitive="true" context="HighlightingLSLCodeEnv"/>
+        <WordDetect String="less" insensitive="true" context="HighlightingLESSCSSCodeEnv"/>
+        <WordDetect String="lilypond" insensitive="true" context="HighlightingLilyPondCodeEnv"/>
+        <WordDetect String="literatehaskell" insensitive="true" context="HighlightingLiterate HaskellCodeEnv"/>
+        <WordDetect String="lhaskell" insensitive="true" context="HighlightingLiterate HaskellCodeEnv"/>
+        <WordDetect String="lhs" insensitive="true" context="HighlightingLiterate HaskellCodeEnv"/>
+        <WordDetect String="llvm" insensitive="true" context="HighlightingLLVMCodeEnv"/>
+        <WordDetect String="logtalk" insensitive="true" context="HighlightingLogtalkCodeEnv"/>
+        <WordDetect String="lua" insensitive="true" context="HighlightingLuaCodeEnv"/>
+        <WordDetect String="make" insensitive="true" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="makefile" insensitive="true" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="mf" insensitive="true" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="bsdmake" insensitive="true" context="HighlightingMakefileCodeEnv"/>
+        <WordDetect String="mako" insensitive="true" context="HighlightingMakoCodeEnv"/>
+        <WordDetect String="markdown" insensitive="true" context="HighlightingMarkdownCodeEnv"/>
+        <WordDetect String="md" insensitive="true" context="HighlightingMarkdownCodeEnv"/>
+        <WordDetect String="mason" insensitive="true" context="HighlightingMasonCodeEnv"/>
+        <WordDetect String="mathematica" insensitive="true" context="HighlightingMathematicaCodeEnv"/>
+        <WordDetect String="mma" insensitive="true" context="HighlightingMathematicaCodeEnv"/>
+        <WordDetect String="nb" insensitive="true" context="HighlightingMathematicaCodeEnv"/>
+        <WordDetect String="matlab" insensitive="true" context="HighlightingMatlabCodeEnv"/>
+        <WordDetect String="maxima" insensitive="true" context="HighlightingMaximaCodeEnv"/>
+        <WordDetect String="macsyma" insensitive="true" context="HighlightingMaximaCodeEnv"/>
+        <WordDetect String="meson" insensitive="true" context="HighlightingMesonCodeEnv"/>
+        <WordDetect String="mesonbuild" insensitive="true" context="HighlightingMesonCodeEnv"/>
+        <WordDetect String="modelica" insensitive="true" context="HighlightingModelicaCodeEnv"/>
+        <WordDetect String="modula" insensitive="true" context="HighlightingModula-2CodeEnv"/>
+        <WordDetect String="m" insensitive="true" context="HighlightingModula-2CodeEnv"/>
+        <WordDetect String="mysql" insensitive="true" context="HighlightingSQL (MySQL)CodeEnv"/>
+        <WordDetect String="nsis" insensitive="true" context="HighlightingNSISCodeEnv"/>
+        <WordDetect String="nsi" insensitive="true" context="HighlightingNSISCodeEnv"/>
+        <WordDetect String="nsh" insensitive="true" context="HighlightingNSISCodeEnv"/>
+        <WordDetect String="nasm" insensitive="true" context="HighlightingIntel x86 (NASM)CodeEnv"/>
+        <WordDetect String="nemerle" insensitive="true" context="HighlightingNemerleCodeEnv"/>
+        <WordDetect String="nesc" insensitive="true" context="HighlightingnesCCodeEnv"/>
+        <WordDetect String="nimrod" insensitive="true" context="HighlightingNimCodeEnv"/>
+        <WordDetect String="nim" insensitive="true" context="HighlightingNimCodeEnv"/>
+        <WordDetect String="nixos" insensitive="true" context="HighlightingNixCodeEnv"/>
+        <WordDetect String="nix" insensitive="true" context="HighlightingNixCodeEnv"/>
+        <WordDetect String="objectivec" insensitive="true" context="HighlightingObjective-CCodeEnv"/>
+        <WordDetect String="objc" insensitive="true" context="HighlightingObjective-CCodeEnv"/>
+        <WordDetect String="objectivecpp" insensitive="true" context="HighlightingObjective-C++CodeEnv"/>
+        <WordDetect String="objcpp" insensitive="true" context="HighlightingObjective-C++CodeEnv"/>
+        <WordDetect String="ocaml" insensitive="true" context="HighlightingObjective CamlCodeEnv"/>
+        <WordDetect String="octave" insensitive="true" context="HighlightingOctaveCodeEnv"/>
+        <WordDetect String="perl" insensitive="true" context="HighlightingPerlCodeEnv"/>
+        <WordDetect String="pl" insensitive="true" context="HighlightingPerlCodeEnv"/>
+        <WordDetect String="php" insensitive="true" context="HighlightingPHP/PHPCodeEnv"/>
+        <WordDetect String="pig" insensitive="true" context="HighlightingPigCodeEnv"/>
+        <WordDetect String="pike" insensitive="true" context="HighlightingPikeCodeEnv"/>
+        <WordDetect String="pony" insensitive="true" context="HighlightingPonyCodeEnv"/>
+        <WordDetect String="postscript" insensitive="true" context="HighlightingPostScriptCodeEnv"/>
+        <WordDetect String="postscr" insensitive="true" context="HighlightingPostScriptCodeEnv"/>
+        <WordDetect String="pov" insensitive="true" context="HighlightingPOV-RayCodeEnv"/>
+        <WordDetect String="powershell" insensitive="true" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="pwsh" insensitive="true" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="posh" insensitive="true" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="ps" insensitive="true" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="psm" insensitive="true" context="HighlightingPowerShellCodeEnv"/>
+        <WordDetect String="praat" insensitive="true" context="HighlightingPraatCodeEnv"/>
+        <WordDetect String="prolog" insensitive="true" context="HighlightingPrologCodeEnv"/>
+        <WordDetect String="protobuf" insensitive="true" context="HighlightingProtobufCodeEnv"/>
+        <WordDetect String="proto" insensitive="true" context="HighlightingProtobufCodeEnv"/>
+        <WordDetect String="pug" insensitive="true" context="HighlightingPugCodeEnv"/>
+        <WordDetect String="jade" insensitive="true" context="HighlightingPugCodeEnv"/>
+        <WordDetect String="puppet" insensitive="true" context="HighlightingPuppetCodeEnv"/>
+        <WordDetect String="python" insensitive="true" context="HighlightingPythonCodeEnv"/>
+        <WordDetect String="py" insensitive="true" context="HighlightingPythonCodeEnv"/>
+        <WordDetect String="sage" insensitive="true" context="HighlightingPythonCodeEnv"/>
+        <WordDetect String="qml" insensitive="true" context="HighlightingQMLCodeEnv"/>
+        <WordDetect String="qbs" insensitive="true" context="HighlightingQMLCodeEnv"/>
+        <WordDetect String="rngcompact" insensitive="true" context="HighlightingRelaxNG-CompactCodeEnv"/>
+        <WordDetect String="rnc" insensitive="true" context="HighlightingRelaxNG-CompactCodeEnv"/>
+        <WordDetect String="spec" insensitive="true" context="HighlightingRPM SpecCodeEnv"/>
+        <WordDetect String="racket" insensitive="true" context="HighlightingRacketCodeEnv"/>
+        <WordDetect String="rkt" insensitive="true" context="HighlightingRacketCodeEnv"/>
+        <WordDetect String="rexx" insensitive="true" context="HighlightingREXXCodeEnv"/>
+        <WordDetect String="arexx" insensitive="true" context="HighlightingREXXCodeEnv"/>
+        <WordDetect String="rhtml" insensitive="true" context="HighlightingRuby/Rails/RHTMLCodeEnv"/>
+        <WordDetect String="htmlerb" insensitive="true" context="HighlightingRuby/Rails/RHTMLCodeEnv"/>
+        <WordDetect String="htmlruby" insensitive="true" context="HighlightingRuby/Rails/RHTMLCodeEnv"/>
+        <WordDetect String="rst" insensitive="true" context="HighlightingreStructuredTextCodeEnv"/>
+        <WordDetect String="rest" insensitive="true" context="HighlightingreStructuredTextCodeEnv"/>
+        <WordDetect String="ruby" insensitive="true" context="HighlightingRubyCodeEnv"/>
+        <WordDetect String="rb" insensitive="true" context="HighlightingRubyCodeEnv"/>
+        <WordDetect String="duby" insensitive="true" context="HighlightingRubyCodeEnv"/>
+        <WordDetect String="rust" insensitive="true" context="HighlightingRustCodeEnv"/>
+        <WordDetect String="rs" insensitive="true" context="HighlightingRustCodeEnv"/>
+        <WordDetect String="sml" insensitive="true" context="HighlightingSMLCodeEnv"/>
+        <WordDetect String="sass" insensitive="true" context="HighlightingSASSCodeEnv"/>
+        <WordDetect String="scala" insensitive="true" context="HighlightingScalaCodeEnv"/>
+        <WordDetect String="scheme" insensitive="true" context="HighlightingSchemeCodeEnv"/>
+        <WordDetect String="scm" insensitive="true" context="HighlightingSchemeCodeEnv"/>
+        <WordDetect String="scilab" insensitive="true" context="HighlightingscilabCodeEnv"/>
+        <WordDetect String="scss" insensitive="true" context="HighlightingSCSSCodeEnv"/>
+        <WordDetect String="sed" insensitive="true" context="HighlightingsedCodeEnv"/>
+        <WordDetect String="gsed" insensitive="true" context="HighlightingsedCodeEnv"/>
+        <WordDetect String="ssed" insensitive="true" context="HighlightingsedCodeEnv"/>
+        <WordDetect String="sieve" insensitive="true" context="HighlightingSieveCodeEnv"/>
+        <WordDetect String="smali" insensitive="true" context="HighlightingSmaliCodeEnv"/>
+        <WordDetect String="solidity" insensitive="true" context="HighlightingSolidityCodeEnv"/>
+        <WordDetect String="spice" insensitive="true" context="HighlightingSpiceCodeEnv"/>
+        <WordDetect String="spicelang" insensitive="true" context="HighlightingSpiceCodeEnv"/>
+        <WordDetect String="sql" insensitive="true" context="HighlightingSQLCodeEnv"/>
+        <WordDetect String="stan" insensitive="true" context="HighlightingStanCodeEnv"/>
+        <WordDetect String="stata" insensitive="true" context="HighlightingStataCodeEnv"/>
+        <WordDetect String="do" insensitive="true" context="HighlightingStataCodeEnv"/>
+        <WordDetect String="swift" insensitive="true" context="HighlightingSwiftCodeEnv"/>
+        <WordDetect String="systemverilog" insensitive="true" context="HighlightingSystemVerilogCodeEnv"/>
+        <WordDetect String="sv" insensitive="true" context="HighlightingSystemVerilogCodeEnv"/>
+        <WordDetect String="toml" insensitive="true" context="HighlightingTOMLCodeEnv"/>
+        <WordDetect String="tads" insensitive="true" context="HighlightingTADS 3CodeEnv"/>
+        <WordDetect String="tcl" insensitive="true" context="HighlightingTcl/TkCodeEnv"/>
+        <WordDetect String="tcsh" insensitive="true" context="HighlightingTcshCodeEnv"/>
+        <WordDetect String="csh" insensitive="true" context="HighlightingTcshCodeEnv"/>
+        <WordDetect String="terraform" insensitive="true" context="HighlightingTerraformCodeEnv"/>
+        <WordDetect String="tf" insensitive="true" context="HighlightingTerraformCodeEnv"/>
+        <WordDetect String="tex" insensitive="true" context="HighlightingLaTeXCodeEnv"/>
+        <WordDetect String="latex" insensitive="true" context="HighlightingLaTeXCodeEnv"/>
+        <WordDetect String="todotxt" insensitive="true" context="HighlightingTodo.txtCodeEnv"/>
+        <WordDetect String="typescript" insensitive="true" context="HighlightingTypeScriptCodeEnv"/>
+        <WordDetect String="ts" insensitive="true" context="HighlightingTypeScriptCodeEnv"/>
+        <WordDetect String="vala" insensitive="true" context="HighlightingValaCodeEnv"/>
+        <WordDetect String="vapi" insensitive="true" context="HighlightingValaCodeEnv"/>
+        <WordDetect String="velocity" insensitive="true" context="HighlightingVelocityCodeEnv"/>
+        <WordDetect String="verilog" insensitive="true" context="HighlightingVerilogCodeEnv"/>
+        <WordDetect String="v" insensitive="true" context="HighlightingVerilogCodeEnv"/>
+        <WordDetect String="vhdl" insensitive="true" context="HighlightingVHDLCodeEnv"/>
+        <WordDetect String="xml" insensitive="true" context="HighlightingXMLCodeEnv"/>
+        <WordDetect String="xorgconf" insensitive="true" context="Highlightingx.org ConfigurationCodeEnv"/>
+        <WordDetect String="xslt" insensitive="true" context="HighlightingxsltCodeEnv"/>
+        <WordDetect String="yaml" insensitive="true" context="HighlightingYAMLCodeEnv"/>
+        <WordDetect String="yang" insensitive="true" context="HighlightingYANGCodeEnv"/>
+        <AnyChar String="}]" context="#pop!UnknownHighlightingBegin"/>
+        <RegExpr String="[^]}]*" context="#stay"/>
+      </context>
+
+      <context name="HighlightingCommon" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="\\end\s*\{(?:lstlisting|minted|[a-zA-Z]+code)\*?\}" attribute="Structure" lookAhead="true" context="#pop#pop#pop#pop#pop#pop"/>
+      </context>
+
+      <context name="HighlightingABAPCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingABAPCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingABAPCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingABAPCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingABAPCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginABAP"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingABAPCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginABAP"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginABAP" attribute="Normal Text" lineEndContext="#pop!HighlightingABAP">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingABAP" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!--        <IncludeRules context="##ABAP" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingActionScript 2.0CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingActionScript 2.0CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingActionScript 2.0CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingActionScript 2.0CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingActionScript 2.0CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginActionScript 2.0"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingActionScript 2.0CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginActionScript 2.0"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginActionScript 2.0" attribute="Normal Text" lineEndContext="#pop!HighlightingActionScript 2.0">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingActionScript 2.0" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##ActionScript 2.0" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingAdaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingAdaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingAdaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingAdaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingAdaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAda"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingAdaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginAda"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginAda" attribute="Normal Text" lineEndContext="#pop!HighlightingAda">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingAda" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Ada" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingAgdaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingAgdaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingAgdaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingAgdaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingAgdaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAgda"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingAgdaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginAgda"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginAgda" attribute="Normal Text" lineEndContext="#pop!HighlightingAgda">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingAgda" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Agda" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingApache ConfigurationCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingApache ConfigurationCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingApache ConfigurationCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingApache ConfigurationCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingApache ConfigurationCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginApache Configuration"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingApache ConfigurationCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginApache Configuration"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginApache Configuration" attribute="Normal Text" lineEndContext="#pop!HighlightingApache Configuration">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingApache Configuration" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Apache Configuration" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingAutoHotKeyCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingAutoHotKeyCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingAutoHotKeyCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingAutoHotKeyCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingAutoHotKeyCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAutoHotKey"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingAutoHotKeyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginAutoHotKey"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginAutoHotKey" attribute="Normal Text" lineEndContext="#pop!HighlightingAutoHotKey">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingAutoHotKey" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##AutoHotKey" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingAWKCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingAWKCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingAWKCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingAWKCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingAWKCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAWK"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingAWKCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginAWK"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginAWK" attribute="Normal Text" lineEndContext="#pop!HighlightingAWK">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingAWK" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##AWK" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingBashCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBashCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingBashCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingBashCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingBashCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginBash"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingBashCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginBash"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginBash" attribute="Normal Text" lineEndContext="#pop!HighlightingBash">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingBash" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Command##Bash">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Bash" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingBibTeXCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBibTeXCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingBibTeXCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingBibTeXCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingBibTeXCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginBibTeX"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingBibTeXCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginBibTeX"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginBibTeX" attribute="Normal Text" lineEndContext="#pop!HighlightingBibTeX">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingBibTeX" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##BibTeX" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingBooCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBooCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingBooCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingBooCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingBooCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginBoo"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingBooCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginBoo"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginBoo" attribute="Normal Text" lineEndContext="#pop!HighlightingBoo">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingBoo" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Boo" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingCCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingCCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingCCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingCCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingCCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginC"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingCCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginC"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginC" attribute="Normal Text" lineEndContext="#pop!HighlightingC">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingC" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##C" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingCMakeCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingCMakeCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingCMakeCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingCMakeCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingCMakeCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCMake"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingCMakeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginCMake"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginCMake" attribute="Normal Text" lineEndContext="#pop!HighlightingCMake">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingCMake" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##CMake" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingC#CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingC#CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingC#CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingC#CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingC#CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginC#"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingC#CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginC#"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginC#" attribute="Normal Text" lineEndContext="#pop!HighlightingC#">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingC#" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##C#" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingClojureCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingClojureCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingClojureCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingClojureCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingClojureCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginClojure"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingClojureCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginClojure"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginClojure" attribute="Normal Text" lineEndContext="#pop!HighlightingClojure">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingClojure" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Clojure" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingCoffeeScriptCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingCoffeeScriptCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingCoffeeScriptCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingCoffeeScriptCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingCoffeeScriptCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCoffeeScript"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingCoffeeScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginCoffeeScript"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginCoffeeScript" attribute="Normal Text" lineEndContext="#pop!HighlightingCoffeeScript">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingCoffeeScript" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##CoffeeScript" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingCommon LispCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingCommon LispCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingCommon LispCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingCommon LispCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingCommon LispCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCommon Lisp"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingCommon LispCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginCommon Lisp"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginCommon Lisp" attribute="Normal Text" lineEndContext="#pop!HighlightingCommon Lisp">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingCommon Lisp" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Common Lisp" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingC++CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingC++CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingC++CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingC++CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingC++CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginC++"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingC++CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginC++"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginC++" attribute="Normal Text" lineEndContext="#pop!HighlightingC++">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingC++" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##C++" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingCSSCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingCSSCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingCSSCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingCSSCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingCSSCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCSS"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingCSSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginCSS"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginCSS" attribute="Normal Text" lineEndContext="#pop!HighlightingCSS">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingCSS" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##CSS" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingDCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingDCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingDCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingDCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingDCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginD"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingDCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginD"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginD" attribute="Normal Text" lineEndContext="#pop!HighlightingD">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingD" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##D" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingDartCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingDartCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingDartCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingDartCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingDartCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginDart"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingDartCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginDart"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginDart" attribute="Normal Text" lineEndContext="#pop!HighlightingDart">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingDart" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Dart" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPascalCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPascalCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPascalCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPascalCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPascalCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPascal"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPascalCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPascal"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPascal" attribute="Normal Text" lineEndContext="#pop!HighlightingPascal">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPascal" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Pascal" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingDiffCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingDiffCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingDiffCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingDiffCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingDiffCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginDiff"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingDiffCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginDiff"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginDiff" attribute="Normal Text" lineEndContext="#pop!HighlightingDiff">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingDiff" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Diff" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingDTDCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingDTDCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingDTDCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingDTDCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingDTDCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginDTD"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingDTDCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginDTD"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginDTD" attribute="Normal Text" lineEndContext="#pop!HighlightingDTD">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingDTD" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##DTD" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingEiffelCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingEiffelCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingEiffelCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingEiffelCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingEiffelCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginEiffel"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingEiffelCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginEiffel"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginEiffel" attribute="Normal Text" lineEndContext="#pop!HighlightingEiffel">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingEiffel" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Eiffel" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingElixirCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingElixirCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingElixirCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingElixirCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingElixirCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginElixir"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingElixirCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginElixir"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginElixir" attribute="Normal Text" lineEndContext="#pop!HighlightingElixir">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingElixir" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Elixir" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingElmCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingElmCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingElmCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingElmCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingElmCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginElm"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingElmCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginElm"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginElm" attribute="Normal Text" lineEndContext="#pop!HighlightingElm">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingElm" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Elm" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingEmailCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingEmailCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingEmailCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingEmailCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingEmailCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginEmail"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingEmailCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginEmail"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginEmail" attribute="Normal Text" lineEndContext="#pop!HighlightingEmail">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingEmail" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Email" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingErlangCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingErlangCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingErlangCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingErlangCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingErlangCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginErlang"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingErlangCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginErlang"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginErlang" attribute="Normal Text" lineEndContext="#pop!HighlightingErlang">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingErlang" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Erlang" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingFishCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingFishCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingFishCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingFishCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingFishCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginFish"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingFishCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginFish"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginFish" attribute="Normal Text" lineEndContext="#pop!HighlightingFish">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingFish" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Fish" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingANS-Forth94CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingANS-Forth94CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingANS-Forth94CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingANS-Forth94CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingANS-Forth94CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginANS-Forth94"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingANS-Forth94CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginANS-Forth94"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginANS-Forth94" attribute="Normal Text" lineEndContext="#pop!HighlightingANS-Forth94">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingANS-Forth94" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##ANS-Forth94" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingFortran (Fixed Format)CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingFortran (Fixed Format)CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingFortran (Fixed Format)CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingFortran (Fixed Format)CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingFortran (Fixed Format)CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginFortran (Fixed Format)"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingFortran (Fixed Format)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginFortran (Fixed Format)"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginFortran (Fixed Format)" attribute="Normal Text" lineEndContext="#pop!HighlightingFortran (Fixed Format)">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingFortran (Fixed Format)" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Fortran (Fixed Format)" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingFortran (Free Format)CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingFortran (Free Format)CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingFortran (Free Format)CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingFortran (Free Format)CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingFortran (Free Format)CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginFortran (Free Format)"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingFortran (Free Format)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginFortran (Free Format)"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginFortran (Free Format)" attribute="Normal Text" lineEndContext="#pop!HighlightingFortran (Free Format)">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingFortran (Free Format)" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Fortran (Free Format)" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingGAPCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingGAPCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingGAPCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingGAPCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingGAPCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGAP"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingGAPCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginGAP"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginGAP" attribute="Normal Text" lineEndContext="#pop!HighlightingGAP">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingGAP" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##GAP" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingGodotCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingGodotCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingGodotCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingGodotCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingGodotCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGodot"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingGodotCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginGodot"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginGodot" attribute="Normal Text" lineEndContext="#pop!HighlightingGodot">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingGodot" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Godot" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingGLSLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingGLSLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingGLSLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingGLSLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingGLSLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGLSL"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingGLSLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginGLSL"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginGLSL" attribute="Normal Text" lineEndContext="#pop!HighlightingGLSL">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingGLSL" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##GLSL" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingG-CodeCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingG-CodeCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingG-CodeCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingG-CodeCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingG-CodeCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginG-Code"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingG-CodeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginG-Code"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginG-Code" attribute="Normal Text" lineEndContext="#pop!HighlightingG-Code">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingG-Code" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##G-Code" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingGnuplotCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingGnuplotCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingGnuplotCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingGnuplotCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingGnuplotCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGnuplot"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingGnuplotCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginGnuplot"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginGnuplot" attribute="Normal Text" lineEndContext="#pop!HighlightingGnuplot">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingGnuplot" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Gnuplot" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingGoCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingGoCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingGoCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingGoCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingGoCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGo"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingGoCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginGo"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginGo" attribute="Normal Text" lineEndContext="#pop!HighlightingGo">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingGo" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Go" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingGroovyCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingGroovyCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingGroovyCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingGroovyCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingGroovyCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGroovy"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingGroovyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginGroovy"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginGroovy" attribute="Normal Text" lineEndContext="#pop!HighlightingGroovy">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingGroovy" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Groovy" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingHamlCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingHamlCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingHamlCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingHamlCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingHamlCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHaml"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingHamlCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginHaml"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginHaml" attribute="Normal Text" lineEndContext="#pop!HighlightingHaml">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingHaml" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Haml" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingHaskellCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingHaskellCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingHaskellCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingHaskellCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingHaskellCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHaskell"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingHaskellCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginHaskell"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginHaskell" attribute="Normal Text" lineEndContext="#pop!HighlightingHaskell">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingHaskell" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Haskell" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingHaxeCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingHaxeCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingHaxeCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingHaxeCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingHaxeCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHaxe"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingHaxeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginHaxe"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginHaxe" attribute="Normal Text" lineEndContext="#pop!HighlightingHaxe">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingHaxe" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Haxe" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingHTMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingHTMLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingHTMLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingHTMLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingHTMLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHTML"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingHTMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginHTML"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginHTML" attribute="Normal Text" lineEndContext="#pop!HighlightingHTML">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingHTML" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##HTML" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingIDLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingIDLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingIDLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingIDLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingIDLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginIDL"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingIDLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginIDL"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginIDL" attribute="Normal Text" lineEndContext="#pop!HighlightingIDL">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingIDL" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##IDL" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingIdrisCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingIdrisCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingIdrisCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingIdrisCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingIdrisCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginIdris"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingIdrisCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginIdris"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginIdris" attribute="Normal Text" lineEndContext="#pop!HighlightingIdris">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingIdris" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Idris" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingInformCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingInformCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingInformCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingInformCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingInformCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginInform"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingInformCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginInform"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginInform" attribute="Normal Text" lineEndContext="#pop!HighlightingInform">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingInform" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Inform" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingINI FilesCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingINI FilesCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingINI FilesCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingINI FilesCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingINI FilesCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginINI Files"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingINI FilesCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginINI Files"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginINI Files" attribute="Normal Text" lineEndContext="#pop!HighlightingINI Files">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingINI Files" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##INI Files" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingJCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingJCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingJCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingJCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingJCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJ"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingJCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginJ"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginJ" attribute="Normal Text" lineEndContext="#pop!HighlightingJ">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingJ" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##J" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingJavaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingJavaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingJavaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingJavaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingJavaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJava"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingJavaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginJava"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginJava" attribute="Normal Text" lineEndContext="#pop!HighlightingJava">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingJava" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingJavaScriptCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingJavaScriptCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingJavaScriptCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingJavaScriptCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingJavaScriptCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJavaScript"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingJavaScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginJavaScript"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginJavaScript" attribute="Normal Text" lineEndContext="#pop!HighlightingJavaScript">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingJavaScript" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingJCLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingJCLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingJCLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingJCLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingJCLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJCL"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingJCLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginJCL"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginJCL" attribute="Normal Text" lineEndContext="#pop!HighlightingJCL">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingJCL" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##JCL" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingJSONCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingJSONCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingJSONCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingJSONCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingJSONCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJSON"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingJSONCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginJSON"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginJSON" attribute="Normal Text" lineEndContext="#pop!HighlightingJSON">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingJSON" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##JSON" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingJuliaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingJuliaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingJuliaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingJuliaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingJuliaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJulia"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingJuliaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginJulia"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginJulia" attribute="Normal Text" lineEndContext="#pop!HighlightingJulia">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingJulia" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Julia" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingKconfigCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingKconfigCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingKconfigCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingKconfigCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingKconfigCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginKconfig"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingKconfigCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginKconfig"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginKconfig" attribute="Normal Text" lineEndContext="#pop!HighlightingKconfig">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingKconfig" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Kconfig" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingKotlinCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingKotlinCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingKotlinCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingKotlinCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingKotlinCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginKotlin"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingKotlinCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginKotlin"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginKotlin" attribute="Normal Text" lineEndContext="#pop!HighlightingKotlin">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingKotlin" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Kotlin" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingLSLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLSLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLSLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLSLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLSLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLSL"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLSLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLSL"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLSL" attribute="Normal Text" lineEndContext="#pop!HighlightingLSL">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLSL" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##LSL" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingLESSCSSCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLESSCSSCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLESSCSSCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLESSCSSCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLESSCSSCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLESSCSS"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLESSCSSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLESSCSS"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLESSCSS" attribute="Normal Text" lineEndContext="#pop!HighlightingLESSCSS">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLESSCSS" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##LESSCSS" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingLilyPondCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLilyPondCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLilyPondCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLilyPondCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLilyPondCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLilyPond"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLilyPondCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLilyPond"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLilyPond" attribute="Normal Text" lineEndContext="#pop!HighlightingLilyPond">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLilyPond" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##LilyPond" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingLiterate HaskellCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLiterate HaskellCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLiterate HaskellCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLiterate HaskellCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLiterate HaskellCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLiterate Haskell"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLiterate HaskellCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLiterate Haskell"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLiterate Haskell" attribute="Normal Text" lineEndContext="#pop!HighlightingLiterate Haskell">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLiterate Haskell" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Literate Haskell" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingLLVMCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLLVMCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLLVMCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLLVMCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLLVMCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLLVM"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLLVMCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLLVM"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLLVM" attribute="Normal Text" lineEndContext="#pop!HighlightingLLVM">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLLVM" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##LLVM" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingLogtalkCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLogtalkCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLogtalkCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLogtalkCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLogtalkCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLogtalk"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLogtalkCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLogtalk"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLogtalk" attribute="Normal Text" lineEndContext="#pop!HighlightingLogtalk">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLogtalk" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Logtalk" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingLuaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLuaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLuaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLuaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLuaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLua"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLuaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLua"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLua" attribute="Normal Text" lineEndContext="#pop!HighlightingLua">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLua" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Lua" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingMakefileCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMakefileCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMakefileCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMakefileCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMakefileCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMakefile"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMakefileCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMakefile"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMakefile" attribute="Normal Text" lineEndContext="#pop!HighlightingMakefile">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMakefile" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="strings_and_vars##Makefile">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Makefile" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingMakoCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMakoCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMakoCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMakoCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMakoCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMako"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMakoCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMako"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMako" attribute="Normal Text" lineEndContext="#pop!HighlightingMako">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMako" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Mako" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingMarkdownCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMarkdownCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMarkdownCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMarkdownCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMarkdownCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMarkdown"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMarkdownCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMarkdown"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMarkdown" attribute="Normal Text" lineEndContext="#pop!HighlightingMarkdown">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMarkdown" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Markdown" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingMasonCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMasonCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMasonCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMasonCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMasonCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMason"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMasonCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMason"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMason" attribute="Normal Text" lineEndContext="#pop!HighlightingMason">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMason" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Mason" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingMathematicaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMathematicaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMathematicaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMathematicaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMathematicaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMathematica"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMathematicaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMathematica"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMathematica" attribute="Normal Text" lineEndContext="#pop!HighlightingMathematica">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMathematica" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Mathematica" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingMatlabCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMatlabCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMatlabCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMatlabCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMatlabCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMatlab"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMatlabCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMatlab"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMatlab" attribute="Normal Text" lineEndContext="#pop!HighlightingMatlab">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMatlab" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Matlab" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingMaximaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMaximaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMaximaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMaximaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMaximaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMaxima"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMaximaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMaxima"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMaxima" attribute="Normal Text" lineEndContext="#pop!HighlightingMaxima">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMaxima" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Maxima" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingMesonCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingMesonCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingMesonCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingMesonCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingMesonCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMeson"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingMesonCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginMeson"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginMeson" attribute="Normal Text" lineEndContext="#pop!HighlightingMeson">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingMeson" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Meson" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingModelicaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingModelicaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingModelicaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingModelicaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingModelicaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginModelica"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingModelicaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginModelica"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginModelica" attribute="Normal Text" lineEndContext="#pop!HighlightingModelica">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingModelica" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Modelica" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingModula-2CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingModula-2CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingModula-2CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingModula-2CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingModula-2CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginModula-2"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingModula-2CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginModula-2"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginModula-2" attribute="Normal Text" lineEndContext="#pop!HighlightingModula-2">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingModula-2" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Modula-2" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSQL (MySQL)CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSQL (MySQL)CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSQL (MySQL)CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSQL (MySQL)CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSQL (MySQL)CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSQL (MySQL)"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSQL (MySQL)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSQL (MySQL)"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSQL (MySQL)" attribute="Normal Text" lineEndContext="#pop!HighlightingSQL (MySQL)">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSQL (MySQL)" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##SQL (MySQL)" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingNSISCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingNSISCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingNSISCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingNSISCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingNSISCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNSIS"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingNSISCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginNSIS"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginNSIS" attribute="Normal Text" lineEndContext="#pop!HighlightingNSIS">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingNSIS" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##NSIS" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingIntel x86 (NASM)CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingIntel x86 (NASM)CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingIntel x86 (NASM)CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingIntel x86 (NASM)CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingIntel x86 (NASM)CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginIntel x86 (NASM)"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingIntel x86 (NASM)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginIntel x86 (NASM)"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginIntel x86 (NASM)" attribute="Normal Text" lineEndContext="#pop!HighlightingIntel x86 (NASM)">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingIntel x86 (NASM)" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Intel x86 (NASM)" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingNemerleCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingNemerleCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingNemerleCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingNemerleCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingNemerleCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNemerle"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingNemerleCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginNemerle"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginNemerle" attribute="Normal Text" lineEndContext="#pop!HighlightingNemerle">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingNemerle" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Nemerle" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingnesCCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingnesCCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingnesCCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingnesCCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingnesCCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginnesC"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingnesCCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginnesC"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginnesC" attribute="Normal Text" lineEndContext="#pop!HighlightingnesC">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingnesC" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##nesC" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingNimCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingNimCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingNimCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingNimCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingNimCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNim"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingNimCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginNim"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginNim" attribute="Normal Text" lineEndContext="#pop!HighlightingNim">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingNim" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Nim" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingNixCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingNixCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingNixCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingNixCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingNixCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNix"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingNixCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginNix"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginNix" attribute="Normal Text" lineEndContext="#pop!HighlightingNix">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingNix" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Nix" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingObjective-CCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingObjective-CCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingObjective-CCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingObjective-CCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingObjective-CCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginObjective-C"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingObjective-CCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginObjective-C"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginObjective-C" attribute="Normal Text" lineEndContext="#pop!HighlightingObjective-C">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingObjective-C" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Objective-C" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingObjective-C++CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingObjective-C++CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingObjective-C++CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingObjective-C++CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingObjective-C++CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginObjective-C++"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingObjective-C++CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginObjective-C++"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginObjective-C++" attribute="Normal Text" lineEndContext="#pop!HighlightingObjective-C++">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingObjective-C++" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Objective-C++" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingObjective CamlCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingObjective CamlCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingObjective CamlCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingObjective CamlCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingObjective CamlCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginObjective Caml"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingObjective CamlCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginObjective Caml"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginObjective Caml" attribute="Normal Text" lineEndContext="#pop!HighlightingObjective Caml">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingObjective Caml" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Objective Caml" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingOctaveCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingOctaveCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingOctaveCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingOctaveCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingOctaveCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginOctave"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingOctaveCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginOctave"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginOctave" attribute="Normal Text" lineEndContext="#pop!HighlightingOctave">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingOctave" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Octave" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPerlCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPerlCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPerlCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPerlCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPerlCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPerl"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPerlCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPerl"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPerl" attribute="Normal Text" lineEndContext="#pop!HighlightingPerl">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPerl" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Perl" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPHP/PHPCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPHP/PHPCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPHP/PHPCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPHP/PHPCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPHP/PHPCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPHP/PHP"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPHP/PHPCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPHP/PHP"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPHP/PHP" attribute="Normal Text" lineEndContext="#pop!HighlightingPHP/PHP">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPHP/PHP" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##PHP/PHP" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPigCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPigCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPigCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPigCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPigCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPig"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPigCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPig"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPig" attribute="Normal Text" lineEndContext="#pop!HighlightingPig">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPig" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Pig" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingPikeCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPikeCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPikeCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPikeCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPikeCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPike"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPikeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPike"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPike" attribute="Normal Text" lineEndContext="#pop!HighlightingPike">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPike" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Pike" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPonyCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPonyCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPonyCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPonyCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPonyCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPony"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPonyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPony"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPony" attribute="Normal Text" lineEndContext="#pop!HighlightingPony">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPony" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Pony" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingPostScriptCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPostScriptCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPostScriptCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPostScriptCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPostScriptCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPostScript"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPostScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPostScript"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPostScript" attribute="Normal Text" lineEndContext="#pop!HighlightingPostScript">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPostScript" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##PostScript" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPOV-RayCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPOV-RayCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPOV-RayCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPOV-RayCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPOV-RayCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPOV-Ray"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPOV-RayCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPOV-Ray"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPOV-Ray" attribute="Normal Text" lineEndContext="#pop!HighlightingPOV-Ray">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPOV-Ray" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##POV-Ray" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPowerShellCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPowerShellCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPowerShellCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPowerShellCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPowerShellCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPowerShell"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPowerShellCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPowerShell"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPowerShell" attribute="Normal Text" lineEndContext="#pop!HighlightingPowerShell">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPowerShell" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##PowerShell" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPraatCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPraatCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPraatCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPraatCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPraatCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPraat"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPraatCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPraat"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPraat" attribute="Normal Text" lineEndContext="#pop!HighlightingPraat">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPraat" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Praat" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingPrologCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPrologCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPrologCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPrologCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPrologCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginProlog"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPrologCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginProlog"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginProlog" attribute="Normal Text" lineEndContext="#pop!HighlightingProlog">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingProlog" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Prolog" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingProtobufCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingProtobufCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingProtobufCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingProtobufCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingProtobufCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginProtobuf"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingProtobufCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginProtobuf"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginProtobuf" attribute="Normal Text" lineEndContext="#pop!HighlightingProtobuf">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingProtobuf" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Protobuf" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingPugCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPugCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPugCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPugCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPugCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPug"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPugCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPug"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPug" attribute="Normal Text" lineEndContext="#pop!HighlightingPug">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPug" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Pug" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingPuppetCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPuppetCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPuppetCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPuppetCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPuppetCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPuppet"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPuppetCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPuppet"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPuppet" attribute="Normal Text" lineEndContext="#pop!HighlightingPuppet">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPuppet" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Puppet" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingPythonCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingPythonCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingPythonCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingPythonCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingPythonCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPython"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingPythonCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginPython"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginPython" attribute="Normal Text" lineEndContext="#pop!HighlightingPython">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingPython" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Python"/>
+      </context>
+
+      <context name="HighlightingQMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingQMLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingQMLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingQMLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingQMLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginQML"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingQMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginQML"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginQML" attribute="Normal Text" lineEndContext="#pop!HighlightingQML">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingQML" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="Normal##QML" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingRelaxNG-CompactCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingRelaxNG-CompactCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingRelaxNG-CompactCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingRelaxNG-CompactCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingRelaxNG-CompactCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRelaxNG-Compact"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingRelaxNG-CompactCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginRelaxNG-Compact"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginRelaxNG-Compact" attribute="Normal Text" lineEndContext="#pop!HighlightingRelaxNG-Compact">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingRelaxNG-Compact" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##RelaxNG-Compact" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingRPM SpecCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingRPM SpecCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingRPM SpecCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingRPM SpecCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingRPM SpecCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRPM Spec"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingRPM SpecCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginRPM Spec"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginRPM Spec" attribute="Normal Text" lineEndContext="#pop!HighlightingRPM Spec">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingRPM Spec" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##RPM Spec" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingRacketCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingRacketCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingRacketCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingRacketCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingRacketCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRacket"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingRacketCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginRacket"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginRacket" attribute="Normal Text" lineEndContext="#pop!HighlightingRacket">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingRacket" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Racket" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingREXXCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingREXXCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingREXXCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingREXXCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingREXXCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginREXX"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingREXXCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginREXX"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginREXX" attribute="Normal Text" lineEndContext="#pop!HighlightingREXX">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingREXX" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##REXX" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingRuby/Rails/RHTMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingRuby/Rails/RHTMLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingRuby/Rails/RHTMLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingRuby/Rails/RHTMLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingRuby/Rails/RHTMLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRuby/Rails/RHTML"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingRuby/Rails/RHTMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginRuby/Rails/RHTML"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginRuby/Rails/RHTML" attribute="Normal Text" lineEndContext="#pop!HighlightingRuby/Rails/RHTML">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingRuby/Rails/RHTML" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Ruby/Rails/RHTML" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingreStructuredTextCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingreStructuredTextCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingreStructuredTextCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingreStructuredTextCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingreStructuredTextCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginreStructuredText"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingreStructuredTextCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginreStructuredText"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginreStructuredText" attribute="Normal Text" lineEndContext="#pop!HighlightingreStructuredText">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingreStructuredText" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##reStructuredText" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingRubyCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingRubyCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingRubyCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingRubyCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingRubyCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRuby"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingRubyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginRuby"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginRuby" attribute="Normal Text" lineEndContext="#pop!HighlightingRuby">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingRuby" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Expr##Ruby">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="Ruby##Ruby" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingRustCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingRustCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingRustCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingRustCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingRustCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRust"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingRustCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginRust"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginRust" attribute="Normal Text" lineEndContext="#pop!HighlightingRust">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingRust" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Rust" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSMLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSMLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSMLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSMLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSML"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSML"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSML" attribute="Normal Text" lineEndContext="#pop!HighlightingSML">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSML" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##SML" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSASSCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSASSCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSASSCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSASSCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSASSCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSASS"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSASSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSASS"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSASS" attribute="Normal Text" lineEndContext="#pop!HighlightingSASS">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSASS" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##SASS" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingScalaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingScalaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingScalaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingScalaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingScalaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginScala"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingScalaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginScala"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginScala" attribute="Normal Text" lineEndContext="#pop!HighlightingScala">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingScala" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Scala" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSchemeCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSchemeCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSchemeCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSchemeCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSchemeCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginScheme"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSchemeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginScheme"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginScheme" attribute="Normal Text" lineEndContext="#pop!HighlightingScheme">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingScheme" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Scheme" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingscilabCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingscilabCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingscilabCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingscilabCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingscilabCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginscilab"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingscilabCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginscilab"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginscilab" attribute="Normal Text" lineEndContext="#pop!Highlightingscilab">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="Highlightingscilab" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##scilab" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSCSSCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSCSSCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSCSSCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSCSSCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSCSSCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSCSS"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSCSSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSCSS"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSCSS" attribute="Normal Text" lineEndContext="#pop!HighlightingSCSS">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSCSS" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Selector##SCSS">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##SCSS" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingsedCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingsedCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingsedCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingsedCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingsedCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginsed"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingsedCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginsed"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginsed" attribute="Normal Text" lineEndContext="#pop!Highlightingsed">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="Highlightingsed" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Command##sed">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="Start##sed" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSieveCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSieveCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSieveCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSieveCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSieveCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSieve"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSieveCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSieve"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSieve" attribute="Normal Text" lineEndContext="#pop!HighlightingSieve">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSieve" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Sieve" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingSmaliCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSmaliCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSmaliCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSmaliCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSmaliCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSmali"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSmaliCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSmali"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSmali" attribute="Normal Text" lineEndContext="#pop!HighlightingSmali">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSmali" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Smali" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingSolidityCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSolidityCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSolidityCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSolidityCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSolidityCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSolidity"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSolidityCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSolidity"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSolidity" attribute="Normal Text" lineEndContext="#pop!HighlightingSolidity">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSolidity" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Solidity" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingSpiceCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSpiceCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSpiceCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSpiceCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSpiceCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSpice"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSpiceCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSpice"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSpice" attribute="Normal Text" lineEndContext="#pop!HighlightingSpice">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSpice" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Spice" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingSQLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSQLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSQLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSQLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSQLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSQL"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSQLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSQL"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSQL" attribute="Normal Text" lineEndContext="#pop!HighlightingSQL">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSQL" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##SQL" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingStanCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingStanCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingStanCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingStanCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingStanCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginStan"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingStanCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginStan"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginStan" attribute="Normal Text" lineEndContext="#pop!HighlightingStan">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingStan" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Stan" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingStataCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingStataCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingStataCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingStataCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingStataCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginStata"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingStataCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginStata"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginStata" attribute="Normal Text" lineEndContext="#pop!HighlightingStata">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingStata" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Stata" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSwiftCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSwiftCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSwiftCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSwiftCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSwiftCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSwift"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSwiftCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSwift"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSwift" attribute="Normal Text" lineEndContext="#pop!HighlightingSwift">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSwift" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Swift" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingSystemVerilogCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingSystemVerilogCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingSystemVerilogCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingSystemVerilogCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingSystemVerilogCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSystemVerilog"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingSystemVerilogCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginSystemVerilog"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginSystemVerilog" attribute="Normal Text" lineEndContext="#pop!HighlightingSystemVerilog">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingSystemVerilog" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##SystemVerilog" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingTOMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingTOMLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingTOMLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingTOMLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingTOMLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTOML"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingTOMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginTOML"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginTOML" attribute="Normal Text" lineEndContext="#pop!HighlightingTOML">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingTOML" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##TOML" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingTADS 3CodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingTADS 3CodeEnvSParam"/>
+      </context>
+      <context name="HighlightingTADS 3CodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingTADS 3CodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingTADS 3CodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTADS 3"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingTADS 3CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginTADS 3"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginTADS 3" attribute="Normal Text" lineEndContext="#pop!HighlightingTADS 3">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingTADS 3" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##TADS 3" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingTcl/TkCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingTcl/TkCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingTcl/TkCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingTcl/TkCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingTcl/TkCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTcl/Tk"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingTcl/TkCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginTcl/Tk"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginTcl/Tk" attribute="Normal Text" lineEndContext="#pop!HighlightingTcl/Tk">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingTcl/Tk" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Tcl/Tk" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingTcshCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingTcshCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingTcshCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingTcshCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingTcshCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTcsh"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingTcshCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginTcsh"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginTcsh" attribute="Normal Text" lineEndContext="#pop!HighlightingTcsh">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingTcsh" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Tcsh" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingTerraformCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingTerraformCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingTerraformCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingTerraformCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingTerraformCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTerraform"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingTerraformCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginTerraform"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginTerraform" attribute="Normal Text" lineEndContext="#pop!HighlightingTerraform">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingTerraform" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Terraform" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingLaTeXCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingLaTeXCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingLaTeXCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingLaTeXCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingLaTeXCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLaTeX"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingLaTeXCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginLaTeX"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginLaTeX" attribute="Normal Text" lineEndContext="#pop!HighlightingLaTeX">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingLaTeX" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##LaTeX" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingTodo.txtCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingTodo.txtCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingTodo.txtCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingTodo.txtCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingTodo.txtCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTodo.txt"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingTodo.txtCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginTodo.txt"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginTodo.txt" attribute="Normal Text" lineEndContext="#pop!HighlightingTodo.txt">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingTodo.txt" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Todo.txt" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingTypeScriptCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingTypeScriptCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingTypeScriptCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingTypeScriptCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingTypeScriptCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTypeScript"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingTypeScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginTypeScript"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginTypeScript" attribute="Normal Text" lineEndContext="#pop!HighlightingTypeScript">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingTypeScript" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingValaCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingValaCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingValaCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingValaCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingValaCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVala"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingValaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginVala"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginVala" attribute="Normal Text" lineEndContext="#pop!HighlightingVala">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingVala" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Vala" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingVelocityCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingVelocityCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingVelocityCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingVelocityCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingVelocityCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVelocity"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingVelocityCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginVelocity"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginVelocity" attribute="Normal Text" lineEndContext="#pop!HighlightingVelocity">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingVelocity" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##Velocity" includeAttrib="true"/> -->
+      </context>
+
+      <context name="HighlightingVerilogCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingVerilogCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingVerilogCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingVerilogCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingVerilogCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVerilog"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingVerilogCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginVerilog"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginVerilog" attribute="Normal Text" lineEndContext="#pop!HighlightingVerilog">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingVerilog" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##Verilog" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingVHDLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingVHDLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingVHDLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingVHDLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingVHDLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVHDL"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingVHDLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginVHDL"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginVHDL" attribute="Normal Text" lineEndContext="#pop!HighlightingVHDL">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingVHDL" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##VHDL" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingXMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingXMLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingXMLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingXMLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingXMLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginXML"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingXMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginXML"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginXML" attribute="Normal Text" lineEndContext="#pop!HighlightingXML">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingXML" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##XML" includeAttrib="true"/>
+      </context>
+
+      <context name="Highlightingx.org ConfigurationCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!Highlightingx.org ConfigurationCodeEnvSParam"/>
+      </context>
+      <context name="Highlightingx.org ConfigurationCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="Highlightingx.org ConfigurationCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="Highlightingx.org ConfigurationCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginx.org Configuration"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="Highlightingx.org ConfigurationCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginx.org Configuration"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginx.org Configuration" attribute="Normal Text" lineEndContext="#pop!Highlightingx.org Configuration">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="Highlightingx.org Configuration" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##x.org Configuration" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingxsltCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingxsltCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingxsltCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingxsltCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingxsltCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginxslt"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingxsltCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginxslt"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginxslt" attribute="Normal Text" lineEndContext="#pop!Highlightingxslt">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="Highlightingxslt" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##xslt" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingYAMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingYAMLCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingYAMLCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingYAMLCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingYAMLCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginYAML"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingYAMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginYAML"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginYAML" attribute="Normal Text" lineEndContext="#pop!HighlightingYAML">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingYAML" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <IncludeRules context="##YAML" includeAttrib="true"/>
+      </context>
+
+      <context name="HighlightingYANGCodeEnvS" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingYANGCodeEnvSParam"/>
+      </context>
+      <context name="HighlightingYANGCodeEnvSParam" attribute="Error" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="{" attribute="Normal Text" context="HighlightingYANGCodeEnvSParamInside"/>
+        <IncludeRules context="FindComments"/>
+      </context>
+      <context name="HighlightingYANGCodeEnvSParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginYANG"/>
+        <IncludeRules context="FindComments"/>
+        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+      </context>
+      <context name="HighlightingYANGCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" context="HighlightingBeginYANG"/>
+        <RegExpr String="[^}]*" attribute="Normal Text" context="#stay"/>
+      </context>
+      <context name="HighlightingBeginYANG" attribute="Normal Text" lineEndContext="#pop!HighlightingYANG">
+        <DetectSpaces/>
+        <RegExpr String=".+" attribute="Error" context="#stay"/>
+      </context>
+      <context name="HighlightingYANG" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="HighlightingCommon"/>
+        <!-- <IncludeRules context="##YANG" includeAttrib="true"/> -->
+      </context>
+      <!-- end of mintedcode environment -->
+
+      <!-- end of verbatim environment -->
+      <context name="VerbFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="VerbatimEnv" attribute="Environment"/>
+      </context>
+
+      <!-- begin comment environment -->
+      <context name="CommentEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="BlockComment"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+       </context>
+
+      <!-- parse comment text -->
+      <context name="BlockComment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <RegExpr String="\\end(?=\s*\{comment\*?\})" attribute="Structure" context="CommFindEnd"/>
+      </context>
+
+      <!-- end of comment environment -->
+      <context name="CommFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="CommentEnv" attribute="Environment"/>
+      </context>
+
+      <!-- environment type 4: math environment with its own mathmode -->
+      <context name="MathEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="MathModeEnv"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+
+      <!-- environment type 5: math environment with its own mathmode and parameter -->
+      <context name="MathEnvWithParam" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="MathEnvWithParamInside"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="MathEnvWithParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <RangeDetect char="[" char1="]" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvParamInside"/>
+      </context>
+      <context name="MathEnvParamInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop!MathModeEnv"/>
+      </context>
+
+      <!-- parse math environment -->
+      <context name="MathModeEnv" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Math" context="BackslashMathModeEnv" lookAhead="true"/>
+        <DetectChar char="$" attribute="Error" context="#stay"/>
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+      </context>
+      <context name="BackslashMathModeEnv" attribute="Math" lineEndContext="#pop">
+        <WordDetect String="\begin" attribute="Structure" context="#pop!FindBeginEnvironment" beginRegion="block" additionalDeliminator="\"/>
+        <WordDetect String="\end" attribute="Structure" context="#pop!MathFindEnd" additionalDeliminator="\"/>
+        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText"/>
+        <Detect2Chars char="\" char1="(" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1=")" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1="[" attribute="Error" context="#pop"/>
+        <Detect2Chars char="\" char1="]" attribute="Error" context="#pop"/>
+        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
+      </context>
+
+      <!-- end of math environment -->
+      <context name="MathFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <keyword String="MathEnvParam" attribute="Environment" context="MathFindEndInside"/>
+        <keyword String="MathEnv" attribute="Environment" context="MathFindEndInside"/>
+        <RegExpr String="&envname;" attribute="Environment" context="NoMathFindEndInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop#pop" endRegion="block"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="NoMathFindEndInside" attribute="Normal Text" lineEndContext="#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop" endRegion="block"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+
+      <!-- environment type 9: tabular -->
+      <context name="TabEnv" attribute="Environment" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Tab"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+
+      <!-- parse tabular text -->
+      <context name="Tab" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="&amp;" attribute="Ampersand" context="#stay"/>
+        <Detect2Chars char="@" char1="{" attribute="Column Separator" context="Column Separator"/>
+        <RegExpr String="\\end\b" attribute="Structure" context="TabFindEnd"/> <!-- endEnv -->
+        <IncludeRules context="Normal Text" />
+      </context>
+
+      <context name="Column Separator" attribute="Column Separator" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Column Separator" context="Column Separator"/>
+        <DetectChar char="}" attribute="Column Separator" context="#pop"/>
+      </context>
+
+      <!-- end of tabular environment -->
+      <context name="TabFindEnd" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="#stay"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop#pop" endRegion="block"/>
+        <keyword String="TabEnv" attribute="Environment" context="#stay"/>
+        <keyword String="TabuEnv" attribute="Environment" context="#stay"/>
+      </context>
+
+      <!-- environment type 10: tabu -->
+      <context name="TabuEnv" attribute="Environment" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
+        <DetectChar char="}" attribute="Normal Text" context="Tabu"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+
+      <!-- parse tabu options
+        \begin {tabu} [pos] {tabular preamble}
+        \begin {tabu} to <dimen> [pos] {tabular preamble}
+        \begin {tabu} spread <dimen> [pos] {tabular preamble}
+      -->
+      <context name="Tabu" attribute="Normal Text" lineEndContext="#pop!Tab">
+        <DetectChar char="{" attribute="Normal Text" context="TabuPreambule"/>
+        <DetectChar char="\" context="#pop!Tab" lookAhead="1"/>
+      </context>
+      <context name="TabuPreambule" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop!Tab"/>
+        <DetectChar char="{" attribute="Normal Text" context="TabuPreambuleInside"/>
+      </context>
+      <context name="TabuPreambuleInside" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="TabuPreambuleInside"/>
+      </context>
+
+      <!-- math mode: starting with $ -->
+      <context name="MathModeTex" attribute="Math" lineEndContext="#stay" fallthroughContext="#pop!MathMode">
+        <DetectChar char="$" attribute="Math" context="#pop!MathModeDisplay" beginRegion="mathMode"/>
+      </context>
+      <context name="MathMode" attribute="Math" lineEndContext="#stay">
+        <DetectChar char="$" attribute="Math" context="#pop"/>
+        <IncludeRules context="MathModeCommon"/>
+      </context>
+
+      <!-- math mode: starting with $$ -->
+      <context name="MathModeDisplay" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="$" char1="$" attribute="Math" context="#pop" endRegion="mathMode"/>
+        <DetectChar char="$" attribute="Error" context="#stay"/>
+        <IncludeRules context="MathModeCommon"/>
+      </context>
+
+      <!-- math mode: starting with \( -->
+      <context name="MathModeLatex" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="\" char1=")" attribute="Math" context="#pop"/>
+        <IncludeRules context="MathModeCommon"/>
+      </context>
+
+      <!-- math mode: starting with \[ -->
+      <context name="MathModeLatexEquation" attribute="Math" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="]" attribute="Math" context="#pop" endRegion="mathMode"/>
+        <IncludeRules context="MathModeCommon"/>
+      </context>
+
+      <!-- math mode: \ensuremath{...} -->
+      <context name="MathModeEnsure" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Math" context="#pop!MathModeEnsureInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathModeEnsureInside" attribute="Math" lineEndContext="#stay">
+        <DetectChar char="{" attribute="Math" context="MathModeEnsureInside" />
+        <DetectChar char="}" attribute="Math" context="#pop" />
+        <IncludeRules context="MathModeCommon"/>
+      </context>
+
+      <!-- math mode common -->
+      <context name="MathModeCommon" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Math" context="BackslashMathModeCommon" lookAhead="true"/>
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+      </context>
+      <context name="BackslashMathModeCommon" attribute="Math" lineEndContext="#pop">
+        <WordDetect String="\begin" attribute="Structure" context="#pop!MathEnvironment" beginRegion="block" additionalDeliminator="\"/>
+        <WordDetect String="\end" attribute="Structure" context="#pop!MathEnvironmentEnd" additionalDeliminator="\"/>
+        <keyword String="MathModeText" attribute="Macro Mathmode" context="#pop!MathModeText" />
+        <DetectChar char="\" attribute="Macro Mathmode" context="#pop!MathContrSeq"/>
+      </context>
+      <context name="MathEnvironment" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathEnvironmentInside" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <keyword String="TabuEnv" attribute="Environment" context="MathTabuEnv"/>
+        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
+        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#stay"/>
+      </context>
+      <context name="MathEnvironmentEnd" attribute="Math" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathEnvironmentEndInside"/>
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+      <context name="MathEnvironmentEndInside" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop" endRegion="block"/>
+        <WordDetect String="ensuremath" attribute="Environment" context="#pop!LatexEnvEnd"/>
+        <RegExpr String="&envname;" attribute="Environment" context="#stay"/>
+        <RegExpr String="[^}a-zA-Z]+|." attribute="Error" context="#pop#pop"/>
+      </context>
+
+      <!-- tabu in mathmode
+        \begin {tabu} [pos] {tabular preamble}
+        \begin {tabu} to <dimen> [pos] {tabular preamble}
+        \begin {tabu} spread <dimen> [pos] {tabular preamble}
+      -->
+      <context name="MathTabuEnv" attribute="Environment" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="MathTabu"/>
+        <RegExpr String="[^}]*" attribute="Error" context="#stay"/>
+      </context>
+      <context name="MathTabu" attribute="Math" lineEndContext="#pop#pop#pop#pop">
+        <DetectChar char="{" attribute="Normal Text" context="#pop#pop#pop#pop!MathTabuPreambule"/>
+        <DetectChar char="\" context="#pop#pop#pop#pop" lookAhead="1"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop#pop#pop"/>
+      </context>
+      <context name="MathTabuPreambule" attribute="Math" lineEndContext="#stay">
+        <DetectChar char="}" attribute="Normal Text" context="#pop"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathTabuPreambule"/>
+      </context>
+
+      <!-- command in mathmode -->
+      <context name="MathContrSeq" attribute="Macro Mathmode" lineEndContext="#pop">
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RegExpr String="&envname;|." attribute="Macro Mathmode" context="#pop" />
+      </context>
+
+      <!-- text in mathmode -->
+      <context name="MathModeText" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="MathContrSeq">
+        <DetectSpaces/>
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
+      </context>
+      <context name="MathModeTextInside" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextParameterStart"/>
+      </context>
+
+      <context name="MathModeTextParameterStart" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar char="&bullet;" attribute="Bullet" context="#stay"/>
+        <RangeDetect char="$" char1="$" attribute="Math" context="#stay"/>
+        <DetectChar char="{" attribute="Normal Text" context="MathModeTextInside" lookAhead="true"/>
+        <DetectChar char="}" attribute="Normal Text" context="#pop#pop"/>
+        <IncludeRules context="FindComments"/>
+        <DetectChar char="\" attribute="Macro Mathmode" context="MathContrSeq"/>
+      </context>
+
+      <!-- iffalse aka multiline comment -->
+      <context name="Multiline Comment" attribute="Comment" lineEndContext="#stay">
+        <DetectChar char="\" attribute="Comment" context="BackslashMultilineComment" lookAhead="true"/>
+      </context>
+      <context name="BackslashMultilineComment" attribute="Comment" lineEndContext="#pop">
+        <keyword String="iffalseend" attribute="Comment" context="#pop#pop"/>
+        <DetectChar char="\" attribute="Comment" context="#pop"/>
+      </context>
+
+      <!-- comment -->
+      <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr String="&#037;+\s*BEGIN\b" attribute="Region Marker" context="RegionComment" firstNonSpace="true" beginRegion="region-marker"/>
+        <RegExpr String="&#037;+\s*END\b" attribute="Region Marker" context="RegionComment" firstNonSpace="true" endRegion="region-marker"/>
+        <DetectChar char="%" attribute="Comment" context="Comment"/>
+      </context>
+      <context name="RegionComment" attribute="Region Marker" lineEndContext="#pop"/>
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments" />
+        <DetectIdentifier/>
+        <DetectChar char="\" attribute="Comment" context="BackslashComment" lookAhead="true"/>
+      </context>
+      <context name="BackslashComment" attribute="Comment" lineEndContext="#pop">
+        <keyword String="ResetHL" attribute="Comment" context="#pop!Normal Text"/>
+        <DetectChar char="\" attribute="Comment" context="#pop"/>
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Option Text" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Macro" defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment" spellChecking="false"/>
+      <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+      <itemData name="Math" defStyleNum="dsSpecialString" spellChecking="false"/>
+      <!-- begin/end -->
+      <itemData name="Structure" defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Builtin Macro" defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Macro Mathmode" defStyleNum="dsSpecialChar" spellChecking="false"/>
+      <itemData name="Environment" defStyleNum="dsExtension" spellChecking="false"/>
+      <itemData name="Reference" defStyleNum="dsExtension" spellChecking="false"/>
+      <itemData name="Verbatim" defStyleNum="dsVerbatimString" spellChecking="false"/>
+      <itemData name="Verbatim Code" defStyleNum="dsVerbatimString" spellChecking="false"/>
       <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
       <itemData name="Bullet" defStyleNum="dsInformation" spellChecking="false"/>
       <itemData name="Ampersand" defStyleNum="dsOperator" bold="1" spellChecking="false"/>
diff --git a/xml/latex.xml.patch b/xml/latex.xml.patch
new file mode 100644
--- /dev/null
+++ b/xml/latex.xml.patch
@@ -0,0 +1,1631 @@
+--- latex.xml	2022-10-28 15:10:10.000000000 -0700
++++ latex.xml.2	2022-10-28 15:09:24.000000000 -0700
+@@ -1739,7 +1739,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!UnknownHighlightingBegin"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="UnknownHighlightingCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="UnknownHighlightingBegin"/>
+@@ -2016,7 +2016,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginABAP"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingABAPCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginABAP"/>
+@@ -2028,7 +2028,7 @@
+       </context>
+       <context name="HighlightingABAP" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##ABAP" includeAttrib="true"/>
++        <!--        <IncludeRules context="##ABAP" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingActionScript 2.0CodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -2045,7 +2045,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginActionScript 2.0"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingActionScript 2.0CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginActionScript 2.0"/>
+@@ -2074,7 +2074,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAda"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingAdaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginAda"/>
+@@ -2103,7 +2103,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAgda"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingAgdaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginAgda"/>
+@@ -2132,7 +2132,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginApache Configuration"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingApache ConfigurationCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginApache Configuration"/>
+@@ -2161,7 +2161,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAutoHotKey"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingAutoHotKeyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginAutoHotKey"/>
+@@ -2173,7 +2173,7 @@
+       </context>
+       <context name="HighlightingAutoHotKey" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##AutoHotKey" includeAttrib="true"/>
++        <!-- <IncludeRules context="##AutoHotKey" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingAWKCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -2190,7 +2190,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginAWK"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingAWKCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginAWK"/>
+@@ -2219,7 +2219,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginBash"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingBashCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginBash"/>
+@@ -2248,7 +2248,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginBibTeX"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingBibTeXCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginBibTeX"/>
+@@ -2277,7 +2277,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginBoo"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingBooCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginBoo"/>
+@@ -2306,7 +2306,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginC"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingCCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginC"/>
+@@ -2335,7 +2335,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCMake"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingCMakeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginCMake"/>
+@@ -2364,7 +2364,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginC#"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingC#CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginC#"/>
+@@ -2393,7 +2393,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginClojure"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingClojureCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginClojure"/>
+@@ -2422,7 +2422,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCoffeeScript"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingCoffeeScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginCoffeeScript"/>
+@@ -2451,7 +2451,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCommon Lisp"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingCommon LispCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginCommon Lisp"/>
+@@ -2480,7 +2480,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginC++"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingC++CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginC++"/>
+@@ -2509,7 +2509,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginCSS"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingCSSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginCSS"/>
+@@ -2538,7 +2538,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginD"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingDCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginD"/>
+@@ -2567,7 +2567,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginDart"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingDartCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginDart"/>
+@@ -2596,7 +2596,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPascal"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPascalCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPascal"/>
+@@ -2625,7 +2625,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginDiff"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingDiffCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginDiff"/>
+@@ -2654,7 +2654,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginDTD"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingDTDCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginDTD"/>
+@@ -2683,7 +2683,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginEiffel"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingEiffelCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginEiffel"/>
+@@ -2712,7 +2712,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginElixir"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingElixirCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginElixir"/>
+@@ -2741,7 +2741,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginElm"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingElmCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginElm"/>
+@@ -2770,7 +2770,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginEmail"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingEmailCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginEmail"/>
+@@ -2799,7 +2799,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginErlang"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingErlangCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginErlang"/>
+@@ -2828,7 +2828,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginFish"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingFishCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginFish"/>
+@@ -2840,7 +2840,7 @@
+       </context>
+       <context name="HighlightingFish" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Fish" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Fish" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingANS-Forth94CodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -2857,7 +2857,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginANS-Forth94"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingANS-Forth94CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginANS-Forth94"/>
+@@ -2869,7 +2869,7 @@
+       </context>
+       <context name="HighlightingANS-Forth94" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##ANS-Forth94" includeAttrib="true"/>
++        <!-- <IncludeRules context="##ANS-Forth94" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingFortran (Fixed Format)CodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -2886,7 +2886,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginFortran (Fixed Format)"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingFortran (Fixed Format)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginFortran (Fixed Format)"/>
+@@ -2915,7 +2915,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginFortran (Free Format)"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingFortran (Free Format)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginFortran (Free Format)"/>
+@@ -2944,7 +2944,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGAP"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingGAPCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginGAP"/>
+@@ -2956,7 +2956,7 @@
+       </context>
+       <context name="HighlightingGAP" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##GAP" includeAttrib="true"/>
++        <!-- <IncludeRules context="##GAP" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingGodotCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -2973,7 +2973,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGodot"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingGodotCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginGodot"/>
+@@ -2985,7 +2985,7 @@
+       </context>
+       <context name="HighlightingGodot" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Godot" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Godot" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingGLSLCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3002,7 +3002,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGLSL"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingGLSLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginGLSL"/>
+@@ -3031,7 +3031,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginG-Code"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingG-CodeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginG-Code"/>
+@@ -3043,7 +3043,7 @@
+       </context>
+       <context name="HighlightingG-Code" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##G-Code" includeAttrib="true"/>
++        <!-- <IncludeRules context="##G-Code" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingGnuplotCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3060,7 +3060,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGnuplot"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingGnuplotCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginGnuplot"/>
+@@ -3072,7 +3072,7 @@
+       </context>
+       <context name="HighlightingGnuplot" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Gnuplot" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Gnuplot" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingGoCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3089,7 +3089,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGo"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingGoCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginGo"/>
+@@ -3118,7 +3118,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginGroovy"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingGroovyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginGroovy"/>
+@@ -3147,7 +3147,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHaml"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingHamlCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginHaml"/>
+@@ -3159,7 +3159,7 @@
+       </context>
+       <context name="HighlightingHaml" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Haml" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Haml" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingHaskellCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3176,7 +3176,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHaskell"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingHaskellCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginHaskell"/>
+@@ -3205,7 +3205,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHaxe"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingHaxeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginHaxe"/>
+@@ -3234,7 +3234,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginHTML"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingHTMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginHTML"/>
+@@ -3263,7 +3263,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginIDL"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingIDLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginIDL"/>
+@@ -3275,7 +3275,7 @@
+       </context>
+       <context name="HighlightingIDL" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##IDL" includeAttrib="true"/>
++        <!-- <IncludeRules context="##IDL" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingIdrisCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3292,7 +3292,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginIdris"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingIdrisCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginIdris"/>
+@@ -3321,7 +3321,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginInform"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingInformCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginInform"/>
+@@ -3333,7 +3333,7 @@
+       </context>
+       <context name="HighlightingInform" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Inform" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Inform" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingINI FilesCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3350,7 +3350,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginINI Files"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingINI FilesCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginINI Files"/>
+@@ -3379,7 +3379,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJ"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingJCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginJ"/>
+@@ -3408,7 +3408,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJava"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingJavaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginJava"/>
+@@ -3437,7 +3437,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJavaScript"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingJavaScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginJavaScript"/>
+@@ -3466,7 +3466,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJCL"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingJCLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginJCL"/>
+@@ -3478,7 +3478,7 @@
+       </context>
+       <context name="HighlightingJCL" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##JCL" includeAttrib="true"/>
++        <!-- <IncludeRules context="##JCL" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingJSONCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3495,7 +3495,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJSON"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingJSONCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginJSON"/>
+@@ -3524,7 +3524,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginJulia"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingJuliaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginJulia"/>
+@@ -3553,7 +3553,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginKconfig"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingKconfigCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginKconfig"/>
+@@ -3565,7 +3565,7 @@
+       </context>
+       <context name="HighlightingKconfig" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Kconfig" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Kconfig" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingKotlinCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3582,7 +3582,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginKotlin"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingKotlinCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginKotlin"/>
+@@ -3611,7 +3611,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLSL"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLSLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLSL"/>
+@@ -3623,7 +3623,7 @@
+       </context>
+       <context name="HighlightingLSL" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##LSL" includeAttrib="true"/>
++        <!-- <IncludeRules context="##LSL" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingLESSCSSCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3640,7 +3640,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLESSCSS"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLESSCSSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLESSCSS"/>
+@@ -3652,7 +3652,7 @@
+       </context>
+       <context name="HighlightingLESSCSS" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##LESSCSS" includeAttrib="true"/>
++        <!-- <IncludeRules context="##LESSCSS" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingLilyPondCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3669,7 +3669,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLilyPond"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLilyPondCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLilyPond"/>
+@@ -3698,7 +3698,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLiterate Haskell"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLiterate HaskellCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLiterate Haskell"/>
+@@ -3727,7 +3727,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLLVM"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLLVMCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLLVM"/>
+@@ -3756,7 +3756,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLogtalk"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLogtalkCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLogtalk"/>
+@@ -3768,7 +3768,7 @@
+       </context>
+       <context name="HighlightingLogtalk" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Logtalk" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Logtalk" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingLuaCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3785,7 +3785,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLua"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLuaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLua"/>
+@@ -3814,7 +3814,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMakefile"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMakefileCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMakefile"/>
+@@ -3843,7 +3843,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMako"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMakoCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMako"/>
+@@ -3855,7 +3855,7 @@
+       </context>
+       <context name="HighlightingMako" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Mako" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Mako" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingMarkdownCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3872,7 +3872,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMarkdown"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMarkdownCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMarkdown"/>
+@@ -3901,7 +3901,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMason"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMasonCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMason"/>
+@@ -3913,7 +3913,7 @@
+       </context>
+       <context name="HighlightingMason" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Mason" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Mason" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingMathematicaCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -3930,7 +3930,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMathematica"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMathematicaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMathematica"/>
+@@ -3959,7 +3959,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMatlab"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMatlabCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMatlab"/>
+@@ -3988,7 +3988,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMaxima"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMaximaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMaxima"/>
+@@ -4017,7 +4017,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginMeson"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingMesonCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginMeson"/>
+@@ -4029,7 +4029,7 @@
+       </context>
+       <context name="HighlightingMeson" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Meson" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Meson" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingModelicaCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4046,7 +4046,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginModelica"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingModelicaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginModelica"/>
+@@ -4058,7 +4058,7 @@
+       </context>
+       <context name="HighlightingModelica" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Modelica" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Modelica" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingModula-2CodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4075,7 +4075,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginModula-2"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingModula-2CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginModula-2"/>
+@@ -4104,7 +4104,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSQL (MySQL)"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSQL (MySQL)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSQL (MySQL)"/>
+@@ -4133,7 +4133,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNSIS"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingNSISCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginNSIS"/>
+@@ -4145,7 +4145,7 @@
+       </context>
+       <context name="HighlightingNSIS" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##NSIS" includeAttrib="true"/>
++        <!-- <IncludeRules context="##NSIS" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingIntel x86 (NASM)CodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4162,7 +4162,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginIntel x86 (NASM)"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingIntel x86 (NASM)CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginIntel x86 (NASM)"/>
+@@ -4191,7 +4191,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNemerle"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingNemerleCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginNemerle"/>
+@@ -4203,7 +4203,7 @@
+       </context>
+       <context name="HighlightingNemerle" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Nemerle" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Nemerle" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingnesCCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4220,7 +4220,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginnesC"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingnesCCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginnesC"/>
+@@ -4232,7 +4232,7 @@
+       </context>
+       <context name="HighlightingnesC" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##nesC" includeAttrib="true"/>
++        <!-- <IncludeRules context="##nesC" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingNimCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4249,7 +4249,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNim"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingNimCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginNim"/>
+@@ -4278,7 +4278,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginNix"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingNixCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginNix"/>
+@@ -4307,7 +4307,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginObjective-C"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingObjective-CCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginObjective-C"/>
+@@ -4336,7 +4336,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginObjective-C++"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingObjective-C++CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginObjective-C++"/>
+@@ -4365,7 +4365,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginObjective Caml"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingObjective CamlCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginObjective Caml"/>
+@@ -4394,7 +4394,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginOctave"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingOctaveCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginOctave"/>
+@@ -4423,7 +4423,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPerl"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPerlCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPerl"/>
+@@ -4452,7 +4452,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPHP/PHP"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPHP/PHPCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPHP/PHP"/>
+@@ -4481,7 +4481,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPig"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPigCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPig"/>
+@@ -4493,7 +4493,7 @@
+       </context>
+       <context name="HighlightingPig" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Pig" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Pig" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingPikeCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4510,7 +4510,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPike"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPikeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPike"/>
+@@ -4539,7 +4539,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPony"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPonyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPony"/>
+@@ -4551,7 +4551,7 @@
+       </context>
+       <context name="HighlightingPony" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Pony" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Pony" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingPostScriptCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4568,7 +4568,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPostScript"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPostScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPostScript"/>
+@@ -4597,7 +4597,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPOV-Ray"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPOV-RayCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPOV-Ray"/>
+@@ -4626,7 +4626,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPowerShell"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPowerShellCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPowerShell"/>
+@@ -4655,7 +4655,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPraat"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPraatCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPraat"/>
+@@ -4667,7 +4667,7 @@
+       </context>
+       <context name="HighlightingPraat" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Praat" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Praat" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingPrologCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4684,7 +4684,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginProlog"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPrologCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginProlog"/>
+@@ -4713,7 +4713,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginProtobuf"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingProtobufCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginProtobuf"/>
+@@ -4742,7 +4742,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPug"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPugCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPug"/>
+@@ -4754,7 +4754,7 @@
+       </context>
+       <context name="HighlightingPug" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Pug" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Pug" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingPuppetCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4771,7 +4771,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPuppet"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPuppetCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPuppet"/>
+@@ -4783,7 +4783,7 @@
+       </context>
+       <context name="HighlightingPuppet" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Puppet" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Puppet" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingPythonCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4800,7 +4800,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginPython"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingPythonCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginPython"/>
+@@ -4829,7 +4829,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginQML"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingQMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginQML"/>
+@@ -4858,7 +4858,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRelaxNG-Compact"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingRelaxNG-CompactCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginRelaxNG-Compact"/>
+@@ -4887,7 +4887,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRPM Spec"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingRPM SpecCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginRPM Spec"/>
+@@ -4899,7 +4899,7 @@
+       </context>
+       <context name="HighlightingRPM Spec" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##RPM Spec" includeAttrib="true"/>
++        <!-- <IncludeRules context="##RPM Spec" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingRacketCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4916,7 +4916,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRacket"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingRacketCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginRacket"/>
+@@ -4928,7 +4928,7 @@
+       </context>
+       <context name="HighlightingRacket" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Racket" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Racket" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingREXXCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4945,7 +4945,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginREXX"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingREXXCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginREXX"/>
+@@ -4957,7 +4957,7 @@
+       </context>
+       <context name="HighlightingREXX" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##REXX" includeAttrib="true"/>
++        <!-- <IncludeRules context="##REXX" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingRuby/Rails/RHTMLCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -4974,7 +4974,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRuby/Rails/RHTML"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingRuby/Rails/RHTMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginRuby/Rails/RHTML"/>
+@@ -5003,7 +5003,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginreStructuredText"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingreStructuredTextCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginreStructuredText"/>
+@@ -5032,7 +5032,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRuby"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingRubyCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginRuby"/>
+@@ -5061,7 +5061,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginRust"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingRustCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginRust"/>
+@@ -5090,7 +5090,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSML"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSML"/>
+@@ -5119,7 +5119,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSASS"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSASSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSASS"/>
+@@ -5148,7 +5148,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginScala"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingScalaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginScala"/>
+@@ -5177,7 +5177,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginScheme"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSchemeCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginScheme"/>
+@@ -5206,7 +5206,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginscilab"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingscilabCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginscilab"/>
+@@ -5235,7 +5235,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSCSS"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSCSSCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSCSS"/>
+@@ -5264,7 +5264,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginsed"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingsedCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginsed"/>
+@@ -5293,7 +5293,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSieve"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSieveCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSieve"/>
+@@ -5305,7 +5305,7 @@
+       </context>
+       <context name="HighlightingSieve" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Sieve" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Sieve" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingSmaliCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5322,7 +5322,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSmali"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSmaliCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSmali"/>
+@@ -5334,7 +5334,7 @@
+       </context>
+       <context name="HighlightingSmali" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Smali" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Smali" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingSolidityCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5351,7 +5351,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSolidity"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSolidityCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSolidity"/>
+@@ -5363,7 +5363,7 @@
+       </context>
+       <context name="HighlightingSolidity" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Solidity" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Solidity" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingSpiceCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5380,7 +5380,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSpice"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSpiceCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSpice"/>
+@@ -5392,7 +5392,7 @@
+       </context>
+       <context name="HighlightingSpice" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Spice" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Spice" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingSQLCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5409,7 +5409,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSQL"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSQLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSQL"/>
+@@ -5438,7 +5438,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginStan"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingStanCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginStan"/>
+@@ -5467,7 +5467,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginStata"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingStataCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginStata"/>
+@@ -5496,7 +5496,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSwift"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSwiftCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSwift"/>
+@@ -5525,7 +5525,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginSystemVerilog"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingSystemVerilogCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginSystemVerilog"/>
+@@ -5554,7 +5554,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTOML"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingTOMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginTOML"/>
+@@ -5583,7 +5583,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTADS 3"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingTADS 3CodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginTADS 3"/>
+@@ -5595,7 +5595,7 @@
+       </context>
+       <context name="HighlightingTADS 3" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##TADS 3" includeAttrib="true"/>
++        <!-- <IncludeRules context="##TADS 3" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingTcl/TkCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5612,7 +5612,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTcl/Tk"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingTcl/TkCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginTcl/Tk"/>
+@@ -5641,7 +5641,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTcsh"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingTcshCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginTcsh"/>
+@@ -5670,7 +5670,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTerraform"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingTerraformCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginTerraform"/>
+@@ -5682,7 +5682,7 @@
+       </context>
+       <context name="HighlightingTerraform" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Terraform" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Terraform" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingLaTeXCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5699,7 +5699,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginLaTeX"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingLaTeXCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginLaTeX"/>
+@@ -5728,7 +5728,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTodo.txt"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingTodo.txtCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginTodo.txt"/>
+@@ -5740,7 +5740,7 @@
+       </context>
+       <context name="HighlightingTodo.txt" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Todo.txt" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Todo.txt" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingTypeScriptCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5757,7 +5757,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginTypeScript"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingTypeScriptCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginTypeScript"/>
+@@ -5786,7 +5786,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVala"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingValaCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginVala"/>
+@@ -5798,7 +5798,7 @@
+       </context>
+       <context name="HighlightingVala" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Vala" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Vala" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingVelocityCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5815,7 +5815,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVelocity"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingVelocityCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginVelocity"/>
+@@ -5827,7 +5827,7 @@
+       </context>
+       <context name="HighlightingVelocity" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##Velocity" includeAttrib="true"/>
++        <!-- <IncludeRules context="##Velocity" includeAttrib="true"/> -->
+       </context>
+ 
+       <context name="HighlightingVerilogCodeEnvS" attribute="Error" lineEndContext="#stay">
+@@ -5844,7 +5844,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVerilog"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingVerilogCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginVerilog"/>
+@@ -5873,7 +5873,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginVHDL"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingVHDLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginVHDL"/>
+@@ -5902,7 +5902,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginXML"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingXMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginXML"/>
+@@ -5931,7 +5931,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginx.org Configuration"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="Highlightingx.org ConfigurationCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginx.org Configuration"/>
+@@ -5960,7 +5960,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginxslt"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingxsltCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginxslt"/>
+@@ -5989,7 +5989,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginYAML"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingYAMLCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginYAML"/>
+@@ -6018,7 +6018,7 @@
+         <DetectIdentifier/>
+         <DetectChar char="}" attribute="Normal Text" context="#pop!HighlightingBeginYANG"/>
+         <IncludeRules context="FindComments"/>
+-        <RegExpr String="\&envname;" attribute="Macro" context="#stay"/>
++        <RegExpr String="\\&envname;" attribute="Macro" context="#stay"/>
+       </context>
+       <context name="HighlightingYANGCodeEnv" attribute="Normal Text" lineEndContext="#stay">
+         <DetectChar char="}" context="HighlightingBeginYANG"/>
+@@ -6030,7 +6030,7 @@
+       </context>
+       <context name="HighlightingYANG" attribute="Normal Text" lineEndContext="#stay">
+         <IncludeRules context="HighlightingCommon"/>
+-        <IncludeRules context="##YANG" includeAttrib="true"/>
++        <!-- <IncludeRules context="##YANG" includeAttrib="true"/> -->
+       </context>
+       <!-- end of mintedcode environment -->
+ 
diff --git a/xml/lex.xml b/xml/lex.xml
--- a/xml/lex.xml
+++ b/xml/lex.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
   ========================================================================
 
@@ -20,7 +20,7 @@
   
   ========================================================================
 -->
-<language name="Lex/Flex" version="7" kateversion="5.0" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+<language name="Lex/Flex" version="7" kateversion="5.79" section="Sources" extensions="*.l;*.lex;*.flex" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -34,7 +34,7 @@
     <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" column="0" beginRegion="BlockComment"/>
     <RegExpr attribute="Definition" context="Definition RegExpr" String="^[A-Za-z_]\w*\s+" column="0"/>
   </context>
-  <context name="Rules" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">
+  <context name="Rules" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Rule RegExpr">
     <IncludeRules context="Detect C" />
     <Detect2Chars attribute="Content-Type Delimiter" context="User Code" char="%" char1="%" beginRegion="code" endRegion="rules" />
   </context>
@@ -89,12 +89,12 @@
     <DetectChar attribute="RegExpr" context="RegExpr Q" char="&quot;" />  
   </context>
   
-  <context name="Start Conditions Scope" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="Rule RegExpr">
+  <context name="Start Conditions Scope" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="Rule RegExpr">
     <RegExpr attribute="Content-Type Delimiter" context="#pop" String="\s*\}" endRegion="SCscope" />
     <DetectSpaces attribute="Normal Text" context="Rule RegExpr" />
   </context>
   
-  <context name="Action" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="Action C">
+  <context name="Action" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="Action C">
     <RegExpr attribute="Directive" context="#stay" String="\|\s*$" />
     <Detect2Chars attribute="Content-Type Delimiter" context="Lex Rule C Bloc" char="%" char1="{" beginRegion="lexCbloc" />
   </context>
diff --git a/xml/lilypond.xml b/xml/lilypond.xml
--- a/xml/lilypond.xml
+++ b/xml/lilypond.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd" [
+<!DOCTYPE language [
   <!ENTITY b "(?![A-Za-z])">
   <!ENTITY rest "\b[srR]&b;">
   <!ENTITY pitch "\b([a-h]((iss){1,2}|(ess){1,2}|(is){1,2}|(es){1,2}|(sharp){1,2}|(flat){1,2}|ss?|ff?)?|(do|re|mi|fa|sol|la|si)(dd?|bb?|ss?|kk?)?|q)('+|,+|&b;)">
@@ -23,7 +23,7 @@
   <!ENTITY markupnotextargs "arrow-head|beam|char|(semi|sesqui|double)?(flat|sharp)|draw-(circle|line)|epsfile|eyeglasses|filled-box|fret-diagram(-terse|-verbose)?|fromproperty|harp-pedal|(justify|wordwrap)-(field|string)|left-brace|lookup|markalphabet|markletter|musicglyph|natural|note-by-number|note|null|path|right-brace|simple|(back)?slashed-digit|stencil|strut|tied-lyric|triangle|verbatim-file">
   <!ENTITY markupwithtextargs "markup|bold|(rounded-)?box|bracket|caps|(center|general|left|right)-align|circle|((center|dir|left|right)-)?column|combine|concat|dynamic|fill-line|finger|fontCaps|(abs-)?fontsize|fraction|halign|hbracket|hcenter-in|hcenter|hspace|huge|italic|justify|larger?|line|lower|magnify|medium|normal-size-(sub|super)|normal-text|normalsize|number|on-the-fly|override|pad-(around|markup|to-box|x)|page-ref|postscript|put-adjacent|raise|roman|rotate|sans|small(er)?|smallCaps|sub|super|teeny|text|tiny|translate(-scaled)?|transparent|typewriter|underline|upright|vcenter|whiteout|with-(color|dimensions|url)|wordwrap|(markup|column-|justified-|override-|wordwrap-)lines|wordwrap-(string-)?internal">
   <!ENTITY deprecatedmarkup "bigger|h?center">
-  <!ENTITY headervars "dedication|(sub){,2}title|poet|composer|meter|opus|arranger|instrument|piece|breakbefore|copyright|tagline|mutopia(title|composer|poet|opus|instrument)|date|enteredby|source|style|maintainer(Email|Web)?|moreInfo|lastupdated|texidoc|footer">
+  <!ENTITY headervars "dedication|(?:sub){0,2}title|poet|composer|meter|opus|arranger|instrument|piece|breakbefore|copyright|tagline|mutopia(title|composer|poet|opus|instrument)|date|enteredby|source|style|maintainer(Email|Web)?|moreInfo|lastupdated|texidoc|footer">
 
   <!-- The '-new' entities are for for LilyPond 2.13.4 and higher, and '-old' for LilyPond up to 2.12 -->
   <!ENTITY paper-margin "(top|bottom|left|right)-margin|(foot|head)-separation|indent|short-indent|paper-(height|width)|horizontal-shift|line-width">
@@ -56,7 +56,7 @@
 ]>
 <language name="LilyPond" section="Other"
           style="lilypond" indenter="lilypond"
-          version="10" kateversion="5.0"
+          version="11" kateversion="5.0"
           extensions="*.ly;*.LY;*.ily;*.ILY;*.lyi;*.LYI"
           mimetype="text/x-lilypond"
           author="Wilbert Berendsen (info@wilbertberendsen.nl)" license="LGPL">
@@ -1076,7 +1076,7 @@
         <RegExpr String="(&quot;?)\b(?:&engravers00;|&engravers01;|&engravers02;|&engravers1;|&engravers2;)\b\1" attribute="Engraver"/>
         <keyword String="layoutobjects" attribute="Layout Object"/>
         <keyword String="properties" attribute="Property"/>
-        <RegExpr String="\b(&headervars;|&papervars;|&layoutvars;)\b" attribute="Variable"/>
+        <RegExpr String="\b(?:&headervars;|&papervars;|&layoutvars;)\b" attribute="Variable"/>
         <keyword String="deprecatedproperties" attribute="Deprecated Property"/>
         <IncludeRules context="default"/>
       </context>
diff --git a/xml/literate-curry.xml b/xml/literate-curry.xml
--- a/xml/literate-curry.xml
+++ b/xml/literate-curry.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Literate Curry" version="6" kateversion="5.0"
           section="Sources" extensions="*.lcurry" mimetype="text/x-curry"
           author="Björn Peemöller (bjp@informatik.uni-kiel.de)" license="LGPL"
diff --git a/xml/literate-haskell.xml b/xml/literate-haskell.xml
--- a/xml/literate-haskell.xml
+++ b/xml/literate-haskell.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Literate Haskell" version="9" kateversion="5.53" section="Sources" extensions="*.lhs" mimetype="text/x-literate-haskell" author="Nicolas Wu (zenzike@gmail.com)" license="LGPL">
   <highlighting>
   <contexts>
diff --git a/xml/llvm.xml b/xml/llvm.xml
--- a/xml/llvm.xml
+++ b/xml/llvm.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="LLVM" section="Sources"
           version="4" kateversion="5.0"
           extensions="*.ll"
diff --git a/xml/logfile.xml b/xml/logfile.xml
new file mode 100644
--- /dev/null
+++ b/xml/logfile.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!-- same as logfile-advanced.xml -->
+  <!ENTITY critical "crit|critical|fatal|QFATAL">
+  <!ENTITY debug "debug|QDEBUG">
+  <!ENTITY error "err|error|fail|failure|QCRITICAL">
+  <!ENTITY info "info|information|QINFO">
+  <!ENTITY warn "warn|warning|QWARN">
+  <!ENTITY firstchars "cdefiqw">
+  <!ENTITY search "^([^&firstchars;]*+((?!\b(&critical;|&debug;|&error;|&info;|&warn;)\b)[&firstchars;])?)*+">
+]>
+<language name="Log File (simplified)" section="Other" version="3" kateversion="5.62" extensions="*.log;*.log.*;syslog;syslog.*" priority="-10" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+  <highlighting>
+
+    <contexts>
+      <context name="Start" lineEndContext="#stay" attribute="Normal">
+        <RegExpr String="&search;\b(&info;)\b.*" attribute="Information" insensitive="1" column="0"/>
+        <RegExpr String="&search;\b(&debug;)\b.*" attribute="Debug" insensitive="1" column="0"/>
+        <RegExpr String="&search;\b(&warn;)\b.*" attribute="Warning" insensitive="1" column="0"/>
+        <RegExpr String="&search;\b(&error;)\b.*" attribute="Error" insensitive="1" column="0"/>
+        <RegExpr String="&search;\b(&critical;)\b.*" attribute="Critical" insensitive="1" column="0"/>
+        <RegExpr String=".*" attribute="Normal"/>
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal" defStyleNum="dsNormal"/>
+      <itemData name="Information" defStyleNum="dsPreprocessor"/>
+      <itemData name="Warning" defStyleNum="dsInformation"/>
+      <itemData name="Error" defStyleNum="dsError" underline="0"/>
+      <itemData name="Critical" defStyleNum="dsAlert"/>
+      <itemData name="Debug" defStyleNum="dsDataType"/>
+    </itemDatas>
+  </highlighting>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/lua.xml b/xml/lua.xml
--- a/xml/lua.xml
+++ b/xml/lua.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 <!ENTITY HEX "[0-9A-Fa-f]">
 ]>
@@ -48,7 +48,7 @@
     - NOTE, FIXME, TODO alerts added on comments
     - improved highlighting
 -->
-<language name="Lua" version="15" indenter="lua" kateversion="5.0" section="Scripts" extensions="*.lua" mimetype="text/x-lua">
+<language name="Lua" version="21" indenter="cstyle" kateversion="5.79" section="Scripts" extensions="*.lua;*.rockspec" mimetype="text/x-lua">
   <highlighting>
     <list name="keywords">
       <item>and</item>
@@ -57,7 +57,11 @@
       <item>local</item>
       <item>not</item>
       <item>or</item>
-      <!-- pseudo-variables -->
+      <!-- 5.5 -->
+      <item>global</item>
+    </list>
+
+    <list name="specialvars">
       <item>nil</item>
       <item>false</item>
       <item>true</item>
@@ -188,6 +192,7 @@
 
       <!-- Table Manipulation -->
       <item>table.concat</item>
+      <item>table.create</item>
       <item>table.insert</item>
       <item>table.move</item>
       <item>table.pack</item>
@@ -271,9 +276,7 @@
       <item>cgilua</item>
       <item>cgilua.addclosefunction</item>
       <item>cgilua.addopenfunction</item>
-      <item>cgilua.addopenfunction</item>
       <item>cgilua.addscripthandler</item>
-      <item>cgilua.addscripthandler</item>
       <item>cgilua.buildprocesshandler</item>
       <item>cgilua.contentheader</item>
       <item>cgilua.cookies.delete</item>
@@ -366,13 +369,10 @@
       <item>concat</item>
       <item>insert</item>
       <item>move</item>
-      <item>pack</item>
       <item>remove</item>
       <item>sort</item>
-      <item>unpack</item>
 
       <!-- luasql -->
-      <item>close</item>
       <item>commit</item>
       <item>connect</item>
       <item>escape</item>
@@ -459,13 +459,9 @@
     </list>
 
     <contexts>
-      <context name="Shebang"       attribute="Comment" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
+      <context name="Normal"        attribute="Normal Text" lineEndContext="#stay">
         <Detect2Chars attribute="Comment" context="ShebangLine" char="#" char1="!" column="0"/>
-      </context>
 
-      <context name="ShebangLine"   attribute="Comment"     lineEndContext="#pop!Normal" />
-
-      <context name="Normal"        attribute="Normal Text" lineEndContext="#stay">
         <DetectSpaces />
         <keyword      attribute="Deprecated" context="#stay"       String="deprecated" />
         <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
@@ -480,6 +476,8 @@
         <WordDetect   attribute="Keyword"  context="Function" beginRegion="chunk" String="function" />
         <WordDetect   attribute="Keyword"  context="Local" String="local" />
         <keyword      attribute="Keyword"  context="#stay" String="keywords" />
+        <keyword      attribute="Special Variable" context="#stay" String="specialvars" additionalDeliminator="."/>
+        <WordDetect   attribute="Self Variable" context="#stay" String="self" additionalDeliminator="." />
         <keyword      attribute="Control"  context="StartControl" beginRegion="chunk" String="startcontrol" />
         <keyword      attribute="Control"  context="#stay" String="control" />
 
@@ -500,21 +498,23 @@
         <AnyChar      attribute="Symbols"  context="#stay" String=":[]().,=~+-*/%&amp;|^&gt;&lt;#;" />
       </context>
 
-      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="ShebangLine"   attribute="Comment"     lineEndContext="#pop" />
+
+      <context name="MatchComment" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="##DoxygenLua" />
         <RegExpr attribute="Comment" context="#pop!BlockComment" String="--\[(=*)\[" beginRegion="BlockComment" />
         <Detect2Chars attribute="Comment" context="#pop!Comment" char="-" char1="-" />
       </context>
 
       <context name="BlockComment" attribute="Comment" lineEndContext="#stay" dynamic="true">
-        <RegExpr attribute="Comment" context="#stay" String="[^\]]*" />
+        <IncludeRules context="Comment" />
         <StringDetect attribute="Comment" context="#pop" String="]%1]" dynamic="true" endRegion="BlockComment" />
-        <IncludeRules context="##Comments" />
       </context>
 
-      <context name="Comment"       attribute="Comment"     lineEndContext="#pop">
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <IncludeRules context="##Comments" />
+        <DetectIdentifier />
       </context>
 
       <context name="StartControl" attribute="Normal Text"  lineEndContext="#stay">
@@ -523,12 +523,12 @@
         <IncludeRules context="Normal" />
       </context>
 
-      <context name="NumberSuffix" attribute="Normal Text"  lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="NumberSuffix" attribute="Normal Text"  lineEndContext="#pop" fallthroughContext="#pop">
         <!-- some syntax like a=32print(a) are valid, but ugly -->
         <DetectIdentifier attribute="Error" context="#pop" />
       </context>
 
-      <context name="Local" attribute="Normal Text"  lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="Local" attribute="Normal Text"  lineEndContext="#pop" fallthroughContext="#pop">
         <DetectSpaces />
         <WordDetect   attribute="Keyword" context="#pop!Function" beginRegion="chunk" String="function" />
         <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
@@ -536,7 +536,7 @@
         <DetectIdentifier attribute="Variable" context="LocalVariable" />
       </context>
 
-      <context name="LocalVariable" attribute="Normal Text"  lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+      <context name="LocalVariable" attribute="Normal Text"  lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="MatchComment" char="-" char1="-" lookAhead="true"/>
         <DetectChar   attribute="Symbols"   context="#pop" char="," />
@@ -553,16 +553,24 @@
         <IncludeRules context="Normal" />
       </context>
 
-      <context name="String_single" attribute="Strings"     lineEndContext="Error">
+      <context name="String_single" attribute="Strings"     lineEndContext="UnclosedString">
         <DetectChar   attribute="Strings"  context="Special_char"  char="\" lookAhead="true"/>
         <DetectChar   attribute="Strings"  context="#pop"  char="'"/>
       </context>
 
-      <context name="String_double" attribute="Strings"     lineEndContext="Error">
+      <context name="String_double" attribute="Strings"     lineEndContext="UnclosedString">
         <DetectChar   attribute="Strings"  context="Special_char"  char="\" lookAhead="true"/>
         <DetectChar   attribute="Strings"  context="#pop"  char="&quot;"/>
       </context>
 
+      <context name="UnclosedString" attribute="Error" lineEndContext="#stay" fallthroughContext="#pop#pop">
+				<!-- A single string/comment reached the end of the line without a \ line escape -->
+				<!-- We set the following line (or part of it) to the "Error" attribute so that this error is easier to spot -->
+        <DetectSpaces attribute="Error" context="#pop#pop"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop"/>
+				<RegExpr attribute="Error" String="^([^-[()&quot;'\s]|-(?!-)|\[(?!=))+" context="#pop#pop" column="0"/>
+      </context>
+
       <context name="Special_char"  attribute="Error"       lineEndContext="#pop">
         <LineContinue attribute="Special Char" context="#pop" />
         <Detect2Chars attribute="Special Char" context="Special_char_\z" char="\" char1="z" lookAhead="true"/>
@@ -579,8 +587,6 @@
         <StringDetect attribute="RawStrings"    context="#pop"  String="]%1]" dynamic="true" />
       </context>
 
-      <context name="Error"         attribute="Error"       lineEndContext="#stay">
-      </context>
     </contexts>
 
     <itemDatas>
@@ -590,16 +596,18 @@
       <itemData name="BVar"            defStyleNum="dsVariable" spellChecking="false"/>
       <itemData name="Comment"         defStyleNum="dsComment"/>
       <itemData name="Constant"        defStyleNum="dsConstant" spellChecking="false"/>
-      <itemData name="Control"         defStyleNum="dsControlFlow" color="#A1A100" selColor="#ffffff" bold="0" italic="0" spellChecking="false"/>
+      <itemData name="Control"         defStyleNum="dsControlFlow" spellChecking="false"/>
       <itemData name="Error"           defStyleNum="dsError" spellChecking="false"/>
       <itemData name="Deprecated"      defStyleNum="dsError" spellChecking="false"/>
       <itemData name="Keyword"         defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Special Variable" defStyleNum="dsKeyword" spellChecking="false"/>
       <itemData name="Numbers"         defStyleNum="dsDecVal" spellChecking="false"/>
       <itemData name="Special Char"    defStyleNum="dsSpecialChar" spellChecking="false"/>
       <itemData name="Strings"         defStyleNum="dsString"/>
       <itemData name="RawStrings"      defStyleNum="dsVerbatimString"/>
       <itemData name="Symbols"         defStyleNum="dsOperator" spellChecking="false"/>
-      <itemData name="Variable"        defStyleNum="dsNormal" /> <!-- JGM -->
+      <itemData name="Variable"        defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Self Variable"   defStyleNum="dsVariable" spellChecking="false"/>
       <itemData name="Attribute"       defStyleNum="dsAttribute" spellChecking="false"/>
     </itemDatas>
   </highlighting>
diff --git a/xml/lua.xml.patch b/xml/lua.xml.patch
deleted file mode 100644
--- a/xml/lua.xml.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/skylighting-core/xml/lua.xml b/skylighting-core/xml/lua.xml
-index 3021ba8..89e5a31 100644
---- a/skylighting-core/xml/lua.xml
-+++ b/skylighting-core/xml/lua.xml
-@@ -600,7 +600,7 @@
-       <itemData name="Strings"         defStyleNum="dsString"/>
-       <itemData name="RawStrings"      defStyleNum="dsVerbatimString"/>
-       <itemData name="Symbols"         defStyleNum="dsOperator" spellChecking="false"/>
--      <itemData name="Variable"        defStyleNum="dsKeyword" color="#5555FF" selColor="#ffffff" bold="0" italic="0" spellChecking="false"/>
-+      <itemData name="Variable"        defStyleNum="dsNormal" /> <!-- JGM -->
-       <itemData name="Attribute"       defStyleNum="dsAttribute" spellChecking="false"/>
-     </itemDatas>
-   </highlighting>
diff --git a/xml/m4.xml b/xml/m4.xml
--- a/xml/m4.xml
+++ b/xml/m4.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
 
   GNU M4 syntax highlightning.
diff --git a/xml/makefile.xml b/xml/makefile.xml
--- a/xml/makefile.xml
+++ b/xml/makefile.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language
+[
+    <!ENTITY varname "(([+!?](?!=))?[^:#=\s+!?]*)++">
+]>
 <!-- Makefile syntaxfile v0.9 by Per Wigren <wigren@home.se> -->
 <!-- Modified by Joseph Wenninger <jowenn@kde.org> -->
 <!-- Modified by Rui Santana <santana.rui@gmail.com> -->
@@ -12,20 +15,36 @@
 <!-- v10 by Peter J. Mello <admin@petermello.net>
      Add recognition of POSIX 2013 '::=' operator for variable assignment -->
 <language name="Makefile" section="Other"
-          version="13" kateversion="5.0"
+          version="17" kateversion="5.79"
           extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk"
           mimetype="text/x-makefile" priority="11"
           author="Per Wigren (wigren@home.se)" license="">
+
+  <!-- https://www.gnu.org/software/make/manual/make.pdf -->
+  <!-- https://www.gnu.org/software/make/manual/html_node/Quick-Reference.html -->
+
   <highlighting>
-    <list name = "keywords" >
+    <list name="keywords">
       <item>include</item>
       <item>-include</item>
+      <item>sinclude</item>
+      <item>override</item>
       <item>define</item>
+      <item>undefine</item>
       <item>endef</item>
+      <item>export</item>
+      <item>unexport</item>
+      <item>private</item>
+      <item>vpath</item>
     </list>
+    <list name="special_keywords">
+      <item>export</item>
+      <item>unexport</item>
+      <item>override</item>
+      <item>private</item>
+    </list>
     <!-- https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html -->
     <list name="gmake_if_keywords">
-      <item>if</item>
       <item>ifeq</item>
       <item>ifneq</item>
       <item>ifdef</item>
@@ -164,38 +183,54 @@
       <item>info</item>
     </list>
     <contexts>
-      <context name="normal" attribute="Normal" lineEndContext="#stay">
+      <context name="normal" attribute="Normal" lineEndContext="#stay" fallthroughContext="strings_and_vars">
         <DetectSpaces/>
         <DetectChar attribute="Comment" context="Comment" char="#"/>
+
+        <!-- first because a variable can have the same name as a keyword -->
+        <RegExpr attribute="Variable" context="assign" String="&varname;(?=\s*([+!?]|::?:?)?=)" firstNonSpace="true"/>
+
         <keyword attribute="ControlFlow" String="bmake_if_keywords" context="bmake_conditional" beginRegion="bmake_if" firstNonSpace="true"/>
         <!--TODO: trailing non-space after .else should be highlighted as an error -->
         <keyword attribute="ControlFlow" String="bmake_else_keywords" context="bmake_conditional" endRegion="bmake_if" beginRegion="bmake_if" firstNonSpace="true"/>
-        <keyword attribute="ControlFlow" String="bmake_endif_keywords" context="#stay" endRegion="bmake_if"/>
+        <keyword attribute="ControlFlow" String="bmake_endif_keywords" context="#stay" endRegion="bmake_if" firstNonSpace="true"/>
 
-        <keyword attribute="ControlFlow" String="gmake_if_keywords" context="#stay" beginRegion="gmake_if" firstNonSpace="true"/>
-        <!--TODO: trailing non-space after .else should be highlighted as an error -->
-        <keyword attribute="ControlFlow" String="gmake_else_keywords" context="gmake_else" endRegion="gmake_if" beginRegion="gmake_if" firstNonSpace="true"/>
-        <keyword attribute="ControlFlow" String="gmake_endif_keywords" context="#stay" endRegion="gmake_if"/>
+        <keyword attribute="ControlFlow" String="gmake_if_keywords" context="strings_and_vars" beginRegion="gmake_if" firstNonSpace="true" weakDeliminator=":"/>
+        <!--TODO: trailing non-space after else should be highlighted as an error -->
+        <keyword attribute="ControlFlow" String="gmake_else_keywords" context="gmake_else" endRegion="gmake_if" beginRegion="gmake_if" firstNonSpace="true" weakDeliminator=":"/>
+        <keyword attribute="ControlFlow" String="gmake_endif_keywords" context="#stay" endRegion="gmake_if" firstNonSpace="true" weakDeliminator=":"/>
 
-        <keyword attribute="Keyword"  context="#stay" String="keywords"/>
+        <WordDetect attribute="Keyword" context="define" String="define" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="override" String="override" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="export" String="export" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="export" String="unexport" firstNonSpace="true" weakDeliminator=":"/>
+        <WordDetect attribute="Keyword" context="export" String="undefine" firstNonSpace="true" weakDeliminator=":"/>
+        <keyword attribute="Keyword"  context="strings_and_vars" String="keywords" firstNonSpace="true" weakDeliminator=":"/>
+
         <keyword attribute="Keyword"  context="bmake_other_stmts" String="bmake_other_stmts" firstNonSpace="true"/>
-        <RegExpr attribute="Variable" context="assign" String="[^\s+:?+]*\s*(?=::=|:=|=|\+=|\?=)"/>
         <keyword attribute="SpecialTarget" context="bmake_special_target" String="bmake_special_targets" firstNonSpace="true"/>
         <RegExpr attribute="SpecialTarget" context="prereq" String="\.PATH\.[^:]*:" firstNonSpace="true"/>
         <keyword attribute="Keyword" context="bmake_include" String="bmake_include_stmt" firstNonSpace="true"/>
         <keyword attribute="Keyword" context="bmake_message" String="bmake_message_stmt" firstNonSpace="true"/>
         <keyword attribute="Keyword" context="bmake_for_loop" String="bmake_for_stmt" firstNonSpace="true" beginRegion="for"/>
-        <keyword attribute="Keyword" context="#stay" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/>
+        <keyword attribute="Keyword" context="strings_and_vars" String="bmake_endfor_stmt" firstNonSpace="true" endRegion="for"/>
 
-        <RegExpr attribute="Section"  context="prereq" String="^\.[^.][^:]*:" column="0"/>
-        <RegExpr attribute="Target"   context="prereq" String="^[^:]*:" column="0"/>
+        <RegExpr attribute="Section" context="prereq" String="^\.[^.][^:]*:" column="0"/>
+        <RegExpr attribute="Target"  context="target" String="^([^:\\&amp;]|\\([:\\#&amp;]|(?=[^:\\#&amp;])))*+(?=[^:]*+:|\\$)" column="0"/>
+
+        <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
         <DetectIdentifier/>
-        <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
-        <DetectChar attribute="String" context="string'" char="'"/>
+      </context>
+
+      <context name="target" attribute="Target" lineEndContext="#pop">
+        <StringDetect attribute="TargetSeparator" context="#pop!prereq" String="::"/>
+        <DetectChar attribute="TargetSeparator" context="#pop!prereq" char=":"/>
         <DetectChar attribute="Operator" context="dollar" char="$"/>
-        <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
-        <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
-        <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
+        <LineContinue attribute="Operator" context="#pop"/>
+        <StringDetect attribute="TargetSeparator" context="#pop!prereq" String="&amp;::"/>
+        <StringDetect attribute="TargetSeparator" context="#pop!prereq" String="&amp;:"/>
+        <StringDetect attribute="Target" String="\:"/>
+        <DetectIdentifier attribute="Target"/>
       </context>
 
       <context name="strings_and_vars" attribute="Normal" lineEndContext="#pop">
@@ -215,6 +250,7 @@
                  else ifdef foo
                  else ifeq (bar, foo)
         -->
+        <DetectIdentifier attribute="Normal"/>
       </context>
 
       <context name="bmake_include" attribute="Normal" lineEndContext="#pop">
@@ -268,8 +304,13 @@
         <DetectChar attribute="Operator" context="dollar" char="$"/>
       </context>
 
-      <context name="prereq" attribute="Prereq" lineEndContext="rule">
+      <context name="prereq" attribute="Prereq" lineEndContext="rule" fallthroughContext="#pop!prereq2">
         <DetectSpaces/>
+        <keyword attribute="Keyword"  context="export" String="special_keywords" weakDeliminator=".@,+%-/^*?="/>
+        <RegExpr attribute="Variable" context="assign" String="[a-zA-Z_]+(?=\s*([+!?]|::?:?)?=)|"/>
+      </context>
+      <context name="prereq2" attribute="Prereq" lineEndContext="rule">
+        <DetectSpaces/>
         <keyword attribute="SpecialPrereq" context="#stay" String="bmake_special_sources"/>
         <DetectIdentifier/>
         <LineContinue attribute="Operator" context="#stay"/>
@@ -277,24 +318,47 @@
         <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
         <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
         <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <DetectChar attribute="Operator" context="inline-rule" char=";"/>
       </context>
 
-      <context name="rule" attribute="Normal" lineEndContext="#stay">
+      <context name="inline-rule" attribute="Normal" lineEndContext="#pop!rule" fallthroughContext="#pop!inline-rule-cmd">
+        <DetectSpaces/>
         <LineContinue attribute="Operator" context="#stay"/>
+        <AnyChar attribute="Operator" context="silent" String="@-"/>
+      </context>
+      <context name="inline-rule-cmd" attribute="Normal" lineEndContext="#pop!rule">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
+        <DetectChar attribute="String" context="string'" char="'"/>
+        <DetectChar attribute="Operator" context="dollar" char="$"/>
+        <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
+        <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
+        <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <LineContinue attribute="Operator" context="#stay"/>
+      </context>
+
+      <context name="rule" attribute="Normal" lineEndContext="#stay">
+        <DetectChar char="&#9;" column="0"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
         <!-- pop if there is a leading non-tab,
         and in particular, mark leading spaces as errors -->
-        <RegExpr attribute="Error" context="#pop#pop#pop" String="^ +" firstNonSpace="1"/>
-        <RegExpr context="#pop#pop#pop" String="^[^\t]" lookAhead="1" firstNonSpace="1"/>
+        <RegExpr attribute="Error" context="#pop#pop#pop" String="^ ++(?!#)" column="0"/>
+        <RegExpr context="#pop#pop#pop" String="^(?=\s*#)|^[^#\t]" lookAhead="1" column="0"/>
         <DetectSpaces/>
         <DetectIdentifier/>
         <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
         <DetectChar attribute="String" context="string'" char="'"/>
         <DetectChar attribute="Operator" context="dollar" char="$"/>
+        <LineContinue attribute="Operator" context="rule_continuation"/>
         <Detect2Chars attribute="Special" context="#stay" char="\" char1="#"/>
         <Detect2Chars attribute="Special" context="#stay" char="\" char1="\"/>
         <AnyChar attribute="Operator" context="silent" String="@-" firstNonSpace="1"/>
-        <DetectChar attribute="Comment" context="Comment" char="#"/>
       </context>
+      <context name="rule_continuation" attribute="Normal" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces context="#pop"/>
+      </context>
 
       <context name="silent" attribute="Silent" lineEndContext="#pop">
         <LineContinue attribute="Operator" context="#stay"/>
@@ -321,6 +385,7 @@
       </context>
 
       <context name="assign" attribute="Operator" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
         <DetectChar attribute="Operator" context="value" char="="/>
       </context>
 
@@ -328,7 +393,9 @@
         <LineContinue attribute="Operator"/>
         <DetectChar attribute="Operator" context="dollar" char="$"/>
         <RegExpr attribute="Special" context="#pop#pop" String="@[-_\d\w]*@"/>
-        <DetectChar attribute="Operator" char=";" context="#pop#pop"/>
+        <Detect2Chars attribute="String" char="\" char1="#"/>
+        <DetectChar attribute="Comment" context="#pop#pop!Comment" char="#"/>
+        <RegExpr attribute="String" String="[^$@\\#]+"/>
       </context>
 
       <context name="dollar" attribute="Operator" lineEndContext="#pop">
@@ -337,11 +404,11 @@
         <RegExpr attribute="Operator" context="#pop" String="."/>
       </context>
 
-      <context name="call(" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar(" fallthrough="1">
+      <context name="call(" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar(">
         <keyword attribute="Keyword" context="callFunc(" String="functions"/>
       </context>
 
-      <context name="call{" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar{" fallthrough="1">
+      <context name="call{" attribute="Variable" lineEndContext="#stay" fallthroughContext="callVar{">
         <keyword attribute="Keyword" context="callFunc{" String="functions"/>
       </context>
 
@@ -364,6 +431,35 @@
         <AnyChar attribute="Error" context="#stay" String="=#"/>
       </context>
 
+      <context name="override" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!export">
+        <DetectSpaces/>
+        <WordDetect attribute="Keyword" context="#pop!define" String="define"/>
+        <WordDetect attribute="Keyword" context="#pop!export" String="undefine"/>
+      </context>
+
+      <context name="define" attribute="Normal" lineEndContext="define_body">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <RegExpr attribute="Variable" context="define_op" String="&varname;"/>
+      </context>
+      <context name="define_op" attribute="Operator" lineEndContext="#pop!define_body">
+        <DetectSpaces attribute="Normal"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+      <context name="define_body" attribute="String" lineEndContext="#stay">
+        <DetectSpaces attribute="String"/>
+        <WordDetect attribute="Keyword" context="#pop#pop" String="endef" firstNonSpace="true"/>
+        <DetectIdentifier attribute="String"/>
+        <LineContinue attribute="Operator"/>
+        <DetectChar attribute="Operator" context="dollar" char="$"/>
+        <RegExpr attribute="Special" String="@[-_\d\w]*@"/>
+      </context>
+
+      <context name="export" attribute="Variable" lineEndContext="#pop" fallthroughContext="#pop!assign">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+      </context>
+
       <context name="bmake_var_modifier_arg" attribute="VarModifier" lineEndContext="#pop">
         <DetectChar attribute="Operator" context="dollar" char="$"/>
         <Detect2Chars context="#stay" char="\" char1="}"/>
@@ -373,7 +469,7 @@
       </context>
 
       <!-- TODO: once all modifiers are properly handled change fallthroughContext to "expect}" -->
-      <context name="bmake_var_modifier" attribute="VarModifier" lineEndContext="#pop" fallthroughContext="#pop!bmake_var_modifier_arg" fallthrough="true">
+      <context name="bmake_var_modifier" attribute="VarModifier" lineEndContext="#pop" fallthroughContext="#pop!bmake_var_modifier_arg">
         <DetectChar attribute="Operator" context="dollar" char="$"/>
 
                     <!--
@@ -452,15 +548,30 @@
 
       <context name="callFunc(" attribute="FuncParam" lineEndContext="#stay">
         <DetectChar attribute="Operator" char=")" context="#pop#pop#pop"/>
-        <DetectChar attribute="Operator" context="dollar" char="$"/>
-        <DetectChar attribute="Keyword" context="#stay" char=","/>
-        <DetectChar attribute="String" context="string'" char="'"/>
+        <DetectChar attribute="FuncParam" char="(" context="callFuncSub("/>
+        <IncludeRules context="callFuncCommon"/>
       </context>
+      <context name="callFuncSub(" attribute="FuncParam" lineEndContext="#stay">
+        <DetectChar attribute="FuncParam" char=")" context="#pop"/>
+        <DetectChar attribute="FuncParam" char="(" context="callFuncSub("/>
+        <IncludeRules context="callFuncCommon"/>
+      </context>
 
       <context name="callFunc{" attribute="FuncParam" lineEndContext="#stay">
         <DetectChar attribute="Operator" char="}" context="#pop#pop#pop"/>
+        <DetectChar attribute="FuncParam" char="{" context="callFuncSub{"/>
+        <IncludeRules context="callFuncCommon"/>
+      </context>
+      <context name="callFuncSub{" attribute="FuncParam" lineEndContext="#stay">
+        <DetectChar attribute="FuncParam" char="}" context="#pop"/>
+        <DetectChar attribute="FuncParam" char="{" context="callFuncSub{"/>
+        <IncludeRules context="callFuncCommon"/>
+      </context>
+
+      <context name="callFuncCommon" attribute="FuncParam" lineEndContext="#stay">
         <DetectChar attribute="Operator" context="dollar" char="$"/>
         <DetectChar attribute="Keyword" context="#stay" char=","/>
+        <DetectChar attribute="String" context="string&quot;" char="&quot;"/>
         <DetectChar attribute="String" context="string'" char="'"/>
       </context>
 
@@ -502,6 +613,7 @@
       <itemData name="RealOperator" defStyleNum="dsKeyword" spellChecking="0"/>
       <itemData name="SpecialTarget" defStyleNum="dsOthers" spellChecking="0" bold="1"/>
       <itemData name="SpecialPrereq" defStyleNum="dsDataType" spellChecking="0" bold="1"/>
+      <itemData name="TargetSeparator" defStyleNum="dsDecVal" spellChecking="0"/>
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/mandoc.xml b/xml/mandoc.xml
--- a/xml/mandoc.xml
+++ b/xml/mandoc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Troff Mandoc" section="Markup" version="2" kateversion="5.0" extensions="*.1;*.2;*.3;*.4;*.5;*.6;*.7;*.8;*.1m;*.3x;*.tmac" mimetype="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
 
   <highlighting>
diff --git a/xml/markdown.xml b/xml/markdown.xml
--- a/xml/markdown.xml
+++ b/xml/markdown.xml
@@ -22,7 +22,7 @@
           Example: **bold text and _italic and bold text_**
                    __bold and ~~strikeout and bold~~__
 -->
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 <!-- NOTE: To correctly detect bold, italic or strike out text, use minimal="true" in RegExpr rules -->
 <!ENTITY contentregex_ast "(?:(?:[^\*\s\\]|\\.)(?:[^\\]|\\.)*)?(?:[^\*\s\\]|\\\S)">
@@ -72,6 +72,10 @@
 <!ENTITY linebreakregex "  $">
 <!-- strikethrough text, pandoc style -->
 <!ENTITY strikeoutregex "[~]{2}[^~](?:.*[^~])?[~]{2}">
+<!-- highlight text -->
+<!ENTITY highlightregex "[=]{2}[^=](?:.*[^=])?[=]{2}">
+<!-- emoji -->
+<!ENTITY emojiregex ":([-+]1|\w+):">
 <!-- start of fenced code block -->
 <!ENTITY fcode "(`{3,}|~{3,})">
 <!-- end of line & empty line -->
@@ -90,7 +94,7 @@
 <!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
 
-<language name="Markdown" version="21" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+<language name="Markdown" version="33" kateversion="6.22" section="Markup" extensions="*.md;*.mmd;*.markdown;*.md.html" mimetype="text/markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
   <highlighting>
     <contexts>
       <!-- Start of the Markdown document: find metadata or code block -->
@@ -137,9 +141,12 @@
         <DetectChar context="find-strong-normal" char="*" lookAhead="true"/>
         <DetectChar context="find-emphasis-normal" char="_" lookAhead="true"/>
         <RegExpr attribute="Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <RegExpr attribute="Highlight Text" minimal="true" String="&highlightregex;"/>
         <!-- Common -->
         <IncludeRules context="inc"/>
         <RegExpr attribute="Normal Text: Link" String="&implicitlink;"/>
+        <!-- Table -->
+        <DetectChar attribute="Table" char="|" context="table" firstNonSpace="true" lookAhead="1"/>
       </context>
       <!-- Find indented code blocks. These are only allowed after an empty line or on the first line -->
       <context name="find-code-block" attribute="Normal Text" lineEndContext="#stay" lineEmptyContext="#stay" fallthroughContext="#pop">
@@ -148,41 +155,50 @@
         <RegExpr attribute="Comment" context="comment" String="^\s*&startcomment;|\s*&startcomment;(?=.*&endcomment;)" beginRegion="comment"/>
       </context>
 
+      <!-- Table in Normal Text Document -->
+      <context name="table" attribute="Normal Text" lineEndContext="#pop" lineEmptyContext="#pop!find-code-block">
+        <IncludeRules context="find-table-element"/>
+        <IncludeRules context="Normal Text"/>
+      </context>
+
+      <context name="find-table-element" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr attribute="Table" String="(\|(\s*:?---+:?)?)++"/>
+      </context>
+
       <context name="find-header" attribute="Normal Text" lineEndContext="#pop">
-        <RegExpr attribute="Header H1" context="#pop!close-H2-region" String="^(#\s.*[#]?)$" column="0" endRegion="H1" beginRegion="H1" lookAhead="true"/>
-        <RegExpr attribute="Header H2" context="#pop!close-H3-region" String="^(##\s.*[#]?)$" column="0" endRegion="H2" beginRegion="H2" lookAhead="true"/>
-        <RegExpr attribute="Header H3" context="#pop!close-H4-region" String="^(###\s.*[#]?)$" column="0" endRegion="H3" beginRegion="H3" lookAhead="true"/>
-        <RegExpr attribute="Header H4" context="#pop!close-H5-region" String="^(####\s.*[#]?)$" column="0" endRegion="H4" beginRegion="H4" lookAhead="true"/>
-        <RegExpr attribute="Header H5" context="#pop!close-H6-region" String="^(#####\s.*[#]?)$" column="0" endRegion="H5" beginRegion="H5" lookAhead="true"/>
-        <RegExpr attribute="Header H6" context="#pop!close-sentinel-region" String="^(######\s.*[#]?)$" column="0" endRegion="H6" beginRegion="H6" lookAhead="true"/>
+        <RegExpr attribute="Header H1" context="#pop!close-H2-region" String="^#\s" column="0" endRegion="H1" beginRegion="H1" lookAhead="true"/>
+        <RegExpr attribute="Header H2" context="#pop!close-H3-region" String="^##\s" column="0" endRegion="H2" beginRegion="H2" lookAhead="true"/>
+        <RegExpr attribute="Header H3" context="#pop!close-H4-region" String="^###\s" column="0" endRegion="H3" beginRegion="H3" lookAhead="true"/>
+        <RegExpr attribute="Header H4" context="#pop!close-H5-region" String="^####\s" column="0" endRegion="H4" beginRegion="H4" lookAhead="true"/>
+        <RegExpr attribute="Header H5" context="#pop!close-H6-region" String="^#####\s" column="0" endRegion="H5" beginRegion="H5" lookAhead="true"/>
+        <RegExpr attribute="Header H6" context="#pop" String="^######\s.*" column="0" endRegion="H6" beginRegion="H6"/>
         <DetectChar attribute="Normal Text" context="#pop" char="#"/>
       </context>
       <!-- BUG: 441278 sub-headers should be closed when their parent header is closed  (e.g. in h1 h2 h3 h1, h1-h3 should all be closed at the 2nd h1) -->
       <!-- TODO: Port to a less hacky version (maybe a new attribute for declaring multiple endRegions)  -->
       <context name="close-H2-region" attribute="Header H2" lineEndContext="#pop!close-H3-region" fallthroughContext="#pop!close-H3-region">
-        <RegExpr attribute="Header H2" context="#pop!close-H3-region" String="(%1)" dynamic="true" lookAhead="true" endRegion="H2"/>
+        <DetectChar attribute="Header H2" context="#pop!close-H3-region" char="#" lookAhead="true" endRegion="H2"/>
       </context>
       <context name="close-H3-region" attribute="Header H3" lineEndContext="#pop!close-H4-region" fallthroughContext="#pop!close-H4-region">
-        <RegExpr attribute="Header H3" context="#pop!close-H4-region" String="(%1)" dynamic="true" lookAhead="true" endRegion="H3"/>
+        <DetectChar attribute="Header H3" context="#pop!close-H4-region" char="#" lookAhead="true" endRegion="H3"/>
       </context>
       <context name="close-H4-region" attribute="Header H4" lineEndContext="#pop!close-H5-region" fallthroughContext="#pop!close-H5-region">
-        <RegExpr attribute="Header H4" context="#pop!close-H5-region" String="(%1)" dynamic="true" lookAhead="true" endRegion="H4"/>
+        <DetectChar attribute="Header H4" context="#pop!close-H5-region" char="#" lookAhead="true" endRegion="H4"/>
       </context>
       <context name="close-H5-region" attribute="Header H5" lineEndContext="#pop!close-H6-region" fallthroughContext="#pop!close-H6-region">
-        <RegExpr attribute="Header H5" context="#pop!close-H6-region" String="(%1)" dynamic="true" lookAhead="true" endRegion="H5"/>
+        <DetectChar attribute="Header H5" context="#pop!close-H6-region" char="#" lookAhead="true" endRegion="H5"/>
       </context>
       <context name="close-H6-region" attribute="Header H6" lineEndContext="#pop" fallthroughContext="#pop">
-        <RegExpr attribute="Header H6" context="#pop!close-sentinel-region" String="(%1)" dynamic="true" lookAhead="true" endRegion="H6"/>
+        <DetectChar attribute="Header H6" context="#pop!close-sentinel-region" char="#" lookAhead="true" endRegion="H6"/>
       </context>
       <!-- This sentinel does not close any actual region, it's just here so that the proper attribute/highlighting is applied and -->
       <!--to ensure that H6 headers won't be set as the "primary" region that was closed just because it was closed last -->
       <context name="close-sentinel-region" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
-        <RegExpr attribute="Header H1" context="#pop" String="^(?=#\s)%1$" column="0" dynamic="true"/>
-        <RegExpr attribute="Header H2" context="#pop" String="^(?=##\s)%1$" column="0" dynamic="true"/>
-        <RegExpr attribute="Header H3" context="#pop" String="^(?=###\s)%1$" column="0" dynamic="true"/>
-        <RegExpr attribute="Header H4" context="#pop" String="^(?=####\s)%1$" column="0" dynamic="true"/>
-        <RegExpr attribute="Header H5" context="#pop" String="^(?=#####\s)%1$" column="0" dynamic="true"/>
-        <RegExpr attribute="Header H6" context="#pop" String="^(?=######\s)%1$" column="0" dynamic="true"/>
+        <RegExpr attribute="Header H1" context="#pop" String="^#\s.*" column="0"/>
+        <RegExpr attribute="Header H2" context="#pop" String="^##\s.*" column="0"/>
+        <RegExpr attribute="Header H3" context="#pop" String="^###\s.*" column="0"/>
+        <RegExpr attribute="Header H4" context="#pop" String="^####\s.*" column="0"/>
+        <RegExpr attribute="Header H5" context="#pop" String="^#####\s.*" column="0"/>
       </context>
 
 
@@ -208,6 +224,7 @@
         <RegExpr attribute="Normal Text" context="#pop!find-code-block" String="&emptyline;" column="0"/>
         <StringDetect attribute="Comment" context="#pop!find-code-block" String="&startcomment;" column="0" lookAhead="true"/>
         <IncludeRules context="default-blockquote-2"/>
+        <IncludeRules context="find-table-element"/>
       </context>
       <!-- Blockquote within a list -->
       <context name="blockquote-list" attribute="Blockquote: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
@@ -227,6 +244,7 @@
         <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
         <AnyChar context="find-strong-emphasis-blockquote" String="*_" lookAhead="true"/>
         <RegExpr attribute="Blockquote: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <RegExpr attribute="Blockquote: Highlight Text" minimal="true" String="&highlightregex;"/>
         <!-- Common -->
         <IncludeRules context="inc"/>
         <RegExpr attribute="Blockquote: Link" String="&implicitlink;"/>
@@ -255,6 +273,8 @@
         <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
         <!-- Highlight checkbox at the start of the item (task list) -->
         <RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>
+        <!-- Highlight checkbox at the start of the item (task list) -->
+        <RegExpr attribute="Table" context="content-list-table" String="\s*\|"/>
       </context>
       <!-- 1. numlist (one digit) -->
       <context name="numlist" attribute="List: Normal Text" lineEndContext="#stay" fallthroughContext="content-list">
@@ -285,13 +305,14 @@
            to check the indentation of the text and determine if the content of the list ends. -->
       <context name="content-list" attribute="List: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
         <RegExpr context="#pop" String="&emptyline;" column="0"/>
-        <!-- Blockquote and horzontal rule (check indentation) -->
+        <!-- Blockquote and horizontal rule (check indentation) -->
         <RegExpr context="#pop" String="^\s*(?:&gt;|&rulerregex;)" column="0" lookAhead="true"/>
         <!-- End with header or new list/numlist -->
         <RegExpr context="#pop#pop" String="^(?:\s*(?:&listbullet;|[\d]+\.)\s|#{1,6}\s)" column="0" lookAhead="true"/>
         <!-- Strong, emphasis, strong-emphasis and strikethrough text -->
         <AnyChar context="find-strong-emphasis-list" String="*_" lookAhead="true"/>
         <RegExpr attribute="List: Strikethrough Text" minimal="true" String="&strikeoutregex;"/>
+        <RegExpr attribute="List: Highlight Text" minimal="true" String="&highlightregex;"/>
         <!-- Common -->
         <IncludeRules context="inc"/>
         <RegExpr attribute="List: Link" String="&implicitlink;"/>
@@ -304,6 +325,12 @@
         <AnyChar attribute="List: Normal Text" context="#pop" String="*_"/>
       </context>
 
+      <!-- Table in List -->
+      <context name="content-list-table" attribute="List: Normal Text" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="find-table-element"/>
+        <IncludeRules context="content-list"/>
+      </context>
+
       <!-- Comments -->
       <context name="comment" attribute="Comment" lineEndContext="#stay">
         <StringDetect attribute="Comment" context="#pop" String="&endcomment;" endRegion="comment"/>
@@ -313,39 +340,46 @@
       <!-- Fenced Code Blocks -->
       <context name="find-lang-fenced-code" attribute="Normal Text" lineEndContext="#pop">
         <!-- Apply syntax highlighting to fenced code blocks for some languages -->
-        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;&end;"/>
-        <RegExpr attribute="Fenced Code" context="#pop!bash-code" String="&fcode;\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|zsh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!cpp-code" String="&fcode;\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!csharp-code" String="&fcode;\s*(?:cs|csharp|c\#)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!cmake-code" String="&fcode;\s*(?:cmake|CMakeLists(?:\.txt)?)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!css-code" String="&fcode;\s*css&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!c-code" String="&fcode;\s*[ch]&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!doxygen-code" String="&fcode;\s*doxygen&end;" insensitive="true"/> <!-- Block comment of Doxygen -->
-        <RegExpr attribute="Fenced Code" context="#pop!email-code" String="&fcode;\s*(?:email|emlx?|mbo?x)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!go-code" String="&fcode;\s*go(?:lang)?&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!hamlet-code" String="&fcode;\s*[wxs]?hamlet&end;" insensitive="true"/> <!-- Included in the Haskell definition -->
-        <RegExpr attribute="Fenced Code" context="#pop!haskell-code" String="&fcode;\s*(?:haskell|c?hs|hs\-boot)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!html-code" String="&fcode;\s*(?:[sx]?html?|inc|tmpl|tpl)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!java-code" String="&fcode;\s*(?:java|bsh)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!javascript-code" String="&fcode;\s*(?:javascript|m?js|es6|kwinscript|julius)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!jsx-code" String="&fcode;\s*(?:jsx|tsx|(?:java|type)script\-react)&end;" insensitive="true"/> <!-- Included in the HTML definition. Also apply for TSX. -->
-        <RegExpr attribute="Fenced Code" context="#pop!json-code" String="&fcode;\s*(?:json5?|gltf)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!yaml-code" String="&fcode;\s*(?:ya?ml)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true"/> <!-- Included in the HTML definition -->
-        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true"/> <!-- Included in the CMake definition -->
-        <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!mysql-code" String="&fcode;\s*(?:mysql|sql|ddl)&end;" insensitive="true"/> <!-- Included in the PHP definition -->
-        <RegExpr attribute="Fenced Code" context="#pop!typescript-code" String="&fcode;\s*(?:typescript|ts)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!xml-code" String="&fcode;\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)&end;" insensitive="true"/>
-        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;.*$"/>
+        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;&end;" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!bash-code" String="&fcode;\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!zsh-code" String="&fcode;\s*(?:zsh)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!cpp-code" String="&fcode;\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!csharp-code" String="&fcode;\s*(?:cs|csharp|c\#)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!cmake-code" String="&fcode;\s*(?:cmake|CMakeLists(?:\.txt)?)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!css-code" String="&fcode;\s*css&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!c-code" String="&fcode;\s*[ch]&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!doxygen-code" String="&fcode;\s*doxygen&end;" insensitive="true" beginRegion="code-block"/> <!-- Block comment of Doxygen -->
+        <RegExpr attribute="Fenced Code" context="#pop!email-code" String="&fcode;\s*(?:email|emlx?|mbo?x)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!go-code" String="&fcode;\s*go(?:lang)?&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!hamlet-code" String="&fcode;\s*[wxs]?hamlet&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the Haskell definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!haskell-code" String="&fcode;\s*(?:haskell|c?hs|hs\-boot)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!html-code" String="&fcode;\s*(?:[sx]?html?|inc|tmpl|tpl)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!java-code" String="&fcode;\s*(?:java|bsh)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!javascript-code" String="&fcode;\s*(?:javascript|m?js|es6|kwinscript|julius)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!jsx-code" String="&fcode;\s*(?:jsx|tsx|(?:java|type)script\-react)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition. Also apply for TSX. -->
+        <RegExpr attribute="Fenced Code" context="#pop!json-code" String="&fcode;\s*(?:json5?|gltf)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!yaml-code" String="&fcode;\s*(?:ya?ml)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!matlab-code" String="&fcode;\s*matlab&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!markdown-code" String="&fcode;\s*(?:markdown|m?md)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!mustache-code" String="&fcode;\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!perl-code" String="&fcode;\s*(?:perl|p[lm]|pod|psgi|vcl)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!php-code" String="&fcode;\s*(?:php[3457t]?|wml|phtml?|aw|ctp)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!raku-code" String="&fcode;\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the CMake definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!rhtml-code" String="&fcode;\s*((?:xml\.|js\.)?erb)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!mysql-code" String="&fcode;\s*(?:mysql|sql|ddl)&end;" insensitive="true" beginRegion="code-block"/> <!-- Included in the PHP definition -->
+        <RegExpr attribute="Fenced Code" context="#pop!nim-code" String="&fcode;\s*(?:nims?)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!typescript-code" String="&fcode;\s*(?:typescript|ts)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!xml-code" String="&fcode;\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!toml-code" String="&fcode;\s*toml&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!ini-code" String="&fcode;\s*ini&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!desktop-code" String="&fcode;\s*desktop&end;" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="#pop!code" String="&fcode;.*$" beginRegion="code-block"/>
       </context>
       <context name="code" attribute="Code" lineEndContext="#stay"> <!-- Unknown language -->
         <RegExpr attribute="Fenced Code" context="#pop" String="%1[~`]*(?=&end;)" firstNonSpace="true" dynamic="true" endRegion="code-block"/>
@@ -354,6 +388,10 @@
         <IncludeRules context="code"/>
         <IncludeRules context="##Bash" includeAttrib="true"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="zsh-code" fallthroughContext="Command##Zsh">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Zsh" includeAttrib="true"/>
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="cmake-code">
         <IncludeRules context="code"/>
         <IncludeRules context="##CMake" includeAttrib="true"/>
@@ -414,7 +452,7 @@
         <IncludeRules context="code"/>
         <IncludeRules context="##JSON" includeAttrib="true"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code">
+      <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code" fallthroughContext="Lvl0Text##YAML">
         <IncludeRules context="code"/>
         <IncludeRules context="##YAML" includeAttrib="true"/>
       </context>
@@ -444,20 +482,28 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="qml-code">
         <IncludeRules context="code"/>
-        <IncludeRules context="##QML" includeAttrib="true"/>
+        <IncludeRules context="Normal##QML" includeAttrib="true"/>
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="r-code">
         <IncludeRules context="code"/>
         <IncludeRules context="##R Script" includeAttrib="true"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="raku-code" fallthroughContext="term##Raku">
+        <IncludeRules context="code"/>
+        <IncludeRules context="base##Raku" includeAttrib="true"/>
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">
         <IncludeRules context="code"/>
         <IncludeRules context="##reStructuredText" includeAttrib="true"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code">
+      <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code" fallthroughContext="Expr##Ruby">
         <IncludeRules context="code"/>
-        <IncludeRules context="##Ruby" includeAttrib="true"/>
+        <IncludeRules context="Ruby##Ruby" includeAttrib="true"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rhtml-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Ruby/Rails/RHTML" includeAttrib="true"/>
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="rust-code">
         <IncludeRules context="code"/>
         <IncludeRules context="##Rust" includeAttrib="true"/>
@@ -466,6 +512,10 @@
         <IncludeRules context="code"/>
         <IncludeRules context="##SQL (MySQL)" includeAttrib="true"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="nim-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##Nim" includeAttrib="true"/>
+      </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="typescript-code">
         <IncludeRules context="code"/>
         <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
@@ -474,13 +524,25 @@
         <IncludeRules context="code"/>
         <IncludeRules context="##XML" includeAttrib="true"/>
       </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="toml-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##TOML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ini-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="##INI Files" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="desktop-code">
+        <IncludeRules context="code"/>
+        <IncludeRules context="Normal##.desktop" includeAttrib="true"/>
+      </context>
 
       <!-- Common -->
       <context name="inc" attribute="Normal Text" lineEndContext="#stay">
         <!-- Code -->
         <RegExpr attribute="Code" String="`[^`]+`(?!`)|`{2}[^`](?:.*?[^`])?`{2}(?!`)|`{3}[^`](?:.*?[^`])?`{3}(?!`)|`{4}[^`](?:.*?[^`])?`{4}(?!`)|`{5,}[^`](?:.*?[^`])?`{5,}"/>
         <!-- Find Fenced Code Block -->
-        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)|~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true" beginRegion="code-block"/>
+        <RegExpr attribute="Fenced Code" context="find-lang-fenced-code" String="`{3,}(?=[^`]*$)|~{3,}(?=[^~]*$)" firstNonSpace="true" lookAhead="true"/>
         <!-- Comment -->
         <StringDetect attribute="Comment" context="comment" String="&startcomment;" beginRegion="comment"/>
         <!-- Links and References -->
@@ -491,6 +553,8 @@
         <RegExpr attribute="Reference Image" String="&refimageregex;"/>
         <RegExpr attribute="Auto-Link" context="autolink" String="&autolinkregex;" lookAhead="true"/>
         <RegExpr attribute="Mailto-Link" context="mailtolink" String="&mailtolinkregex;"/>
+        <!-- Emoji -->
+        <RegExpr attribute="Emoji" String="&emojiregex;"/>
         <!-- Line Break -->
         <RegExpr attribute="Line Break" minimal="true" String="&linebreakregex;"/>
         <!-- Backslash Escapes -->
@@ -509,6 +573,7 @@
         <Detect2Chars attribute="Backslash Escape" char="\" char1="-"/>
         <Detect2Chars attribute="Backslash Escape" char="\" char1="."/>
         <Detect2Chars attribute="Backslash Escape" char="\" char1="!"/>
+        <Detect2Chars attribute="Backslash Escape" char="\" char1="|"/>
         <Detect2Chars attribute="Backslash Escape" char="\" char1="&lt;"/>
         <Detect2Chars attribute="Backslash Escape" char="\" char1="&gt;"/>
         <Detect2Chars attribute="Backslash Escape" char="\" char1="&amp;"/>
@@ -517,8 +582,7 @@
         <RegExpr context="find-html-block" String="&lt;/?&htmlname;(?:[\s&gt;]|/&gt;|$)" lookAhead="true"/>
       </context>
       <context name="find-html-block" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
-        <IncludeRules context="FindSpecialHTMLTags##HTML"/>
-        <IncludeRules context="FindHTMLTags##HTML"/>
+        <IncludeRules context="FindElements##HTML"/>
       </context>
 
       <!-- Links and email: <https://example.com>, <example@kde.org> -->
@@ -592,6 +656,7 @@
       <itemData name="Strong Text" defStyleNum="dsNormal" bold="true"/>
       <itemData name="Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
       <itemData name="Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
+      <itemData name="Highlight Text" defStyleNum="dsAlert"/>
       <itemData name="Normal Text: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
       <itemData name="Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>
       <itemData name="Line Break" defStyleNum="dsNormal" underline="true" color="#999999" spellChecking="false"/>
@@ -607,6 +672,7 @@
       <itemData name="Blockquote: Strong Text" defStyleNum="dsAttribute" bold="true"/>
       <itemData name="Blockquote: Strong-Emphasis Text" defStyleNum="dsAttribute" italic="true" bold="true"/>
       <itemData name="Blockquote: Strikethrough Text" defStyleNum="dsAttribute" strikeOut="true"/>
+      <itemData name="Blockquote: Highlight Text" defStyleNum="dsAlert"/>
       <itemData name="Blockquote: Link" defStyleNum="dsAttribute" underline="true" spellChecking="false"/>
       <itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>
       <itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>
@@ -615,11 +681,14 @@
       <itemData name="List: Strong Text" defStyleNum="dsNormal" bold="true"/>
       <itemData name="List: Strong-Emphasis Text" defStyleNum="dsNormal" italic="true" bold="true"/>
       <itemData name="List: Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
+      <itemData name="List: Highlight Text" defStyleNum="dsAlert"/>
       <itemData name="List: Link" defStyleNum="dsNormal" underline="true" spellChecking="false"/>
       <itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
       <itemData name="Code" defStyleNum="dsInformation"/>
       <itemData name="Fenced Code" defStyleNum="dsInformation" spellChecking="false"/>
+      <itemData name="Table" defStyleNum="dsPreprocessor"/>
+      <itemData name="Emoji" defStyleNum="dsSpecialChar" spellChecking="false"/>
       <itemData name="Auto-Link" defStyleNum="dsOthers" spellChecking="false"/>
       <itemData name="Link" defStyleNum="dsOthers" underline="true" spellChecking="false"/>
       <itemData name="Mailto-Link" defStyleNum="dsOthers" spellChecking="false"/>
diff --git a/xml/markdown.xml.patch b/xml/markdown.xml.patch
deleted file mode 100644
--- a/xml/markdown.xml.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/skylighting-core/xml/markdown.xml b/skylighting-core/xml/markdown.xml
-index d836d1c..63da066 100644
---- a/skylighting-core/xml/markdown.xml
-+++ b/skylighting-core/xml/markdown.xml
-@@ -325,7 +325,6 @@
-         <RegExpr attribute="Fenced Code" context="#pop!python-code" String="&fcode;\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)&end;" insensitive="true"/>
-         <RegExpr attribute="Fenced Code" context="#pop!qml-code" String="&fcode;\s*qml(?:types)?&end;" insensitive="true"/>
-         <RegExpr attribute="Fenced Code" context="#pop!r-code" String="&fcode;\s*(?:r|rprofile|rscript)&end;" insensitive="true"/>
--        <RegExpr attribute="Fenced Code" context="#pop!raku-code" String="&fcode;\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)&end;" insensitive="true"/>
-         <RegExpr attribute="Fenced Code" context="#pop!rest-code" String="&fcode;\s*(?:rst|rest|restructuredtext)&end;" insensitive="true"/> <!-- Included in the CMake definition -->
-         <RegExpr attribute="Fenced Code" context="#pop!ruby-code" String="&fcode;\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml|(?:xml|js)\.erb)&end;" insensitive="true"/>
-         <RegExpr attribute="Fenced Code" context="#pop!rust-code" String="&fcode;\s*(?:rust|rs)&end;" insensitive="true"/>
-@@ -433,10 +432,6 @@
-         <IncludeRules context="code"/>
-         <IncludeRules context="##R Script" includeAttrib="true"/>
-       </context>
--      <context attribute="Normal Text" lineEndContext="#stay" name="raku-code">
--        <IncludeRules context="code"/>
--        <IncludeRules context="base##Raku" includeAttrib="true"/>
--      </context>
-       <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">
-         <IncludeRules context="code"/>
-         <IncludeRules context="##reStructuredText" includeAttrib="true"/>
diff --git a/xml/mathematica.xml b/xml/mathematica.xml
--- a/xml/mathematica.xml
+++ b/xml/mathematica.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Mathematica" version="12" kateversion="5.0" section="Scientific"
           extensions="*.nb" mimetype="application/mathematica;application/vnd.wolfram.mathematica" indenter="cstyle"
           author="Sven Brauch (svenbrauch@gmail.com)" license="LGPL" priority="3">
@@ -262,7 +262,6 @@
       <item>BooleanFunction</item>
       <item>ByteOrdering</item>
       <item>C</item>
-      <item>C</item>
       <item>CityData</item>
       <item>ContinuousAction</item>
       <item>CallPacket</item>
@@ -530,7 +529,6 @@
       <item>ContinuedFractionK</item>
       <item>CylindricalDecomposition</item>
       <item>D</item>
-      <item>D</item>
       <item>DepthFirstScan</item>
       <item>DiskMatrix</item>
       <item>DagumDistribution</item>
@@ -738,7 +736,6 @@
       <item>Disk</item>
       <item>DynamicWrapper</item>
       <item>E</item>
-      <item>E</item>
       <item>End</item>
       <item>ExactNumberQ</item>
       <item>EdgeAdd</item>
@@ -1210,7 +1207,6 @@
       <item>HermiteH</item>
       <item>HoytDistribution</item>
       <item>I</item>
-      <item>I</item>
       <item>ImportString</item>
       <item>Interrupt</item>
       <item>Identity</item>
@@ -1782,7 +1778,6 @@
       <item>Min</item>
       <item>MultivariateTDistribution</item>
       <item>N</item>
-      <item>N</item>
       <item>NormalizedSquaredEuclideanDistance</item>
       <item>NotPrecedesSlantEqual</item>
       <item>NakagamiDistribution</item>
@@ -1949,7 +1944,6 @@
       <item>Normalize</item>
       <item>NotPrecedesEqual</item>
       <item>NyquistPlot</item>
-      <item>O</item>
       <item>O</item>
       <item>Operate</item>
       <item>OutputForm</item>
diff --git a/xml/matlab.xml b/xml/matlab.xml
--- a/xml/matlab.xml
+++ b/xml/matlab.xml
@@ -55,7 +55,7 @@
   Co-author: Leonardo Finetti, www.finex.org
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- low priority to let Objective-C win for .m files per default -->
 <language name="Matlab" version="8" kateversion="5.0" section="Scientific" extensions="*.m;*.M" priority="-9" mimetype="text/mfile" casesensitive="1">
   <highlighting>
diff --git a/xml/maxima.xml b/xml/maxima.xml
--- a/xml/maxima.xml
+++ b/xml/maxima.xml
@@ -19,7 +19,7 @@
     Usage: place maxima.xml in $KDEDIR/share/apps/katepart/syntax.
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 
 <language name="Maxima" version="7" kateversion="5.2" section="Scientific" extensions="*.mac;*.MAC;*.dem;*.DEM" casesensitive="1" author="Alexey Beshenov &lt;al@beshenov.ru&gt;" license="LGPLv2.1+">
     <highlighting>
diff --git a/xml/mediawiki.xml b/xml/mediawiki.xml
--- a/xml/mediawiki.xml
+++ b/xml/mediawiki.xml
@@ -1,272 +1,515 @@
-<?xml version = '1.0' encoding = 'UTF-8'?>
-<!DOCTYPE language SYSTEM "language.dtd" [
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
   <!ENTITY tab "&#9;">
-  <!ENTITY url          "(http:|https:|ftp:|mailto:)[^]| ]*(?=$|[]|\s])">
-  <!ENTITY htmlTagName  "(?![0-9])[\w_:][\w.:_-]*">
+  <!ENTITY externalLink "(https?://|ftp://|mailto:|//)((?=\{\{)|\{?[^\s\[\]{|}]+)">
+  <!--
+    end punctuation are not part of the link
+    http://example.com?p=1
+    ~~~~~~~~~~~~~~~~~~~~~~ link
+    http://example.com?
+    ~~~~~~~~~~~~~~~~~~  link
+                      ~ no link
+  -->
+  <!ENTITY url          "(https?://|ftp://|mailto:)((?=\{\{)|\{?&urlpart;)">
+  <!ENTITY urlpart      "([^\s\[\]{|}?!.,]++|([?!.,]++)(?=[^\s\[\]?!.,]))++">
+  <!ENTITY htmlTagName  "[[:alpha:]_][\w_-]*">
   <!ENTITY htmlEntity   "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&htmlTagName;);">
-  <!ENTITY wikiLinkWithDescription "\[\[[^]|]*\|[^]]*\]\]">
-  <!ENTITY wikiLinkWithoutDescription "\[\[[^]|]*\]\]">
+  <!ENTITY wikiLinkWithDescription "\[\[(?=[^]|]*\|[^]]*\]\])">
+  <!ENTITY wikiLinkWithoutDescription "\[\[(?=[^]|]*\]\])">
 ]>
-<language name="MediaWiki" section="Markup" version="12" kateversion="5.53" extensions="*.mediawiki" mimetype="" license="FDL" >
+<language name="MediaWiki" section="Markup" version="14" kateversion="5.62" extensions="*.mediawiki" mimetype="" license="FDL" >
+
+  <!--
+    https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Formatting
+    https://www.mediawiki.org/wiki/Help:Advanced_editing
+    https://en.wikipedia.org/wiki/Help:Wikitext
+  -->
+
   <highlighting>
     <contexts>
       <context attribute="Normal" lineEndContext="#stay" name="normal" >
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <RegExpr String="^[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />
-        <RegExpr String="^[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />
-        <RegExpr String="^[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />
-        <RegExpr String="^[=]{2,2}(?!=)" context="Section2" attribute="Section" column="0" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
-        <DetectChar char=";" attribute="WikiTag" context="DefinitionListHeader" column="0" />
-        <IncludeRules context="FindListItem" />
+        <AnyChar String="&tab; " context="Unformatted" column="0" />
+        <DetectSpaces/>
+
         <IncludeRules context="FindUrl" />
+        <DetectIdentifier/>
+
+        <IncludeRules context="FindListItem" />
+        <IncludeRules context="FindSection" />
         <IncludeRules context="FindTextDecorations" />
+        <IncludeRules context="FindComment" />
         <IncludeRules context="FindTable" />
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
+        <IncludeRules context="FindTemplates" />
         <IncludeRules context="FindWikiLink" />
         <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="WikiTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <DetectSpaces context="Unformatted" column="0" />
+        <IncludeRules context="FindHtmlElements" />
+        <IncludeRules context="FindSignature" />
+        <IncludeRules context="FindLineSep" />
       </context>
+
+
+      <!--
+        Table @{
+
+        e.g.
+        {|
+      -->
+
+      <context name="FindTable" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="{|" column="0" context="TableHeader" attribute="WikiTag" beginRegion="table" />
+      </context>
+
       <context name="TableHeader" attribute="Normal" lineEndContext="TableContent" >
-        <Detect2Chars char="{" char1="|" attribute="WikiTag" beginRegion="table" />
-        <IncludeRules context="FindHtmlStartTagAttributes" />
+        <DetectChar attribute="HtmlAttributeSeparator" char="=" />
+        <DetectIdentifier attribute="HtmlAttribute"/>
+        <DetectChar attribute="HtmlValue" context="ValueWithDoubleQuotes" char="&quot;" />
+        <DetectChar attribute="HtmlValue" context="ValueWithSingleQuotes" char="&apos;" />
       </context>
+
       <context name="TableContent" attribute="Normal" lineEndContext="#stay">
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <RegExpr String="^[=]{5,5}(?!=)" context="Section5" attribute="Section" column="0" />
-        <RegExpr String="^[=]{4,4}(?!=)" context="Section4" attribute="Section" column="0" />
-        <RegExpr String="^[=]{3,3}(?!=)" context="Section3" attribute="Section" column="0" />
-        <RegExpr String="^[=]{2,2}(?!=)" context="Section2" attribute="Section" column="0" />
-        <DetectChar char=";" attribute="WikiTag" context="DefinitionListHeader" column="0" />
-        <IncludeRules context="FindListItem" />
-        <IncludeRules context="FindUrl" />
-        <IncludeRules context="FindTextDecorations" />
-        <IncludeRules context="FindTable" />
-        <Detect2Chars char="|" char1="}" column="0" attribute="WikiTag" context="#pop#pop" endRegion="table" />
-        <Detect2Chars char="|" char1="-" column="0" attribute="WikiTag" />
-        <DetectChar char="|" attribute="WikiTag" context="#stay"/>
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
-        <IncludeRules context="FindWikiLink" />
-        <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="WikiTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <AnyChar String="&tab; " context="Unformatted" column="0" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
-        <RegExpr String="[-]{4,}" attribute="WikiTag" context="#stay" />
-        <DetectChar char="!" attribute="WikiTag" context="#stay" column="0" />
+        <StringDetect String="|}" column="0" attribute="WikiTag" context="#pop#pop" endRegion="table" />
+        <StringDetect String="|-" column="0" attribute="WikiTag"/>
+        <StringDetect String="|+" column="0" attribute="WikiTag" context="CellAttr"/>
+        <DetectChar char="|" column="0" attribute="WikiTag" context="CellAttr"/>
+        <StringDetect String="||" attribute="WikiTag" context="CellAttr"/>
+        <IncludeRules context="normal" />
+        <DetectChar char="!" attribute="WikiTag" column="0" context="CellAttr"/>
+        <StringDetect String="!!" attribute="WikiTag" context="CellAttr"/>
       </context>
+
+      <context name="CellAttr" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <DetectChar char="|" attribute="WikiTag" context="#pop"/>
+        <RegExpr String="\w+(?=\s*=\s*(&quot;[^&quot;]*&quot;|'[^']*'))" context="HtmlAttrSep" attribute="HtmlAttribute"/>
+      </context>
+
+      <!-- @} Table -->
+
+
+      <!--
+        Section @{
+
+        e.g.
+        === title ===
+      -->
+
+      <context name="FindSection" attribute="Normal">
+        <!-- not a section -->
+        <StringDetect String="======" column="0"/>
+        <!-- sections -->
+        <StringDetect String="=====" column="0" context="Section5" attribute="SectionDeliminator"/>
+        <StringDetect String="====" column="0" context="Section4" attribute="SectionDeliminator"/>
+        <StringDetect String="===" column="0" context="Section3" attribute="SectionDeliminator"/>
+        <StringDetect String="==" column="0" context="Section2" attribute="SectionDeliminator"/>
+      </context>
+
       <context attribute="Section" lineEndContext="#pop" name="Section5" >
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
-        <IncludeRules context="FindUrl" />
-        <IncludeRules context="FindTextDecorationsInHeader" />
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
-        <IncludeRules context="FindWikiLink" />
-        <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="HtmlTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={5,5} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={6,} *$|={1,4} *$|=*[^=]+$" context="#pop" attribute="Normal" />
+        <IncludeRules context="FindInHeader" />
+        <RegExpr String="===== *$" context="#pop" attribute="SectionDeliminator" />
       </context>
       <context attribute="Section" lineEndContext="#pop" name="Section4" >
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
-        <IncludeRules context="FindUrl" />
-        <IncludeRules context="FindTextDecorationsInHeader" />
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
-        <IncludeRules context="FindWikiLink" />
-        <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="HtmlTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={4,4} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={5,} *$|={1,3} *$|=*[^=]+$" context="#pop" attribute="Normal" />
+        <IncludeRules context="FindInHeader" />
+        <RegExpr String="==== *$" context="#pop" attribute="SectionDeliminator" />
       </context>
       <context attribute="Section" lineEndContext="#pop" name="Section3" >
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
-        <IncludeRules context="FindUrl" />
-        <IncludeRules context="FindTextDecorationsInHeader" />
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
-        <IncludeRules context="FindWikiLink" />
-        <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="HtmlTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={3,3} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={4,} *$|={1,2} *$|=*[^=]+$" context="#pop" attribute="Normal" />
+        <IncludeRules context="FindInHeader" />
+        <RegExpr String="=== *$" context="#pop" attribute="SectionDeliminator" />
       </context>
       <context attribute="Section" lineEndContext="#pop" name="Section2" >
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
-        <IncludeRules context="FindUrl" />
-        <IncludeRules context="FindTextDecorationsInHeader" />
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
+        <IncludeRules context="FindInHeader" />
+        <RegExpr String="== *$" context="#pop" attribute="SectionDeliminator" />
+      </context>
+
+      <context attribute="Normal" lineEndContext="#stay" name="FindInHeader" >
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <StringDetect String="'''" attribute="WikiTag" context="Bold" />
+        <StringDetect String="''" attribute="WikiTag" context="BoldItalic" />
+        <IncludeRules context="FindComment" />
+        <IncludeRules context="FindTemplates" />
         <IncludeRules context="FindWikiLink" />
         <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="HtmlTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <RegExpr String="={2,2} *$" context="#pop" attribute="Section" />
-        <RegExpr String="={3,} *$|={1,1} *$|=*[^=]+$" context="#pop" attribute="Normal" />
+        <IncludeRules context="FindHtmlElements" />
+        <IncludeRules context="FindSignature" />
       </context>
-      <context attribute="Comment" lineEndContext="#stay" name="comment" >
-        <StringDetect String="--&gt;" context="#pop" attribute="Comment" endRegion="comment" />
-        <DetectSpaces />
-        <IncludeRules context="##Comments" />
+
+      <!-- @} Section -->
+
+
+      <!--
+        Link @{
+
+        e.g.
+        [link label]
+        http://example.com
+      -->
+
+      <context attribute="Normal" lineEndContext="#stay" name="FindUrl" >
+        <RegExpr String="\[(?=&externalLink;)" attribute="WikiTag" context="DelimitedURL" />
+        <RegExpr String="&url;" attribute="Link" context="LooseURL" />
       </context>
-      <context attribute="Link" lineEndContext="#stay" name="DelimitedURL" >
+      <context attribute="Normal" lineEndContext="#stay" name="FindUrlWithinTemplate" >
+        <RegExpr String="\[(?=&externalLink;)" attribute="WikiTag" context="DelimitedURL" />
+        <RegExpr String="&url;" attribute="Link" context="LooseURLWithinTemplate" />
+      </context>
+
+      <!-- external link: [link label] -->
+
+      <context attribute="Link" lineEndContext="#pop" name="DelimitedURL" >
         <DetectChar char="]" context="#pop" attribute="WikiTag" />
-        <DetectChar char="[" context="#stay" attribute="WikiTag" />
-        <RegExpr String="&url;" context="DelimitedUrlLink" lookAhead="true" />
-        <DetectChar char=" " context="URLTag" attribute="WikiTag" />
+        <DetectSpaces context="URLTag" attribute="WikiTag" />
+        <IncludeRules context="FindTemplates" />
       </context>
-      <context attribute="Link" lineEndContext="#stay" name="DelimitedUrlLink" >
-        <IncludeRules context="FindTemplate" />
-        <AnyChar String=" ]" context="#pop" lookAhead="true" />
+      <context attribute="Normal" lineEndContext="#pop#pop" name="URLTag" >
+        <DetectChar char="]" context="#pop#pop" attribute="WikiTag" />
+        <IncludeRules context="FindTextDecorations" />
+        <IncludeRules context="FindTemplates" />
       </context>
 
-      <context attribute="Link" lineEndContext="#pop" name="LooseURL" >
-        <IncludeRules context="FindTemplate" />
-        <DetectChar char=" " context="#pop" attribute="WikiTag" />
+      <!-- link in text -->
+
+      <context attribute="Link" lineEndContext="#pop" name="LooseURL" fallthroughContext="#pop">
+        <DetectChar char="|" context="#pop" lookAhead="true" />
+        <DetectSpaces context="#pop" attribute="Normal" />
+        <IncludeRules context="FindTemplates" />
+        <RegExpr String="(&urlpart;|{(?!\{))++" attribute="Link" />
       </context>
       <context attribute="Link" lineEndContext="#pop" name="LooseURLWithinTemplate" >
-        <IncludeRules context="FindTemplate" />
-        <Detect2Chars char="}" char1="}" context="#pop" lookAhead="true" />
-        <DetectChar char=" " context="#pop" attribute="WikiTag" />
+        <StringDetect String="}}" context="#pop" lookAhead="true" />
+        <IncludeRules context="LooseURL" />
       </context>
 
-      <context attribute="Normal" lineEndContext="#stay" name="URLTag" >
-        <IncludeRules context="FindTextDecorations" />
-        <IncludeRules context="FindTemplate" />
-        <DetectChar char="]" context="#pop" lookAhead="true" />
+      <!-- @} Link -->
+
+
+      <!--
+        List, Indentation and Definition @{
+
+        e.g.
+        * item
+        ::; term
+        ; term: desc
+      -->
+
+      <context attribute="Normal" lineEndContext="#stay" name="FindListItem" >
+        <AnyChar String="*#;:" context="ListItem" column="0" lookAhead="1"/>
       </context>
 
+      <!-- dispatching -->
+
+      <context attribute="Normal" lineEndContext="#pop" name="ListItem" fallthroughContext="#pop">
+        <AnyChar String="*#:" attribute="WikiTag"/>
+        <DetectChar char=";" attribute="WikiTag" context="DefinitionItem" />
+      </context>
+
+      <!-- definition -->
+
+      <context attribute="Normal" lineEndContext="#pop#pop" name="DefinitionItem" fallthroughContext="DefinitionListHeader">
+        <AnyChar String="*#:;" attribute="WikiTag"/>
+      </context>
+
+      <context attribute="DefinitionListHeader" lineEndContext="#pop#pop#pop" name="DefinitionListHeader" >
+        <DetectChar char=":" context="#pop#pop#pop" attribute="WikiTag" />
+      </context>
+
+      <!-- @} List, Indentation and Definition -->
+
+
+      <!--
+        Bold, Italic and Underlined @{
+
+        e.g.
+        ''abc''
+        '''abc'''
+        <u>abc</u>
+      -->
+
+      <context name="FindTextDecorations" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="'''" attribute="WikiTag" context="Bold" />
+        <StringDetect String="''" attribute="WikiTag" context="Italic" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="Underlined" />
+      </context>
+
+      <context name="FindTextInDecorations" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="FindUrl" />
+        <DetectIdentifier/>
+        <IncludeRules context="FindComment" />
+        <IncludeRules context="FindTemplates" />
+        <IncludeRules context="FindWikiLink" />
+        <IncludeRules context="FindHtmlEntities" />
+        <IncludeRules context="FindHtmlElements" />
+      </context>
+
+      <context attribute="Bold" lineEndContext="#pop" name="Bold" >
+        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="''" context="BoldItalic" attribute="WikiTag" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="BoldUnderlined" />
+        <IncludeRules context="FindWikiLinkBeingBold" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context attribute="Italic" lineEndContext="#pop" name="Italic" >
+        <StringDetect String="'''" attribute="WikiTag" context="ItalicBold" />
+        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="ItalicUnderlined" />
+        <IncludeRules context="FindWikiLinkBeingItalic" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context attribute="Underlined" name="Underlined" lineEndContext="#stay" >
+        <StringDetect String="'''" context="UnderlinedBold" attribute="WikiTag" />
+        <StringDetect String="''" context="UnderlinedItalic" attribute="WikiTag" />
+        <StringDetect String="&lt;/u&gt;" context="#pop" attribute="HtmlTag" />
+        <IncludeRules context="FindWikiLinkBeingUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="BoldItalic" attribute="BoldItalic" lineEndContext="#pop" >
+        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="BoldItalicUnderlined" />
+        <IncludeRules context="FindWikiLinkBeingBoldItalic" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="ItalicBold" attribute="BoldItalic" lineEndContext="#pop" >
+        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="BoldItalicUnderlined" />
+        <IncludeRules context="FindWikiLinkBeingBoldItalic" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="BoldUnderlined" attribute="BoldUnderlined" lineEndContext="#pop#pop!Underlined" >
+        <StringDetect String="&lt;/u&gt;" context="#pop" attribute="HtmlTag" />
+        <StringDetect String="''" context="BoldUnderlinedItalic" attribute="WikiTag" />
+        <IncludeRules context="FindWikiLinkBeingBoldUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="UnderlinedBold" attribute="BoldUnderlined" lineEndContext="#pop" >
+        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="''" context="UnderlinedBoldItalic" attribute="WikiTag" />
+        <StringDetect String="&lt;/u&gt;" context="#pop#pop!Bold" attribute="Error" />
+        <IncludeRules context="FindWikiLinkBeingBoldUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="ItalicUnderlined" attribute="ItalicUnderlined" lineEndContext="#pop#pop!Underlined" >
+        <StringDetect String="&lt;/u&gt;" context="#pop" attribute="HtmlTag" />
+        <StringDetect String="'''" context="ItalicUnderlinedBold" attribute="WikiTag" />
+        <IncludeRules context="FindWikiLinkBeingItalicUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="UnderlinedItalic" attribute="ItalicUnderlined" lineEndContext="#pop" >
+        <StringDetect String="'''" context="UnderlinedItalicBold" attribute="WikiTag" />
+        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;/u&gt;" context="#pop#pop!Italic" attribute="Error" />
+        <IncludeRules context="FindWikiLinkBeingItalicUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <!-- and ItalicBoldUnderlined -->
+      <context name="BoldItalicUnderlined" attribute="BoldItalicUnderlined" lineEndContext="#pop#pop#pop!Underlined" >
+        <StringDetect String="&lt;/u&gt;" context="#pop" attribute="HtmlTag" />
+        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="BoldUnderlinedItalic" attribute="BoldItalicUnderlined" lineEndContext="#pop#pop#pop!Underlined" >
+        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;/u&gt;" context="#pop#pop!BoldItalic" attribute="Error" />
+        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="ItalicUnderlinedBold" attribute="BoldItalicUnderlined" lineEndContext="#pop#pop#pop!Underlined" >
+        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;/u&gt;" context="#pop#pop!ItalicBold" attribute="Error" />
+        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="UnderlinedItalicBold" attribute="BoldItalicUnderlined" lineEndContext="#pop#pop" >
+        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;/u&gt;" context="#pop#pop#pop" attribute="Error" />
+        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <context name="UnderlinedBoldItalic" attribute="BoldItalicUnderlined" lineEndContext="#pop#pop" >
+        <StringDetect String="''" context="#pop" attribute="WikiTag" />
+        <StringDetect String="&lt;/u&gt;" context="#pop#pop#pop" attribute="Error" />
+        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
+        <IncludeRules context="FindTextInDecorations" />
+      </context>
+
+      <!-- @} Bold, Italic and Underlined -->
+
+
+      <!--
+        Find Wiki Link @{
+
+        e.g.
+        [[Page|label]]
+      -->
+      <context name="FindWikiLink" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars char="[" char1="[" attribute="WikiTag" context="WikiLink" />
+      </context>
+
+      <!-- in Bold, Italic and Underlined -->
+
+      <context name="FindWikiLinkBeingBold" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldWithDescription" attribute="WikiTag" />
+        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldWithoutDescription" attribute="WikiTag" />
+      </context>
+      <context name="FindWikiLinkBeingItalic" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkItalicWithDescription" attribute="WikiTag" />
+        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkItalicWithoutDescription" attribute="WikiTag" />
+      </context>
+      <context name="FindWikiLinkBeingUnderlined" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkUnderlinedWithDescription" attribute="WikiTag" />
+        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkUnderlinedWithoutDescription" attribute="WikiTag" />
+      </context>
+      <context name="FindWikiLinkBeingBoldItalic" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldItalicWithDescription" attribute="WikiTag" />
+        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldItalicWithoutDescription" attribute="WikiTag" />
+      </context>
+      <context name="FindWikiLinkBeingBoldUnderlined" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldUnderlinedWithDescription" attribute="WikiTag" />
+        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldUnderlinedWithoutDescription" attribute="WikiTag" />
+      </context>
+      <context name="FindWikiLinkBeingItalicUnderlined" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkItalicUnderlinedWithDescription" attribute="WikiTag" />
+        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkItalicUnderlinedWithoutDescription" attribute="WikiTag" />
+      </context>
+      <context name="FindWikiLinkBeingBoldItalicUnderlined" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldItalicUnderlinedWithDescription" attribute="WikiTag" />
+        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldItalicUnderlinedWithoutDescription" attribute="WikiTag" />
+      </context>
+
+      <!-- @} Find Wiki Link -->
+
+      <!--
+        Within Wiki link @{
+
+        e.g.
+        [[Page|label]]
+          ~~~~~~~~~~~~
+      -->
       <context name="WikiLinkWithoutDescriptionRules" attribute="Normal" lineEndContext="#stay" >
-        <IncludeRules context="FindTemplate" />
+        <DetectIdentifier/>
+        <StringDetect String="]]" context="#pop" attribute="WikiTag" />
+        <IncludeRules context="FindTemplates" />
         <IncludeRules context="FindHtmlEntities" />
-        <Detect2Chars char="[" char1="[" attribute="WikiTag" />
-        <Detect2Chars char="]" char1="]" context="#pop" attribute="WikiTag" />
       </context>
       <context name="WikiLinkWithDescriptionRules" attribute="Normal" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
         <DetectChar char="#" attribute="WikiTag" />
+        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
       </context>
+
       <context name="WikiLink" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescription" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkBoldWithDescription" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescriptionBold" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkBoldWithoutDescription" attribute="LinkBold" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
         <DetectChar char="#" attribute="WikiTagBold" />
+        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
       </context>
       <context name="WikiLinkItalicWithDescription" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescriptionItalic" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkItalicWithoutDescription" attribute="LinkItalic" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
         <DetectChar char="#" attribute="WikiTagItalic" />
+        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
       </context>
       <context name="WikiLinkUnderlinedWithDescription" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescriptionUnderlined" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkUnderlinedWithoutDescription" attribute="LinkUnderlined" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
         <DetectChar char="#" attribute="WikiTagUnderlined" />
+        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
       </context>
       <context name="WikiLinkBoldItalicWithDescription" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescriptionBoldItalic" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkBoldItalicWithoutDescription" attribute="LinkBoldItalic" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
         <DetectChar char="#" attribute="WikiTagBoldItalic" />
+        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
       </context>
       <context name="WikiLinkBoldUnderlinedWithDescription" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescriptionBoldUnderlined" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkBoldUnderlinedWithoutDescription" attribute="LinkBoldUnderlined" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
         <DetectChar char="#" attribute="WikiTagBoldUnderlined" />
+        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
       </context>
       <context name="WikiLinkItalicUnderlinedWithDescription" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescriptionItalicUnderlined" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkItalicUnderlinedWithoutDescription" attribute="LinkItalicUnderlined" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
         <DetectChar char="#" attribute="WikiTagItalicUnderlined" />
+        <IncludeRules context="WikiLinkWithoutDescriptionRules" />
       </context>
       <context name="WikiLinkBoldItalicUnderlinedWithDescription" attribute="Link" lineEndContext="#stay" >
-        <IncludeRules context="WikiLinkWithDescriptionRules" />
         <DetectChar char="|" attribute="WikiTag" context="WikiLinkDescriptionBoldItalicUnderlined" />
+        <IncludeRules context="WikiLinkWithDescriptionRules" />
       </context>
       <context name="WikiLinkBoldItalicUnderlinedWithoutDescription" attribute="LinkBoldItalicUnderlined" lineEndContext="#stay" >
-        <DetectChar char="#" attribute="WikiTagBoldItalicUnderlined" />
         <IncludeRules context="WikiLinkWithoutDescriptionRules" />
+        <DetectChar char="#" attribute="WikiTagBoldItalicUnderlined" />
       </context>
 
+      <!--
+        [[Page|label or parameters]]
+               ~~~~~~~~~~~~~~~~~~~~~
+      -->
+
       <context name="WikiLinkDescriptionRules" attribute="Normal" lineEndContext="#stay">
-        <IncludeRules context="FindTemplate" />
-        <IncludeRules context="FindHtmlEntities" />
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <DetectChar char="|" attribute="WikiTag" />
         <Detect2Chars char="]" char1="]" context="#pop" attribute="WikiTag" lookAhead="true" />
+        <IncludeRules context="FindTemplates" />
+        <IncludeRules context="FindComment" />
+        <IncludeRules context="FindHtmlEntities" />
+        <IncludeRules context="FindHtmlElements" />
       </context>
+
       <context name="WikiLinkDescription" attribute="Normal" lineEndContext="#stay">
         <IncludeRules context="WikiLinkDescriptionRules" />
         <IncludeRules context="FindTextDecorations" />
       </context>
       <context name="WikiLinkDescriptionBold" attribute="Bold" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
-        <Detect2Chars char="'" char1="'" context="BoldItalic" attribute="WikiTag" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldUnderlined" />
+        <StringDetect String="''" context="BoldItalic" attribute="WikiTag" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="BoldUnderlined" />
       </context>
       <context name="WikiLinkDescriptionItalic" attribute="Italic" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
         <StringDetect String="'''" attribute="WikiTag" context="ItalicBold" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="ItalicUnderlined" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="ItalicUnderlined" />
       </context>
       <context name="WikiLinkDescriptionUnderlined" attribute="Underlined" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
         <StringDetect String="'''" context="UnderlinedBold" attribute="WikiTag" />
-        <Detect2Chars char="'" char1="'" context="UnderlinedItalic" attribute="WikiTag" />
+        <StringDetect String="''" context="UnderlinedItalic" attribute="WikiTag" />
       </context>
       <context name="WikiLinkDescriptionBoldItalic" attribute="BoldItalic" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldItalicUnderlined" />
+        <StringDetect String="&lt;u&gt;" attribute="HtmlTag" context="BoldItalicUnderlined" />
       </context>
       <context name="WikiLinkDescriptionBoldUnderlined" attribute="BoldUnderlined" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
-        <Detect2Chars char="'" char1="'" context="BoldUnderlinedItalic" attribute="WikiTag" />
+        <StringDetect String="''" context="BoldUnderlinedItalic" attribute="WikiTag" />
       </context>
       <context name="WikiLinkDescriptionItalicUnderlined" attribute="ItalicUnderlined" lineEndContext="#stay" >
         <IncludeRules context="WikiLinkDescriptionRules" />
@@ -276,105 +519,171 @@
         <IncludeRules context="WikiLinkDescriptionRules" />
       </context>
 
+      <!-- @} Within Wiki link -->
+
+
+      <!--
+        Template @{
+
+        e.g.
+        {{{value|default}}}
+        {{template|param=value}}
+      -->
+
+      <context attribute="Normal" lineEndContext="#stay" name="FindTemplates" >
+        <RegExpr String="{{(?=$|{{{|[^{])" context="Template" attribute="WikiTag" beginRegion="template" />
+        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
+      </context>
+
+      <!-- {{...}} -->
+
       <context attribute="TemplateName" lineEndContext="#stay" name="Template" >
-        <DetectChar char="|" context="TemplateParameterSlot" attribute="WikiTag" />
-        <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" endRegion="template" />
+        <DetectIdentifier/>
+        <DetectChar char="|" context="TemplateParameterSlotStart" attribute="WikiTag" />
+        <DetectChar char=":" context="TemplatenameOrText" attribute="TemplateName" />
+        <StringDetect String="}}" context="#pop" attribute="WikiTag" endRegion="template" />
+        <IncludeRules context="FindTemplates" />
       </context>
-      <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlot" >
-        <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" lookAhead="true" />
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
-        <IncludeRules context="FindListItem" />
-        <IncludeRules context="FindUrlWithinTemplate" />
-        <IncludeRules context="FindTextDecorations" />
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
-        <IncludeRules context="FindWikiLink" />
-        <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="HtmlTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <DetectChar char="|" context="#pop" attribute="WikiTag" lookAhead="true" />
-        <RegExpr String="[^{}|=]+(?=[=])" attribute="Parameter" context="TemplateParameterSlotEqual" />
+
+      <!-- {{...:...}}
+                ~ -->
+      <context attribute="TemplateName" lineEndContext="#stay" name="TemplatenameOrText" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <!-- {{...:*bla}}
+                   ~ list item -->
+        <AnyChar String="*#;&lt;[']" context="#pop!TemplateParameterSlotStart" lookAhead="1"/>
       </context>
-      <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlotEqual" >
-        <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" lookAhead="true" />
-        <DetectChar char="|" context="#pop" attribute="WikiTag" lookAhead="true" />
+
+      <!--
+        {{template|*...}}
+                   ~ start with list item
+        {{template|...}}
+                   ~~~ normal text or parameters
+      -->
+      <context attribute="Normal" lineEndContext="TemplateParameterSlot" fallthroughContext="TemplateParameterSlot" name="TemplateParameterSlotStart">
+        <DetectSpaces/>
+        <AnyChar String="*#;:" context="TemplateParameterSlotList" attribute="WikiTag"/>
+      </context>
+      <context attribute="Normal" lineEndContext="#pop!TemplateParameterSlot" fallthroughContext="#pop!TemplateParameterSlot" name="TemplateParameterSlotList">
+        <AnyChar String="*#;:" attribute="WikiTag"/>
+      </context>
+      <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlot" >
+        <DetectChar char="|" context="#pop" attribute="WikiTag" />
         <DetectChar char="=" context="TemplateParameterSlotValue" attribute="WikiTag" />
+        <StringDetect String="}}" context="#pop#pop#pop" attribute="WikiTag" endRegion="template" />
+        <IncludeRules context="FindInTemplate" />
+        <RegExpr String="[_\w]+\s*(?=[=])" attribute="Parameter"/>
       </context>
+
+      <!--
+        {{template|param=value}}
+                         ~~~~~~~
+      -->
       <context attribute="Normal" lineEndContext="#stay" name="TemplateParameterSlotValue" >
-        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
-        <StringDetect String="~~~~" attribute="WikiTag" context="#stay" />
-        <StringDetect String="~~~" attribute="WikiTag" context="#stay" />
+        <DetectChar char="|" context="#pop#pop" attribute="WikiTag" />
+        <StringDetect String="}}" context="#pop#pop#pop#pop" attribute="WikiTag" endRegion="template" />
+        <IncludeRules context="FindInTemplate" />
+      </context>
+
+      <context attribute="Normal" lineEndContext="#stay" name="FindInTemplate" >
+        <IncludeRules context="FindComment" />
+        <IncludeRules context="FindSignature" />
         <IncludeRules context="FindListItem" />
         <IncludeRules context="FindUrlWithinTemplate" />
         <IncludeRules context="FindTextDecorations" />
-        <StringDetect String="{{{" context="TemplateParameter" attribute="WikiTag" />
-        <IncludeRules context="FindTemplate" />
+        <IncludeRules context="FindTemplates" />
         <IncludeRules context="FindWikiLink" />
         <IncludeRules context="FindHtmlEntities" />
-        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="HtmlTag" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
-        <IncludeRules context="FindSyntaxHighlightingHtmlElement" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <Detect2Chars char="}" char1="}" context="#pop" attribute="WikiTag" lookAhead="true" />
-        <DetectChar char="|" context="#pop" attribute="WikiTag" lookAhead="true" />
+        <IncludeRules context="FindHtmlElements" />
       </context>
+
+      <!-- {{{...}}} -->
+
       <context attribute="Parameter" lineEndContext="#stay" name="TemplateParameter" >
+        <DetectIdentifier/>
         <StringDetect String="}}}" context="#pop" attribute="WikiTag" />
+        <DetectChar char="|" attribute="WikiTag" />
+        <IncludeRules context="FindTemplates" />
       </context>
-      <context attribute="NoWiki" lineEndContext="#stay" name="NoWiki" >
-        <RegExpr String="&lt;!--[^-]*--&gt;" attribute="NoWiki" />
-        <StringDetect String="&lt;/nowiki&gt;" context="#pop" attribute="HtmlTag" />
-        <RegExpr String="[&lt;][^&gt;]+[&gt;]" attribute="HtmlTag" context="#stay" />
-        <StringDetect String="&lt;pre&gt;" context="Pre" attribute="HtmlTag" />
+
+      <!-- @} Template -->
+
+
+      <!--
+        HTML element and special tags @{
+
+        e.g.
+        <tag>
+        <nowiki/>
+      -->
+
+      <context attribute="Normal" lineEndContext="#stay" name="FindHtmlElements" >
+        <StringDetect String="&lt;nowiki&gt;" context="NoWiki" attribute="WikiTag" />
+        <RegExpr String="&lt;nowiki\s*/&gt;" attribute="WikiTag" />
+        <WordDetect String="&lt;pre" context="PreAttr" attribute="HtmlTag" />
+        <WordDetect String="&lt;source" context="SourceStartTag" attribute="HtmlTag" />
+        <WordDetect String="&lt;syntaxhighlight" context="SyntaxHighlightStartTag" attribute="HtmlTag" />
+        <RegExpr String="&lt;/?&htmlTagName;" context="HtmlElement" attribute="HtmlTag" />
       </context>
-      <context attribute="Unformatted" lineEndContext="#pop" name="Unformatted" />
-      <context attribute="NoWiki" lineEndContext="#stay" name="Pre" >
-        <StringDetect String="&lt;/pre&gt;" context="#pop" attribute="HtmlTag" />
+
+      <!-- nowiki -->
+
+      <context attribute="NoWiki" lineEndContext="#stay" name="NoWiki" >
+        <StringDetect String="&lt;/nowiki&gt;" context="#pop" attribute="WikiTag" />
       </context>
 
+      <!-- <tag> -->
 
+      <context attribute="HtmlTag" lineEndContext="#stay" name="HtmlElement" fallthroughContext="#pop">
+        <DetectSpaces attribute="HtmlTag"/>
+        <DetectChar char=">" context="#pop" attribute="HtmlTag"/>
+        <IncludeRules context="FindHtmlAttribute"/>
+      </context>
 
-      <!-- <source> and <syntaxhighlight> tags. -->
+      <!-- <pre> -->
 
-      <context name="SourceStartTag" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="(^|\s+)lang\=(&quot;javascript&quot;|&apos;javascript&apos;)" context="JavaScriptSourceStartTag" lookAhead="true" />
-        <DetectChar attribute="HtmlTag" context="UnsupportedLanguageSourceStartTag" char="&gt;" lookAhead="true" />
-        <IncludeRules context="FindHtmlStartTagAttributes" />
+      <context attribute="HtmlTag" lineEndContext="#stay" name="PreAttr" fallthroughContext="#pop">
+        <DetectSpaces attribute="HtmlTag"/>
+        <DetectChar char=">" context="Pre" attribute="HtmlTag"/>
+        <IncludeRules context="FindHtmlAttribute"/>
       </context>
-      <context name="SyntaxHighlightStartTag" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="(^|\s+)lang\=(&quot;javascript&quot;|&apos;javascript&apos;)" context="JavaScriptSyntaxHighlightStartTag" lookAhead="true" />
-        <DetectChar attribute="HtmlTag" context="UnsupportedLanguageSyntaxHighlightStartTag" char="&gt;" lookAhead="true" />
-        <IncludeRules context="FindHtmlStartTagAttributes" />
+
+      <context attribute="NoWiki" lineEndContext="#stay" name="Pre" >
+        <StringDetect String="&lt;/pre&gt;" context="#pop#pop" attribute="HtmlTag" />
       </context>
 
+      <!-- <source> and <syntaxhighlight> -->
 
-      <context name="UnsupportedLanguageSourceStartTag" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="HtmlTag" context="UnsupportedLanguageSourceContent" char="&gt;" />
-        <IncludeRules context="FindHtmlStartTagAttributes" />
+      <context name="SourceStartTag" attribute="Normal" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces attribute="HtmlTag"/>
+        <DetectChar char=">" context="UnsupportedLanguageSourceContent" attribute="HtmlTag"/>
+        <StringDetect String="lang=&quot;javascript&quot;" context="#pop!JavaScriptSourceStartTag" lookAhead="1"/>
+        <StringDetect String="lang=&apos;javascript&apos;" context="#pop!JavaScriptSourceStartTag" lookAhead="1"/>
+        <IncludeRules context="FindHtmlAttribute"/>
       </context>
-      <context name="UnsupportedLanguageSyntaxHighlightStartTag" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="HtmlTag" context="UnsupportedLanguageSyntaxHighlightContent" char="&gt;" />
-        <IncludeRules context="FindHtmlStartTagAttributes" />
+      <context name="SyntaxHighlightStartTag" attribute="Normal" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces attribute="HtmlTag"/>
+        <DetectChar char=">" context="UnsupportedLanguageSyntaxHighlightContent" attribute="HtmlTag"/>
+        <StringDetect String="lang=&quot;javascript&quot;" context="#pop!JavaScriptSyntaxHighlightStartTag" lookAhead="1"/>
+        <StringDetect String="lang=&apos;javascript&apos;" context="#pop!JavaScriptSyntaxHighlightStartTag" lookAhead="1"/>
+        <IncludeRules context="FindHtmlAttribute"/>
       </context>
 
-      <context name="JavaScriptSourceStartTag" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="HtmlTag" context="JavaScriptSourceContent" char="&gt;" />
-        <IncludeRules context="FindHtmlStartTagAttributes" />
+      <context name="JavaScriptSourceStartTag" attribute="Normal" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces attribute="HtmlTag"/>
+        <DetectChar char=">" context="JavaScriptSourceContent" attribute="HtmlTag"/>
+        <IncludeRules context="FindHtmlAttribute"/>
       </context>
-      <context name="JavaScriptSyntaxHighlightStartTag" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="HtmlTag" context="JavaScriptSyntaxHighlightContent" char="&gt;" />
-        <IncludeRules context="FindHtmlStartTagAttributes" />
+      <context name="JavaScriptSyntaxHighlightStartTag" attribute="Normal" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces attribute="HtmlTag"/>
+        <DetectChar char=">" context="JavaScriptSyntaxHighlightContent" attribute="HtmlTag"/>
+        <IncludeRules context="FindHtmlAttribute"/>
       </context>
 
-
-      <context name="UnsupportedLanguageSourceContent" attribute="NoWiki" lineEndContext="#stay">
+      <context name="UnsupportedLanguageSourceContent" attribute="NoWiki">
         <IncludeRules context="SourceEnd" />
       </context>
-      <context name="UnsupportedLanguageSyntaxHighlightContent" attribute="NoWiki" lineEndContext="#stay">
+      <context name="UnsupportedLanguageSyntaxHighlightContent" attribute="NoWiki">
         <IncludeRules context="SyntaxHighlightEnd" />
       </context>
 
@@ -383,194 +692,91 @@
         <IncludeRules context="Normal##JavaScript" />
       </context>
       <context name="JavaScriptSyntaxHighlightContent" attribute="NoWiki" lineEndContext="#stay">
-        <StringDetect String="&lt;/syntaxhighlight&gt;" context="#pop#pop#pop" attribute="HtmlTag" />
         <IncludeRules context="SyntaxHighlightEnd" />
         <IncludeRules context="Normal##JavaScript" />
       </context>
 
-
-      <context name="SourceEnd" attribute="Normal" lineEndContext="#stay">
-        <StringDetect String="&lt;/source&gt;" context="#pop#pop#pop" attribute="HtmlTag" />
+      <context name="SourceEnd" attribute="Normal">
+        <StringDetect String="&lt;/source&gt;" context="#pop#pop" attribute="HtmlTag" />
       </context>
-      <context name="SyntaxHighlightEnd" attribute="Normal" lineEndContext="#stay">
-        <StringDetect String="&lt;/syntaxhighlight&gt;" context="#pop#pop#pop" attribute="HtmlTag" />
+      <context name="SyntaxHighlightEnd" attribute="Normal">
+        <StringDetect String="&lt;/syntaxhighlight&gt;" context="#pop#pop" attribute="HtmlTag" />
       </context>
 
+      <!--
+        <tag attr="value" ...>
+             ~~~~~~~~~~~~
+        Leaves the tag when the attribute syntax is not valid
+      -->
 
-      <context name="HtmlAttribute" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="HtmlAttribute" context="HtmlValue" char="=" />
-        <RegExpr attribute="Error" context="#stay" String="\S" />
+      <context attribute="Normal" lineEndContext="#stay" name="FindHtmlAttribute">
+        <DetectIdentifier attribute="HtmlAttribute" context="HtmlAttrSep"/>
       </context>
-      <context name="HtmlValue" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="HtmlValue" context="ValueWithDoubleQuotes" char="&quot;" />
-        <DetectChar attribute="HtmlValue" context="ValueWithSingleQuotes" char="&apos;" />
-        <RegExpr attribute="Error" context="#stay" String="\S" />
+
+      <context attribute="Normal" lineEndContext="#stay" name="HtmlAttrSep" fallthroughContext="#pop#pop">
+        <DetectChar attribute="HtmlAttributeSeparator" context="HtmlValue" char="=" />
+        <DetectSpaces attribute="Normal"/>
       </context>
+
+      <context attribute="Normal" lineEndContext="#stay" name="HtmlValue" fallthroughContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <DetectChar attribute="HtmlValue" context="#pop#pop!ValueWithDoubleQuotes" char="&quot;" />
+        <DetectChar attribute="HtmlValue" context="#pop#pop!ValueWithSingleQuotes" char="&apos;" />
+        <DetectIdentifier attribute="HtmlValue" context="#pop#pop"/>
+      </context>
+
       <context name="ValueWithDoubleQuotes" attribute="HtmlValue" lineEndContext="#stay">
-        <DetectChar attribute="HtmlValue" context="#pop#pop#pop" char="&quot;" />
+        <DetectChar attribute="HtmlValue" context="#pop" char="&quot;" />
         <IncludeRules context="FindHtmlEntities" />
       </context>
       <context name="ValueWithSingleQuotes" attribute="HtmlValue" lineEndContext="#stay">
-        <DetectChar attribute="HtmlValue" context="#pop#pop#pop" char="&apos;" />
+        <DetectChar attribute="HtmlValue" context="#pop" char="&apos;" />
         <IncludeRules context="FindHtmlEntities" />
       </context>
 
+      <!-- @} HTML element and special tags -->
 
 
-      <context attribute="DefinitionListHeader" lineEndContext="#pop" name="DefinitionListHeader" >
-        <DetectChar char=":" context="#pop" attribute="WikiTag" />
-      </context>
-      <context attribute="Bold" lineEndContext="#pop" name="Bold" >
-        <IncludeRules context="FindTemplate" />
-        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
-        <Detect2Chars char="'" char1="'" context="BoldItalic" attribute="WikiTag" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldUnderlined" />
-        <IncludeRules context="FindWikiLinkBeingBold" />
-      </context>
-      <context attribute="Italic" lineEndContext="#pop" name="Italic" >
-        <IncludeRules context="FindTemplate" />
-        <StringDetect String="'''" attribute="WikiTag" context="ItalicBold" />
-        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="ItalicUnderlined" />
-        <IncludeRules context="FindWikiLinkBeingItalic" />
-      </context>
-      <context attribute="Underlined" name="Underlined" lineEndContext="#stay" >
-        <IncludeRules context="FindTemplate" />
-        <StringDetect String="'''" context="UnderlinedBold" attribute="WikiTag" />
-        <Detect2Chars char="'" char1="'" context="UnderlinedItalic" attribute="WikiTag" />
-        <RegExpr String="&lt;/u *&gt;" context="#pop" attribute="HtmlTag" />
-        <IncludeRules context="FindWikiLinkBeingUnderlined" />
-      </context>
-      <context name="BoldItalic" attribute="BoldItalic" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldItalicUnderlined" />
-        <IncludeRules context="FindWikiLinkBeingBoldItalic" />
-      </context>
-      <context name="ItalicBold" attribute="BoldItalic" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="BoldItalicUnderlined" />
-        <IncludeRules context="FindWikiLinkBeingBoldItalic" />
-      </context>
-      <context name="BoldUnderlined" attribute="BoldUnderlined" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <RegExpr String="&lt;/u *&gt;" context="#pop" attribute="HtmlTag" />
-        <Detect2Chars char="'" char1="'" context="BoldUnderlinedItalic" attribute="WikiTag" />
-        <IncludeRules context="FindWikiLinkBeingBoldUnderlined" />
-      </context>
-      <context name="UnderlinedBold" attribute="BoldUnderlined" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
-        <Detect2Chars char="'" char1="'" context="BoldUnderlinedItalic" attribute="WikiTag" />
-        <IncludeRules context="FindWikiLinkBeingBoldUnderlined" />
-      </context>
-      <context name="ItalicUnderlined" attribute="ItalicUnderlined" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <RegExpr String="&lt;/u *&gt;" context="#pop" attribute="HtmlTag" />
-        <StringDetect String="'''" context="ItalicUnderlinedBold" attribute="WikiTag" />
-        <IncludeRules context="FindWikiLinkBeingItalicUnderlined" />
-      </context>
-      <context name="UnderlinedItalic" attribute="ItalicUnderlined" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
-        <IncludeRules context="FindWikiLinkBeingItalicUnderlined" />
-      </context>
-      <context name="BoldItalicUnderlined" attribute="BoldItalicUnderlined" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <RegExpr String="&lt;/u *&gt;" context="#pop" attribute="HtmlTag" />
-        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
-      </context>
-      <context name="BoldUnderlinedItalic" attribute="BoldItalicUnderlined" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <Detect2Chars char="'" char1="'" context="#pop" attribute="WikiTag" />
-        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
-      </context>
-      <context name="ItalicUnderlinedBold" attribute="BoldItalicUnderlined" lineEndContext="#pop" >
-        <IncludeRules context="FindTemplate" />
-        <StringDetect String="'''" context="#pop" attribute="WikiTag" />
-        <IncludeRules context="FindWikiLinkBeingBoldItalicUnderlined" />
-      </context>
-
-      <!-- Contexts for inclusion. -->
+      <!--
+        Comment @{
+      -->
 
-      <context name="FindHtmlEntities" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&htmlEntity;" attribute="HtmlEntity" />
+      <context name="FindComment" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="&lt;!--" context="comment" attribute="Comment" beginRegion="comment" />
       </context>
 
-      <context name="FindHtmlStartTagAttributes" attribute="Normal" lineEndContext="#stay">
-        <RegExpr attribute="HtmlAttribute" context="HtmlAttribute" String="^&htmlTagName;|\s+&htmlTagName;" />
-        <RegExpr attribute="Error" context="#stay" String="\S" />
+      <context attribute="Comment" lineEndContext="#stay" name="comment" >
+        <DetectSpaces />
+        <StringDetect String="--&gt;" context="#pop" attribute="Comment" endRegion="comment" />
+        <IncludeRules context="##Comments" />
+        <DetectIdentifier />
       </context>
 
-      <context attribute="Normal" lineEndContext="#stay" name="FindListItem" >
-        <RegExpr String="^[*#;:\s]*[*#:]+" attribute="WikiTag" context="#stay" column="0" />
-      </context>
+      <!-- @} Comment -->
 
-      <context attribute="Normal" lineEndContext="#stay" name="FindSyntaxHighlightingHtmlElement" >
-        <RegExpr String="&lt;source(?=\s)" context="SourceStartTag" attribute="HtmlTag" />
-        <RegExpr String="&lt;syntaxhighlight(?=\s)" context="SyntaxHighlightStartTag" attribute="HtmlTag" />
-      </context>
 
-      <context name="FindTable" attribute="Normal" lineEndContext="#stay">
-        <Detect2Chars char="{" char1="|" column="0" context="TableHeader"  lookAhead="true" />
-      </context>
+      <!--
+        Others @{
+      -->
 
-      <context attribute="Normal" lineEndContext="#stay" name="FindTemplate" >
-        <Detect2Chars char="{" char1="{" context="Template" attribute="WikiTag" beginRegion="template" />
-      </context>
+      <context attribute="Unformatted" lineEndContext="#pop" name="Unformatted" />
 
-      <context name="FindTextDecorations" attribute="Normal" lineEndContext="#stay">
-        <StringDetect String="'''" attribute="WikiTag" context="Bold" />
-        <Detect2Chars char="'" char1="'" attribute="WikiTag" context="Italic" />
-        <RegExpr String="&lt;u *&gt;" attribute="HtmlTag" context="Underlined" />
-      </context>
-      <context attribute="Normal" lineEndContext="#stay" name="FindTextDecorationsInHeader" >
-        <StringDetect String="'''" attribute="WikiTag" context="Bold" />
-        <Detect2Chars char="'" char1="'" attribute="WikiTag" context="BoldItalic" />
+      <context name="FindSignature" attribute="Normal" lineEndContext="#stay">
+        <StringDetect String="~~~~~" attribute="WikiTag"/>
+        <StringDetect String="~~~~" attribute="WikiTag"/>
+        <StringDetect String="~~~" attribute="WikiTag"/>
       </context>
 
-      <context attribute="Normal" lineEndContext="#stay" name="FindUrl" >
-        <RegExpr String="\[&url;" attribute="WikiTag" context="DelimitedURL" lookAhead="true" />
-        <RegExpr String="&url;" attribute="URL" context="LooseURL" lookAhead="true" />
-      </context>
-      <context attribute="Normal" lineEndContext="#stay" name="FindUrlWithinTemplate" >
-        <RegExpr String="\[&url;" attribute="WikiTag" context="DelimitedURL" lookAhead="true" />
-        <RegExpr String="&url;" attribute="URL" context="LooseURLWithinTemplate" lookAhead="true" />
+      <context name="FindLineSep" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="^[-]{4,}" attribute="WikiTag" column="0"/>
       </context>
 
-      <context name="FindWikiLink" attribute="Normal" lineEndContext="#stay">
-        <Detect2Chars char="[" char1="[" attribute="WikiTag" context="WikiLink" />
-      </context>
-      <context name="FindWikiLinkBeingBold" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldWithDescription" lookAhead="true" />
-        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldWithoutDescription" lookAhead="true" />
-      </context>
-      <context name="FindWikiLinkBeingItalic" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkItalicWithDescription" lookAhead="true" />
-        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkItalicWithoutDescription" lookAhead="true" />
-      </context>
-      <context name="FindWikiLinkBeingUnderlined" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkUnderlinedWithDescription" lookAhead="true" />
-        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkUnderlinedWithoutDescription" lookAhead="true" />
-      </context>
-      <context name="FindWikiLinkBeingBoldItalic" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldItalicWithDescription" lookAhead="true" />
-        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldItalicWithoutDescription" lookAhead="true" />
-      </context>
-      <context name="FindWikiLinkBeingBoldUnderlined" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldUnderlinedWithDescription" lookAhead="true" />
-        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldUnderlinedWithoutDescription" lookAhead="true" />
-      </context>
-      <context name="FindWikiLinkBeingItalicUnderlined" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkItalicUnderlinedWithDescription" lookAhead="true" />
-        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkItalicUnderlinedWithoutDescription" lookAhead="true" />
-      </context>
-      <context name="FindWikiLinkBeingBoldItalicUnderlined" attribute="Normal" lineEndContext="#stay">
-        <RegExpr String="&wikiLinkWithDescription;" context="WikiLinkBoldItalicUnderlinedWithDescription" lookAhead="true" />
-        <RegExpr String="&wikiLinkWithoutDescription;" context="WikiLinkBoldItalicUnderlinedWithoutDescription" lookAhead="true" />
+      <context name="FindHtmlEntities" attribute="Normal" lineEndContext="#stay">
+        <RegExpr String="&htmlEntity;" attribute="HtmlEntity" />
       </context>
 
+      <!-- @} Others -->
+
     </contexts>
     <itemDatas>
       <itemData name="Normal" defStyleNum="dsNormal" />
@@ -582,9 +788,9 @@
       <itemData name="LinkBoldUnderlined" defStyleNum="dsOthers" bold="true" underline="true" />
       <itemData name="LinkItalicUnderlined" defStyleNum="dsOthers" italic="true" underline="true" />
       <itemData name="LinkBoldItalicUnderlined" defStyleNum="dsOthers" bold="true" italic="true" underline="true" />
-      <itemData name="URL" defStyleNum="dsOthers" />
       <itemData name="Comment" defStyleNum="dsComment" />
       <itemData name="Section" defStyleNum="dsKeyword" />
+      <itemData name="SectionDeliminator" defStyleNum="dsAttribute" />
       <itemData name="DefinitionListHeader" defStyleNum="dsKeyword" />
       <itemData name="HtmlEntity" defStyleNum="dsDecVal" />
       <itemData name="HtmlTag" defStyleNum="dsKeyword" />
@@ -609,6 +815,7 @@
       <itemData name="ItalicUnderlined" defStyleNum="dsNormal" italic="true" underline="true" />
       <itemData name="BoldItalicUnderlined" defStyleNum="dsNormal" bold="true" italic="true" underline="true" />
       <itemData name="HtmlAttribute" defStyleNum="dsOthers" spellChecking="false" />
+      <itemData name="HtmlAttributeSeparator" defStyleNum="dsOthers" spellChecking="false" />
       <itemData name="HtmlValue" defStyleNum="dsString" spellChecking="false" />
     </itemDatas>
   </highlighting>
diff --git a/xml/mermaid.xml b/xml/mermaid.xml
new file mode 100644
--- /dev/null
+++ b/xml/mermaid.xml
@@ -0,0 +1,4811 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY mmd_ent_part "([a-zA-Z]+|[0-9]+);">
+  <!ENTITY html_ent_part "([a-zA-Z]+|#[0-9]+);">
+  <!ENTITY mmd_ent "#&mmd_ent_part;">
+  <!ENTITY html_ent "&amp;&html_ent_part;">
+  <!ENTITY prefix_mmd_ent_no_ent "#(?!&mmd_ent_part;)">
+  <!ENTITY prefix_html_ent_no_ent "&amp;(?!&html_ent_part;)">
+  <!ENTITY prefix_ent_no_ent "&prefix_mmd_ent_no_ent;|&prefix_html_ent_no_ent;">
+
+  <!ENTITY prefix_html_tag "&lt;(?=[/a-zA-Z])">
+  <!ENTITY prefix_html_tag_no_tag "&lt;(?![/a-zA-Z])">
+
+  <!ENTITY md_syms "$\\*_#&lt;&amp;">
+  <!ENTITY md_no_underscore "\B_++\B">
+  <!ENTITY md_sym_no_undescore_math_escape "&md_no_underscore;|\$(?!\$)|\\(?=$|[[:alnum:]\s]|\$\$)">
+  <!ENTITY md_sym_no_md_no_lt "&md_sym_no_undescore_math_escape;|&prefix_ent_no_ent;">
+  <!ENTITY md_sym_no_md "&md_sym_no_md_no_lt;|&prefix_html_tag_no_tag;">
+  <!ENTITY md_unescapable_ent "\\(?=&mmd_ent;|&html_ent;)">
+
+  <!ENTITY md_strict_syms "\\*_#&lt;&amp;">
+  <!ENTITY md_strict_text "([^&md_strict_syms;]++|&md_no_underscore;|\\(?=$|[[:alnum:]\s])|&prefix_html_ent_no_ent;|&prefix_html_tag_no_tag;)++">
+
+  <!-- '&lt' is a entity, but ';' in '&lt;' is not an entity part...
+  Considers '&' as simple text -->
+  <!ENTITY md_mmd_syms "$\\*_#&lt;">
+  <!ENTITY md_mmd_no_md "&md_sym_no_undescore_math_escape;|&prefix_mmd_ent_no_ent;|&prefix_html_tag_no_tag;">
+
+
+  <!--
+  Generic keywords
+  -->
+
+  <!ENTITY accessibility "accTitle\s*:|accDescr\s*[:{]">
+  <!-- direction is bugged: https://github.com/mermaid-js/mermaid/pull/7009 -->
+  <!ENTITY direction "direction(?=\s+(TB|TD|BT|RL|LR))">
+
+  <!--
+  Flowchart
+  -->
+
+  <!ENTITY flowchart_node_nospecial "&md_sym_no_md;|&md_unescapable_ent;">
+  <!ENTITY flowchart_qtext_syms "&md_syms;&quot;">
+  <!ENTITY flowchart_qtext_no_md "&flowchart_node_nospecial;|\\(?=&quot;)">
+  <!ENTITY flowchart_qtext  "([^&flowchart_qtext_syms;]++|&flowchart_qtext_no_md;)++">
+  <!ENTITY flowchart_mdtext "([^&md_syms;&quot;`]++|&flowchart_node_nospecial;|\\(?=`))++">
+
+  <!ENTITY flowchart_symbol_in_node          "&amp;&#37;#$!*_+'\\/?`.,">
+  <!ENTITY flowchart_symbol_in_node_no_comma "&amp;&#37;#$!*_+'\\/?`.">
+  <!-- click: https://github.com/mermaid-js/mermaid/issues/7023 -->
+  <!ENTITY flowchart_kw_no_node "(?!\b(&accessibility;|&direction;|click\b(?![-:&flowchart_symbol_in_node;=~;(){}\[\]|@])|(subgraph|end|linkStyle|style|classDef|class|graph|flowchart)\b))(?![ox](-[-.]|==))">
+  <!ENTITY flowchart_node
+    "&flowchart_kw_no_node;([0-9\p{L}_&flowchart_symbol_in_node;]+|-(?![-.])|:(?!::))+">
+  <!ENTITY flowchart_node_no_comma
+    "&flowchart_kw_no_node;([0-9\p{L}_&flowchart_symbol_in_node_no_comma;]+|-(?![-.])|:(?!::))+">
+  <!ENTITY css_class_name "([0-9\p{L}_&amp;&quot;&#37;`\':.#?!$/*+]+|-(?![-.]))+">
+  <!-- whitout '{},' -->
+  <!ENTITY new_shape_syms "./\;[]()`&#37;#&amp;!$@*=&lt;&gt;?|'&quot;:-+">
+
+  <!--
+  Sequence Diagram
+  -->
+
+  <!ENTITY seq_kw_no_node "(?!&accessibility;|(autonumber|participant|box|end|links?|create|destroy|activate|deactivate|Note|loop|alt|else|opt|par|and|critical|option|break|rect|sequenceDiagram)\b)">
+  <!ENTITY seq_node "&seq_kw_no_node;([^-;:#(&#37;&lt;&gt;,\\/]++|-(?![->x)]|[|][\\/]|//|\\\\)|\((?!\))|\\(?![\\|]-)|/(?![/|]-))++">
+
+  <!--
+  Class Diagram
+  -->
+
+  <!ENTITY class_kw_no_node "(?!&accessibility;|&direction;|(class|namespace|callback|click|link|classDef|cssClass|style|note for|note|classDiagram)\b)">
+  <!ENTITY class_node "&class_kw_no_node;([0-9\p{L}_]+|-(?![-])|\.(?!\.))+">
+  <!ENTITY class_syms_no_label ";:">
+
+  <!--
+  State Diagram
+  -->
+
+  <!ENTITY state_kw_no_node "(?!(&accessibility;|&direction;|(state|note|classDef|class|stateDiagram)(?=$|[-\s{}:])))">
+  <!ENTITY state_node "&state_kw_no_node;([^-\s{}:&#37;&quot;])[^-\s{}:]*">
+
+  <!--
+  Entity Relationship Diagram
+  -->
+
+  <!-- https://github.com/mermaid-js/mermaid/issues/7093 -->
+  <!-- without direction: https://github.com/mermaid-js/mermaid/pull/7009 -->
+  <!ENTITY er_kw "((erDiagram|classDef|style|1|one|many|to|u|zero or (one|more|many)|only one|optionally to)\b|0[+])">
+  <!ENTITY er_kw_no_node "(?!(&accessibility;|&direction;|&er_kw;))">
+  <!ENTITY er_node "&er_kw_no_node;([\w*]+|-(?![-])|\.(?!\.))+">
+  <!ENTITY er_link "[|}][o|]([.][.]|--)[|o][{|]">
+
+  <!--
+  User Journey Diagram
+  -->
+
+  <!ENTITY journey_kw_no_task "(?!&accessibility;|title(\s|$)|section(\s[^:]|\s?$)|journey\b)">
+  <!ENTITY journey_task "&journey_kw_no_task;[^#:;]+">
+
+  <!--
+  Gantt Diagram
+  -->
+
+  <!ENTITY gantt_kw_no_task "(?!&accessibility;|(title|excludes|weekend|section|dateFormat|axisFormat|tickInterval|weekday|todayMarker)(\s|$)|gantt\b)">
+  <!ENTITY gantt_task "&gantt_kw_no_task;[^#:]+">
+
+  <!--
+  Quadrant Chart
+  -->
+
+  <!ENTITY quadrant_kw "((title|classDef)\b|quadrantChart|quadrant-[1234]|[xy]-axis)">
+  <!ENTITY quadrant_kw_no_text "(?!&accessibility;|&quadrant_kw;)">
+  <!ENTITY quadrant_invalid_char ";(){}[]&lt;>~:&quot;|^@">
+  <!ENTITY quadrant_text "&quadrant_kw_no_text;([^\Q&quadrant_invalid_char;\E&#37;\-qxytc]++|&#37;(?!&#37;)|--(?!>)|-(?!->)|(?!\b&quadrant_kw;)\w++)++">
+
+  <!--
+  Requirement Diagram
+  -->
+
+  <!ENTITY requirement_kw "(requirementDiagram|functionalRequirement|performanceRequirement|interfaceRequirement|physicalRequirement|designConstraint|requirement|element|type|docref|id|text|risk|verifymethod|Low|Medium|High|Analysis|Inspection|Test|Demonstration|style|classDef|class)\b">
+  <!ENTITY requirement_kw_no_item "(?!&accessibility;|&requirement_kw;|&direction;|[^a-zA-Z0-9])">
+  <!ENTITY requirement_node_in_node  "([^-=,:&lt;>{&md_syms;]++|&md_sym_no_md_no_lt;)++">
+  <!ENTITY requirement_node_in_ref "([^-\s=,:&lt;>{&md_syms;]++|&md_sym_no_md_no_lt;)++">
+  <!ENTITY requirement_node "&requirement_kw_no_item;&requirement_node_in_node;">
+  <!ENTITY requirement_ref  "(?![^a-zA-Z0-9])&requirement_node_in_ref;">
+
+  <!--
+  Requirement Diagram
+  -->
+
+  <!ENTITY zenuml_no_node "(?!(title|as|new|if|else|while|opt|par|try|catch|finally|return)(?=$|[^a-zA-Z0-9(]))">
+  <!ENTITY zenuml_node "&zenuml_no_node;(?:[^-:.{}()\s]++|-(?=$|[^>])|\s+(?!as($|\s)))+">
+
+  <!--
+  XY Chart
+  -->
+
+  <!-- https://github.com/mermaid-js/mermaid/issues/7157 -->
+  <!-- '_' and 0-9 are not a word part... At the beginning only -->
+  <!ENTITY xy_wend "($|[^_a-z0-9])">
+  <!ENTITY xy_no_kw "([ac-gi-km-suwz]|t(?!itle&xy_wend;)|x(?!-axis&xy_wend;)|y(?!-axis&xy_wend;)|b(?!ar&xy_wend;)|l(?!ine&xy_wend;)|h(?!orizontal&xy_wend;)|v(?!ertical&xy_wend;))">
+  <!ENTITY xy_text "[-*=+#.&amp;;_\s0-9]*+(&xy_no_kw;[a-z0-9]*+[-*=+#.&amp;;_\s0-9]*+)*+">
+  <!ENTITY xy_title "[*=+#.&amp;;\s]*+(((_|&xy_no_kw;)[_a-z]*+|-(?![0-9]))[*=+#.&amp;;\s]*+)*+">
+
+  <!--
+  Block Diagram
+  -->
+
+  <!ENTITY block_no_kw "(?!block\b|end\b|space\b|columns\s+[0-9]|style\s|classDef\s|class\s)">
+  <!ENTITY block_in_node       "([^-(){}[&lt;>: #&amp;]+|&prefix_ent_no_ent;)">
+  <!ENTITY block_first_ch_node "([^-(){}[&lt;>: #&amp;&quot;]|&prefix_ent_no_ent;)">
+  <!ENTITY block_node "(\s*&block_no_kw;&block_first_ch_node;&block_in_node;*+)">
+
+  <!--
+  Kanban Diagram
+  -->
+
+  <!ENTITY kanban_node "([^\[\](){}@&md_syms;]+|&md_sym_no_md;)++">
+  <!ENTITY kanban_qtext "([^\[\]()}@&md_syms;]+|&md_sym_no_md;)++">
+
+  <!--
+  Architecture Diagram
+  -->
+
+  <!ENTITY archi_id_ch "0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz">
+
+  <!--
+  Radar Diagram
+  -->
+
+  <!ENTITY radar_id_ch "-0123456789_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz">
+]>
+<!-- Priority greater than Markdown which also uses .mmd -->
+<language
+  name="Mermaid" section="Scientific" priority="30"
+  version="2" kateversion="6.22"
+  mimetype="text/vnd.mermaid" extensions="*.mmd;*.mermaid"
+  author="Jonathan Poelen (jonathan.poelen@gmail.com)"
+  license="MIT"
+>
+  <!--
+  https://mermaid.js.org/syntax/
+  https://mermaid.live/edit
+
+  Flowchart (flowchart, graph) based on v11.12
+  Sequence diagrams (sequenceDiagram) based on v11.12
+    + half arrow and central connection circle: https://github.com/mermaid-js/mermaid/pull/6789
+  Class diagrams (classDiagram) based on v11.12
+  State diagrams (stateDiagram-v2, stateDiagram) based on v11.12
+  Entity Relationship Diagram (erDiagram) based on v11.12
+  User Journey Diagram (journey) based on v11.12
+  Gantt diagrams (gantt) based on v11.12
+  Pie chart diagrams (pie) based on v11.12
+  Quadrant Chart (quadrantChart) based on v11.12
+  Requirement Diagram (requirementDiagram) based on v11.12
+  GitGraph Diagram (gitGraph) based on v11.12
+  Mindmap (mindmap) based on v11.12
+  Timeline Diagram (timeline) based on v11.12
+  ZenUML (zenuml) based on v11.12
+  Sankey diagram (sankey) based on v11.12
+  XY Chart (xychart) based on v11.12
+  Block Diagram (block) based on v11.12
+  Packet Diagram (packet) based on v11.12
+  Mermaid Kanban Diagram (kanban) based on v11.12
+  Architecture Diagram (architecture-beta) based on v11.12
+  Radar Diagram (radar-beta) based on v11.12
+  Treemap Diagram (treemap-beta) based on v11.12
+  -->
+
+  <highlighting>
+
+    <contexts>
+
+      <context name="Normal" attribute="Normal" lineEndContext="Mermaid"
+               fallthroughContext="Mermaid">
+        <StringDetect String="---" attribute="Comment" context="Frontmatter" column="0"/>
+      </context>
+
+      <!-- https://mermaid.js.org/intro/syntax-reference.html#frontmatter-for-diagram-code -->
+      <context name="Frontmatter" attribute="Normal" fallthroughContext="Lvl0Text##YAML">
+        <StringDetect String="---" attribute="Comment" context="#pop!Mermaid" column="0"/>
+        <IncludeRules context="##YAML" includeAttrib="1"/>
+      </context>
+
+      <context name="Mermaid" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+
+        <WordDetect String="flowchart" attribute="Keyword" context="Flowchart"/>
+        <WordDetect String="graph"     attribute="Keyword" context="Flowchart"/>
+        <WordDetect String="sequenceDiagram" attribute="Keyword" context="SequenceDiag"/>
+        <WordDetect String="classDiagram" attribute="Keyword"
+                    context="ClassDiag!LineErrorExceptSpaces"/>
+        <WordDetect String="stateDiagram-v2" attribute="Keyword"
+                    context="StateDiag!LineErrorExceptSpaces"/>
+        <WordDetect String="stateDiagram" attribute="Keyword"
+                    context="StateDiag!LineErrorExceptSpaces"/>
+        <WordDetect String="erDiagram" attribute="Keyword"
+                    context="erDiag!LineErrorExceptSpaces"/>
+        <WordDetect String="journey" attribute="Keyword" context="Journey"/>
+        <WordDetect String="gantt" attribute="Keyword" context="Gantt"/>
+        <WordDetect String="pie" attribute="Keyword" context="Pie"/>
+        <WordDetect String="quadrantChart" attribute="Keyword" context="Quadrant"/>
+        <WordDetect String="requirementDiagram" attribute="Keyword" context="Requirement"/>
+        <WordDetect String="gitGraph" attribute="Keyword" context="Git"/>
+        <WordDetect String="mindmap" attribute="Keyword" context="Mindmap"/>
+        <WordDetect String="timeline" attribute="Keyword" context="Timeline"/>
+        <WordDetect String="zenuml" attribute="Keyword" context="ZenUML"/>
+        <WordDetect String="sankey" attribute="Keyword" context="Sankey"
+                    additionalDeliminator="&quot;"/>
+        <WordDetect String="xychart" attribute="Keyword" context="XYChart"/>
+        <WordDetect String="block" attribute="Keyword" context="Block"/>
+        <WordDetect String="packet" attribute="Keyword" context="Packet"/>
+        <WordDetect String="kanban" attribute="Keyword" context="Kanban"/>
+        <WordDetect String="architecture-beta" attribute="Keyword" context="Archi"/>
+        <WordDetect String="radar-beta" attribute="Keyword" context="Radar"/>
+        <WordDetect String="treemap-beta" attribute="Keyword" context="Treemap"
+                    additionalDeliminator="&quot;'"/>
+
+        <IncludeRules context="Find_Comment"/>
+      </context>
+
+      <!--
+      @{ Accessibility
+      https://mermaid.js.org/config/accessibility.html
+      -->
+      <context name="Find_Accessibility" attribute="Error">
+        <WordDetect String="accTitle" attribute="Keyword" context="accTitle"
+                    weakDeliminator="!%&amp;()*+,-./&lt;=>?[\\]^{|}~"/>
+        <WordDetect String="accDescr" attribute="Keyword" context="accDescr"
+                    weakDeliminator="!%&amp;()*+,-./&lt;=>?[\\]^|}~"/>
+      </context>
+
+      <context name="Find_Accessibility_Insensitive" attribute="Error">
+        <WordDetect String="accTitle" attribute="Keyword" context="accTitle" insensitive="1"
+                    weakDeliminator="!%&amp;()*+,-./&lt;=>?[\\]^{|}~"/>
+        <WordDetect String="accDescr" attribute="Keyword" context="accDescr" insensitive="1"
+                    weakDeliminator="!%&amp;()*+,-./&lt;=>?[\\]^|}~"/>
+      </context>
+
+      <context name="accTitle" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String=":" attribute="Keyword Property Separator" context="accTitle_Text"/>
+        <DetectSpaces/>
+      </context>
+      <context name="accTitle_Text" attribute="Text" lineEndContext="#pop#pop">
+      </context>
+
+      <context name="accDescr" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter"
+                      context="accDescr_Block" beginRegion="block"/>
+        <IncludeRules context="accTitle"/>
+      </context>
+      <context name="accDescr_Block" attribute="Text">
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" context="#pop#pop"
+                      endRegion="block"/>
+      </context>
+      <!--
+      @} Accessibility
+      -->
+
+
+      <!--
+      @{ Flowcharts https://mermaid.js.org/syntax/flowchart.html
+      -->
+
+      <context name="Flowchart" attribute="Normal" lineEndContext="Flowchart_Body"
+               fallthroughContext="Flowchart_Body!LineError">
+        <StringDetect String=";" attribute="Symbol Separator" context="Flowchart_Body"/>
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="TB" attribute="Keyword Parameter"/>
+        <StringDetect String="TD" attribute="Keyword Parameter"/>
+        <StringDetect String="BT" attribute="Keyword Parameter"/>
+        <StringDetect String="RL" attribute="Keyword Parameter"/>
+        <StringDetect String="LR" attribute="Keyword Parameter"/>
+      </context>
+
+      <context name="Flowchart_Body" attribute="Error" fallthroughContext="Flowchart_AfterNode">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Flowchart_Find_MdText"/>
+        <IncludeRules context="Flowchart_Find_UnicodeText"/>
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="Flowchart_AfterNode!Flowchart_DeclClassName"/>
+
+        <StringDetect String='|' attribute="Error"
+                      context="Flowchart_LinkPipe!Flowchart_QText"/>
+
+        <StringDetect String=";" attribute="Symbol Separator"/>
+        <IncludeRules context="Find_Comment"/>
+
+        <RegExpr String="&flowchart_node;" attribute="Node" context="Flowchart_AfterNode"/>
+
+        <WordDetect String="subgraph" attribute="Keyword" beginRegion="kwblock"/>
+        <WordDetect String="end" attribute="Keyword" endRegion="kwblock"/>
+        <WordDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"/>
+        <WordDetect String="linkStyle" attribute="Keyword" context="Flowchart_KwLinkStyle"/>
+        <WordDetect String="style" attribute="Keyword" context="Flowchart_KwStyle"/>
+        <WordDetect String="class" attribute="Keyword" context="Flowchart_KwClass"/>
+        <WordDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>
+        <WordDetect String="click" attribute="Keyword" context="Flowchart_KwClick"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+
+        <!-- because mermaid... -->
+        <StringDetect String="graph" attribute="Error" context="#pop"/>
+        <StringDetect String="flowchart" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- :::classname
+              ~~~~~~~~~ -->
+      <context name="Flowchart_DeclClassName" attribute="Normal"
+               lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr String="&css_class_name;" attribute="Class Name" context="#pop"/>
+      </context>
+
+      <context name="Flowchart_AfterNode" attribute="Normal" lineEndContext="#pop">
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+        <!-- no space for edge id: `A@{}id@==>`
+        https://github.com/mermaid-js/mermaid/issues/7032 -->
+        <StringDetect String="@" attribute="Node Separator"
+                      context="#pop!Flowchart_AfterNode_Spaces!Flowchart_NewShape"/>
+        <DetectSpaces context="#pop!Flowchart_AfterNode_Spaces"/>
+        <IncludeRules context="Flowchart_Find_Link"/>
+        <IncludeRules context="Flowchart_Find_Shape"/>
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="Flowchart_DeclClassName"/>
+        <IncludeRules context="CharErrorAndPop"/>
+      </context>
+
+      <context name="Flowchart_AfterNode_Spaces" attribute="Normal" lineEndContext="#pop">
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+        <StringDetect String="&amp; " attribute="Union" context="#pop"/>
+        <IncludeRules context="Flowchart_Find_Link"/>
+        <!-- Normally no spaces before, but subgraph keyword -->
+        <IncludeRules context="Flowchart_Find_Shape"/>
+        <!-- Normally any character, but the IDs are no longer referable... -->
+        <RegExpr String="[a-zA-F][a-zA-F0-9]*(?=@)" attribute="ID" context="Flowchart_ID"/>
+        <IncludeRules context="CharErrorAndPop"/>
+      </context>
+      <context name="Flowchart_ID" attribute="Normal">
+        <StringDetect String="@" attribute="ID Separator" context="#pop#pop!Flowchart_LinkOrError"/>
+      </context>
+
+      <context name="Flowchart_LinkOrError" attribute="Normal" lineEndContext="#pop">
+        <IncludeRules context="Flowchart_Find_Link"/>
+        <DetectSpaces attribute="Error" context="#pop"/>
+        <IncludeRules context="CharErrorAndPop"/>
+      </context>
+
+      <context name="Flowchart_Find_Link" attribute="Normal">
+        <StringDetect String="--"     attribute="Link" context="Flowchart_LinkLine"/>
+        <StringDetect String="&lt;--" attribute="Link" context="Flowchart_LinkLine"/>
+        <StringDetect String="o--"    attribute="Link" context="Flowchart_LinkLine"/>
+        <StringDetect String="x--"    attribute="Link" context="Flowchart_LinkLine"/>
+
+        <StringDetect String="=="     attribute="Link" context="Flowchart_LinkThick"/>
+        <StringDetect String="&lt;==" attribute="Link" context="Flowchart_LinkThick"/>
+        <StringDetect String="o=="    attribute="Link" context="Flowchart_LinkThick"/>
+        <StringDetect String="x=="    attribute="Link" context="Flowchart_LinkThick"/>
+
+        <StringDetect String="-."     attribute="Link" context="Flowchart_LinkDotted"/>
+        <StringDetect String="&lt;-." attribute="Link" context="Flowchart_LinkDotted"/>
+        <StringDetect String="o-."    attribute="Link" context="Flowchart_LinkDotted"/>
+        <StringDetect String="x-."    attribute="Link" context="Flowchart_LinkDotted"/>
+
+        <StringDetect String="~~~" attribute="Link" context="Flowchart_LinkInvisible"/>
+
+        <AnyChar String="-=~" attribute="Error" context="#pop"/>
+      </context>
+
+      <context name="Flowchart_Find_Shape" attribute="Normal">
+        <!-- [[...]] -->
+        <StringDetect String="[[" attribute="Shape" context="Flowchart_TextNode_End[[]]!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- [(...)] -->
+        <StringDetect String="[(" attribute="Shape" context="Flowchart_TextNode_End[()]!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- [/.../] or [/...\] -->
+        <StringDetect String="[/" attribute="Shape" context="Flowchart_TextNode_Text[//]!Flowchart_QText"/>
+        <!-- [\.../] or [\...\] -->
+        <StringDetect String="[\" attribute="Shape" context="Flowchart_TextNode_Text[//]!Flowchart_QText"/>
+        <!-- [...] -->
+        <StringDetect String="[" attribute="Shape" context="Flowchart_TextNode_End[]!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- (((...))) -->
+        <StringDetect String="(((" attribute="Shape" context="Flowchart_TextNode_End((()))!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- ((...)) -->
+        <StringDetect String="((" attribute="Shape" context="Flowchart_TextNode_End(())!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- ([...]) -->
+        <StringDetect String="([" attribute="Shape" context="Flowchart_TextNode_End([])!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- (...) -->
+        <StringDetect String="(" attribute="Shape" context="Flowchart_TextNode_End()!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- {{...}} -->
+        <StringDetect String="{{" attribute="Shape" context="Flowchart_TextNode_End{{}}!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- {...} -->
+        <StringDetect String="{" attribute="Shape" context="Flowchart_TextNode_End{}!Flowchart_TextNode_Text!Flowchart_QText"/>
+        <!-- >...] -->
+        <StringDetect String=">" attribute="Shape" context="Flowchart_TextNode_End[]!Flowchart_TextNode_Text!Flowchart_QText"/>
+      </context>
+
+
+      <!--
+      @{ Link: ==>, etc
+      -->
+      <context name="Flowchart_Find_LinkText_Common" attribute="Link Text">
+        <IncludeRules context="EmptyQuotedText"/>
+        <StringDetect String='"' attribute="Error"/>
+        <IncludeRules context="Find_Comment_InText"/>
+      </context>
+      <context name="Flowchart_Find_LinkText_Special_Common" attribute="Link Text">
+        <IncludeRules context="EmptyQuotedText_ThenPop"/>
+        <StringDetect String='"' attribute="Error" context="#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+      </context>
+
+      <!-- A - - note - - - B
+           A - - note - - - - -x B
+           A - - - B
+           A - - - - - -x B
+           A - - | note | B
+           A - - - -x| note | B
+                 ~~~~~~~~~~~~~~~
+      -->
+      <context name="Flowchart_LinkLine" attribute="Link"
+               lineEndContext="Flowchart_LinkLine_Text!Flowchart_LinkText_Q"
+               fallthroughContext="Flowchart_LinkLine_Text!Flowchart_LinkText_Q">
+        <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_PipeOrNoLink"/>
+        <StringDetect String="-" attribute="Link"
+                      context="Flowchart_LinkEnd_PipeOrNoLink!Flowchart_LinkLine_End"/>
+      </context>
+      <context name="Flowchart_LinkLine_End" attribute="Link"
+               lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar String="ox>" attribute="Link" context="#pop"/>
+        <StringDetect String="-"/>
+      </context>
+      <!-- A - - note - - - B
+                ~~~~~~~~~~~~~
+      -->
+      <context name="Flowchart_LinkLine_Text" attribute="Link Text"
+               fallthroughContext="Flowchart_LinkLine_Text_Special">
+        <StringDetect String="--" attribute="Link"
+                      context="#pop#pop!Flowchart_LinkLine_TextEnd"/>
+        <IncludeRules context="Flowchart_Find_LinkText_Common"/>
+        <RegExpr String='([^-"&md_syms;]++|&md_sym_no_md;|-(?!-))++(\\(?=--[->xo]))?'
+                 attribute="Link Text" context="Flowchart_LinkLine_Text_Special"/>
+      </context>
+      <context name="Flowchart_LinkLine_Text_Special" attribute="Link Text"
+               lineEndContext="#pop">
+        <StringDetect String="--" attribute="Link"
+                      context="#pop#pop#pop!Flowchart_LinkLine_TextEnd"/>
+        <IncludeRules context="Flowchart_Find_LinkText_Special_Common"/>
+        <IncludeRules context="Find_Md_Html_LinkLine_ThenPop"/>
+      </context>
+      <!-- A - - note - - - B
+                         ~~~~
+      -->
+      <context name="Flowchart_LinkLine_TextEnd" attribute="Link" lineEndContext="#pop">
+        <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_NoLink"/>
+        <StringDetect String="-" attribute="Link"
+                      context="Flowchart_LinkEnd_NoLink!Flowchart_LinkLine_End"/>
+        <RegExpr String="." attribute="Error" context="#pop#pop"/>
+      </context>
+
+
+      <!-- A == note === B
+           A == note =====x B
+           A === B
+           A =====x B
+           A == | note | B
+           A ===x| note | B
+               ~~~~~~~~~~~~~~~
+      -->
+      <!-- === -->
+      <context name="Flowchart_LinkThick" attribute="Link"
+               lineEndContext="Flowchart_LinkThick_Text!Flowchart_LinkText_Q"
+               fallthroughContext="Flowchart_LinkThick_Text!Flowchart_LinkText_Q">
+        <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_PipeOrNoLink"/>
+        <StringDetect String="=" attribute="Link"
+                      context="Flowchart_LinkEnd_PipeOrNoLink!Flowchart_LinkThick_End"/>
+      </context>
+      <context name="Flowchart_LinkThick_End" attribute="Link"
+               lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar String="ox>" attribute="Link" context="#pop"/>
+        <StringDetect String="="/>
+      </context>
+      <!-- A == note === B
+               ~~~~~~~~~~~
+      -->
+      <context name="Flowchart_LinkThick_Text" attribute="Link Text"
+               fallthroughContext="Flowchart_LinkThick_Text_Special">
+        <StringDetect String="==" attribute="Link"
+                      context="#pop#pop!Flowchart_LinkThick_TextEnd"/>
+        <StringDetect String="=" attribute="Error"/>
+        <IncludeRules context="Flowchart_Find_LinkText_Common"/>
+        <RegExpr String='([^="&md_syms;]++|&md_sym_no_md;|\\(?==))++'
+                 attribute="Link Text" context="Flowchart_LinkThick_Text_Special"/>
+      </context>
+      <context name="Flowchart_LinkThick_Text_Special" attribute="Link Text"
+               lineEndContext="#pop">
+        <StringDetect String="==" attribute="Link"
+                      context="#pop#pop#pop!Flowchart_LinkThick_TextEnd"/>
+        <StringDetect String="=" attribute="Error" context="#pop"/>
+        <IncludeRules context="Flowchart_Find_LinkText_Special_Common"/>
+        <IncludeRules context="Find_Md_Html_LinkThick_ThenPop"/>
+      </context>
+      <!-- A == note === B
+                       ~~~
+      -->
+      <context name="Flowchart_LinkThick_TextEnd" attribute="Link" lineEndContext="#pop">
+        <AnyChar String="ox>" attribute="Link" context="Flowchart_LinkEnd_NoLink"/>
+        <StringDetect String="=" attribute="Link"
+                      context="Flowchart_LinkEnd_NoLink!Flowchart_LinkThick_End"/>
+        <RegExpr String="." context="#pop#pop"/>
+      </context>
+
+
+      <!-- A -. note .- B
+           A -. note ....-x B
+           A -.- B
+           A -....-x B
+           A -.- | note | B
+           A -....-x| note | B
+               ~~~~~~~~~~~~~
+      -->
+      <context name="Flowchart_LinkDotted" attribute="Link"
+               lineEndContext="Flowchart_LinkDotted_Text!Flowchart_LinkText_Q"
+               fallthroughContext="Flowchart_LinkDotted_Text!Flowchart_LinkText_Q">
+        <RegExpr String="[.]*-[ox>]?" attribute="Link"
+                 context="Flowchart_LinkEnd_PipeOrNoLink"/>
+      </context>
+      <!-- -.note.-
+             ~~~~~~
+      -->
+      <context name="Flowchart_LinkDotted_Text" attribute="Link Text"
+               fallthroughContext="Flowchart_LinkDotted_Text_Special">
+        <StringDetect String="." context="#pop#pop!Flowchart_LinkDotted_TextEnd" lookAhead="1"/>
+        <IncludeRules context="Flowchart_Find_LinkText_Common"/>
+        <RegExpr String='([^."&md_syms;]++|&md_sym_no_md;|\\(?=\.))++'
+                 attribute="Link Text" context="Flowchart_LinkDotted_Text_Special"/>
+      </context>
+      <context name="Flowchart_LinkDotted_Text_Special" attribute="Link Text"
+               lineEndContext="#pop">
+        <StringDetect String="." context="#pop#pop#pop!Flowchart_LinkDotted_TextEnd"
+                      lookAhead="1"/>
+        <IncludeRules context="Flowchart_Find_LinkText_Special_Common"/>
+        <IncludeRules context="Find_Md_Html_LinkDotted_ThenPop"/>
+      </context>
+      <!-- -.note.-
+                 ~~
+      -->
+      <context name="Flowchart_LinkDotted_TextEnd" attribute="Link Text">
+        <RegExpr String="[.]*-[ox>]?" attribute="Link" context="Flowchart_LinkEnd_NoLink"/>
+        <RegExpr String="[.]+>?|." attribute="Error" context="#pop#pop"/>
+      </context>
+
+
+      <!-- ~~~ -->
+      <context name="Flowchart_LinkInvisible" attribute="Link"
+               lineEndContext="Flowchart_LinkEnd_PipeOrNoLink"
+               fallthroughContext="Flowchart_LinkEnd_PipeOrNoLink">
+        <StringDetect String="~" attribute="Link"/>
+      </context>
+
+
+      <!-- A ===| note | B
+                ~
+      -->
+      <context name="Flowchart_LinkEnd_PipeOrNoLink" attribute="Error"
+               fallthroughContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="|" attribute="Link Text Delimiter"
+                      context="#pop#pop#pop!Flowchart_LinkPipe!Flowchart_QText"/>
+        <IncludeRules context="Flowchart_LinkEnd_NoLink"/>
+      </context>
+
+      <!-- A ==x==>-
+                   ~ Error
+      -->
+      <context name="Flowchart_LinkEnd_NoLink" attribute="Error"
+               fallthroughContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+
+        <StringDetect String="--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>
+        <StringDetect String="o--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>
+        <StringDetect String="x--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>
+        <StringDetect String="&lt;--" attribute="Error" context="#pop#pop!Flowchart_LinkLine"/>
+
+        <StringDetect String="o==" attribute="Error" context="#pop#pop!Flowchart_LinkThick"/>
+        <StringDetect String="x==" attribute="Error" context="#pop#pop!Flowchart_LinkThick"/>
+        <StringDetect String="&lt;==" attribute="Error" context="#pop#pop!Flowchart_LinkThick"/>
+
+        <StringDetect String="-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>
+        <StringDetect String="o-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>
+        <StringDetect String="x-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>
+        <StringDetect String="&lt;-." attribute="Error" context="#pop#pop!Flowchart_LinkDotted"/>
+
+        <StringDetect String="~~~" attribute="Error" context="#pop#pop!Flowchart_LinkInvisible"/>
+        <!-- only one '-' is not a link but a node name -->
+        <AnyChar String="=~" attribute="Error" context="#pop#pop#pop"/>
+
+      </context>
+
+      <!-- A ===| note | B
+                  ~~~~~~
+      -->
+      <context name="Flowchart_LinkPipe" attribute="Link Text"
+               fallthroughContext="Flowchart_LinkPipe_Special">
+        <StringDetect String="|" attribute="Link Text Delimiter" context="#pop"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String='([^|{}[]()"&md_syms;]++|&md_sym_no_md;|\\(?=\|))++'
+                 attribute="Link Text" context="Flowchart_LinkPipe_Special"/>
+      </context>
+      <context name="Flowchart_LinkPipe_Special" attribute="Link Text"
+               lineEndContext="#pop">
+        <StringDetect String="|" attribute="Link Text Delimiter" context="#pop#pop"/>
+        <IncludeRules context="EmptyQuotedText_ThenPop"/>
+        <AnyChar String='{}[]()"' attribute="Error" context="#pop#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7003 -->
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Text_ThenPop"/>
+      </context>
+
+      <!-- A == note === B (and other link)
+               ~
+      -->
+      <context name="Flowchart_LinkText_Q" attribute="Link Text"
+               fallthroughContext="#pop!Flowchart_QText">
+        <IncludeRules context="Find_Comment_InText"/>
+      </context>
+      <!--
+      @} Link
+      -->
+
+
+      <!-- node["..."] node["`...`"]
+                ~~~~~       ~~~~~~~
+      -->
+      <context name="Flowchart_QText" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <IncludeRules context="EmptyQuotedText"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->
+        <IncludeRules context="Flowchart_Find_MdText_ThenPop"/>
+        <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>
+      </context>
+
+      <!-- node[...]
+                ~~~
+      Neither Quoted Text nor Markdown Formatting
+      -->
+      <context name="Flowchart_TextNode_Text" attribute="Text"
+               fallthroughContext="Flowchart_TextNode_Text_Special">
+        <AnyChar String='{}[]()"|@' context="#pop" lookAhead="1"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String='([^{}\[\]()"|@&md_syms;]++|&flowchart_node_nospecial;|\\(?=\]))++'
+                 attribute="Text" context="Flowchart_TextNode_Text_Special"/>
+      </context>
+      <context name="Flowchart_TextNode_Text_Special" attribute="Text"
+               lineEndContext="#pop">
+        <IncludeRules context="EmptyQuotedText_ThenPop"/>
+        <AnyChar String='{}[]()"|@' context="#pop#pop" lookAhead="1"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Text_ThenPop"/>
+      </context>
+
+      <!-- node[/.../] (or /...\ or \.../ or \...\)
+                 ~~~
+      Neither Quoted Text nor Markdown Formatting
+      -->
+      <context name="Flowchart_TextNode_Text[//]" attribute="Text"
+               fallthroughContext="Flowchart_TextNode_Text[//]_Special">
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <StringDetect String="\]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <StringDetect String="/]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <RegExpr String='([^{}\[\]()"|@/&md_syms;]++|&flowchart_node_nospecial;|\\(?=[/\\]\])|/(?!\]))++'
+                 attribute="Text" context="Flowchart_TextNode_Text[//]_Special"/>
+      </context>
+      <context name="Flowchart_TextNode_Text[//]_Special" attribute="Text"
+               lineEndContext="#pop">
+        <StringDetect String="\]" attribute="Shape" context="#pop#pop#pop!Flowchart_AfterNode"/>
+        <StringDetect String="/]" attribute="Shape" context="#pop#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="EmptyQuotedText_ThenPop"/>
+        <AnyChar String='{}[]()"|@' attribute="Error"
+                 context="#pop#pop#pop!Flowchart_AfterNode"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Text[//]_ThenPop"/>
+      </context>
+
+
+      <!--
+      @{ end text node: node[...], node((...)), etc
+                                ~           ~~
+      -->
+      <context name="Flowchart_TextNode_EndCommon" attribute="Normal">
+        <AnyChar String='{}[]()"|@' attribute="Error" context="#pop#pop!Flowchart_AfterNode"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End[]" attribute="Normal">
+        <StringDetect String="]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End[[]]" attribute="Normal">
+        <StringDetect String="]]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End[()]" attribute="Normal">
+        <StringDetect String=")]" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End()" attribute="Normal">
+        <StringDetect String=")" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End(())" attribute="Normal">
+        <StringDetect String="))" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End((()))" attribute="Normal">
+        <StringDetect String=")))" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End([])" attribute="Normal">
+        <StringDetect String="])" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End{{}}" attribute="Normal">
+        <StringDetect String="}}" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+
+      <context name="Flowchart_TextNode_End{}" attribute="Normal">
+        <StringDetect String="}" attribute="Shape" context="#pop#pop!Flowchart_AfterNode"/>
+        <IncludeRules context="Flowchart_TextNode_EndCommon"/>
+      </context>
+      <!--
+      @} end text node
+      -->
+
+
+      <!--
+      @{ new shape syntax
+      -->
+      <!-- A@{ shape: manual-file, label: "File Handling"}
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="Flowchart_NewShape" attribute="Error">
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter"
+                      context="Flowchart_NewShape_Prop"/>
+        <IncludeRules context="CharErrorAndPop"/>
+      </context>
+      <context name="Flowchart_NewShape_Prop" attribute="Error">
+        <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->
+        <StringDetect String=": " attribute="Property Separator"
+                      context="Flowchart_NewShape_PropValue"/>
+        <LineContinue char=":" attribute="Property Separator"
+                      context="Flowchart_NewShape_PropValue"/>
+        <IncludeRules context="Find_DQuote_NoSpecial"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" context="#pop#pop"/>
+        <IncludeRules context="Find_Prop"/>
+      </context>
+      <context name="Find_Prop" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <DetectIdentifier attribute="Property"/>
+        <!-- <StringDetect String="-" attribute="Property"/> -->
+        <!-- <Int attribute="Property"/> -->
+        <IncludeRules context="Find_Comment"/>
+      </context>
+      <!-- A@{ prop: value }
+                    ~~~~~~
+      -->
+      <context name="Flowchart_NewShape_PropValue" attribute="Error"
+               fallthroughContext="Flowchart_NewShape_PropValue_Text">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Flowchart_NewShape_QEnd!Flowchart_NewShape_PropValue_DQ"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7037 -->
+        <StringDetect String="'" attribute="Quoted Text Delimiter"
+                      context="Flowchart_NewShape_QEnd!Flowchart_NewShape_PropValue_SQ"/>
+        <DetectSpaces attribute="Normal"/>
+        <Int attribute="Property Number"
+             weakDeliminator="&new_shape_syms;" context="Flowchart_NewShape_PropValue_Text"/>
+        <WordDetect String="true" attribute="Property Boolean"
+                    weakDeliminator="&new_shape_syms;" context="Flowchart_NewShape_PropValue_Text"/>
+        <WordDetect String="false" attribute="Property Boolean"
+                    weakDeliminator="&new_shape_syms;" context="Flowchart_NewShape_PropValue_Text"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->
+        <AnyChar String="`*#%@|&gt;" attribute="Error"
+                 context="Flowchart_NewShape_PropValue_Text"/>
+      </context>
+      <!-- A@{ prop: value }
+                     ~~~~~~~
+      -->
+      <context name="Flowchart_NewShape_PropValue_Text" attribute="Text"
+               fallthroughContext="Flowchart_NewShape_PropValue_Text_Special">
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop#pop#pop#pop"/>
+        <StringDetect String="," attribute="List Separator" context="#pop#pop"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7044 for '[]^', ': ', ' #' -->
+        <RegExpr String='([^"{}\[\]^ :,&md_syms;]++|&flowchart_node_nospecial;|:(?! )| (?=$|[^#]|&mmd_ent;))++'
+                 attribute="Text" context="Flowchart_NewShape_PropValue_Text_Special"/>
+      </context>
+      <context name="Flowchart_NewShape_PropValue_Text_Special" attribute="Text"
+               lineEndContext="#pop">
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop#pop#pop#pop#pop"/>
+        <StringDetect String="," attribute="List Separator" context="#pop#pop#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7044 for '[]^' -->
+        <AnyChar String='"{[]^' attribute="Error" context="#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->
+        <StringDetect String=": " attribute="Error" context="#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->
+        <StringDetect String=" #" attribute="Error" context="#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7014 -->
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_NewShape_ThenPop"/>
+      </context>
+      <!-- A@{ prop: "value" }
+                      ~~~~~~~~
+      -->
+      <context name="Flowchart_NewShape_PropValue_DQ" attribute="Quoted Text">
+        <IncludeRules context="Flowchart_UnicodeText"/>
+        <StringDetect String="\" attribute="Error"/>
+      </context>
+      <!-- A@{ prop: 'value' }
+                      ~~~~~~~~
+      mix of Mermaid Text and Yaml
+      https://github.com/mermaid-js/mermaid/issues/7044
+      -->
+      <context name="Flowchart_NewShape_PropValue_SQ" attribute="Text"
+               fallthroughContext="Flowchart_NewShape_PropValue_SQ_Special">
+        <StringDetect String="''" attribute="Special Text Char"/>
+        <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String="([^'&quot;}&md_syms;]++|&md_sym_no_md;)++"
+                 attribute="Text" context="Flowchart_NewShape_PropValue_SQ_Special"/>
+      </context>
+      <context name="Flowchart_NewShape_PropValue_SQ_Special" attribute="Text"
+               lineEndContext="#pop">
+        <StringDetect String="''" attribute="Special Text Char" context="#pop"/>
+        <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop#pop"/>
+        <StringDetect String="}" attribute="Error" context="#pop#pop#pop#pop#pop#pop"/>
+        <StringDetect String='"' attribute="Error" context="#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7003 -->
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_NewShapeSQ_ThenPop"/>
+      </context>
+      <!-- A@{ prop: 'value' }
+                            ~
+      -->
+      <context name="Flowchart_NewShape_QEnd" attribute="Error">
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop#pop#pop#pop"/>
+        <StringDetect String="," attribute="List Separator" context="#pop#pop"/>
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Comment"/>
+      </context>
+      <!--
+      @} new shape syntax
+      -->
+
+
+      <!--
+      @{ direction
+      -->
+      <context name="Flowchart_KwDirection" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop!FakeComment">
+        <DetectSpaces/>
+        <!-- insensitive except for Flowchart -->
+        <StringDetect String="TB" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>
+        <StringDetect String="TD" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>
+        <StringDetect String="BT" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>
+        <StringDetect String="RL" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>
+        <StringDetect String="LR" attribute="Keyword Parameter" context="#pop!FakeComment" insensitive="1"/>
+      </context>
+      <!--
+      @} direction
+      -->
+
+
+      <!--
+      @{ click
+      -->
+      <!-- click D href "https://www.github.com" "Open this in a new tab" _blank -->
+      <context name="Flowchart_KwClick" attribute="Normal" lineEndContext="#pop">
+        <DetectSpaces/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+        <RegExpr String="&flowchart_node;" attribute="Node" context="Flowchart_KwClick_Param"/>
+      </context>
+      <context name="Flowchart_KwClick_Param" attribute="Normal" lineEndContext="#pop#pop">
+        <DetectSpaces/>
+        <IncludeRules context="Flowchart_Find_UnicodeText"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+        <WordDetect String="_self" attribute="Keyword Parameter"/>
+        <WordDetect String="_blank" attribute="Keyword Parameter"/>
+        <WordDetect String="_parent" attribute="Keyword Parameter"/>
+        <WordDetect String="_top" attribute="Keyword Parameter"/>
+        <WordDetect String="href" attribute="Keyword Parameter"/>
+        <WordDetect String="call" attribute="Keyword Parameter"/>
+        <DetectIdentifier/>
+      </context>
+      <!--
+      @} click
+      -->
+
+
+      <!--
+      @{ style, linkStyle, classDef and class
+      -->
+      <!-- linkStyle 1,2,7 stroke:#ff3,stroke-width:4px,color:red; -->
+      <context name="Flowchart_KwLinkStyle" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal" context="Flowchart_KwLinkStyle_Idx"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+      </context>
+      <context name="Flowchart_KwLinkStyle_Idx" attribute="Error" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop!Flowchart_CSSProp">
+        <DetectSpaces attribute="Normal" context="#pop#pop!Flowchart_CSSProp"/>
+        <Int attribute="ID"/>
+        <StringDetect String="," attribute="List Separator"/>
+      </context>
+
+      <!-- style id1 fill:#f9f,stroke:#333,stroke-width:4px; -->
+      <context name="Flowchart_KwStyle" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal" context="Flowchart_KwStyle_Node"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+      </context>
+      <!-- https://github.com/mermaid-js/mermaid/issues/7041 -->
+      <context name="Flowchart_KwStyle_Node" attribute="Error" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop!Flowchart_CSSProp">
+        <RegExpr String="&flowchart_node;" attribute="Node" context="#pop#pop!Flowchart_CSSProp"/>
+      </context>
+
+      <!-- classDef firstClassName,secondClassName fill:#f9f,stroke:#333,stroke-width:4px; -->
+      <context name="Flowchart_KwClassDef" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal" context="Flowchart_KwClassDef_Default"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+      </context>
+      <!-- classDef default fill:#f9f -->
+      <context name="Flowchart_KwClassDef_Default" attribute="Error" lineEndContext="#pop#pop"
+               fallthroughContext="#pop!Flowchart_KwClassDef_ClassName">
+        <StringDetect String="default " attribute="Keyword Parameter"
+                      context="#pop#pop!Flowchart_CSSProp"/>
+      </context>
+      <context name="Flowchart_KwClassDef_ClassName" attribute="Error"
+               lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Flowchart_CSSProp">
+        <DetectSpaces attribute="Normal" context="#pop#pop!Flowchart_CSSProp"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <RegExpr String="&css_class_name;" attribute="Class Name"/>
+      </context>
+
+      <!-- class nodeId1,nodeId2 className; -->
+      <context name="Flowchart_KwClass" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal" context="Flowchart_KwClass_Node"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+      </context>
+      <context name="Flowchart_KwClass_Node" attribute="Normal" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Normal" context="Flowchart_KwClass_ClassName"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+        <RegExpr String="&flowchart_node_no_comma;" attribute="Node"/>
+      </context>
+      <!-- https://github.com/mermaid-js/mermaid/issues/7043 -->
+      <context name="Flowchart_KwClass_ClassName" attribute="Error"
+               lineEndContext="#pop#pop#pop">
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>
+        <DetectIdentifier attribute="Class Name"/>
+        <RegExpr String="&css_class_name;" attribute="Class Name"/>
+      </context>
+
+      <!-- @{ inline CSS -->
+      <context name="Flowchart_CSSProp" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="Flowchart_CSSValue">
+        <DetectSpaces/>
+        <StringDetect String=":" attribute="Style Property Separator"
+                      context="Flowchart_CSSValue"/>
+        <StringDetect String="-" attribute="Style Property"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+        <StringDetect String="," attribute="Error"/>
+        <DetectIdentifier attribute="Style Property"/>
+        <StringDetect String="/*" attribute="Comment" context="Flowchart_CSSComment"/>
+      </context>
+      <context name="Flowchart_CSSValue" attribute="Style Value"
+               lineEndContext="#pop#pop">
+        <StringDetect String="," attribute="List Separator" context="#pop"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+        <StringDetect String="\," attribute="Special Text Char"/>
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <RegExpr String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])"
+                 attribute="Number" context="Flowchart_CSSUnit"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/5498
+        conflict with Entity codes:
+        https://mermaid.js.org/syntax/flowchart.html#entity-codes-to-escape-characters -->
+        <RegExpr String="#[a-zA-Z0-9]{3}([a-zA-Z0-9]([a-zA-Z0-9]{2}([a-zA-Z0-9]{2})?+)?+)?+(?![a-zA-Z0-9]*;)"
+                 attribute="Style Hexadeximal Color"/>
+        <RegExpr String="#[a-zA-Z0-9]+;" attribute="Error" context="#pop#pop"/>
+        <StringDetect String="/*" attribute="Comment" context="Flowchart_CSSComment"/>
+      </context>
+      <context name="Flowchart_CSSUnit" attribute="Normal"
+               lineEndContext="#pop#pop#pop" fallthroughContext="#pop">
+        <StringDetect String="%" attribute="Style Unit" context="#pop"/>
+        <DetectIdentifier attribute="Style Unit" context="#pop"/>
+      </context>
+      <context name="Flowchart_CSSComment" attribute="Normal" lineEndContext="#pop">
+        <AnyChar String=",;" context="#pop" lookAhead="1"/>
+        <StringDetect String="*/" attribute="Comment" context="#pop"/>
+        <!-- Yes... And that's not the only problem -->
+        <StringDetect String=" */" attribute="Error" context="#pop"/>
+      </context>
+      <!-- @} inline CSS -->
+      <!--
+      @} style, linkStyle, classDef and class
+      -->
+
+
+      <!--
+      @{ Quoted Text + Markdown Formatting
+      -->
+      <context name="EmptyQuotedText" attribute="Text" fallthroughContext="#pop">
+        <StringDetect String='""' attribute="Comment"/>
+        <StringDetect String='"``"' attribute="Comment"/>
+      </context>
+      <context name="EmptyQuotedText_ThenPop" attribute="Text" fallthroughContext="#pop">
+        <StringDetect String='""' attribute="Comment" context="#pop"/>
+        <StringDetect String='"``"' attribute="Comment" context="#pop"/>
+      </context>
+
+      <!-- "..." -->
+      <context name="Flowchart_Find_UnicodeText" attribute="Text" fallthroughContext="#pop">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Flowchart_UnicodeText"/>
+      </context>
+      <context name="Flowchart_Find_UnicodeText_ThenPop" attribute="Text">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop!Flowchart_UnicodeText"/>
+      </context>
+      <context name="Flowchart_Find_UnicodeText_ThenPop2" attribute="Text">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop#pop!Flowchart_UnicodeText"/>
+      </context>
+
+      <!-- "..."
+            ~~~~ -->
+      <context name="Flowchart_UnicodeText" attribute="Quoted Text"
+               fallthroughContext="Flowchart_UnicodeText_Special">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String="&flowchart_qtext;" attribute="Quoted Text"
+                 context="Flowchart_UnicodeText_Special"/>
+      </context>
+      <context name="Flowchart_UnicodeText_Special" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7003 -->
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_DQ_ThenPop"/>
+      </context>
+
+      <!-- "`...`" -->
+      <context name="Flowchart_Find_MdText" attribute="Text" fallthroughContext="#pop">
+        <StringDetect String='"`' attribute="Markdown Text Delimiter"
+                      context="Flowchart_MdText"/>
+      </context>
+      <context name="Flowchart_Find_MdText_ThenPop" attribute="Text">
+        <StringDetect String='"`' attribute="Markdown Text Delimiter"
+                      context="#pop!Flowchart_MdText"/>
+      </context>
+
+      <!-- "`...`"
+             ~~~~~ -->
+      <context name="Flowchart_MdText" attribute="Markdown Text"
+               fallthroughContext="Flowchart_MdText_Special">
+        <StringDetect String='`"' attribute="Markdown Text Delimiter" context="#pop"/>
+        <AnyChar String='`"' attribute="Error" context="#pop"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String="&flowchart_mdtext;" attribute="Markdown Text"
+                 context="Flowchart_MdText_Special"/>
+      </context>
+      <context name="Flowchart_MdText_Special" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String='`"' attribute="Markdown Text Delimiter" context="#pop#pop"/>
+        <AnyChar String='`"' attribute="Error" context="#pop#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Md_ThenPop"/>
+      </context>
+
+      <!--
+      @{ Html
+      -->
+
+      <!-- special parser for HTML, because the quotes do not close the string inside -->
+
+      <!-- A["<tag attr="...">"]
+        stop on " (except attribute)
+      -->
+      <context name="Find_Md_Html_DQ_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_DQ"/>
+      </context>
+
+      <context name="Html_DQ" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_DQ_Close"/>
+        <DetectIdentifier context="Html_DQ_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_DQ_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_DQ_AttrValue"/>
+        <IncludeRules context="Html_DQ_Close"/>
+      </context>
+      <context name="Html_DQ_AttrValue" attribute="HTML Attribute">
+        <DetectIdentifier/>
+        <StringDetect String='"' context="#pop"/>
+        <StringDetect String=">" attribute="Error" context="#pop#pop#pop"/>
+        <StringDetect String="/>" attribute="Error" context="#pop#pop#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7011 -->
+        <IncludeRules context="Find_Comment"/>
+        <IncludeRules context="Find_Entities"/>
+      </context>
+      <context name="Html_DQ_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_Close_Tag"/>
+        <StringDetect String='"' attribute="Error" context="#pop#pop"/>
+        <IncludeRules context="Html_Find_Elem"/>
+      </context>
+
+      <!-- html close -->
+      <context name="Html_Close_Tag" attribute="HTML Tag">
+        <StringDetect String=">" attribute="HTML Tag" context="#pop#pop"/>
+        <StringDetect String="/>" attribute="HTML Tag" context="#pop#pop"/>
+      </context>
+      <context name="Html_Find_Elem" attribute="HTML Tag">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7011 -->
+        <IncludeRules context="Find_Comment"/>
+      </context>
+
+      <!-- A["<tag attr="...">"]
+        stop on " (except attribute), newline
+      -->
+      <context name="Find_Md_Html_DQ_SingleLine_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_DQ_SingleLine"/>
+      </context>
+
+      <context name="Html_DQ_SingleLine" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_DQ_SingleLine_Close"/>
+        <DetectIdentifier context="Html_DQ_SingleLine_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_DQ_SingleLine_Attrs" attribute="HTML Attribute"
+               lineEndContext="#pop#pop">
+        <StringDetect String='="' context="Html_DQ_SingleLine_AttrValue"/>
+        <IncludeRules context="Html_DQ_SingleLine_Close"/>
+      </context>
+      <context name="Html_DQ_SingleLine_AttrValue" attribute="HTML Attribute"
+               lineEndContext="#pop#pop#pop">
+        <DetectIdentifier/>
+        <StringDetect String='"' context="#pop"/>
+        <StringDetect String=">" attribute="Error" context="#pop#pop#pop"/>
+        <StringDetect String="/>" attribute="Error" context="#pop#pop#pop"/>
+        <IncludeRules context="Find_Entities"/>
+      </context>
+      <context name="Html_DQ_SingleLine_Close" attribute="HTML Tag" lineEndContext="#pop#pop">
+        <IncludeRules context="Html_Close_Tag"/>
+        <StringDetect String='"' attribute="Error" context="#pop#pop"/>
+        <DetectIdentifier/>
+        <DetectSpaces/>
+      </context>
+
+      <!-- A[<tag attr="...">]
+        stop on " (except attribute), {, }, [, ], (, ), |, @
+      -->
+      <context name="Find_Md_Html_Text_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Text"/>
+      </context>
+
+      <context name="Html_Text" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_Text_Close"/>
+        <DetectIdentifier context="Html_Text_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_Text_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_Text_AttrValue"/>
+        <IncludeRules context="Html_Text_Close"/>
+      </context>
+      <context name="Html_Text_AttrValue" attribute="HTML Attribute">
+        <AnyChar String='{}[]()|@' context="#pop#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_DQ_AttrValue"/>
+      </context>
+      <context name="Html_Text_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_Close_Tag"/>
+        <AnyChar String='{}[]()"|@' context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_Find_Elem"/>
+      </context>
+
+      <!-- A[/<tag attr="...">/]
+        stop on {, }, [, ], (, ), /], \]
+      -->
+      <context name="Find_Md_Html_Text[//]_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Text[//]"/>
+      </context>
+
+      <context name="Html_Text[//]" attribute="HTML Tag">
+        <StringDetect String="/]" context="#pop" lookAhead="1"/>
+        <StringDetect String="\]" context="#pop" lookAhead="1"/>
+        <StringDetect String="/" context="Html_Text[//]_Close"/>
+        <DetectIdentifier context="Html_Text[//]_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_Text[//]_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_Text[//]_AttrValue"/>
+        <IncludeRules context="Html_Text[//]_Close"/>
+      </context>
+      <context name="Html_Text[//]_AttrValue" attribute="HTML Attribute">
+        <AnyChar String='{}[]()' context="#pop#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_DQ_AttrValue"/>
+      </context>
+      <context name="Html_Text[//]_Close" attribute="HTML Tag">
+        <StringDetect String="/]" context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_Close_Tag"/>
+        <StringDetect String="\]" context="#pop#pop" lookAhead="1"/>
+        <AnyChar String='{}[]()' context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_Find_Elem"/>
+      </context>
+
+      <!-- A["`<tag attr="...">`"]
+        stop on {, }, [, ], (, ), `
+      -->
+      <context name="Find_Md_Html_Md_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Md"/>
+      </context>
+
+      <context name="Html_Md" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_Md_Close"/>
+        <DetectIdentifier context="Html_Md_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_Md_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_Md_AttrValue"/>
+        <IncludeRules context="Html_Md_Close"/>
+      </context>
+      <context name="Html_Md_AttrValue" attribute="HTML Attribute">
+        <AnyChar String='{}[]()`' context="#pop#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_DQ_AttrValue"/>
+      </context>
+      <context name="Html_Md_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_Close_Tag"/>
+        <AnyChar String='{}[]()"`' context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_Find_Elem"/>
+      </context>
+
+      <!-- A[`<tag attr="...">`]
+        stop on `
+      -->
+      <context name="Find_Md_Html_Backtick_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_Backtick"/>
+      </context>
+
+      <context name="Html_Backtick" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_Backtick_Close"/>
+        <DetectIdentifier context="Html_Backtick_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_Backtick_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_Backtick_AttrValue"/>
+        <IncludeRules context="Html_Backtick_Close"/>
+      </context>
+      <context name="Html_Backtick_AttrValue" attribute="HTML Attribute">
+        <StringDetect String="`" context="#pop#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_DQ_AttrValue"/>
+      </context>
+      <context name="Html_Backtick_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_Close_Tag"/>
+        <StringDetect String="`" context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_Find_Elem"/>
+      </context>
+
+      <!-- A -x B : <tag attr="...">
+        stop on newline, ;, :, &
+      -->
+      <context name="Find_Md_Html_ClassLabel_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_ClassLabel"/>
+      </context>
+
+      <context name="Html_ClassLabel" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_ClassLabel_Close"/>
+        <DetectIdentifier context="Html_ClassLabel_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_ClassLabel_Attrs" attribute="HTML Attribute"
+               lineEndContext="#pop#pop">
+        <StringDetect String='="' context="Html_ClassLabel_AttrValue"/>
+        <IncludeRules context="Html_ClassLabel_Close"/>
+      </context>
+      <context name="Html_ClassLabel_AttrValue" attribute="HTML Attribute"
+               lineEndContext="#pop#pop#pop">
+        <DetectIdentifier/>
+        <StringDetect String='"' context="#pop"/>
+        <AnyChar String="&class_syms_no_label;" context="#pop#pop#pop" lookAhead="1"/>
+      </context>
+      <context name="Html_ClassLabel_Close" attribute="HTML Tag" lineEndContext="#pop#pop">
+        <IncludeRules context="Html_Close_Tag"/>
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <AnyChar String="&class_syms_no_label;" context="#pop#pop" lookAhead="1"/>
+      </context>
+
+      <!-- s1 - -> s2 : <tag attr="...">
+        stop on newline, :
+      -->
+      <context name="Find_Md_Html_StateText_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_StateText"/>
+      </context>
+
+      <context name="Html_StateText" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_StateText_Close"/>
+        <DetectIdentifier context="Html_StateText_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_StateText_Attrs" attribute="HTML Attribute"
+               lineEndContext="#pop#pop">
+        <StringDetect String='="' context="Html_StateText_AttrValue"/>
+        <IncludeRules context="Html_StateText_Close"/>
+      </context>
+      <context name="Html_StateText_AttrValue" attribute="HTML Attribute"
+               lineEndContext="#pop#pop#pop">
+        <DetectIdentifier/>
+        <StringDetect String='"' context="#pop"/>
+        <AnyChar String=":" attribute="Error" context="#pop#pop#pop"/>
+      </context>
+      <context name="Html_StateText_Close" attribute="HTML Tag" lineEndContext="#pop#pop">
+        <IncludeRules context="Html_Close_Tag"/>
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <AnyChar String=":" attribute="Error" context="#pop#pop"/>
+      </context>
+
+      <!-- A@{label: <tag attr="...">}
+        stop on " (except attribute), {, }, [, ]
+      -->
+      <context name="Find_Md_Html_NewShape_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_NewShape"/>
+      </context>
+
+      <context name="Html_NewShape" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_NewShape_Close"/>
+        <DetectIdentifier context="Html_NewShape_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_NewShape_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_NewShape_AttrValue"/>
+        <IncludeRules context="Html_NewShape_Close"/>
+      </context>
+      <context name="Html_NewShape_AttrValue" attribute="HTML Attribute">
+        <AnyChar String='{}[]' context="#pop#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_DQ_AttrValue"/>
+      </context>
+      <context name="Html_NewShape_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_Close_Tag"/>
+        <AnyChar String='{}[]"' context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_Find_Elem"/>
+      </context>
+
+      <!-- A@{label: '<tag attr="...">'}
+        stop on " (except attribute), {, }, [, ], '
+      -->
+      <context name="Find_Md_Html_NewShapeSQ_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag"
+                 context="#pop!Html_NewShapeSQ"/>
+      </context>
+
+      <context name="Html_NewShapeSQ" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_NewShapeSQ_Close"/>
+        <DetectIdentifier context="Html_NewShapeSQ_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_NewShapeSQ_Attrs" attribute="HTML Attribute">
+        <IncludeRules context="Html_NewShapeSQ_Close"/>
+        <IncludeRules context="Find_Entities"/>
+      </context>
+      <context name="Html_NewShapeSQ_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_Close_Tag"/>
+        <AnyChar String="{}[]'&quot;" context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="Html_Find_Elem"/>
+      </context>
+
+      <!-- A - - <tag attr="..."> - - - B
+        stop on - -
+      -->
+      <context name="Find_Md_Html_LinkLine_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_LinkLine"/>
+      </context>
+
+      <context name="Html_LinkLine" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_LinkLine_Close"/>
+        <DetectIdentifier context="Html_LinkLine_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_LinkLine_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_LinkLine_AttrValue"/>
+        <IncludeRules context="Html_LinkLine_Close"/>
+      </context>
+      <context name="Html_LinkLine_AttrValue" attribute="HTML Attribute">
+        <IncludeRules context="Html_DQ_AttrValue"/>
+        <StringDetect String="--" attribute="Error"
+                      context="#pop#pop#pop#pop#pop!Flowchart_LinkLine_TextEnd"/>
+      </context>
+      <context name="Html_LinkLine_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_DQ_Close"/>
+        <StringDetect String="--" attribute="Error"
+                      context="#pop#pop#pop#pop!Flowchart_LinkLine_TextEnd"/>
+      </context>
+
+      <!-- A == <tag attr="..."> ==> B
+        stop on =
+      -->
+      <context name="Find_Md_Html_LinkThick_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_LinkThick"/>
+      </context>
+
+      <context name="Html_LinkThick" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_LinkThick_Close"/>
+        <DetectIdentifier context="Html_LinkThick_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_LinkThick_Attrs" attribute="HTML Attribute">
+        <IncludeRules context="Html_LinkThick_Close"/>
+      </context>
+      <context name="Html_LinkThick_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_DQ_Close"/>
+        <StringDetect String="=" lookAhead="1" context="#pop#pop"/>
+      </context>
+
+      <!-- A -. <tag attr="..."> .- B
+        stop on .
+      -->
+      <context name="Find_Md_Html_LinkDotted_ThenPop" attribute="Normal">
+        <RegExpr String="&prefix_html_tag;" attribute="HTML Tag" context="#pop!Html_LinkDotted"/>
+      </context>
+
+      <context name="Html_LinkDotted" attribute="HTML Tag">
+        <StringDetect String="/" context="Html_LinkDotted_Close"/>
+        <DetectIdentifier context="Html_LinkDotted_Attrs" attribute="HTML Tag"/>
+      </context>
+      <context name="Html_LinkDotted_Attrs" attribute="HTML Attribute">
+        <StringDetect String='="' context="Html_LinkDotted_AttrValue"/>
+        <IncludeRules context="Html_LinkDotted_Close"/>
+      </context>
+      <context name="Html_LinkDotted_AttrValue" attribute="HTML Attribute">
+        <IncludeRules context="Html_DQ_AttrValue"/>
+        <StringDetect String="." attribute="Error"
+                      context="#pop#pop#pop#pop#pop!Flowchart_LinkDotted_TextEnd"/>
+      </context>
+      <context name="Html_LinkDotted_Close" attribute="HTML Tag">
+        <IncludeRules context="Html_DQ_Close"/>
+        <StringDetect String="." attribute="Error"
+                      context="#pop#pop#pop#pop!Flowchart_LinkDotted_TextEnd"/>
+      </context>
+      <!--
+      @} Html
+      -->
+      <!--
+      @} Quoted Text + Markdown Formatting
+      -->
+
+      <!--
+      @} Flowchart
+      -->
+
+
+      <!--
+      @{ Sequence Diagram
+      -->
+
+      <context name="SequenceDiag" attribute="Error" lineEndContext="SequenceDiag_Body">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="SequenceDiag_Body"/>
+      </context>
+
+      <context name="SequenceDiag_Body" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator" context="SequenceDiag_Text"/>
+
+        <RegExpr String="(\(\))?(--?(>>?|[x)]|[|][\\/]|//|\\\\)|&lt;&lt;--?>>|([\\/][|]|//|\\\\)--?)(\(\))?"
+                 attribute="Link" context="SequenceDiag_AfterNode"/>
+
+        <StringDetect String=";" attribute="Symbol Separator"/>
+        <IncludeRules context="Find_Comment"/>
+
+        <AnyChar String="&lt;&gt;+-()#," attribute="Error"/>
+
+        <RegExpr String="&seq_node;" attribute="Node"/>
+
+        <WordDetect String="end" attribute="Keyword" endRegion="kwblock"/>
+        <WordDetect String="participant" attribute="Keyword"
+                    context="SequenceDiag_KwParticipant"/>
+        <WordDetect String="box" attribute="Keyword" beginRegion="kwblock"
+                    context="SequenceDiag_Text!SequenceDiag_Color"/>
+        <WordDetect String="link" attribute="Keyword" context="SequenceDiag_KwLink"/>
+        <WordDetect String="links" attribute="Keyword" context="SequenceDiag_KwLinks"/>
+        <WordDetect String="create" attribute="Keyword" context="SequenceDiag_KwCreate"/>
+        <WordDetect String="destroy" attribute="Keyword" context="SequenceDiag_Node"/>
+        <WordDetect String="activate" attribute="Keyword" context="SequenceDiag_Node"/>
+        <WordDetect String="deactivate" attribute="Keyword" context="SequenceDiag_Node"/>
+        <WordDetect String="Note" attribute="Keyword" context="SequenceDiag_KwNote"/>
+        <WordDetect String="loop" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock"/>
+        <WordDetect String="alt" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock"/>
+        <WordDetect String="opt" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock"/>
+        <WordDetect String="else" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock" endRegion="kwblock"/>
+        <WordDetect String="par" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock"/>
+        <WordDetect String="and" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock" endRegion="kwblock"/>
+        <WordDetect String="critical" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock"/>
+        <WordDetect String="option" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock" endRegion="kwblock"/>
+        <WordDetect String="break" attribute="Keyword" context="SequenceDiag_Text"
+                    beginRegion="kwblock"/>
+        <WordDetect String="rect" attribute="Keyword" beginRegion="kwblock"
+                    context="SequenceDiag_Text!SequenceDiag_Color"/>
+        <WordDetect String="autonumber" attribute="Keyword"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+
+        <!-- because mermaid... -->
+        <StringDetect String="sequenceDiagram" attribute="Error" context="#pop"/>
+      </context>
+
+      <context name="SequenceDiag_AfterNode" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+        <AnyChar String="+-" attribute="Keyword" context="#pop"/>
+      </context>
+
+      <context name="SequenceDiag_Text" attribute="Text" lineEndContext="#pop">
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+        <IncludeRules context="SequenceDiag_Find_Text"/>
+      </context>
+      <context name="SequenceDiag_Find_Text" attribute="Text" lineEndContext="#pop">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <Int/>
+        <StringDetect String="$$" attribute="Math Delimiter"/>
+        <IncludeRules context="Find_Entity"/>
+        <StringDetect String="#" attribute="Error"/>
+        <IncludeRules context="Find_HTML_br"/>
+      </context>
+
+      <!--
+      @{ participant
+      -->
+      <context name="SequenceDiag_KwParticipant" attribute="Node">
+        <StringDetect String="@" lookAhead="1" context="SequenceDiag_MaybeYAMLConfig"/>
+        <StringDetect String=" as " attribute="Keyword" context="#pop!SequenceDiag_Text"/>
+        <IncludeRules context="SequenceDiag_Text"/>
+      </context>
+      <!--
+      @} participant
+      -->
+
+
+      <!--
+      @{ color
+      -->
+      <context name="SequenceDiag_Color" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces/>
+        <StringDetect String="rgb("  attribute="Style Value" context="#pop!SequenceDiag_Rgb"/>
+        <StringDetect String="rgba(" attribute="Style Value" context="#pop!SequenceDiag_Rgb"/>
+        <DetectIdentifier attribute="Style Value" context="#pop"/>
+      </context>
+
+      <!-- box rgb(from hwb(120deg 10% 20%) r g calc(b + 200)) bla bla
+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="SequenceDiag_Rgb" attribute="Style Value" lineEndContext="#pop#pop">
+        <DetectSpaces/>
+        <Int attribute="Number" context="Flowchart_CSSUnit"/>
+        <StringDetect String="#" attribute="Error"/>
+        <StringDetect String="(" attribute="Style Value" context="SequenceDiag_Rgb"/>
+        <StringDetect String=")" attribute="Style Value" context="#pop"/>
+        <StringDetect String=";" lookAhead="1" context="#pop"/>
+        <DetectIdentifier/>
+      </context>
+      <!--
+      @} color
+      -->
+
+
+      <!--
+      @{ link <actor>: <link-label> @ <link-url>
+      -->
+      <context name="SequenceDiag_KwLink" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=":" attribute="Node Separator"
+                      context="SequenceDiag_KwLink_Label"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+      </context>
+      <context name="SequenceDiag_KwLink_Label" attribute="Text" lineEndContext="#pop#pop">
+        <StringDetect String="@" attribute="ID Separator"
+                      context="SequenceDiag_KwLink_URL"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+        <DetectSpaces/>
+        <DetectIdentifier/>
+      </context>
+      <context name="SequenceDiag_KwLink_URL" attribute="Normal" lineEndContext="#pop#pop#pop">
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>
+      </context>
+      <!--
+      @} link
+      -->
+
+
+      <!--
+      @{ links <actor>: <json-formatted link-name link-url pairs>
+      -->
+      <context name="SequenceDiag_KwLinks" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=":" attribute="Node Separator" context="SequenceDiag_JSON"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+      </context>
+      <!--
+      @} links
+      -->
+
+
+      <!--
+      @{ JSON
+      -->
+      <!-- only string value -->
+      <context name="SequenceDiag_JSON" attribute="Error" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="SequenceDiag_JSON_Str"/>
+        <StringDetect String=":" attribute="Property Separator"/>
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" context="#pop#pop"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+      </context>
+      <context name="SequenceDiag_JSON_Str" attribute="Quoted Text"
+               lineEndContext="#pop#pop#pop">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>
+      </context>
+      <!--
+      @} JSON
+      -->
+
+
+      <!--
+      @{ create participant Carl as dsidisidsid
+      -->
+      <context name="SequenceDiag_KwCreate" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="SequenceDiag_KwCreate_Node">
+        <DetectSpaces/>
+        <WordDetect String="actor" attribute="Keyword Parameter"/>
+        <WordDetect String="participant" attribute="Keyword Parameter"/>
+      </context>
+      <context name="SequenceDiag_KwCreate_Node" attribute="Node" lineEndContext="#pop#pop">
+        <StringDetect String=" as " attribute="Keyword" context="#pop#pop!SequenceDiag_Text"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+        <IncludeRules context="SequenceDiag_Find_Text"/>
+      </context>
+      <!--
+      @} create
+      -->
+
+
+      <!--
+      @{ node
+      -->
+      <context name="SequenceDiag_Node" attribute="Node" lineEndContext="#pop">
+        <IncludeRules context="SequenceDiag_Text"/>
+      </context>
+      <!--
+      @} node
+      -->
+
+
+      <!--
+      @{ Note right of John: Text in note
+      -->
+      <context name="SequenceDiag_KwNote" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="SequenceDiag_KwNote_Actors">
+        <DetectSpaces/>
+        <WordDetect String="right of" attribute="Keyword Parameter"
+                    context="SequenceDiag_KwNote_Actors"/>
+        <WordDetect String="left of" attribute="Keyword Parameter"
+                    context="SequenceDiag_KwNote_Actors"/>
+        <WordDetect String="over" attribute="Keyword Parameter"
+                    context="SequenceDiag_KwNote_Actors"/>
+      </context>
+      <!-- Note right of Alice,John: Text in note
+                        ~~~~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="SequenceDiag_KwNote_Actors" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=":" attribute="Node Separator"
+                      context="#pop#pop!SequenceDiag_Text"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+      </context>
+      <!--
+      @} Note
+      -->
+
+
+      <!--
+      @{ JSONConfig
+      participant Alice@{type: boundary}
+                       ~~~~~~~~~~~~~~~~~
+      -->
+      <context name="SequenceDiag_MaybeYAMLConfig" attribute="Normal">
+        <RegExpr String="(?&lt;=[^\s])@(?=[^:]*:)" attribute="Node Separator"
+                 context="SequenceDiag_YAMLConfig"/>
+        <StringDetect String="@" context="#pop"/>
+      </context>
+
+      <context name="SequenceDiag_YAMLConfig" attribute="Normal">
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter"
+                      context="SequenceDiag_YAMLConfig_Prop"/>
+        <RegExpr String="." attribute="Error" context="#pop#pop#pop"/>
+      </context>
+      <!-- YAML with a single property without any special character -->
+      <context name="SequenceDiag_YAMLConfig_Prop" attribute="Error">
+        <!-- https://github.com/mermaid-js/mermaid/issues/7044 -->
+        <StringDetect String=": " attribute="Property Separator"
+                      context="SequenceDiag_YAMLConfig_PropValue"/>
+        <LineContinue char=":" attribute="Property Separator"
+                      context="SequenceDiag_YAMLConfig_PropValue"/>
+        <IncludeRules context="Find_DQuote_NoSpecial"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop#pop#pop#pop"/>
+        <IncludeRules context="Find_Prop"/>
+      </context>
+      <!-- participant Alice@{ type: value }
+                                    ~~~~~~~~
+      -->
+      <context name="SequenceDiag_YAMLConfig_PropValue" attribute="Error">
+        <DetectSpaces attribute="Text"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop#pop#pop#pop#pop"/>
+        <DetectIdentifier attribute="Text"/>
+        <IncludeRules context="Find_DQuote_NoSpecial"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7037 -->
+        <IncludeRules context="Find_SQuote_NoSpecial"/>
+        <IncludeRules context="Find_Comment"/>
+      </context>
+      <!--
+      @} JSONConfig
+      -->
+
+      <!--
+      @} Sequence Diagram
+      -->
+
+
+      <!--
+      @{ Class Diagram
+      -->
+
+      <context name="ClassDiag" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator" context="ClassDiag_Class_Mem"/>
+
+        <StringDetect String="--"      attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="&lt;--"  attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="*--"     attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="o--"     attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String=">--"     attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="&lt;|--" attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="|&gt;--" attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="()--"    attribute="Link" context="ClassDiag_RelationType_Right"/>
+
+        <StringDetect String=".."      attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="&lt;.."  attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="*.."     attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="o.."     attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String=">.."     attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="&lt;|.." attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="|&gt;.." attribute="Link" context="ClassDiag_RelationType_Right"/>
+        <StringDetect String="().."    attribute="Link" context="ClassDiag_RelationType_Right"/>
+
+        <StringDetect String="&lt;&lt;" attribute="Annotation Delimiter"
+                      context="ClassDiag_KwClass_Name!ClassDiag_Annotation"/>
+
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"/>
+
+        <IncludeRules context="Find_Comment"/>
+        <IncludeRules context="Flowchart_Find_UnicodeText"/>
+
+        <AnyChar String="&lt;&gt;+()#,;" attribute="Error"/>
+
+        <WordDetect String="class" attribute="Keyword" context="ClassDiag_KwClass"/>
+        <IncludeRules context="ClassDiag_Name"/>
+
+        <WordDetect String="namespace" attribute="Keyword"/>
+
+        <!-- TODO Flowchart uses ';' as separator, but should be an error with ClassDiag -->
+        <WordDetect String="note for"  attribute="Keyword" context="ClassDiag_KwNoteFor"/>
+        <WordDetect String="note"      attribute="Keyword" context="ClassDiag_KwNote"/>
+        <WordDetect String="click"     attribute="Keyword" context="Flowchart_KwClick"/>
+        <WordDetect String="callback"  attribute="Keyword" context="Flowchart_KwClick"/>
+        <WordDetect String="link"      attribute="Keyword" context="Flowchart_KwClick"/>
+        <WordDetect String="classDef"  attribute="Keyword" context="Flowchart_KwClassDef"/>
+        <WordDetect String="cssClass"  attribute="Keyword" context="ClassDiag_KwCssClass"/>
+        <WordDetect String="style"     attribute="Keyword" context="Flowchart_KwStyle"/>
+        <WordDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+
+        <!-- because mermaid... -->
+        <StringDetect String="classDiagram" attribute="Error"/>
+      </context>
+
+      <context name="ClassDiag_Name" attribute="Node" lineEndContext="#pop">
+        <RegExpr String="&class_node;" attribute="Node"/>
+      </context>
+
+
+      <!-- A ..> B
+               ~~~
+      -->
+      <context name="ClassDiag_RelationType_Right" attribute="Link" lineEndContext="#pop"
+               fallthroughContext="ClassDiag_AfterLink">
+        <StringDetect String="&lt;|"  attribute="Link" context="ClassDiag_AfterLink"/>
+        <AnyChar String="*o&lt;&gt;"  attribute="Link" context="ClassDiag_AfterLink"/>
+        <StringDetect String="|>"  attribute="Link" context="ClassDiag_AfterLink"/>
+        <StringDetect String="()"  attribute="Link" context="ClassDiag_AfterLink"/>
+      </context>
+
+      <!-- A ..> B : LabelText
+                ~~~~~~~~~~~~~~
+      -->
+      <context name="ClassDiag_AfterLink" attribute="Node" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Link Text Separator" context="ClassDiag_LabelText"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop#pop!Flowchart_UnicodeText"/>
+        <IncludeRules context="ClassDiag_Name"/>
+      </context>
+      <!-- A ..> B : LabelText
+                    ~~~~~~~~~~
+      -->
+      <context name="ClassDiag_LabelText" attribute="Link Text" lineEndContext="#pop#pop#pop"
+               fallthroughContext="ClassDiag_LabelText_Special">
+        <RegExpr String='([^&md_mmd_syms;&class_syms_no_label;]++|&md_mmd_no_md;)++'
+                 attribute="Link Text" context="ClassDiag_LabelText_Special"/>
+      </context>
+      <context name="ClassDiag_LabelText_Special" attribute="Special Text Char"
+               lineEndContext="#pop#pop#pop#pop">
+        <AnyChar String="&class_syms_no_label;" attribute="Error" context="#pop#pop#pop#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_ClassLabel_ThenPop"/>
+      </context>
+
+
+      <!--
+      @{ Shape : +draw()
+                ~~~~~~~~
+      -->
+      <context name="ClassDiag_Class_Mem" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="ClassDiag_Class_Field">
+        <AnyChar String="+-#~" attribute="Keyword" context="ClassDiag_Class_Field"/>
+        <DetectSpaces/>
+      </context>
+      <context name="ClassDiag_Class_Field" attribute="Member"
+               lineEndContext="#pop#pop">
+        <StringDetect String=")" attribute="Member"
+                      context="#pop#pop!ClassDiag_Class_ReturnType"/>
+        <IncludeRules context="ClassDiag_Class_Mem_Common"/>
+      </context>
+      <context name="ClassDiag_Class_ReturnType" attribute="Member Type" lineEndContext="#pop">
+        <IncludeRules context="ClassDiag_Class_Mem_Common"/>
+        <StringDetect String=":" attribute="Error"/>
+      </context>
+
+      <context name="ClassDiag_Class_Mem_Common" attribute="Member" lineEndContext="#pop">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <StringDetect String="$$" lookAhead="1"
+                      context="ClassDiag_Class_Mem_AmbiguousMathClassifier"/>
+        <StringDetect String="~" attribute="Generic Type Symbol"/>
+        <LineContinue char="$" attribute="Keyword" context="#pop"/>
+        <LineContinue char="*" attribute="Keyword" context="#pop"/>
+      </context>
+      <context name="ClassDiag_Class_Mem_AmbiguousMathClassifier" attribute="Normal">
+        <RegExpr String="\$\$(?!$)" attribute="Math Delimiter" context="#pop"/>
+        <StringDetect String="$" context="#pop"/>
+      </context>
+      <!--
+      @} Shape : +draw()
+      -->
+
+
+      <!--
+      @{ class Name
+      -->
+      <context name="ClassDiag_KwClass" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter"
+                      context="ClassDiag_KwClass_Block" beginRegion="block"/>
+        <DetectSpaces attribute="Node"/>
+        <IncludeRules context="ClassDiag_KwClass_Name"/>
+        <StringDetect String="~" attribute="Generic Type Symbol"/>
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="ClassDiag_ClassName"/>
+        <StringDetect String="`" attribute="Quoted Text Delimiter"
+                      context="ClassDiag_KwClass_BacktickName"/>
+        <StringDetect String="[" attribute="Shape"
+                      context="ClassDiag_KwClass_BoxedName"/>
+      </context>
+      <context name="ClassDiag_KwClass_Name" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectIdentifier attribute="Node"/>
+        <Int attribute="Node"/>
+        <StringDetect String="--" lookAhead="1" context="#pop"/>
+        <StringDetect String=".." lookAhead="1" context="#pop"/>
+        <AnyChar String="-." attribute="Node"/>
+      </context>
+      <!--
+      class `Name`
+             ~~~~~
+      -->
+      <context name="ClassDiag_KwClass_BacktickName" attribute="Quoted Text"
+               fallthroughContext="ClassDiag_KwClass_BacktickName_Special">
+        <StringDetect String="`" attribute="Quoted Text Delimiter" context="#pop"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String="([^`&md_syms;]++|&md_sym_no_md;)++"
+                 attribute="Quoted Text" context="ClassDiag_KwClass_BacktickName_Special"/>
+      </context>
+      <context name="ClassDiag_KwClass_BacktickName_Special" attribute="Quoted Text"
+               lineEndContext="#pop">
+        <StringDetect String="`" attribute="Quoted Text Delimiter" context="#pop#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Backtick_ThenPop"/>
+      </context>
+      <!--
+      class ["Name"]
+             ~~~~~~~
+      -->
+      <context name="ClassDiag_KwClass_BoxedName" attribute="Error" fallthroughContext="#pop">
+        <StringDetect String="]" attribute="Shape" context="#pop"/>
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="EmptyQuotedText"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="ClassDiag_KwClass_BoxedName_End!Flowchart_UnicodeText"/>
+      </context>
+      <!--
+      class [ "Name" ]
+                    ~~
+      -->
+      <context name="ClassDiag_KwClass_BoxedName_End" attribute="Error"
+               fallthroughContext="#pop#pop">
+        <StringDetect String="]" attribute="Shape" context="#pop#pop"/>
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="EmptyQuotedText"/>
+      </context>
+      <!--
+      class Name { ... }
+                  ~~~~~~
+      -->
+      <context name="ClassDiag_KwClass_Block" attribute="Member"
+               fallthroughContext="ClassDiag_KwClass_Mem">
+        <DetectSpaces attribute="Member"/>
+        <AnyChar String="+-#~" attribute="Keyword" context="ClassDiag_KwClass_Mem"/>
+        <StringDetect String="&lt;&lt;" attribute="Annotation Delimiter"
+                      context="ClassDiag_KwClass_Mem!ClassDiag_Annotation"/>
+        <IncludeRules context="Find_Comment"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop#pop" endRegion="block"/>
+      </context>
+
+      <context name="ClassDiag_KwClass_Mem" attribute="Member" lineEndContext="#pop">
+        <StringDetect String=")" attribute="Member"
+                      context="#pop!ClassDiag_KwClass_ReturnType"/>
+        <IncludeRules context="ClassDiag_KwClass_ReturnType"/>
+      </context>
+      <context name="ClassDiag_KwClass_ReturnType" attribute="Member Type"
+               lineEndContext="#pop">
+        <IncludeRules context="ClassDiag_Class_Mem_Common"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop#pop#pop" endRegion="block"/>
+      </context>
+      <!--
+      @} class
+      -->
+
+
+      <!--
+      @{ note "bla bla"
+      -->
+      <context name="ClassDiag_KwNote" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="CharErrorAndPop"/>
+      </context>
+      <!-- note for className "bla bla" -->
+      <context name="ClassDiag_KwNoteFor" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="ClassDiag_KwClass_Name"/>
+        <IncludeRules context="CharErrorAndPop"/>
+      </context>
+      <!--
+      @} note
+      -->
+
+
+      <!--
+      @{ cssClass "nodeId1,nodeId2" className
+      -->
+      <context name="ClassDiag_KwCssClass" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="ClassDiag_KwCssClass_Classes"/>
+        <DetectSpaces attribute="Normal"/>
+        <RegExpr String="&css_class_name;" attribute="Class Name"/>
+      </context>
+      <context name="ClassDiag_KwCssClass_Classes" attribute="Node">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+        <StringDetect String="," attribute="Node Separator"/>
+        <DetectIdentifier/>
+      </context>
+      <!--
+      @} cssClass
+      -->
+
+
+      <!-- <<annotation>>
+             ~~~~~~~~~~~~
+      -->
+      <context name="ClassDiag_Annotation" attribute="Annotation" fallthroughContext="#pop">
+        <DetectIdentifier attribute="Annotation"/>
+        <StringDetect String=">>" attribute="Annotation Delimiter" context="#pop"/>
+      </context>
+
+
+      <!-- class Name:::classname
+                        ~~~~~~~~~
+      -->
+      <context name="ClassDiag_ClassName" attribute="Class Name" lineEndContext="#pop"
+               fallthroughContext="ClassDiag_ClassName2">
+        <DetectSpaces context="ClassDiag_ClassName2"/>
+      </context>
+      <context name="ClassDiag_ClassName2" attribute="Class Name" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <DetectIdentifier/>
+        <Int/>
+      </context>
+
+      <!--
+      @} Class Diagram
+      -->
+
+
+      <!--
+      @{ State Diagram
+      -->
+
+      <context name="StateDiag" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+
+        <StringDetect String="&lt;&lt;" attribute="Annotation Delimiter"
+                      context="ClassDiag_Annotation"/>
+
+        <StringDetect String="-->" attribute="Link"/>
+        <StringDetect String="--" attribute="Concurrency"/>
+
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="ClassDiag_ClassName"/>
+        <StringDetect String=":" attribute="Link Text Separator" context="StateDiag_LinkText"/>
+
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"/>
+
+        <AnyChar String='-"' attribute="Error"/>
+
+        <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->
+        <StringDetect String="%" attribute="Comment" context="Comment"/>
+
+        <RegExpr String="&state_node;" attribute="Node"/>
+
+        <WordDetect String="note" attribute="Keyword" context="StateDiag_KwNote"/>
+        <WordDetect String="state" attribute="Keyword" context="StateDiag_KwState"/>
+        <WordDetect String="class" attribute="Keyword" context="StateDiag_KwClass"/>
+        <WordDetect String="classDef"  attribute="Keyword" context="Flowchart_KwClassDef"/>
+        <WordDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+
+        <!-- because mermaid... -->
+        <StringDetect String="stateDiagram" attribute="Error"/>
+      </context>
+
+      <!-- s1 - -> s2 : EvScrollLockPressed
+                       ~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="StateDiag_LinkText" attribute="Link Text" lineEndContext="#pop"
+               fallthroughContext="StateDiag_LinkText_Text">
+        <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->
+        <StringDetect String="%%" context="#pop!Comment"/>
+      </context>
+      <context name="StateDiag_LinkText_Text" attribute="Link Text" lineEndContext="#pop#pop"
+               fallthroughContext="StateDiag_LinkText_Text_Special">
+        <RegExpr String='([^&md_mmd_syms;;:]++|&md_mmd_no_md;)++'
+                 attribute="Link Text" context="StateDiag_LinkText_Text_Special"/>
+      </context>
+      <context name="StateDiag_LinkText_Text_Special" attribute="Special Text Char"
+               lineEndContext="#pop#pop#pop">
+        <StringDetect String=";" context="#pop#pop#pop" lookAhead="1"/>
+        <StringDetect String=":" attribute="Error" context="#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_StateText_ThenPop"/>
+      </context>
+
+
+      <!--
+      @{ state s1 { ... } / state "..." as s1
+      -->
+      <context name="StateDiag_KwState" attribute="Node"
+               fallthroughContext="StateDiag_KwState_State">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String='"' lookAhead="1"
+                      context="StateDiag_KwState_As!StateDiag_KwState_State_EmptyDQ!Flowchart_Find_UnicodeText!StateDiag_KwState_State_EmptyDQ"/>
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="#pop"/>
+        <StringDetect String="}" attribute="Error" beginRegion="block" context="#pop"/>
+        <StringDetect String="&lt;&lt;" attribute="Annotation Delimiter"
+                      context="StateDiag_KwState_StateEnd!ClassDiag_Annotation"/>
+        <RegExpr String="&mmd_ent;" attribute="Entity" context="StateDiag_KwState_State"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7105 -->
+        <StringDetect String="#" attribute="Error"/>
+      </context>
+      <!-- state s1 { ... }
+                 ~~~~
+      -->
+      <context name="StateDiag_KwState_State" attribute="Node" lineEndContext="#pop#pop">
+        <AnyChar String="123456789-"/>
+        <DetectIdentifier/>
+        <DetectSpaces attribute="Normal" context="#pop!StateDiag_KwState_StateEnd"/>
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="#pop#pop"/>
+        <StringDetect String="}" attribute="Error" beginRegion="block" context="#pop#pop"/>
+        <StringDetect String="&lt;&lt;" attribute="Annotation Delimiter"
+                      context="#pop!StateDiag_KwState_StateEnd!ClassDiag_Annotation"/>
+        <RegExpr String="&lt;(/[a-z]+|[a-z]+/?)>&gt;" attribute="HTML Tag"/>
+      </context>
+      <context name="StateDiag_KwState_StateEnd" attribute="Error"
+               lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop"/>
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="#pop#pop"/>
+        <StringDetect String="}" attribute="Error" beginRegion="block" context="#pop#pop"/>
+        <StringDetect String="&lt;&lt;" attribute="Annotation Delimiter"
+                      context="ClassDiag_Annotation"/>
+      </context>
+      <!-- state "" "..." "" as s1
+                 ~~       ~~
+      -->
+      <context name="StateDiag_KwState_State_EmptyDQ" attribute="Node"
+               lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String='""' attribute="Comment"/>
+        <DetectSpaces attribute="Normal"/>
+      </context>
+      <!-- state "..." as s1
+                      ~~~
+      -->
+      <context name="StateDiag_KwState_As" attribute="Node" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="as" attribute="Keyword Parameter" context="#pop#pop"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->
+        <StringDetect String="%" attribute="Error" context="#pop#pop"/>
+      </context>
+      <!--
+      @} state
+      -->
+
+
+      <!--
+      @{ note right of State bla bla end note / note left of State : bla bla
+              ~~~~~~~~~                              ~~~~~~~~
+      -->
+      <context name="StateDiag_KwNote" attribute="Node"
+               fallthroughContext="StateDiag_KwNote_State!Spaces">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="right of" attribute="Keyword Parameter"
+                    context="StateDiag_KwNote_State!Spaces"/>
+        <WordDetect String="left of" attribute="Keyword Parameter"
+                    context="StateDiag_KwNote_State!Spaces"/>
+      </context>
+      <!-- note right of State bla bla end note
+                         ~~~~~
+      -->
+      <context name="StateDiag_KwNote_State" attribute="Text"
+               fallthroughContext="StateDiag_KwNote_Note">
+        <RegExpr String="&state_node;" attribute="Node" context="StateDiag_KwNote_Note"/>
+      </context>
+      <!-- note right of State bla bla end note / note right of State : bla bla
+                              ~                                      ~~
+      -->
+      <context name="StateDiag_KwNote_Note" attribute="Text"
+               fallthroughContext="StateDiag_KwNote_Block">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Text Separator" context="StateDiag_KwNote_Inline"/>
+      </context>
+      <!-- note right of State bla bla end note
+                               ~~~~~~~~~~~~~~~~
+      -->
+      <context name="StateDiag_KwNote_Block" attribute="Text"
+               fallthroughContext="StateDiag_KwNote_Block_Special">
+        <IncludeRules context="Find_Comment_InText"/>
+        <!-- end note: https://github.com/mermaid-js/mermaid/issues/7089 -->
+        <RegExpr String='([^&md_syms;e]++|e(?!nd note\b)|&md_sym_no_md;)++'
+                 attribute="Text" context="StateDiag_KwNote_Block_Special"/>
+      </context>
+      <context name="StateDiag_KwNote_Block_Special" attribute="Text" lineEndContext="#pop">
+        <!-- https://github.com/mermaid-js/mermaid/issues/7089 -->
+        <StringDetect String="end note" attribute="Keyword" context="#pop#pop#pop#pop#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_DQ_ThenPop"/>
+      </context>
+      <!-- note right of State : bla bla
+                                ~~~~~~~~
+      -->
+      <context name="StateDiag_KwNote_Inline" attribute="Text"
+               lineEndContext="#pop#pop#pop#pop"
+               fallthroughContext="StateDiag_KwNote_Inline_Special">
+        <RegExpr String='([^&md_syms;:]++|&md_sym_no_md;)++'
+                 attribute="Text" context="StateDiag_KwNote_Block_Special"/>
+      </context>
+      <context name="StateDiag_KwNote_Inline_Special" attribute="Text"
+               lineEndContext="#pop#pop#pop#pop#pop">
+        <StringDetect String=":" attribute="Error" context="#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_DQ_ThenPop"/>
+      </context>
+      <!--
+      @} note
+      -->
+
+
+      <!-- @{ class nodeId1,nodeId2 className; -->
+      <context name="StateDiag_KwClass" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal" context="StateDiag_KwClass_Node"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+      </context>
+      <context name="StateDiag_KwClass_Node" attribute="Normal" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Normal" context="Flowchart_KwClass_ClassName"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+        <DetectIdentifier attribute="Node"/>
+      </context>
+      <!-- @} class -->
+
+      <!--
+      @} State Diagram
+      -->
+
+
+      <!--
+      @{ Entity Relationship Diagram
+      -->
+
+      <context name="erDiag" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+
+        <StringDetect String=":::" attribute="Class Name Delimiter" context="erDiag_ClassName"/>
+        <StringDetect String=":" attribute="Link Text Separator" context="erDiag_LinkText"/>
+        <StringDetect String="[" attribute="Shape" context="erDiag_NameAlias"/>
+
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="erDiag_Attr"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="erDiag_QuotedText"/>
+
+        <IncludeRules context="Find_Comment"/>
+
+        <RegExpr String="&er_link;" attribute="Link" insensitive="1"/>
+        <RegExpr String="&er_node;" attribute="Node" insensitive="1"/>
+
+        <StringDetect String="one or zero"  attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="zero or one"  attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="one or many"  attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="many(1)"      attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="1+"           attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="zero or more" attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="zero or many" attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="many(0)"      attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="0+"           attribute="Cardinality Text" insensitive="1"/>
+        <StringDetect String="only one"     attribute="Cardinality Text" insensitive="1"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7093 -->
+        <StringDetect String="one"          attribute="Cardinality Text" insensitive="1"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7093 -->
+        <AnyChar String="uU1"               attribute="Cardinality Text"/>
+
+        <StringDetect String="to"            attribute="Relationship Text" insensitive="1"/>
+        <StringDetect String="optionally to" attribute="Relationship Text" insensitive="1"/>
+
+        <StringDetect String="style" attribute="Keyword" context="Flowchart_KwStyle"
+                      insensitive="1"/>
+        <StringDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"
+                      insensitive="1"/>
+        <StringDetect String="direction" attribute="Keyword" context="Flowchart_KwDirection"
+                      insensitive="1"/>
+
+        <IncludeRules context="Find_Accessibility_Insensitive"/>
+
+        <!-- because mermaid... -->
+        <!-- <StringDetect String="erDiagram" attribute="Error"/> -->
+
+        <DetectIdentifier attribute="Error"/>
+      </context>
+
+      <!-- AAA ||..|| BBB : bla bla
+                           ~~~~~~~~
+      -->
+      <context name="erDiag_LinkText" attribute="Link Text"
+               fallthroughContext="erDiag_LinkText_Text">
+        <DetectSpaces/>
+        <IncludeRules context="Find_Comment"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/5093 -->
+        <RegExpr String="&er_kw;" lookAhead="1" context="#pop"/>
+      </context>
+      <context name="erDiag_LinkText_Text" attribute="Link Text" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <StringDetect String="*" attribute="Special Text Char"/>
+        <RegExpr String="([^][&lt;&gt;/\\|`~%&amp;:';.{}$()=+?&quot;,@^|#*_\s]+|&md_no_underscore;)+"/>
+        <StringDetect String="_" attribute="Special Text Char"/>
+      </context>
+
+      <!-- AAA[text] / AAA["text"]
+               ~~~~~       ~~~~~~~
+      -->
+      <context name="erDiag_NameAlias" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="erDiag_NameAlias_UnquotedText">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="erDiag_NameAlias_End!erDiag_QuotedText"/>
+        <IncludeRules context="erDiag_LinkText"/>
+      </context>
+      <!-- AAA[text]
+               ~~~~~
+      -->
+      <context name="erDiag_NameAlias_UnquotedText" attribute="Text" lineEndContext="#pop#pop"
+               fallthroughContext="#pop!erDiag_NameAlias_End">
+        <StringDetect String="]" attribute="Shape" context="#pop#pop"/>
+        <IncludeRules context="erDiag_LinkText_Text"/>
+      </context>
+      <!-- AAA[ text ]
+                    ~~
+      -->
+      <context name="erDiag_NameAlias_End" attribute="Error" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="]" attribute="Shape" context="#pop#pop"/>
+        <IncludeRules context="CharErrorAndPop2"/>
+      </context>
+
+      <!-- "text"
+            ~~~~~
+      -->
+      <context name="erDiag_QuotedText" attribute="Quoted Text" lineEndContext="#pop"
+               fallthroughContext="erDiag_QuotedText_Special">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+        <StringDetect String="~" attribute="Special Text Char"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String='([^&flowchart_qtext_syms;~]++|&flowchart_qtext_no_md;)++'
+                 attribute="Quoted Text" context="erDiag_QuotedText_Special"/>
+      </context>
+      <context name="erDiag_QuotedText_Special" attribute="Quoted Text"
+               lineEndContext="#pop#pop">
+        <StringDetect String="~" attribute="Special Text Char" context="#pop"/>
+        <IncludeRules context="Flowchart_UnicodeText_Special"/>
+      </context>
+
+      <!-- Ent:::classname,classname
+                 ~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="erDiag_ClassName" attribute="Class Name" lineEndContext="#pop"
+               fallthroughContext="erDiag_ClassName2">
+        <DetectSpaces context="erDiag_ClassName2"/>
+        <StringDetect String="," attribute="List Separator"/>
+      </context>
+      <context name="erDiag_ClassName2" attribute="Class Name" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <DetectIdentifier/>
+        <AnyChar String="-"/>
+        <Int/>
+        <StringDetect String="," attribute="List Separator" context="#pop"/>
+        <DetectSpaces context="#pop"/>
+      </context>
+
+      <!-- @{ Attribute -->
+      <!-- Ent { string(ds) productCode PK "Dsds" }
+                ~~~~~~~~~~~
+      -->
+      <context name="erDiag_Attr" attribute="Error">
+        <DetectSpaces attribute="Member Type"/>
+        <AnyChar String="*-[]()0123456789" attribute="Member Type"
+                 context="#pop!erDiag_Attr_Type"/>
+        <IncludeRules context="erDiag_Attr_NotIdent"/>
+        <DetectIdentifier attribute="Member Type" context="#pop!erDiag_Attr_Type"/>
+      </context>
+      <context name="erDiag_Attr_NotIdent" attribute="Error">
+        <IncludeRules context="erDiag_Attr_IdentEnd"/>
+        <IncludeRules context="Find_Comment"/>
+        <WordDetect String="PK" attribute="Keyword Parameter" context="erDiag_Attr_Key"
+                    additionalDeliminator='-"' insensitive="1"/>
+        <WordDetect String="FK" attribute="Keyword Parameter" context="erDiag_Attr_Key"
+                    additionalDeliminator='-"' insensitive="1"/>
+      </context>
+      <context name="erDiag_Attr_IdentEnd" attribute="Error">
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="#pop"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop!erDiag_Attr!erDiag_QuotedText"/>
+        <StringDetect String=',' attribute="List Separator" context="erDiag_Attr_Key"/>
+      </context>
+      <!-- Ent { string(ds) productCode PK "Dsds" }
+                 ~~~~~~~~~~
+      -->
+      <context name="erDiag_Attr_Type" attribute="Error"
+               lineEndContext="#pop!erDiag_Attr_Name"
+               fallthroughContext="#pop!erDiag_Attr_Name">
+        <DetectSpaces attribute="Member Type" context="#pop!erDiag_Attr_Name"/>
+        <DetectIdentifier attribute="Member Type"/>
+        <AnyChar String="*-[]()0123456789" attribute="Member Type"/>
+        <IncludeRules context="erDiag_Attr_IdentEnd"/>
+      </context>
+      <!-- Ent { string(ds) productCode PK "Dsds" }
+                           ~~~~~~~~~~~~
+      -->
+      <context name="erDiag_Attr_Name" attribute="Error">
+        <DetectSpaces attribute="Member"/>
+        <AnyChar String="*-[]()0123456789" attribute="Member"
+                 context="#pop!erDiag_Attr_Name2"/>
+        <IncludeRules context="erDiag_Attr_NotIdent"/>
+        <DetectIdentifier attribute="Member" context="#pop!erDiag_Attr_Name2"/>
+      </context>
+      <!-- Ent { string(ds) productCode PK "Dsds" }
+                            ~~~~~~~~~~~
+      -->
+      <context name="erDiag_Attr_Name2" attribute="Error"
+               lineEndContext="erDiag_Attr_Key"
+               fallthroughContext="erDiag_Attr_Key">
+        <DetectSpaces attribute="Member" context="erDiag_Attr_Key"/>
+        <DetectIdentifier attribute="Member"/>
+        <AnyChar String="*-[]()0123456789" attribute="Member"/>
+        <IncludeRules context="erDiag_Attr_IdentEnd"/>
+      </context>
+      <!-- Ent { string(ds) productCode PK "Dsds" }
+                                       ~~~~
+      -->
+      <context name="erDiag_Attr_Key" attribute="Normal"
+               fallthroughContext="#pop#pop!erDiag_Attr">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=',' attribute="List Separator"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop#pop!erDiag_Attr!erDiag_QuotedText"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"
+                      context="#pop#pop"/>
+        <WordDetect String="PK" attribute="Keyword Parameter" additionalDeliminator='-"'
+                    insensitive="1"/>
+        <WordDetect String="FK" attribute="Keyword Parameter" additionalDeliminator='-"'
+                    insensitive="1"/>
+      </context>
+      <!-- @} Attribute -->
+
+      <!--
+      @} Entity Relationship Diagram
+      -->
+
+
+      <!--
+      @{ User Journey Diagram
+      -->
+
+      <context name="Journey" attribute="Normal">
+        <DetectSpaces attribute="Normal"/>
+
+        <StringDetect String=":" attribute="Symbol Separator" context="Journey_Task_Score"/>
+        <StringDetect String=";" attribute="Error"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->
+        <StringDetect String="%" attribute="Comment" context="Comment"/>
+
+        <RegExpr String="&journey_task;" attribute="Node" insensitive="1"
+                 context="Journey_Task"/>
+
+        <WordDetect String="section" attribute="Keyword" insensitive="1"
+                    context="Journey_KwSection!SpacesOrNewLine"/>
+        <WordDetect String="title" attribute="Keyword" insensitive="1"
+                    context="Journey_KwTitle!SpacesOrNewLine"/>
+
+        <IncludeRules context="Find_Accessibility_Insensitive"/>
+
+        <!-- because mermaid... -->
+        <StringDetect String="journey" attribute="Error"/>
+
+        <RegExpr String="&mmd_ent;" attribute="Entity" context="Journey_Task"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7105 -->
+        <StringDetect String="#" attribute="Error"/>
+      </context>
+
+      <!-- task name : score : text
+             ~~~~~~~~~~~~~~~~~~~~~~
+      task name is partially consumed if there # or ;
+      -->
+      <context name="Journey_Task" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=":" attribute="Symbol Separator"
+                      context="#pop!Journey_Task_Score"/>
+        <IncludeRules context="Journey_KwSection"/>
+      </context>
+      <context name="Journey_Task_Score" attribute="Error" lineEndContext="#pop">
+        <AnyChar String="-+0123456789." attribute="Number"/>
+        <StringDetect String=":" attribute="Symbol Separator" context="Journey_Task_Text"/>
+        <DetectSpaces attribute="Normal"/>
+      </context>
+      <context name="Journey_Task_Text" attribute="ID" lineEndContext="#pop#pop">
+        <StringDetect String="," attribute="ID Separator"/>
+        <IncludeRules context="Journey_KwSection"/>
+      </context>
+
+      <!-- section text
+                   ~~~~
+      -->
+      <context name="Journey_KwSection" attribute="Section Text" lineEndContext="#pop">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <Int/>
+        <IncludeRules context="Find_Entity"/>
+        <!-- # -> https://github.com/mermaid-js/mermaid/issues/7105 -->
+        <AnyChar String=";:#" attribute="Error"/>
+      </context>
+
+      <!-- title text
+                 ~~~~
+      -->
+      <context name="Journey_KwTitle" attribute="Text" lineEndContext="#pop">
+        <StringDetect String=":" attribute="Text"/>
+        <IncludeRules context="Journey_KwSection"/>
+        <StringDetect String="&lt;" attribute="Special Text Char"/>
+      </context>
+
+      <!--
+      @} User Journey Diagram
+      -->
+
+
+      <!--
+      @{ Gantt Diagram
+      -->
+
+      <context name="Gantt" attribute="Normal" fallthroughContext="Gantt_Task">
+        <DetectSpaces attribute="Normal"/>
+
+        <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->
+        <AnyChar String="%" attribute="Comment" context="Comment"/>
+
+        <RegExpr String="&gantt_task;" attribute="Node" insensitive="1"
+                 context="Gantt_Task"/>
+
+        <StringDetect String="section" attribute="Keyword" insensitive="1"
+                      context="Gantt_KwSection!SpacesOrNewLine"/>
+        <StringDetect String="excludes" attribute="Keyword" insensitive="1"
+                      context="Gantt_KwExcludes!SpacesOrNewLine"/>
+        <StringDetect String="axisFormat" attribute="Keyword" insensitive="1"
+                      context="Text_NoSpecial!SpacesOrNewLine"/>
+        <StringDetect String="dateFormat" attribute="Keyword" insensitive="1"
+                      context="Text_NoSpecial!SpacesOrNewLine"/>
+        <StringDetect String="tickInterval" attribute="Keyword" insensitive="1"
+                      context="Gantt_KwTickInterval!SpacesOrNewLine"/>
+        <StringDetect String="weekday" attribute="Keyword" insensitive="1"
+                      context="Gantt_KwWeekday!SpacesOrNewLine"/>
+        <StringDetect String="title" attribute="Keyword" insensitive="1"
+                      context="Text_Simple!SpacesOrNewLine"/>
+        <StringDetect String="weekend" attribute="Keyword" insensitive="1"
+                      context="Gantt_KwWeekend!SpacesOrNewLine"/>
+        <StringDetect String="todayMarker" attribute="Keyword" insensitive="1"
+                      context="Gantt_KwTodayMarker!SpacesOrNewLine"/>
+
+        <IncludeRules context="Find_Accessibility_Insensitive"/>
+
+        <!-- because mermaid... -->
+        <StringDetect String="gantt" attribute="Error"/>
+      </context>
+
+      <!-- my task : metadata, id, date, date
+             ~~~~~~~
+      task name is partially consumed if there '#'
+      -->
+      <context name="Gantt_Task" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=":" attribute="Symbol Separator" context="Gantt_Task_Metadata"/>
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <Int/>
+        <IncludeRules context="Find_Entity"/>
+      </context>
+      <!-- my task : metadata, id, date, date
+                    ~~~~~~~~~~
+      -->
+      <context name="Gantt_Task_Metadata" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="Gantt_Task_ID">
+        <DetectSpaces/>
+        <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date1"/>
+        <WordDetect String="active" attribute="Keyword Parameter" context="Gantt_MetaSep"/>
+        <WordDetect String="done" attribute="Keyword Parameter" context="Gantt_MetaSep"/>
+        <WordDetect String="crit" attribute="Keyword Parameter" context="Gantt_MetaSep"/>
+        <WordDetect String="milestone" attribute="Keyword Parameter" context="Gantt_MetaSep"/>
+        <WordDetect String="vert" attribute="Keyword Parameter" context="Gantt_MetaSep"/>
+      </context>
+      <context name="Gantt_MetaSep" attribute="Normal" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop!Gantt_Task_ID">
+        <DetectSpaces/>
+        <StringDetect String="," attribute="List Separator" context="#pop"/>
+      </context>
+      <!-- my task : metadata, id, date, date
+                              ~~~~
+      -->
+      <context name="Gantt_Task_ID" attribute="Normal" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop!Gantt_Task_Date1">
+        <DetectSpaces/>
+        <StringDetect String="," attribute="List Separator" context="#pop!Gantt_Task_Date1"/>
+        <RegExpr String="[^,]+(?=,[^,]*,[^,]*)" attribute="ID"/>
+      </context>
+      <!-- my task : metadata, id, date, date
+                                  ~~~~~~
+      -->
+      <context name="Gantt_Task_Date1" attribute="Normal" lineEndContext="#pop#pop#pop"
+               fallthroughContext="Gantt_Task_Date1_Text">
+        <DetectSpaces/>
+        <WordDetect String="after" attribute="Keyword Parameter" context="Gantt_Task_Date1_Id"
+                    insensitive="1"/>
+        <WordDetect String="until" attribute="Keyword Parameter" context="Gantt_Task_Date2_Id"
+                    insensitive="1"/>
+      </context>
+      <context name="Gantt_Task_Date1_Text" attribute="Normal"
+               lineEndContext="#pop#pop#pop#pop">
+        <Int context="Gantt_Task_Date_Suffix"/>
+        <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date2"/>
+      </context>
+      <context name="Gantt_Task_Date1_Id" attribute="ID" lineEndContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date2"/>
+      </context>
+      <context name="Gantt_Task_Date_Suffix" attribute="Normal"
+               lineEndContext="#pop#pop#pop#pop#pop" fallthroughContext="#pop">
+        <StringDetect String="ms" attribute="Style Unit" context="#pop"/>
+        <AnyChar String="smhdwMy" attribute="Style Unit" context="#pop"/>
+      </context>
+      <!-- my task : metadata, id, date, date
+                                       ~~~~~~
+      -->
+      <context name="Gantt_Task_Date2" attribute="Normal" lineEndContext="#pop#pop#pop#pop#pop"
+               fallthroughContext="Gantt_Task_Date2_Text">
+        <DetectSpaces/>
+        <WordDetect String="until" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop#pop!Gantt_Task_Date2_Id"/>
+      </context>
+      <context name="Gantt_Task_Date2_Text" attribute="Normal"
+               lineEndContext="#pop#pop#pop#pop#pop#pop">
+        <Int context="Gantt_Task_Date_Suffix"/>
+        <StringDetect String="," attribute="Error"
+                      context="#pop#pop#pop#pop#pop#pop!LineError"/>
+      </context>
+      <context name="Gantt_Task_Date2_Id" attribute="ID" lineEndContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="," attribute="Error" context="#pop#pop#pop#pop!LineError"/>
+      </context>
+
+      <!-- section text
+                   ~~~~
+      -->
+      <context name="Gantt_KwSection" attribute="Section Text" lineEndContext="#pop">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <Int/>
+        <IncludeRules context="Find_Entity"/>
+        <IncludeRules context="Find_HTML_br"/>
+      </context>
+
+      <!-- excludes date sunday
+                    ~~~~~~~~~~~
+      -->
+      <context name="Gantt_KwExcludes" attribute="Normal" lineEndContext="#pop">
+        <Int/>
+        <AnyChar String="-:/"/>
+        <StringDetect String="," attribute="List Separator" context="Gantt_Task_Date1"/>
+        <DetectSpaces/>
+        <WordDetect String="weekends"  attribute="Keyword Parameter" insensitive="1"/>
+        <IncludeRules context="Gantt_KwWeekday"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- weekend friday
+                   ~~~~~~
+      -->
+      <context name="Gantt_KwWeekend" attribute="Normal" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <WordDetect String="friday"   attribute="Keyword Parameter" insensitive="1"/>
+        <WordDetect String="saturday" attribute="Keyword Parameter" insensitive="1"/>
+        <DetectIdentifier attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- weekday monday
+                   ~~~~~~
+      -->
+      <context name="Gantt_KwWeekday" attribute="Normal" lineEndContext="#pop">
+        <WordDetect String="monday"    attribute="Keyword Parameter" insensitive="1"/>
+        <WordDetect String="tuesday"   attribute="Keyword Parameter" insensitive="1"/>
+        <WordDetect String="wednesday" attribute="Keyword Parameter" insensitive="1"/>
+        <WordDetect String="thursday"  attribute="Keyword Parameter" insensitive="1"/>
+        <WordDetect String="friday"    attribute="Keyword Parameter" insensitive="1"/>
+        <WordDetect String="saturday"  attribute="Keyword Parameter" insensitive="1"/>
+        <WordDetect String="sunday"    attribute="Keyword Parameter" insensitive="1"/>
+      </context>
+
+      <!-- title text
+                 ~~~~
+      -->
+      <context name="Gantt_KwTodayMarker" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="#pop!Flowchart_CSSProp">
+        <WordDetect String="off" attribute="Keyword Parameter"/>
+      </context>
+
+      <!-- tickInterval 1day
+                        ~~~~
+      -->
+      <context name="Gantt_KwTickInterval" attribute="Error" lineEndContext="#pop"
+               fallthroughContext="#pop!LineError">
+        <DetectSpaces attribute="Normal"/>
+        <Int context="Gantt_KwTickInterval_Unit" attribute="Number"/>
+      </context>
+      <context name="Gantt_KwTickInterval_Unit" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="#pop">
+        <WordDetect String="millisecond" attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>
+        <WordDetect String="second"      attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>
+        <WordDetect String="minute"      attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>
+        <WordDetect String="hour"        attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>
+        <WordDetect String="day"         attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>
+        <WordDetect String="week"        attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>
+        <WordDetect String="month"       attribute="Style Unit" context="#pop" additionalDeliminator="0123456789"/>
+      </context>
+
+      <!--
+      @} Gantt Diagram
+      -->
+
+
+      <!--
+      @{ Pie chart diagrams
+      -->
+
+      <context name="Pie" attribute="Normal" lineEndContext="Pie_Body"
+               fallthroughContext="Pie_Body">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="showData" attribute="Keyword Parameter" context="Pie_Body"/>
+      </context>
+
+      <context name="Pie_Body" attribute="Normal">
+        <DetectSpaces attribute="Normal"/>
+
+        <AnyChar String=":" attribute="Node Separator" context="Pie_Number"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+        <IncludeRules context="Find_Comment"/>
+
+        <AnyChar String="%.+-" attribute="Error"/>
+
+        <StringDetect String="title" attribute="Keyword" context="Text_Simple!SpacesOrError"/>
+
+        <IncludeRules context="Find_Accessibility_Insensitive"/>
+
+        <Int/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="Pie_Number" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <RegExpr String="[0-9]+([.][0-9]+)?" attribute="Number" context="#pop!LineError!Spaces"/>
+      </context>
+
+      <!--
+      @} Pie chart diagrams
+      -->
+
+
+      <!--
+      @{ Quadrant Chart
+      -->
+
+      <context name="Quadrant" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="Quadrant_Point_ClassName"/>
+        <StringDetect String=":" attribute="Node Separator" context="Quadrant_Point_XY"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Quadrant_Point_Name!Quadrant_Text_Q"/>
+        <StringDetect String=";" attribute="Symbol Separator"/>
+        <StringDetect String="-->" attribute="Link" context="Quadrant_Text"/>
+
+        <RegExpr String="&quadrant_text;" attribute="Node" insensitive="1"
+                 context="Quadrant_Point_Name"/>
+
+        <StringDetect String="classDef" attribute="Keyword" context="Quadrant_KwClassDef"
+                      insensitive="1"/>
+        <StringDetect String="quadrantChart" attribute="Error" insensitive="1"/>
+        <StringDetect String="quadrant-1" attribute="Keyword" context="Quadrant_Text"
+                      insensitive="1"/>
+        <StringDetect String="quadrant-2" attribute="Keyword" context="Quadrant_Text"
+                      insensitive="1"/>
+        <StringDetect String="quadrant-3" attribute="Keyword" context="Quadrant_Text"
+                      insensitive="1"/>
+        <StringDetect String="quadrant-4" attribute="Keyword" context="Quadrant_Text"
+                      insensitive="1"/>
+        <StringDetect String="x-axis" attribute="Keyword" context="Quadrant_Text"
+                      insensitive="1"/>
+        <StringDetect String="y-axis" attribute="Keyword" context="Quadrant_Text"
+                      insensitive="1"/>
+        <StringDetect String="title" attribute="Keyword" context="Text_Simple" insensitive="1"/>
+
+        <IncludeRules context="Find_Accessibility_Insensitive"/>
+      </context>
+
+      <context name="Quadrant_Text" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="#pop!Quadrant_Text_U">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop!Quadrant_Text_U!Quadrant_Text_Q"/>
+      </context>
+      <!-- in "..." -->
+      <context name="Quadrant_Text_Q" attribute="Quoted Text">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+        <StringDetect String="&lt;" attribute="Special Text Char"/>
+        <IncludeRules context="Find_Entity"/>
+      </context>
+      <!-- outside or after "..." -->
+      <context name="Quadrant_Text_U" attribute="Text" lineEndContext="#pop">
+        <StringDetect String="-->" attribute="Link" context="#pop!Quadrant_Text"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop"/>
+        <AnyChar String="&quadrant_invalid_char;" attribute="Error"/>
+        <RegExpr String="&quadrant_text;" insensitive="1"/>
+        <StringDetect String="classDef" attribute="Keyword" insensitive="1"/>
+        <StringDetect String="quadrantChart" attribute="Error" insensitive="1"/>
+        <StringDetect String="quadrant-1" attribute="Keyword" insensitive="1"/>
+        <StringDetect String="quadrant-2" attribute="Keyword" insensitive="1"/>
+        <StringDetect String="quadrant-3" attribute="Keyword" insensitive="1"/>
+        <StringDetect String="quadrant-4" attribute="Keyword" insensitive="1"/>
+        <StringDetect String="x-axis" attribute="Keyword" insensitive="1"/>
+        <StringDetect String="y-axis" attribute="Keyword" insensitive="1"/>
+        <StringDetect String="title" attribute="Keyword" insensitive="1"/>
+      </context>
+
+      <!-- Point A:::class: [0.9, 0.0] radius: 12
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="Quadrant_Point_Name" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="#pop!Quadrant_Point_ClassName"/>
+        <StringDetect String=":" attribute="Node Separator" context="#pop!Quadrant_Point_XY"/>
+        <IncludeRules context="Quadrant_Text_U"/>
+      </context>
+      <!-- Point A:::class: [0.9, 0.0] radius: 12
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="Quadrant_Point_ClassName" attribute="Error" lineEndContext="#pop">
+        <AnyChar String=":[" attribute="Error" context="#pop!Quadrant_Point_XY"/>
+        <DetectIdentifier attribute="Class Name" context="Quadrant_Point_AfterClassName"/>
+        <StringDetect String=";" attribute="Error" context="#pop"/>
+      </context>
+      <context name="Quadrant_Point_AfterClassName" attribute="Error" lineEndContext="#pop#pop">
+        <StringDetect String=":" attribute="Node Separator"
+                      context="#pop#pop!Quadrant_Point_XY"/>
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=";" attribute="Error" context="#pop#pop"/>
+        <RegExpr String="." attribute="Error" context="#pop#pop!Quadrant_Point_XY"/>
+      </context>
+
+      <!-- Point A:::class: [0.9, 0.0] radius: 12
+                           ~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="Quadrant_Point_XY" attribute="Normal" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <Float attribute="Number"/>
+        <AnyChar String="01" attribute="Number"/>
+        <StringDetect String="[" attribute="Shape"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String="]" attribute="Shape" context="Quadrant_CSS"/>
+        <StringDetect String=";" attribute="Error" context="#pop"/>
+      </context>
+
+      <!-- classDef class1 color: #109060
+                   ~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="Quadrant_KwClassDef" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <DetectIdentifier attribute="Class Name" context="Quadrant_CSS"/>
+      </context>
+
+      <!-- Point A:::class: [0.9, 0.0] radius: 12 / classDef class1 color: #109060
+                                      ~~~~~~~~~~~                  ~~~~~~~~~~~~~~~
+      -->
+      <context name="Quadrant_CSS" attribute="Normal" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="color" attribute="Style Property"/>
+        <WordDetect String="radius" attribute="Style Property"/>
+        <WordDetect String="stroke-width" attribute="Style Property"/>
+        <WordDetect String="stroke-color" attribute="Style Property"/>
+        <StringDetect String=":" attribute="Style Property Separator"
+                      context="Quadrant_CSSValue"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop"/>
+      </context>
+      <context name="Quadrant_CSSValue" attribute="Error"
+               lineEndContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="," attribute="List Separator" context="#pop"/>
+        <Float attribute="Number" context="Flowchart_CSSUnit"/>
+        <Int attribute="Number" context="Flowchart_CSSUnit"/>
+        <RegExpr String="#[a-zA-Z0-9]{3}([a-zA-Z0-9]{3})?(?!;)"
+                 attribute="Style Hexadeximal Color"/>
+        <StringDetect String=";" attribute="Symbol Separator" context="#pop#pop#pop"/>
+      </context>
+
+      <!--
+      @} Quadrant Chart
+      -->
+
+
+      <!--
+      @{ Requirement Diagram
+      -->
+
+      <context name="Requirement" attribute="Error" lineEndContext="Requirement_Body">
+      </context>
+
+      <context name="Requirement_Body" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="Requirement_Element_Mem!SpacesAsError"/>
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="Requirement_ClassName!Requirement_ClassName_Special!Requirement_Consume_PartialNode"/>
+        <IncludeRules context="Flowchart_Find_UnicodeText"/>
+        <StringDetect String="->" attribute="Link"/>
+        <StringDetect String="&lt;-" attribute="Link"
+                      context="Requirement_Link_LeftEnd!Requirement_Relationship"/>
+        <StringDetect String="-" attribute="Link"
+                      context="Requirement_Link_RightEnd!Requirement_Relationship"/>
+
+        <IncludeRules context="Requirement_Find_Comment"/>
+
+        <AnyChar String="*$\#&amp;}&lt;>:%=," attribute="Error"/>
+        <StringDetect String="_" attribute="Special Text Char"
+                      context="Requirement_Node!Md_bi"/>
+        <RegExpr String="&requirement_node;" attribute="Node" insensitive="1"
+                 context="Requirement_Node!Requirement_Node_Special"/>
+
+        <StringDetect String="element" attribute="Keyword" insensitive="1"
+                      context="Requirement_Node!Requirement_Node_Special!Requirement_Consume_PartialNode"/>
+        <StringDetect String="requirement" attribute="Keyword" insensitive="1"
+                      context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>
+        <StringDetect String="functionalRequirement" attribute="Keyword" insensitive="1"
+                      context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>
+        <StringDetect String="performanceRequirement" attribute="Keyword" insensitive="1"
+                      context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>
+        <StringDetect String="interfaceRequirement" attribute="Keyword" insensitive="1"
+                      context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>
+        <StringDetect String="physicalRequirement" attribute="Keyword" insensitive="1"
+                      context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>
+        <StringDetect String="designConstraint" attribute="Keyword" insensitive="1"
+                      context="Requirement_KwRequirement!Requirement_Node_Special!Requirement_Consume_PartialNode"/>
+
+        <StringDetect String="classDef" attribute="Keyword" insensitive="1"
+                      context="Flowchart_CSSProp!Requirement_ClassList!Requirement_ClassList_Special!Requirement_Consume_PartialRef"/>
+        <StringDetect String="style" attribute="Keyword" insensitive="1"
+                      context="Flowchart_CSSProp!Requirement_NodeList!Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>
+        <StringDetect String="class" attribute="Keyword" insensitive="1"
+                      context="Requirement_ClassList!Requirement_ClassList_Special!Requirement_Consume_PartialRef!Requirement_NoCssSep!Requirement_NodeList!Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>
+
+        <IncludeRules context="Find_Accessibility_Insensitive"/>
+
+        <DetectIdentifier attribute="Error"/>
+      </context>
+
+      <!-- mermaid bug: comment is not %% -->
+      <context name="Requirement_Find_Comment" attribute="Node">
+        <StringDetect String="%" attribute="Comment" context="Comment" firstNonSpace="1"/>
+      </context>
+
+      <!--
+      node:::classname
+      node - bla -> node
+      node <- bla - node
+        ~~
+      -->
+      <context name="Requirement_Node" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="Requirement_Node_Special">
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="#pop!Requirement_Element_Mem!SpacesAsError"/>
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="Requirement_ClassName!Requirement_ClassName_Special!Requirement_Consume_PartialNode"/>
+        <AnyChar String=":=," attribute="Error"/>
+        <RegExpr String="&requirement_node_in_node;" attribute="Node" insensitive="1"
+                 context="Requirement_Node_Special"/>
+      </context>
+
+      <context name="Requirement_Node_Special" attribute="Node" lineEndContext="#pop#pop"
+               fallthroughContext="#pop">
+        <AnyChar String="{:" lookAhead="1" context="#pop"/>
+        <StringDetect String="->" attribute="Link" context="#pop#pop"/>
+        <StringDetect String="&lt;-" attribute="Link"
+                      context="#pop#pop!Requirement_Link_LeftEnd!Requirement_Relationship"/>
+        <StringDetect String="-" attribute="Link"
+                      context="#pop#pop!Requirement_Link_RightEnd!Requirement_Relationship"/>
+        <AnyChar String="=,-&lt;>:{" attribute="Error" context="#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+      </context>
+
+      <context name="Requirement_Consume_PartialNode" attribute="Normal"
+               lineEndContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop2"/>
+        <StringDetect String="{" context="#pop#pop" lookAhead="1"/>
+        <StringDetect String="_" attribute="Special Text Char" context="#pop#pop!Md_bi"/>
+        <AnyChar String="*$\#&amp;}%:=," attribute="Error" context="#pop#pop"/>
+        <RegExpr String="&requirement_node;" insensitive="1" context="#pop"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop"/>
+        <IncludeRules context="CharErrorAndPop2"/>
+      </context>
+
+      <!-- node:::classname
+                  ~~~~~~~~~
+      -->
+      <context name="Requirement_ClassName" attribute="Class Name"
+               lineEndContext="#pop" fallthroughContext="Requirement_ClassName_Special">
+        <StringDetect String="{" lookAhead="1" context="#pop"/>
+        <StringDetect String=":" attribute="Error"/>
+        <RegExpr String="&requirement_node_in_node;" attribute="Node" insensitive="1"
+                 context="Requirement_ClassName_Special"/>
+      </context>
+      <context name="Requirement_ClassName_Special" attribute="Class Name"
+               lineEndContext="#pop#pop" fallthroughContext="#pop">
+        <IncludeRules context="Requirement_Node_Special"/>
+      </context>
+
+      <!-- node - type -> node
+                 ~~~~~
+      -->
+      <context name="Requirement_Relationship" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="contains" attribute="Keyword Parameter" context="#pop"/>
+        <WordDetect String="copies" attribute="Keyword Parameter" context="#pop"/>
+        <WordDetect String="derives" attribute="Keyword Parameter" context="#pop"/>
+        <WordDetect String="satisfies" attribute="Keyword Parameter" context="#pop"/>
+        <WordDetect String="verifies" attribute="Keyword Parameter" context="#pop"/>
+        <WordDetect String="refines" attribute="Keyword Parameter" context="#pop"/>
+        <WordDetect String="traces" attribute="Keyword Parameter" context="#pop"/>
+      </context>
+
+      <!-- node - type -> node
+                      ~~~
+      -->
+      <context name="Requirement_Link_RightEnd" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="->" attribute="Link" context="#pop"/>
+        <AnyChar String="&lt;-" attribute="Error" context="#pop"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- node <- type - node
+                       ~~
+      -->
+      <context name="Requirement_Link_LeftEnd" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="->" attribute="Error" context="#pop"/>
+        <StringDetect String="-" attribute="Link" context="#pop"/>
+        <StringDetect String="&lt;-" attribute="Error" context="#pop"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- element ... { type: blabla
+                        ~~~~~~~~~~~~~
+      -->
+      <context name="Requirement_Element_Mem" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator" context="Requirement_Mem_Text"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"
+                      context="#pop"/>
+        <IncludeRules context="Requirement_Find_Comment"/>
+        <WordDetect String="docref" attribute="Property" insensitive="1"/>
+        <WordDetect String="type" attribute="Property" insensitive="1"/>
+      </context>
+      <!-- element ... { type: blabla
+                              ~~~~~~~
+      -->
+      <context name="Requirement_Mem_Text" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Flowchart_Find_UnicodeText_ThenPop"/>
+        <StringDetect String="_" attribute="Special Text Char"
+                      context="Requirement_Mem_InText!Md_bi"/>
+        <RegExpr String="&requirement_node;" attribute="Text" insensitive="1"
+                 context="Requirement_Mem_InText!Requirement_Text_Special"/>
+        <DetectIdentifier attribute="Error" context="Requirement_Mem_InText"/>
+      </context>
+      <context name="Requirement_Mem_InText" attribute="Error"
+               lineEndContext="#pop#pop" fallthroughContext="Requirement_Text_Special">
+        <AnyChar String="-&lt;>:{=," attribute="Error"/>
+        <RegExpr String="&requirement_node_in_node;" attribute="Text" insensitive="1"
+                 context="Requirement_Text_Special"/>
+      </context>
+      <context name="Requirement_Text_Special" attribute="Node" lineEndContext="#pop#pop"
+               fallthroughContext="#pop">
+        <AnyChar String="=,-&lt;>:{" attribute="Error" context="#pop"/>
+        <IncludeRules context="Find_MdText_Syms_ThenPop"/>
+      </context>
+
+      <!-- requirement ... {
+                        ~~~
+      -->
+      <context name="Requirement_KwRequirement" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="Requirement_Node_Special">
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"
+                      context="#pop!Requirement_Requirement_Mem!SpacesAsError"/>
+        <IncludeRules context="Requirement_Node"/>
+      </context>
+
+      <!-- requirement ... { type: blabla
+                            ~~~~~~~~~~~~~
+      -->
+      <context name="Requirement_Requirement_Mem" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator" context="Requirement_Mem_Text"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"
+                      context="#pop"/>
+        <IncludeRules context="Requirement_Find_Comment"/>
+        <WordDetect String="id" attribute="Property" insensitive="1"/>
+        <WordDetect String="text" attribute="Property" insensitive="1"/>
+        <WordDetect String="risk" attribute="Property" insensitive="1"
+                    context="Requirement_KwRequirement_Risk!Requirement_Consume_Prop"/>
+        <WordDetect String="verifymethod" attribute="Property" insensitive="1"
+                    context="Requirement_KwRequirement_VerifyMethod!Requirement_Consume_Prop"/>
+      </context>
+      <!-- requirement ... { type: blabla
+                                 ~
+      -->
+      <context name="Requirement_Consume_Prop" attribute="Error" fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator" context="#pop"/>
+      </context>
+      <!-- requirement ... { risk: kw
+                                  ~~~
+      -->
+      <context name="Requirement_KwRequirement_Risk" attribute="Error"
+               lineEndContext="#pop" fallthroughContext="#pop!LineError">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="Low" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop!LineError"/>
+        <WordDetect String="Medium" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop!LineError"/>
+        <WordDetect String="High" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop!LineError"/>
+      </context>
+      <!-- requirement ... { verifymethod: kw
+                                          ~~~
+      -->
+      <context name="Requirement_KwRequirement_VerifyMethod" attribute="Error"
+               lineEndContext="#pop" fallthroughContext="#pop!LineError">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="Analysis" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop!LineError"/>
+        <WordDetect String="Inspection" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop!LineError"/>
+        <WordDetect String="Test" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop!LineError"/>
+        <WordDetect String="Demonstration" attribute="Keyword Parameter" insensitive="1"
+                    context="#pop!LineError"/>
+      </context>
+
+      <!-- style className,"className" fill:#314
+                ~~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="Requirement_NodeList" attribute="Node" lineEndContext="#pop#pop"
+               fallthroughContext="Requirement_NodeList_Special">
+        <StringDetect String="," attribute="List Separator"
+                      context="Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>
+        <IncludeRules context="Requirement_Style_Common"/>
+        <RegExpr String="&requirement_node_in_ref;" attribute="Node" insensitive="1"
+                 context="Requirement_NodeList_Special"/>
+      </context>
+      <context name="Requirement_Style_Common" attribute="Node">
+        <DetectSpaces attribute="Normal" context="Requirement_NodeListOrPop"/>
+        <StringDetect String=":" lookAhead="1" context="#pop"/>
+        <AnyChar String="=-&lt;>{" attribute="Error"/>
+      </context>
+
+      <context name="Requirement_NodeList_Special" attribute="Node"
+               lineEndContext="#pop#pop#pop" fallthroughContext="#pop">
+        <AnyChar String=":," lookAhead="1" context="#pop"/>
+        <IncludeRules context="Requirement_Text_Special"/>
+      </context>
+
+      <context name="Requirement_NodeListOrPop" attribute="Node" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop">
+        <StringDetect String="," context="#pop" lookAhead="1"/>
+      </context>
+      <context name="Requirement_QNodeListOrPop" attribute="Node"
+               lineEndContext="#pop#pop#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="," attribute="List Separator" context="#pop"/>
+      </context>
+
+      <context name="Requirement_Consume_PartialRef" attribute="Normal"
+               lineEndContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Requirement_QNodeListOrPop!Flowchart_UnicodeText"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String=":" context="#pop#pop" lookAhead="1"/>
+        <StringDetect String="_" attribute="Special Text Char" context="#pop#pop!Md_bi"/>
+        <AnyChar String="*$\#&amp;}%={" attribute="Error" context="#pop#pop"/>
+        <RegExpr String="&requirement_ref;" insensitive="1" context="#pop"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop"/>
+        <IncludeRules context="CharErrorAndPop2"/>
+      </context>
+
+      <!-- classDef className,"className" fill:#f9f
+                    ~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="Requirement_ClassList" attribute="Class Name" lineEndContext="#pop#pop"
+               fallthroughContext="Requirement_ClassList_Special">
+        <StringDetect String="," attribute="List Separator"
+                      context="Requirement_ClassList_Special!Requirement_Consume_PartialRef"/>
+        <IncludeRules context="Requirement_Style_Common"/>
+        <RegExpr String="&requirement_node_in_ref;" attribute="Class Name" insensitive="1"
+                 context="Requirement_ClassList_Special"/>
+      </context>
+
+      <context name="Requirement_ClassList_Special" attribute="Class Name"
+               lineEndContext="#pop#pop#pop" fallthroughContext="#pop">
+        <AnyChar String=":," lookAhead="1" context="#pop"/>
+        <IncludeRules context="Requirement_Text_Special"/>
+      </context>
+
+      <!-- class : ...
+                 ~
+      -->
+      <context name="Requirement_NoCssSep" attribute="Error" lineEndContext="#pop#pop#pop#pop"
+               fallthroughContext="#pop">
+        <StringDetect String=":" attribute="Error"
+                      context="Requirement_NodeList!Requirement_NodeList_Special!Requirement_Consume_PartialRef"/>
+      </context>
+
+      <!--
+      @} Requirement Diagram
+      -->
+
+
+      <!--
+      @{ GitGraph Diagram
+      -->
+
+      <context name="Git" attribute="Error" lineEndContext="Git_Body"
+               fallthroughContext="Git_Body">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator" context="Git_Body"/>
+        <WordDetect String="LR" attribute="Keyword Parameter"/>
+        <WordDetect String="TB" attribute="Keyword Parameter"/>
+        <WordDetect String="BT" attribute="Keyword Parameter"/>
+        <IncludeRules context="Find_Any_Comment"/>
+      </context>
+
+      <context name="Git_Body" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+
+        <WordDetect String="commit" attribute="Keyword" context="Git_KwCommit"/>
+        <WordDetect String="branch" attribute="Keyword" context="Git_KwBranch"
+                    additionalDeliminator="&quot;'"/>
+        <WordDetect String="switch" attribute="Keyword" context="Git_KwSwitch"
+                    additionalDeliminator="&quot;'"/>
+        <WordDetect String="checkout" attribute="Keyword" context="Git_KwSwitch"
+                    additionalDeliminator="&quot;'"/>
+        <WordDetect String="merge" attribute="Keyword" context="Git_KwMerge"
+                    additionalDeliminator="&quot;'"/>
+        <WordDetect String="cherry-pick" attribute="Keyword" context="Git_KwCherryPick"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+        <DetectIdentifier attribute="Error"/>
+      </context>
+
+      <!-- commit id:"ash" tag:"v1.0.0" type: REVERSE -->
+      <context name="Git_KwCommit" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <WordDetect String="id" attribute="Property"/>
+        <WordDetect String="tag" attribute="Property"/>
+        <WordDetect String="type" attribute="Property"/>
+        <WordDetect String="NORMAL" attribute="Keyword Parameter"/>
+        <WordDetect String="REVERSE" attribute="Keyword Parameter"/>
+        <WordDetect String="HIGHLIGHT" attribute="Keyword Parameter"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- branch"develop" / branch develop order: 3 -->
+      <context name="Git_KwBranch" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Git_KwBranchOrder!DQuote_Simple"/>
+        <StringDetect String="'" attribute="Quoted Text Delimiter"
+                      context="Git_KwBranchOrder!SQuote_Simple"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <IncludeRules context="Git_Kw_Error"/>
+        <IncludeRules context="Git_Value_Error"/>
+        <DetectIdentifier context="Git_KwBranchOrder!Git_TextIdent" attribute="Text"/>
+      </context>
+      <context name="Git_KwBranchOrder" attribute="Error" lineEndContext="#pop#pop"
+               fallthroughContext="Git_EndLine">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="order" attribute="Property"/>
+        <StringDetect String=":" attribute="Property Separator"/>
+        <Int attribute="Keyword Parameter"/>
+        <DetectIdentifier attribute="Error"/>
+      </context>
+
+      <!-- switch"develop" / checkout develop -->
+      <context name="Git_KwSwitch" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <IncludeRules context="Git_Kw_Error"/>
+        <IncludeRules context="Git_Value_Error"/>
+        <DetectIdentifier context="Git_EndLine!Git_TextIdent" attribute="Text"/>
+      </context>
+
+      <!-- merge develop id: "my_custom_id" tag: "my_custom_tag" type: REVERSE -->
+      <context name="Git_KwMerge" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop!Git_KwCommit!DQuote_Simple"/>
+        <StringDetect String="'" attribute="Quoted Text Delimiter"
+                      context="#pop!Git_KwCommit!SQuote_Simple"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <WordDetect String="id" attribute="Property" context="#pop!Git_KwCommit"/>
+        <WordDetect String="tag" attribute="Property" context="#pop!Git_KwCommit"/>
+        <WordDetect String="type" attribute="Property" context="#pop!Git_KwCommit"/>
+        <IncludeRules context="Git_Kw_Error"/>
+        <WordDetect String="NORMAL" attribute="Keyword Parameter" context="#pop!Git_KwCommit"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="REVERSE" attribute="Keyword Parameter" context="#pop!Git_KwCommit"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="HIGHLIGHT" attribute="Keyword Parameter" context="#pop!Git_KwCommit"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <DetectIdentifier context="#pop!Git_KwCommit!Git_TextIdent" attribute="Text"/>
+      </context>
+
+      <!-- cherry-pick id:"MERGE" parent:"B" -->
+      <context name="Git_KwCherryPick" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=":" attribute="Property Separator"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <WordDetect String="id" attribute="Property"/>
+        <WordDetect String="parent" attribute="Property"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="Git_TextIdent" attribute="Error" lineEndContext="#pop#pop">
+        <AnyChar String="-" attribute="Text"/>
+        <Int attribute="Text"/>
+        <DetectIdentifier attribute="Text"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <DetectSpaces attribute="Normal" context="#pop"/>
+      </context>
+
+      <context name="Git_EndLine" attribute="Error" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Any_Comment"/>
+      </context>
+
+      <context name="Git_Kw_Error" attribute="Error">
+        <WordDetect String="gitGraph" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="commit" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="branch" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="checkout" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="switch" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="merge" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="cherry-pick" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+      </context>
+      <context name="Git_Value_Error" attribute="Error">
+        <WordDetect String="NORMAL" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="REVERSE" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+        <WordDetect String="HIGHLIGHT" attribute="Error"
+                    additionalDeliminator="@#$`&quot;'" weakDeliminator="-"/>
+      </context>
+
+      <!--
+      @} GitGraph Diagram
+      -->
+
+
+      <!--
+      @{ Mindmap
+      -->
+
+      <context name="Mindmap" attribute="Error" fallthroughContext="Mindmap_Node">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Comment"/>
+        <StringDetect String=":::" attribute="Class Name Delimiter" context="Mindmap_Class"/>
+        <StringDetect String="::icon(" attribute="Annotation Delimiter" context="Mindmap_Icon"/>
+        <WordDetect String="mindmap" attribute="Error" insensitive="1"
+                    additionalDeliminator="@#$`&quot;'" context="Mindmap_Node"/>
+      </context>
+
+      <context name="Mindmap_Node" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="Mindmap_Node_Special">
+        <DetectSpaces/>
+        <RegExpr String="([^&md_syms;{}\[\]()]++|&md_sym_no_md;)++" attribute="Node"
+                 context="Mindmap_Node_Special"/>
+      </context>
+      <context name="Mindmap_Node_Special" attribute="Text" lineEndContext="#pop">
+        <StringDetect String="[" attribute="Shape"
+                      context="Mindmap_Text[]!Mindmap_End[]!Mindmap_QText"/>
+        <StringDetect String="((" attribute="Shape"
+                      context="Mindmap_Text(())!Mindmap_End(())!Mindmap_QText"/>
+        <StringDetect String="))" attribute="Shape"
+                      context="Mindmap_Text))((!Mindmap_End))((!Mindmap_QText"/>
+        <StringDetect String="(" attribute="Shape"
+                      context="Mindmap_Text()!Mindmap_End()!Mindmap_QText"/>
+        <StringDetect String=")" attribute="Shape"
+                      context="Mindmap_Text)(!Mindmap_End)(!Mindmap_QText"/>
+        <StringDetect String="{{" attribute="Shape"
+                      context="Mindmap_Text{{}}!Mindmap_End{{}}!Mindmap_QText"/>
+        <AnyChar String="(){}[]" attribute="Error"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Text_ThenPop"/>
+      </context>
+
+      <context name="Mindmap_QText" attribute="Text" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <IncludeRules context="Flowchart_QText"/>
+      </context>
+
+      <context name="Mindmap_Text_Common" attribute="Text">
+        <AnyChar String="()}]" attribute="Error"/>
+        <IncludeRules context="Find_Comment_InText"/>
+        <RegExpr String="([^&md_syms;}\]()]++|&md_sym_no_md;)++" attribute="Text"
+                 context="Mindmap_Text_Common_Special"/>
+      </context>
+      <context name="Mindmap_Text_Common_Special" attribute="Text">
+        <AnyChar String="()}]" lookAhead="1" context="#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Text_ThenPop"/>
+      </context>
+
+      <context name="Mindmap_TextEnd_Common" attribute="Text">
+        <DetectSpaces attribute="Error" context="Mindmap_TextEnd_SymOrReset"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop"/>
+        <Int attribute="Error" context="#pop#pop"/>
+        <AnyChar String="(){}[]" context="#pop#pop" lookAhead="1"/>
+      </context>
+      <context name="Mindmap_TextEnd_SymOrReset" attribute="Text"
+               lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <AnyChar String="()}]" context="#pop" lookAhead="1"/>
+      </context>
+
+
+      <!-- id[I am a square]
+              ~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_Text[]" attribute="Text">
+        <StringDetect String="]" attribute="Shape" context="Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_Text_Common"/>
+      </context>
+      <!-- id["I am a square"]
+                             ~ -->
+      <context name="Mindmap_End[]" attribute="Text" fallthroughContext="#pop#pop#pop#pop">
+        <StringDetect String="]" attribute="Shape" context="#pop!Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_TextEnd_Common"/>
+      </context>
+
+      <!-- id(I am a rounded square)
+              ~~~~~~~~~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_Text()" attribute="Text">
+        <StringDetect String=")" attribute="Shape" context="Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_Text_Common"/>
+      </context>
+      <!-- id(I am a rounded square)
+              ~~~~~~~~~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_End()" attribute="Text" fallthroughContext="#pop#pop#pop#pop">
+        <StringDetect String=")" attribute="Shape" context="#pop!Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_TextEnd_Common"/>
+      </context>
+
+      <!-- id((I am a circle))
+              ~~~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_Text(())" attribute="Text">
+        <StringDetect String="))" attribute="Shape" context="Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_Text_Common"/>
+      </context>
+      <!-- id((I am a circle))
+              ~~~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_End(())" attribute="Text" fallthroughContext="#pop#pop#pop#pop">
+        <StringDetect String="))" attribute="Shape" context="#pop!Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_TextEnd_Common"/>
+      </context>
+
+      <!-- id)I am a cloud(
+              ~~~~~~~~~~~~~ -->
+      <context name="Mindmap_Text)(" attribute="Text">
+        <StringDetect String="(" attribute="Shape" context="Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_Text_Common"/>
+      </context>
+      <!-- id)I am a cloud(
+              ~~~~~~~~~~~~~ -->
+      <context name="Mindmap_End)(" attribute="Text" fallthroughContext="#pop#pop#pop#pop">
+        <StringDetect String="(" attribute="Shape" context="#pop!Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_TextEnd_Common"/>
+      </context>
+
+      <!-- id))I am a bang((
+              ~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_Text))((" attribute="Text">
+        <StringDetect String="((" attribute="Shape" context="Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_Text_Common"/>
+      </context>
+      <!-- id))I am a bang((
+              ~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_End))((" attribute="Text" fallthroughContext="#pop#pop#pop#pop">
+        <StringDetect String="((" attribute="Shape" context="#pop!Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_TextEnd_Common"/>
+      </context>
+
+      <!-- id{{I am a hexagon}}
+              ~~~~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_Text{{}}" attribute="Text">
+        <StringDetect String="}}" attribute="Shape" context="Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_Text_Common"/>
+      </context>
+      <!-- id{{I am a hexagon}}
+              ~~~~~~~~~~~~~~~~~ -->
+      <context name="Mindmap_End{{}}" attribute="Text" fallthroughContext="#pop#pop#pop#pop">
+        <StringDetect String="}}" attribute="Shape" context="#pop!Mindmap_AfterNode"/>
+        <IncludeRules context="Mindmap_TextEnd_Common"/>
+      </context>
+
+
+      <!-- id[I am a square]
+                            ~~~ -->
+      <context name="Mindmap_AfterNode" attribute="Error" lineEndContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Comment"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop"/>
+        <Int attribute="Error" context="#pop#pop"/>
+        <AnyChar String="(){}[]" context="#pop#pop" lookAhead="1"/>
+      </context>
+
+      <!-- :::class1 class2 -->
+      <context name="Mindmap_Class" attribute="Class Name" lineEndContext="#pop">
+      </context>
+
+      <!-- :::class1 class2 -->
+      <context name="Mindmap_Icon" attribute="Annotation">
+        <StringDetect String=")" attribute="Annotation Delimiter" context="#pop"/>
+      </context>
+
+      <!--
+      @} Mindmap
+      -->
+
+
+      <!--
+      @{ Timeline Diagram
+      -->
+
+      <context name="Timeline" attribute="Normal" fallthroughContext="Timeline_Period">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String=": " attribute="Node Separator" context="Timeline_Event"/>
+        <StringDetect String=":" attribute="Error"/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7090 -->
+        <StringDetect String="%" attribute="Comment" context="Comment" firstNonSpace="1"/>
+
+        <WordDetect String="title" attribute="Keyword" context="Text_NoSpecial"
+                    insensitive="1" weakDeliminator="!%&amp;()*+,-./:;&lt;=>?[\]^{|}~"/>
+        <StringDetect String="section :" context="Timeline_Period" lookAhead="1"
+                      insensitive="1" />
+        <WordDetect String="section" attribute="Keyword" context="Timeline_KwSection"
+                    weakDeliminator="!%&amp;()*+,-./:;&lt;=>?[\]^{|}~" insensitive="1"/>
+      </context>
+
+      <!-- {time period} : {event} : {event} -->
+      <context name="Timeline_Period" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=": " attribute="Node Separator" context="#pop!Timeline_Event"/>
+        <StringDetect String=":" attribute="Error"/>
+        <IncludeRules context="Find_HTML_simple_br"/>
+        <IncludeRules context="Find_Entity"/>
+      </context>
+
+      <context name="Timeline_Event" attribute="Text" lineEndContext="#pop">
+        <IncludeRules context="Timeline_Period"/>
+      </context>
+
+      <context name="Timeline_KwSection" attribute="Section Text" lineEndContext="#pop">
+        <IncludeRules context="Timeline_Period"/>
+      </context>
+
+      <!--
+      @} Timeline Diagram
+      -->
+
+
+      <!--
+      @{ ZenUML
+      -->
+
+      <!-- help !!! https://github.com/mermaid-js/mermaid/issues/7154 -->
+      <context name="ZenUML" attribute="Normal" fallthroughContext="Timeline_Period">
+        <DetectSpaces attribute="Normal"/>
+
+        <StringDetect String=":" attribute="Node Separator" context="ZenUML_LinkText"/>
+        <StringDetect String="." attribute="Link" context="ZenUML_Method"/>
+        <StringDetect String="(" attribute="Link" context="ZenUML_Message"/>
+        <StringDetect String="->" attribute="Link"/>
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter" beginRegion="block"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter" endRegion="block"/>
+        <StringDetect String="//" attribute="Diagram Comment" context="ZenUML_Comment"/>
+        <StringDetect String="@" attribute="Annotation" context="ZenUML_Actor"/>
+
+        <RegExpr String="&zenuml_node;" attribute="Node"/>
+        <StringDetect String="return" attribute="Keyword" context="Text_Simple"/>
+        <StringDetect String="if" attribute="Keyword"/>
+        <StringDetect String="else" attribute="Keyword"/>
+        <StringDetect String="while" attribute="Keyword"/>
+        <StringDetect String="opt" attribute="Keyword"/>
+        <StringDetect String="par" attribute="Keyword"/>
+        <StringDetect String="new" attribute="Keyword"/>
+        <StringDetect String="try" attribute="Keyword"/>
+        <StringDetect String="catch" attribute="Keyword"/>
+        <StringDetect String="finally" attribute="Keyword"/>
+        <StringDetect String="as" attribute="Keyword Parameter"/>
+        <StringDetect String="title" attribute="Keyword" context="Text_Simple"/>
+      </context>
+
+      <context name="ZenUML_Actor" attribute="Normal" fallthroughContext="#pop">
+        <DetectIdentifier attribute="Annotation" context="#pop"/>
+        <Int attribute="Annotation"/>
+      </context>
+
+      <context name="ZenUML_LinkText" attribute="Link Text" lineEndContext="#pop">
+      </context>
+
+      <context name="ZenUML_Method" attribute="Link Text" lineEndContext="#pop">
+        <AnyChar String="{}" context="#pop" lookAhead="1"/>
+      </context>
+
+      <context name="ZenUML_Message" attribute="Link Text" lineEndContext="#pop">
+        <StringDetect String=")" attribute="Link" context="#pop"/>
+        <AnyChar String="(){}" context="#pop" lookAhead="1"/>
+      </context>
+
+      <context name="ZenUML_Comment" attribute="Diagram Comment" lineEndContext="#pop"
+               fallthroughContext="ZenUML_Comment_Special">
+        <RegExpr String="&md_strict_text;" attribute="Diagram Comment"
+                 context="ZenUML_Comment_Special"/>
+      </context>
+      <context name="ZenUML_Comment_Special" attribute="Diagram Comment"
+               lineEndContext="#pop#pop">
+        <IncludeRules context="Find_MdText_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_DQ_SingleLine_ThenPop"/>
+      </context>
+
+      <!--
+      @} ZenUML
+      -->
+
+
+      <!--
+      @{ Sankey diagram
+      -->
+
+      <context name="Sankey" attribute="Error" lineEndContext="Sankey_Body">
+      </context>
+
+      <context name="Sankey_Body" attribute="Normal" fallthroughContext="Sankey_Node1">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Comment"/>
+      </context>
+
+      <!-- Pumped ds heat,"Heating and cooling, ""commercial""",70.672 -->
+      <context name="Sankey_Node1" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="Sankey_Node2!Sankey_Node">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Sankey_Node2!Sankey_QNode" column="0"/>
+      </context>
+      <context name="Sankey_Node2" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="Sankey_Value!Sankey_Node">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Sankey_Value!Sankey_QNode"/>
+      </context>
+      <context name="Sankey_Value" attribute="Error" lineEndContext="#pop#pop#pop">
+        <AnyChar String="0123456789." attribute="Number"/>
+        <DetectSpaces attribute="Normal"/>
+      </context>
+
+      <context name="Sankey_Node" attribute="Node" lineEndContext="#pop">
+        <StringDetect String=',' attribute="List Separator" context="#pop"/>
+        <StringDetect String='"' attribute="Error"/>
+      </context>
+
+      <context name="Sankey_QNode" attribute="Quoted Text">
+        <StringDetect String='""' attribute="Special Text Char"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="Sankey_QNode_End"/>
+      </context>
+
+      <context name="Sankey_QNode_End" attribute="Error" lineEndContext="#pop#pop#pop">
+        <StringDetect String=',' attribute="List Separator" context="#pop#pop"/>
+      </context>
+
+      <!--
+      @} Sankey diagram
+      -->
+
+
+      <!--
+      @{ XY Chart
+      -->
+
+      <context name="XYChart" attribute="Error" lineEndContext="XYChart_Body"
+               fallthroughContext="XYChart_Body">
+        <DetectSpaces attribute="Normal"/>
+        <WordDetect String="vertical" attribute="Keyword Parameter" context="XYChart_Body"
+                    insensitive="1"/>
+        <WordDetect String="horizontal" attribute="Keyword Parameter" context="XYChart_Body"
+                    insensitive="1"/>
+      </context>
+
+      <context name="XYChart_Body" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Comment"/>
+        <StringDetect String="[" attribute="Normal"
+                      context="XYChart_XAxis!XYChart_XAxis_Legend!XYChart_XAxis_Legend_Label!XYChart_Text!Spaces"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_NoSpecial"/>
+        <StringDetect String="title" attribute="Keyword" insensitive="1"
+                      context="XYChart_Text!XYChart_QText!XYChart_IdentError3"/>
+        <StringDetect String="x-axis" attribute="Keyword" insensitive="1"
+                      context="XYChart_XAxis!XYChart_IdentError2"/>
+        <StringDetect String="y-axis" attribute="Keyword" insensitive="1"
+                      context="XYChart_YAxis!XYChart_IdentError2"/>
+        <StringDetect String="bar" attribute="Keyword" insensitive="1"
+                      context="XYChart_Bar!XYChart_IdentError2"/>
+        <StringDetect String="line" attribute="Keyword" insensitive="1"
+                      context="XYChart_Bar!XYChart_IdentError2"/>
+        <IncludeRules context="Find_Accessibility_Insensitive"/>
+
+        <DetectIdentifier/>
+        <Int/>
+      </context>
+
+      <!-- keywordXXX
+                  ~~~ #pop * 2 -->
+      <context name="XYChart_IdentError2" attribute="Text" lineEndContext="#pop#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal" context="#pop"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop"/>
+        <Int attribute="Error"/>
+      </context>
+
+      <!-- keywordXXX
+                  ~~~ #pop * 3 -->
+      <context name="XYChart_IdentError3" attribute="Text" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal" context="#pop"/>
+        <DetectIdentifier attribute="Error" context="#pop#pop#pop"/>
+        <Int attribute="Error"/>
+      </context>
+
+      <!-- y-axis title min - -> max -->
+      <context name="XYChart_YAxis" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="XYChart_YAxis_MinMax!XYChart_Axis_Title">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="XYChart_YAxis_MinMax!DQuote_NoSpecial"/>
+      </context>
+
+      <context name="XYChart_YAxis_MinMax" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <Int attribute="Number"/>
+        <StringDetect String="-->" attribute="Link"/>
+        <AnyChar String="-." attribute="Number"/>
+      </context>
+
+      <!--
+      x-axis title min - -> max
+      x-axis "title with space" [cat1, "cat2 with space", cat3]
+      -->
+      <context name="XYChart_XAxis" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="XYChart_XAxis_Legend!XYChart_Axis_Title">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="XYChart_XAxis_Legend!DQuote_NoSpecial"/>
+      </context>
+
+      <context name="XYChart_XAxis_Legend" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="#pop!XYChart_YAxis_MinMax">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="[" attribute="Normal"
+                      context="XYChart_XAxis_Legend_Label!XYChart_Text!XYChart_QText!Spaces"/>
+      </context>
+
+      <!-- x-axis "title with space" [cat1, "cat2 with space", cat3]
+                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      -->
+      <context name="XYChart_XAxis_Legend_Label" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="," attribute="List Separator"
+                      context="XYChart_Text!XYChart_QText!Spaces"/>
+        <StringDetect String="]" attribute="Normal" context="#pop#pop#pop"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_NoSpecial"/>
+        <DetectIdentifier attribute="Error" context="XYChart_Text!XYChart_QText!Spaces"/>
+        <RegExpr String="." attribute="Error" context="XYChart_Text!XYChart_QText!Spaces"/>
+      </context>
+
+      <!-- bar [2.3, 45, .98, -3.4]
+              ~~ -->
+      <context name="XYChart_Bar" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String="[" attribute="Normal"
+                      context="XYChart_Bar_Values"/>
+      </context>
+
+      <!-- bar [2.3, 45, .98, -3.4]
+                ~~~~~~~~~~~~~~~~~~~ -->
+      <context name="XYChart_Bar_Values" attribute="Normal">
+        <DetectSpaces attribute="Normal"/>
+        <Int attribute="Number"/>
+        <AnyChar String="-." attribute="Number"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String="]" attribute="Normal" context="#pop#pop"/>
+      </context>
+
+      <!-- y-axis title
+                 ~~~~~~ -->
+      <context name="XYChart_Axis_Title" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="#pop">
+        <RegExpr String="&xy_title;" attribute="Text" context="#pop" insensitive="1"/>
+      </context>
+
+      <!-- title text  /  x-axis title [cat1, "cat2 with space", cat3]
+                 ~~~~                  ~~~~                     ~~~~ -->
+      <context name="XYChart_Text" attribute="Text" lineEndContext="#pop">
+        <RegExpr String="&xy_text;" attribute="Text" context="#pop" insensitive="1"/>
+      </context>
+
+      <!-- title "text"  /  x-axis title [cat1, "cat2 with space", cat3]
+                 ~~~~~~                         ~~~~~~~~~~~~~~~~~ -->
+      <context name="XYChart_QText" attribute="Text" lineEndContext="#pop#pop"
+               fallthroughContext="#pop">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop#pop!DQuote_NoSpecial"/>
+      </context>
+
+      <!--
+      @} XY Chart
+      -->
+
+
+      <!--
+      @{ Block Diagram
+      -->
+
+      <context name="Block" attribute="Error" fallthroughContext="Block_Node!Block_Node_Spe">
+        <DetectSpaces attribute="Normal"/>
+
+        <AnyChar String='([&lt;>{-:' lookAhead="1" context="Block_Node!Block_Node_Spe"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="Block_QString"/>
+        <AnyChar String="})" attribute="Error"/>
+
+        <IncludeRules context="Find_Comment"/>
+
+        <RegExpr String="&block_node;++" attribute="Node" context="Block_Node!Block_Node_Spe"/>
+
+        <StringDetect String="space" attribute="Keyword"/>
+        <StringDetect String="columns" attribute="Keyword" context="Block_KwColumns"/>
+        <StringDetect String="block" attribute="Keyword" beginRegion="block"/>
+        <StringDetect String="end" attribute="Keyword" endRegion="block"/>
+        <StringDetect String="style" attribute="Keyword" context="Flowchart_KwStyle"/>
+        <StringDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>
+        <StringDetect String="class" attribute="Keyword" context="Flowchart_KwClass"/>
+
+        <!-- no Find_Accessibility -->
+      </context>
+
+
+      <context name="Block_Node" attribute="Error" lineEndContext="#pop"
+               fallthroughContext="Block_Node_Spe">
+        <RegExpr String="&block_in_node;++&block_node;*+" attribute="Node"
+                 context="Block_Node_Spe"/>
+      </context>
+
+      <!-- columns 2 -->
+      <context name="Block_QString" attribute="Quoted Text"
+               fallthroughContext="Block_QString_Special">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <RegExpr String='([^&lt;&amp;#"]++|&prefix_ent_no_ent;|&prefix_html_tag_no_tag;)++'
+                 attribute="Quoted Text" context='Block_QString_Special'/>
+      </context>
+      <context name="Block_QString_Special" attribute="Quoted Text">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop#pop"/>
+        <IncludeRules context="Find_Entities"/>
+        <IncludeRules context="Find_Md_Html_DQ_SingleLine_ThenPop"/>
+      </context>
+
+      <context name="Block_Node_Spe" attribute="Error" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Normal" context="#pop#pop"/>
+
+        <StringDetect String="---" attribute="Link" context="#pop#pop"/>
+        <StringDetect String="-->" attribute="Link" context="#pop#pop"/>
+        <StringDetect String="--" attribute="Link" context="#pop#pop"/>
+
+        <StringDetect String="([" attribute="Shape" context="Block_Shape([])!Block_InShape"/>
+        <StringDetect String="(((" attribute="Shape" context="Block_Shape((()))!Block_InShape"/>
+        <StringDetect String="((" attribute="Shape" context="Block_Shape(())!Block_InShape"/>
+        <StringDetect String="(" attribute="Shape" context="Block_Shape()!Block_InShape"/>
+        <StringDetect String="[[" attribute="Shape" context="Block_Shape[[]]!Block_InShape"/>
+        <StringDetect String="[(" attribute="Shape" context="Block_Shape[()]!Block_InShape"/>
+        <StringDetect String="[/" attribute="Shape" context="Block_Shape[//]!Block_InShape"/>
+        <StringDetect String="[\" attribute="Shape" context="Block_Shape[//]!Block_InShape"/>
+        <AnyChar String="[>" attribute="Shape" context="Block_Shape[]!Block_InShape"/>
+        <StringDetect String="{{" attribute="Shape" context="Block_Shape{{}}!Block_InShape"/>
+        <StringDetect String="{" attribute="Shape" context="Block_Shape{}!Block_InShape"/>
+        <StringDetect String="&lt;[" attribute="Shape"
+                      context="Block_Shape&lt;[]>!Block_InShape"/>
+
+        <StringDetect String=":" attribute="Keyword Property Separator"
+                      context="#pop#pop!Block_Size"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop#pop!Block_QString"/>
+        <AnyChar String="-&lt;)}" attribute="Error" context="#pop#pop"/>
+        <IncludeRules context="Find_Entities_ThenPop"/>
+        <IncludeRules context="CharErrorAndPop2"/>
+      </context>
+
+
+      <!-- id(["..."])
+               ~ -->
+      <context name="Block_InShape" attribute="Error" fallthroughContext="#pop">
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop!Block_QString"/>
+        <DetectSpaces attribute="Error"/>
+      </context>
+
+      <context name="Block_Shape_Common" attribute="Error">
+        <DetectSpaces attribute="Error"/>
+        <AnyChar String="}])" attribute="Error" context="#pop#pop#pop"/>
+      </context>
+
+      <!-- id(["..."])
+                    ~~ -->
+      <context name="Block_Shape([])" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="])" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id((("...")))
+                     ~~~ -->
+      <context name="Block_Shape((()))" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String=")))" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id(("..."))
+                    ~~ -->
+      <context name="Block_Shape(())" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="))" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id("...")
+                   ~ -->
+      <context name="Block_Shape()" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String=")" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id[["..."]]
+                    ~~ -->
+      <context name="Block_Shape[[]]" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="]]" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id[("...")]
+                    ~~ -->
+      <context name="Block_Shape[()]" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String=")]" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id([/"..."/]
+                     ~~ -->
+      <context name="Block_Shape[//]" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="/]" attribute="Shape" context="#pop#pop#pop"/>
+        <StringDetect String="\]" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id["..."]
+                   ~ -->
+      <context name="Block_Shape[]" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="]" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id{{"..."}}
+                    ~~ -->
+      <context name="Block_Shape{{}}" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="}}" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id{"..."}
+                    ~~ -->
+      <context name="Block_Shape{}" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="}" attribute="Shape" context="#pop#pop#pop"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+
+      <!-- id<["..."]>(x,down)
+                    ~~ -->
+      <context name="Block_Shape&lt;[]>" attribute="Error" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop">
+        <StringDetect String="]>" attribute="Shape" context="Block_ArrowDir"/>
+        <IncludeRules context="Block_Shape_Common"/>
+      </context>
+      <!-- id<["..."]>(x,down)
+                      ~ -->
+      <context name="Block_ArrowDir" attribute="Error" fallthroughContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="(" attribute="Shape" context="Block_ArrowDir_Kw"/>
+      </context>
+      <!-- id<["..."]>(x,down)
+                       ~ -->
+      <context name="Block_ArrowDir_Kw" attribute="Error" lineEndContext="#pop#pop#pop#pop#pop"
+               fallthroughContext="#pop#pop#pop#pop#pop">
+        <StringDetect String=")" attribute="Shape" context="#pop#pop#pop#pop#pop"/>
+        <StringDetect String="," attribute="List Separator" context="Spaces"/>
+        <AnyChar String="xy" attribute="Text"/>
+        <StringDetect String="left" attribute="Text"/>
+        <StringDetect String="right" attribute="Text"/>
+        <StringDetect String="down" attribute="Text"/>
+        <StringDetect String="up" attribute="Text"/>
+        <DetectIdentifier attribute="Error"/>
+        <DetectSpaces attribute="Error"/>
+      </context>
+
+
+      <!-- columns 2 -->
+      <context name="Block_KwColumns" attribute="Error" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <Int attribute="Number" context="#pop"/>
+      </context>
+
+      <!-- block:group1:2 ... end
+                        ~ -->
+      <context name="Block_Size" attribute="Error" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <Int attribute="Number" context="#pop"/>
+      </context>
+
+      <!--
+      @} Block Diagram
+      -->
+
+
+      <!--
+      @{ Packet Diagram
+      -->
+
+      <!-- 16-31: "Destination Port"  /  +31: "Destination Port" -->
+      <context name="Packet" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+
+        <AnyChar String='+-' attribute="Normal"/>
+        <Int attribute="Node"/>
+        <StringDetect String=":" attribute="Node Separator"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+
+        <IncludeRules context="Find_Any_Comment"/>
+
+        <WordDetect String="title" attribute="Keyword" context="Packet_KwTitle"/>
+        <IncludeRules context="Find_Accessibility"/>
+      </context>
+
+      <!-- title bla bla -->
+      <context name="Packet_KwTitle" attribute="Text" lineEndContext="#pop">
+        <DetectSpaces attribute="Text" context="Packet_KwTitle_Text"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <RegExpr String="." attribute="Error" context="Packet_KwTitle_Text"/>
+      </context>
+      <context name="Packet_KwTitle_Text" attribute="Text" lineEndContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <Int/>
+        <AnyChar String="&lt;&gt;&amp;" attribute="Special Text Char"/>
+        <IncludeRules context="Find_Any_Comment"/>
+        <IncludeRules context="Find_Entity"/>
+      </context>
+
+      <!--
+      @} Packet Diagram
+      -->
+
+
+      <!--
+      @{ Kanban Diagram
+      -->
+
+      <context name="Kanban" attribute="Error" fallthroughContext="Kanban_Node!Kanban_Node_Spe">
+        <DetectSpaces attribute="Normal"/>
+        <AnyChar String="[(" attribute="Shape" context="Kanban_Box"/>
+        <StringDetect String="@{" attribute="Annotation Delimiter" context="Kanban_Annotation"/>
+        <StringDetect String="{" attribute="Error" context="Kanban_Annotation"/>
+        <AnyChar String=")]}@" attribute="Error"/>
+        <IncludeRules context="Find_Comment"/>
+        <IncludeRules context="EmptyQuotedText"/>
+        <IncludeRules context="Flowchart_Find_MdText"/>
+        <IncludeRules context="Flowchart_Find_UnicodeText"/>
+        <RegExpr String="(?!kanban\b)&kanban_node;" attribute="Node"
+                 context="Kanban_Node!Kanban_Node_Spe"/>
+        <!-- no Find_Accessibility -->
+      </context>
+
+      <context name="Kanban_Node" attribute="Node" lineEndContext="#pop">
+        <AnyChar String="[(" attribute="Shape" context="#pop!Kanban_Box"/>
+        <AnyChar String="[({})]@" lookAhead="1" context="#pop"/>
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Comment"/>
+        <RegExpr String="&kanban_node;" attribute="Node" context="Kanban_Node_Spe"/>
+      </context>
+
+      <context name="Kanban_Node_Spe" attribute="Text" lineEndContext="#pop#pop">
+        <AnyChar String="[(" attribute="Shape" context="#pop#pop!Kanban_Box"/>
+        <AnyChar String="[({})]@" lookAhead="1" context="#pop#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Text_ThenPop"/>
+      </context>
+
+      <!-- id["..."] / id[...]
+              ~~~~~       ~~~ -->
+      <context name="Kanban_Box" attribute="Text" fallthroughContext="Kanban_Box_Text">
+        <StringDetect String='"' lookAhead="1" context="Kanban_Box_End!Flowchart_QText"/>
+      </context>
+      <!-- id[...]
+              ~~~ -->
+      <context name="Kanban_Box_Text" attribute="Text" fallthroughContext="Kanban_Text_Spe">
+        <AnyChar String=")]" attribute="Shape" context="#pop#pop"/>
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Comment"/>
+        <RegExpr String="&kanban_qtext;" context="Kanban_Text_Spe"/>
+      </context>
+      <context name="Kanban_Text_Spe" attribute="Text" lineEndContext="#pop">
+        <AnyChar String=")]" attribute="Shape" context="#pop#pop#pop"/>
+        <AnyChar String="}@" attribute="Error" context="#pop#pop#pop"/>
+        <AnyChar String="([" attribute="Error" context="#pop#pop"/>
+        <IncludeRules context="Find_Md_Syms_ThenPop"/>
+        <IncludeRules context="Find_Md_Html_Text_ThenPop"/>
+      </context>
+
+      <context name="Kanban_Box_End" attribute="Text" lineEndContext="#pop">
+        <AnyChar String=")]" attribute="Shape" context="#pop#pop"/>
+        <DetectSpaces attribute="Error"/>
+        <AnyChar String="[({})]@&md_syms;" lookAhead="1" context="#pop#pop"/>
+        <IncludeRules context="CharErrorAndPop2"/>
+      </context>
+
+      <!-- id[...]@{...}
+                    ~~~~ -->
+      <context name="Kanban_Annotation" attribute="Error" lineEndContext="#pop">
+        <StringDetect String="}" attribute="Annotation Delimiter" context="#pop"/>
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <StringDetect String=": " attribute="Property Separator"
+                      context="Kanban_Annotation_Value"/>
+        <IncludeRules context="Find_SQuote_NoSpecial"/>
+        <IncludeRules context="Find_DQuote_NoSpecial"/>
+        <WordDetect String="assigned" attribute="Keyword"/>
+        <WordDetect String="ticket" attribute="Keyword"/>
+        <WordDetect String="priority" attribute="Keyword" context="Kanban_Annotation_Priority"/>
+      </context>
+      <context name="Kanban_Annotation_Value" attribute="Text" lineEndContext="#pop#pop"
+               fallthroughContext="Kanban_Annotation_Text">
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="'" attribute="Quoted Text Delimiter"
+                      context="#pop!SQuote_NoSpecial"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="#pop!DQuote_NoSpecial"/>
+      </context>
+      <context name="Kanban_Annotation_Text" attribute="Text" lineEndContext="#pop#pop#pop">
+        <AnyChar String=',"[]{}' lookAhead="1" context="#pop#pop"/>
+        <StringDetect String=": " attribute="Property Separator" context="#pop"/>
+      </context>
+
+      <!-- @{priority: ...}
+                     ~~~~~ -->
+      <context name="Kanban_Annotation_Priority" attribute="Error" lineEndContext="#pop#pop"
+               fallthroughContext="#pop">
+        <StringDetect String=": " attribute="Property Separator"
+                      context="Kanban_Annotation_Priority_Value"/>
+        <DetectSpaces attribute="Normal"/>
+      </context>
+      <context name="Kanban_Annotation_Priority_Value" attribute="Error"
+               lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop">
+        <DetectSpaces attribute="Normal"/>
+        <AnyChar String=',[]{}' lookAhead="1" context="#pop#pop"/>
+        <StringDetect String="'" attribute="Quoted Text Delimiter"
+                      context="Kanban_Annotation_Priority_SQValue"/>
+        <StringDetect String='"' attribute="Quoted Text Delimiter"
+                      context="Kanban_Annotation_Priority_DQValue"/>
+        <IncludeRules context="Kanban_Annotation_Priority_KwValue"/>
+      </context>
+      <context name="Kanban_Annotation_Priority_SQValue" attribute="Error"
+               lineEndContext="#pop#pop#pop#pop">
+        <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop#pop#pop"/>
+        <IncludeRules context="Kanban_Annotation_Priority_KwValue"/>
+      </context>
+      <context name="Kanban_Annotation_Priority_DQValue" attribute="Error"
+               lineEndContext="#pop#pop#pop#pop">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop#pop#pop"/>
+        <IncludeRules context="Kanban_Annotation_Priority_KwValue"/>
+      </context>
+      <context name="Kanban_Annotation_Priority_KwValue" attribute="Error">
+        <StringDetect String="Very High" attribute="Keyword Parameter"/>
+        <StringDetect String="High" attribute="Keyword Parameter"/>
+        <StringDetect String="Very Low" attribute="Keyword Parameter"/>
+        <StringDetect String="Low" attribute="Keyword Parameter"/>
+        <DetectIdentifier attribute="Error"/>
+      </context>
+
+      <!--
+      @} Kanban Diagram
+      -->
+
+
+      <!--
+      @{ Architecture Diagram
+      -->
+
+      <context name="Archi" attribute="Error" fallthroughContext="Kanban_Node!Kanban_Node_Spe">
+        <DetectSpaces attribute="Normal"/>
+        <IncludeRules context="Find_Any_Comment"/>
+
+        <StringDetect String=":" attribute="Symbol Separator" context="Archi_EdgeDir"/>
+
+        <StringDetect String="(" attribute="Shape" context="Archi_Icon"/>
+        <StringDetect String="[" attribute="Quoted Text Delimiter" context="Archi_Text"/>
+        <StringDetect String="{" attribute="Annotation Delimiter" context="Archi_Group"/>
+
+        <StringDetect String="--" attribute="Link" context="Archi_Edge"/>
+        <StringDetect String="&lt;--" attribute="Link" context="Archi_Edge"/>
+
+        <WordDetect String="group" attribute="Keyword"/>
+        <WordDetect String="in" attribute="Keyword"/>
+        <WordDetect String="service" attribute="Keyword"/>
+        <WordDetect String="junction" attribute="Keyword"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+
+        <!-- https://github.com/mermaid-js/mermaid/issues/7022 -->
+        <AnyChar String="LRTB" attribute="Error" context="Archi_Node"/>
+        <AnyChar String="&archi_id_ch;" attribute="Node" context="Archi_Node"/>
+      </context>
+
+      <context name="Archi_Node" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <AnyChar String="&archi_id_ch;"/>
+      </context>
+
+      <!-- id1:L - - R:id2
+               ~ -->
+      <context name="Archi_EdgeDir" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+        <AnyChar String="LRTB" attribute="Keyword Parameter" context="#pop"/>
+      </context>
+
+      <!-- id1:L - - R:id2
+                 ~~~~~~ -->
+      <context name="Archi_Edge" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <AnyChar String="LRTB" attribute="Keyword Parameter"/>
+        <StringDetect String=":" attribute="Symbol Separator" context="#pop"/>
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="&gt;" attribute="Link"/>
+      </context>
+
+      <!-- service db(database)[Database] in api
+                      ~~~~~~~~~ -->
+      <context name="Archi_Icon" attribute="Style Value" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <AnyChar String="&archi_id_ch;"/>
+        <StringDetect String=")" attribute="Shape" context="#pop"/>
+      </context>
+
+      <!-- service db(database)[Database] in api
+                                ~~~~~~~~~ -->
+      <context name="Archi_Text" attribute="Text" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <!-- https://github.com/mermaid-js/mermaid/issues/6607 -->
+        <AnyChar String="0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"/>
+        <StringDetect String="_" lookAhead="1" context="Archi_Text_MaybeMd"/>
+        <StringDetect String="]" attribute="Quoted Text Delimiter" context="#pop"/>
+      </context>
+      <context name="Archi_Text_MaybeMd" attribute="Text">
+        <RegExpr String="&md_no_underscore;" context="#pop"/>
+        <StringDetect String="_" attribute="Special Text Char" context="Archi_Text_Md"/>
+      </context>
+      <context name="Archi_Text_Md" attribute="Text" lineEndContext="#pop#pop#pop"
+               fallthroughContext="#pop#pop">
+        <StringDetect String="_" attribute="Special Text Char"/>
+      </context>
+
+      <!-- id1{group}:L - - L:id{group}
+               ~~~~~~            ~~~~~~ -->
+      <context name="Archi_Group" attribute="Annotation" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <StringDetect String="}" attribute="Annotation Delimiter" context="#pop"/>
+        <StringDetect String="group" attribute="Annotation"/>
+        <DetectIdentifier attribute="Error"/>
+      </context>
+
+      <!--
+      @} Architecture Diagram
+      -->
+
+
+      <!--
+      @{ Radar Diagram
+      -->
+
+      <context name="Radar" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+
+        <AnyChar String="[]" attribute="Shape"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+        <StringDetect String="{" attribute="Curly Bracket Block Delimiter"
+                      context="Radar_Values" beginRegion="block"/>
+        <StringDetect String="," attribute="List Separator"/>
+
+        <IncludeRules context="Find_Any_Comment"/>
+
+        <WordDetect String="axis" attribute="Keyword" weakDeliminator="-"/>
+        <WordDetect String="curve" attribute="Keyword" weakDeliminator="-"/>
+        <WordDetect String="max" attribute="Keyword" weakDeliminator="-"/>
+        <WordDetect String="min" attribute="Keyword" weakDeliminator="-"/>
+        <WordDetect String="graticule" attribute="Keyword" weakDeliminator="-"/>
+        <WordDetect String="ticks" attribute="Keyword" weakDeliminator="-"/>
+        <WordDetect String="showLegend" attribute="Keyword" weakDeliminator="-"/>
+        <WordDetect String="title" attribute="Keyword" weakDeliminator="-"
+                    context="Text_Simple!SpacesOrError"/>
+        <WordDetect String="circle" attribute="Keyword Parameter" weakDeliminator="-"/>
+        <WordDetect String="polygon" attribute="Keyword Parameter" weakDeliminator="-"/>
+        <StringDetect String="true" attribute="Keyword Parameter"/>
+        <StringDetect String="false" attribute="Keyword Parameter"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+
+        <Int attribute="Number"/>
+
+        <AnyChar String="-" attribute="Error"/>
+        <AnyChar String="&radar_id_ch;" attribute="Node" context="Radar_Node"/>
+      </context>
+
+      <context name="Radar_Node" attribute="Node" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <AnyChar String="&radar_id_ch;"/>
+      </context>
+      <context name="Radar_Prop" attribute="Property" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <AnyChar String="&radar_id_ch;"/>
+      </context>
+
+      <context name="Radar_Values" attribute="Normal" fallthroughContext="#pop">
+        <Int attribute="Number"/>
+        <StringDetect String="," attribute="List Separator"/>
+        <DetectSpaces attribute="Normal"/>
+        <StringDetect String="." attribute="Number"/>
+        <StringDetect String=":" attribute="Property Separator"/>
+        <StringDetect String="}" attribute="Curly Bracket Block Delimiter"
+                      context="#pop" endRegion="block"/>
+        <IncludeRules context="Find_Any_Comment"/>
+
+        <WordDetect String="axis" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="curve" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="max" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="min" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="graticule" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="ticks" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="showLegend" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="title" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="circle" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="polygon" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="accTitle" attribute="Error" weakDeliminator="-"/>
+        <WordDetect String="accDescr" attribute="Error" weakDeliminator="-"/>
+        <StringDetect String="true" attribute="Error"/>
+        <StringDetect String="false" attribute="Error"/>
+
+        <AnyChar String="-" attribute="Error"/>
+        <AnyChar String="&radar_id_ch;" attribute="Property" context="Radar_Prop"/>
+      </context>
+
+      <!--
+      @} Radar Diagram
+      -->
+
+
+      <!--
+      @{ Treemap Diagram
+      -->
+
+      <context name="Treemap" attribute="Error">
+        <DetectSpaces attribute="Normal"/>
+        <Int attribute="Number"/>
+        <IncludeRules context="Find_Quote_Simple"/>
+        <StringDetect String="." attribute="Number"/>
+        <StringDetect String=":::" attribute="Class Name Delimiter"
+                      context="Treemap_ClassName"/>
+        <StringDetect String=":" attribute="Node Separator"/>
+
+        <WordDetect String="classDef" attribute="Keyword" context="Flowchart_KwClassDef"/>
+
+        <IncludeRules context="Find_Accessibility"/>
+      </context>
+
+      <context name="Treemap_ClassName" attribute="Error" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectIdentifier attribute="Class Name" context="#pop"/>
+      </context>
+
+      <!--
+      @} Treemap Diagram
+      -->
+
+
+      <!-- @{ Md -->
+      <!-- **xy**   __xy__   \*   \=   $$sin f$$   &lt;   #lt;
+           ~~  ~~   ~~  ~~   ~~   ~    ~~     ~~   ~~~~   ~~~~ -->
+      <context name="Find_Md_Syms_ThenPop" attribute="Normal" lineEndContext="#pop">
+        <AnyChar String="*_" attribute="Special Text Char" context="#pop!Md_bi"/>
+        <StringDetect String="\" attribute="Special Text Char" context="Md_Escape"/>
+        <StringDetect String="$$" attribute="Math Delimiter" context="#pop"/>
+        <IncludeRules context="Find_Entities_ThenPop"/>
+      </context>
+      <!-- \*
+            ~ -->
+      <context name="Md_Escape" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <AnyChar String="*_\" context="#pop#pop"/>
+      </context>
+
+      <!-- *xy* / _xy_ / \* / $$sin f$$ / &lt;
+           ~  ~   ~  ~   ~    ~~     ~~   ~~~~ -->
+      <context name="Find_MdText_Syms_ThenPop" attribute="Normal" lineEndContext="#pop">
+        <AnyChar String="*_" attribute="Special Text Char" context="#pop!Md_bi"/>
+        <StringDetect String="\" attribute="Special Text Char" context="MdText_Escape"/>
+        <StringDetect String="$$" attribute="Math Delimiter" context="#pop"/>
+        <IncludeRules context="Find_Entities_ThenPop"/>
+      </context>
+      <!-- \*
+            ~ -->
+      <context name="MdText_Escape" attribute="Normal" lineEndContext="#pop#pop"
+               fallthroughContext="#pop#pop">
+        <AnyChar String="*_\" attribute="Text" context="#pop#pop"/>
+      </context>
+
+      <!-- *xy* / _xy_
+           ~  ~   ~  ~ -->
+      <context name="Md_bi" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar String="*_" attribute="Special Text Char"/>
+      </context>
+      <!-- @} Md -->
+
+
+      <!-- @{ kw (\s | \n) bla bla
+                 ~~~~~~~~~
+      context="BlaBla!SpacesOrNewLine"
+      -->
+      <context name="SpacesOrNewLine" attribute="Normal"
+               lineEndContext="SpacesOrNewLine_NewLine">
+        <DetectSpaces attribute="Normal" context="#pop"/>
+      </context>
+      <context name="SpacesOrNewLine_NewLine" attribute="Normal"
+               fallthroughContext="#pop#pop"
+               lineEmptyContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal" context="#pop#pop"/>
+      </context>
+      <!-- @} kw (\s | \n) bla bla -->
+
+
+      <!-- @{ kw \s bla bla
+                 ~~
+      -->
+      <context name="SpacesOrError" attribute="Normal" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal" context="#pop"/>
+        <IncludeRules context="CharErrorAndPop"/>
+      </context>
+      <!--
+      @} kw \s bla bla
+      -->
+
+
+      <!-- @{ spaces -->
+      <context name="Spaces" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal" context="#pop"/>
+      </context>
+
+      <context name="LineErrorExceptSpaces" attribute="Error" lineEndContext="#pop">
+        <DetectSpaces attribute="Normal"/>
+      </context>
+
+      <context name="SpacesAsError" attribute="Normal" lineEndContext="#pop"
+               fallthroughContext="#pop">
+        <DetectSpaces attribute="Error" context="#pop"/>
+      </context>
+      <!-- @} spaces -->
+
+
+      <!-- @{ entities -->
+      <!-- #lt; -->
+      <context name="Find_Entity" attribute="Normal">
+        <RegExpr String="(&mmd_ent;)+" attribute="Entity"/>
+      </context>
+
+      <!-- #lt; / &lt; -->
+      <context name="Find_Entities" attribute="Normal">
+        <RegExpr String="(&html_ent;|&mmd_ent;)+" attribute="Entity"/>
+      </context>
+      <context name="Find_Entities_ThenPop" attribute="Normal">
+        <RegExpr String="(&html_ent;|&mmd_ent;)+" attribute="Entity" context="#pop"/>
+      </context>
+      <!-- @} entities -->
+
+
+      <!-- @{ <br> <br/> -->
+      <context name="Find_HTML_br" attribute="Normal">
+        <RegExpr String="&lt;br\s*/?>" attribute="HTML Tag"/>
+      </context>
+
+      <context name="Find_HTML_simple_br" attribute="Normal">
+        <StringDetect String="&lt;br>" attribute="HTML Tag"/>
+      </context>
+      <!-- @} <br> <br/> -->
+
+
+      <!--
+      @{ "..." / '...'
+      -->
+      <context name="Find_DQuote_NoSpecial" attribute="Normal">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_NoSpecial"/>
+      </context>
+      <context name="DQuote_NoSpecial" attribute="Quoted Text">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+      </context>
+
+      <context name="Find_SQuote_NoSpecial" attribute="Normal">
+        <StringDetect String="'" attribute="Quoted Text Delimiter" context="SQuote_NoSpecial"/>
+      </context>
+      <context name="SQuote_NoSpecial" attribute="Quoted Text">
+        <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop"/>
+      </context>
+
+      <!-- with mermaid entity (#lt;) and escape for \ -->
+      <context name="Find_Quote_Simple" attribute="Normal">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="DQuote_Simple"/>
+        <StringDetect String="'" attribute="Quoted Text Delimiter" context="SQuote_Simple"/>
+      </context>
+      <context name="DQuote_Simple" attribute="Quoted Text">
+        <StringDetect String='"' attribute="Quoted Text Delimiter" context="#pop"/>
+        <IncludeRules context="Quote_Simple_Common"/>
+      </context>
+      <context name="SQuote_Simple" attribute="Quoted Text">
+        <StringDetect String="'" attribute="Quoted Text Delimiter" context="#pop"/>
+        <IncludeRules context="Quote_Simple_Common"/>
+      </context>
+      <context name="Quote_Simple_Common" attribute="Quoted Text">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <Int/>
+        <IncludeRules context="Find_Comment"/>
+        <LineContinue char="\" attribute="Error" context="#pop"/>
+        <StringDetect String="\" attribute="Special Text Char" context="Quote_Simple_Espace"/>
+        <IncludeRules context="Find_Entity"/>
+      </context>
+      <context name="Quote_Simple_Espace" attribute="Quoted Text" fallthroughContext="#pop">
+        <AnyChar String="&quot;'\" attribute="Quoted Text" context="#pop"/>
+        <AnyChar String="0" attribute="Error" context="#pop"/>
+        <AnyChar String="btnvfr" attribute="Special Text Char" context="#pop"/>
+      </context>
+      <!--
+      @} "..." / '...'
+      -->
+
+
+      <!--
+      @{ text
+      -->
+      <context name="Text_NoSpecial" attribute="Text" lineEndContext="#pop">
+      </context>
+
+      <!-- with mermaid entity (#lt;) and bad html tag -->
+      <context name="Text_Simple" attribute="Text" lineEndContext="#pop">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <Int/>
+        <StringDetect String="&lt;" attribute="Special Text Char"/>
+        <IncludeRules context="Find_Entity"/>
+      </context>
+      <!--
+      @} text
+      -->
+
+
+      <!--
+      @{ Comment
+      -->
+      <context name="Find_Comment" attribute="Comment">
+        <!-- empty comment is not a comment: https://github.com/mermaid-js/mermaid/pull/7008
+        this error is ignored
+        -->
+        <StringDetect String="%%" attribute="Comment" context="Comment" firstNonSpace="1"/>
+        <!-- block comment: https://github.com/mermaid-js/mermaid/pull/7028 -->
+      </context>
+
+      <context name="Find_Comment_InText" attribute="Normal">
+        <DetectSpaces/>
+        <!-- https://github.com/mermaid-js/mermaid/issues/7011 -->
+        <IncludeRules context="Find_Comment"/>
+      </context>
+
+      <context name="Find_Any_Comment" attribute="Normal">
+        <StringDetect String="%%" attribute="Comment" context="Comment"/>
+      </context>
+
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <LineContinue attribute="Comment"/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="FakeComment" attribute="Comment" lineEndContext="#pop">
+      </context>
+      <!--
+      @} Comment
+      -->
+
+
+      <!--
+      @{ Error
+      -->
+      <context name="LineError" attribute="Error" lineEndContext="#pop">
+      </context>
+
+      <context name="CharErrorAndPop" attribute="Error" lineEndContext="#pop">
+        <RegExpr String="." attribute="Error" context="#pop"/>
+      </context>
+
+      <context name="CharErrorAndPop2" attribute="Error" lineEndContext="#pop">
+        <RegExpr String="." attribute="Error" context="#pop#pop"/>
+      </context>
+      <!--
+      @} Error
+      -->
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>
+      <itemData name="Shape" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/>
+      <itemData name="Keyword Parameter" defStyleNum="dsConstant" spellChecking="0"/>
+      <itemData name="Keyword Property Separator" defStyleNum="dsAttribute" spellChecking="0"/>
+      <itemData name="Node" defStyleNum="dsDataType"/>
+      <itemData name="Node Separator" defStyleNum="dsDataType" spellChecking="0" bold="1"/>
+      <itemData name="Symbol Separator" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="List Separator" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Text" defStyleNum="dsVerbatimString"/>
+      <itemData name="Text Separator" defStyleNum="dsNormal"/>
+      <itemData name="Quoted Text" defStyleNum="dsString"/>
+      <itemData name="Quoted Text Delimiter" defStyleNum="dsString" spellChecking="0"/>
+      <itemData name="Markdown Text" defStyleNum="dsString"/>
+      <itemData name="Markdown Text Delimiter" defStyleNum="dsString" spellChecking="0"/>
+      <itemData name="Special Text Char" defStyleNum="dsSpecialChar" spellChecking="0"/>
+      <itemData name="Math Delimiter" defStyleNum="dsImport" spellChecking="0"/>
+      <itemData name="HTML Tag" defStyleNum="dsSpecialChar" spellChecking="0"/>
+      <itemData name="HTML Attribute" defStyleNum="dsOthers" spellChecking="0"/>
+      <itemData name="Link" defStyleNum="dsPreprocessor" spellChecking="0"/>
+      <itemData name="Link Text" defStyleNum="dsVerbatimString"/>
+      <itemData name="Link Text Separator" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Link Text Delimiter" defStyleNum="dsVerbatimString" spellChecking="0" bold="1"/>
+      <itemData name="Union" defStyleNum="dsKeyword" spellChecking="0"/>
+      <itemData name="Entity" defStyleNum="dsDecVal" spellChecking="0"/>
+      <itemData name="Class Name" defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="Class Name Delimiter" defStyleNum="dsFunction" spellChecking="0" bold="1"/>
+      <itemData name="ID" defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="ID Separator" defStyleNum="dsFunction" spellChecking="0" bold="1"/>
+
+      <itemData name="Number" defStyleNum="dsDecVal" spellChecking="0"/>
+      <itemData name="Style Property" defStyleNum="dsAttribute" spellChecking="0"/>
+      <itemData name="Style Property Separator" defStyleNum="dsAttribute" spellChecking="0" bold="1"/>
+      <itemData name="Style Value" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Style Unit" defStyleNum="dsDataType" spellChecking="0"/>
+      <itemData name="Style Hexadeximal Color" defStyleNum="dsImport" spellChecking="0"/>
+
+      <itemData name="Curly Bracket Block Delimiter" defStyleNum="dsDataType" spellChecking="0" bold="1"/>
+      <itemData name="Property" defStyleNum="dsAttribute" spellChecking="0"/>
+      <itemData name="Property Separator" defStyleNum="dsAttribute" spellChecking="0" bold="1"/>
+      <itemData name="Property Number" defStyleNum="dsVerbatimString" spellChecking="0"/>
+      <itemData name="Property Boolean" defStyleNum="dsImport" spellChecking="0"/>
+
+      <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="0"/>
+      <itemData name="Annotation Delimiter" defStyleNum="dsAttribute" spellChecking="0" bold="1"/>
+      <!-- gantt, journey, timeline -->
+      <itemData name="Section Text" defStyleNum="dsDocumentation" spellChecking="0"/>
+      <!-- classDiagram -->
+      <itemData name="Generic Type Symbol" defStyleNum="dsFunction" spellChecking="0"/>
+      <!-- classDiagram, erDiagram -->
+      <itemData name="Member" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Member Type" defStyleNum="dsNormal" spellChecking="0"/>
+      <!-- stateDiagram -->
+      <itemData name="Concurrency" defStyleNum="dsFunction" spellChecking="0"/>
+      <!-- erDiagram -->
+      <itemData name="Cardinality Text" defStyleNum="dsPreprocessor" spellChecking="0"/>
+      <itemData name="Relationship Text" defStyleNum="dsPreprocessor" spellChecking="0" bold="1"/>
+      <!-- ZenUML -->
+      <itemData name="Diagram Comment" defStyleNum="dsDocumentation"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="%%" position="afterwhitespace"/>
+    </comments>
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/meson.xml b/xml/meson.xml
new file mode 100644
--- /dev/null
+++ b/xml/meson.xml
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="Meson" section="Other"
+	version="6" kateversion="5.0"
+	extensions="meson.build;meson.options;meson_options.txt"
+	mimetype="text/x-meson"
+	priority="5"
+	license="LGPL">
+
+	<highlighting>
+		<list name="flowControl">
+			<item>if</item>
+			<item>else</item>
+			<item>endif</item>
+			<item>foreach</item>
+			<item>endforeach</item>
+		</list>
+		<list name="builtinfuncs">
+			<item>add_global_arguments</item>
+			<item>add_global_link_arguments</item>
+			<item>add_languages</item>
+			<item>add_project_arguments</item>
+			<item>add_project_link_arguments</item>
+			<item>add_test_setup</item>
+			<item>alias_target</item>
+			<item>assert</item>
+			<item>benchmark</item>
+			<item>both_libraries</item>
+			<item>build_target</item>
+			<item>configuration_data</item>
+			<item>configure_file</item>
+			<item>custom_target</item>
+			<item>declare_dependency</item>
+			<item>dependency</item>
+			<item>disabler</item>
+			<item>environment</item>
+			<item>error</item>
+			<item>executable</item>
+			<item>files</item>
+			<item>find_library</item>
+			<item>find_program</item>
+			<item>generator</item>
+			<item>get_option</item>
+			<item>get_variable</item>
+			<item>import</item>
+			<item>include_directories</item>
+			<item>install_data</item>
+			<item>install_headers</item>
+			<item>install_man</item>
+			<item>install_subdir</item>
+			<item>is_disabler</item>
+			<item>is_variable</item>
+			<item>jar</item>
+			<item>join_paths</item>
+			<item>library</item>
+			<item>message</item>
+			<item>project</item>
+			<item>run_command</item>
+			<item>run_target</item>
+			<item>set_variable</item>
+			<item>shared_library</item>
+			<item>shared_module</item>
+			<item>static_library</item>
+			<item>subdir</item>
+			<item>subdir_done</item>
+			<item>subproject</item>
+			<item>test</item>
+			<item>vcs_tag</item>
+			<item>warning</item>
+		</list>
+		<list name="logicalOperations">
+			<item>and</item>
+			<item>or</item>
+			<item>not</item>
+		</list>
+		<list name="booleans">
+			<item>true</item>
+			<item>false</item>
+		</list>
+		<list name="mesonObjet">
+			<item>meson</item>
+		</list>
+		<list name="machineObjet">
+			<item>build_machine</item>
+			<item>host_machine</item>
+			<item>target_machine</item>
+		</list>
+		<list name="mesonMembers">
+			<item>add_dist_script</item>
+			<item>add_install_script</item>
+			<item>add_postconf_script</item>
+			<item>backend</item>
+			<item>build_root</item>
+			<item>source_root</item>
+			<item>current_build_dir</item>
+			<item>current_source_dir</item>
+			<item>get_cross_property</item>
+			<item>get_compiler</item>
+			<item>has_exe_wrapper</item>
+			<item>install_dependency_manifest</item>
+			<item>is_cross_build</item>
+			<item>is_subproject</item>
+			<item>is_unity</item>
+			<item>override_find_program</item>
+			<item>project_version</item>
+			<item>project_license</item>
+			<item>project_name</item>
+			<item>version</item>
+		</list>
+		<list name="machineMembers">
+			<item>cpu_family</item>
+			<item>cpu</item>
+			<item>system</item>
+			<item>endian</item>
+		</list>
+		<list name="builtinmembers">
+			<item>alignment</item>
+			<item>append</item>
+			<item>as_system</item>
+			<item>cmd_array</item>
+			<item>compiled</item>
+			<item>compiles</item>
+			<item>compute_int</item>
+			<item>contains</item>
+			<item>endswith</item>
+			<item>extract_all_objects</item>
+			<item>extract_objects</item>
+			<item>find_library</item>
+			<item>first_supported_argument</item>
+			<item>first_supported_link_argument</item>
+			<item>format</item>
+			<item>found</item>
+			<item>full_path</item>
+			<item>get_argument_syntax</item>
+			<item>get_configtool_variable</item>
+			<item>get_define</item>
+			<item>get_id</item>
+			<item>get</item>
+			<item>get_pkgconfig_variable</item>
+			<item>get_supported_arguments</item>
+			<item>get_supported_function_attributes</item>
+			<item>get_supported_link_arguments</item>
+			<item>get_unquoted</item>
+			<item>get_variable</item>
+			<item>gettext</item>
+			<item>has_argument</item>
+			<item>has_function_attribute</item>
+			<item>has_function</item>
+			<item>has_header_symbol</item>
+			<item>has</item>
+			<item>has_key</item>
+			<item>has_link_argument</item>
+			<item>has_member</item>
+			<item>has_members</item>
+			<item>has_multi_arguments</item>
+			<item>has_multi_link_arguments</item>
+			<item>has_type</item>
+			<item>include_type</item>
+			<item>is_even</item>
+			<item>is_odd</item>
+			<item>join</item>
+			<item>length</item>
+			<item>links</item>
+			<item>merge_from</item>
+			<item>name</item>
+			<item>partial_dependency</item>
+			<item>path</item>
+			<item>pkgconfig_gen</item>
+			<item>prepend</item>
+			<item>private_dir_include</item>
+			<item>process</item>
+			<item>returncode</item>
+			<item>run</item>
+			<item>set10</item>
+			<item>set</item>
+			<item>set_quoted</item>
+			<item>sizeof</item>
+			<item>split</item>
+			<item>startswith</item>
+			<item>stderr</item>
+			<item>stdout</item>
+			<item>strip</item>
+			<item>symbols_have_underscore_prefix</item>
+			<item>to_lower</item>
+			<item>to_string</item>
+			<item>to_upper</item>
+			<item>type_name</item>
+			<item>underscorify</item>
+			<item>version_compare</item>
+			<item>version</item>
+		</list>
+
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<keyword attribute="Flow Control Keyword" String="flowControl" context="#stay"/>
+				<keyword attribute="Operator" String="logicalOperations" context="#stay"/>
+				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
+				<keyword attribute="Boolean Values" String="booleans" context="#stay"/>
+				<keyword attribute="Builtin Objet" String="mesonObjet" context="mesonObjet"/>
+				<keyword attribute="Builtin Objet" String="machineObjet" context="machineObjet"/>
+				<Int attribute="Int" context="#stay"/>
+				<DetectChar attribute="Comment" char="#" context="comment"/>
+				<AnyChar attribute="Operator" String="+-*/=&lt;&gt;" context="#stay"/>
+				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
+				<IncludeRules context="StringVariants" />
+				<DetectChar attribute="Normal Text" char="." context="members"/>
+			</context>
+
+			<context name="mesonObjet" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+				<DetectChar attribute="Normal Text" char="." context="mesonMembers"/>
+			</context>
+
+			<context name="mesonMembers" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+				<keyword attribute="Builtin Function" String="mesonMembers" context="#pop#pop"/>
+			</context>
+
+			<context name="machineObjet" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+				<DetectChar attribute="Normal Text" char="." context="machineMembers"/>
+			</context>
+
+			<context name="machineMembers" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+				<keyword attribute="Builtin Function" String="machineMembers" context="#pop#pop"/>
+			</context>
+
+			<context name="members" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop#pop">
+				<keyword attribute="Builtin Member Function" String="builtinmembers" context="#pop"/>
+			</context>
+
+			<context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>
+				<IncludeRules context="Normal" />
+			</context>
+
+			<context name="comment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="##Comments" />
+			</context>
+
+			<!--strings-->
+			<context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces/>
+				<StringDetect attribute="String" String="'''" context="Triple A-string" beginRegion="Triple A-region"/>
+				<DetectChar attribute="String" char="'" context="Single A-string"/>
+			</context>
+			<context name="Single A-string" attribute="String" lineEndContext="#stay">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<DetectChar attribute="String" char="'" context="#pop"/>
+			</context>
+			<context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<HlCStringChar attribute="String Char" context="#stay"/>
+				<StringDetect attribute="String" String="'''" context="#pop" endRegion="Triple A-region"/>
+			</context>
+		</contexts>
+
+		<itemDatas>
+			<itemData name="Normal Text"          defStyleNum="dsNormal"   spellChecking="false"/>
+			<itemData name="Operator"             defStyleNum="dsNormal"   spellChecking="false" bold="1"/>
+			<itemData name="Int"                  defStyleNum="dsDecVal"   spellChecking="false"/>
+			<itemData name="Flow Control Keyword" defStyleNum="dsKeyword"  spellChecking="false"/>
+			<itemData name="Builtin Function"     defStyleNum="dsDataType" spellChecking="false"/>
+			<itemData name="Builtin Objet"        defStyleNum="dsDataType" spellChecking="false"/>
+			<itemData name="Builtin Member Function" defStyleNum="dsDataType" spellChecking="false"/>
+			<itemData name="Boolean Values"       defStyleNum="dsKeyword"  spellChecking="false"/>
+			<itemData name="String Char"          defStyleNum="dsChar"     spellChecking="false"/>
+			<itemData name="String"               defStyleNum="dsString"/>
+			<itemData name="Comment"              defStyleNum="dsComment"/>
+		</itemDatas>
+	</highlighting>
+
+	<general>
+		<comments>
+			<comment name="singleLine" start="#"/>
+		</comments>
+	</general>
+
+</language>
+<!-- kate: replace-tabs off; -->
diff --git a/xml/metafont.xml b/xml/metafont.xml
--- a/xml/metafont.xml
+++ b/xml/metafont.xml
@@ -5,10 +5,10 @@
 We have moved some keywords for consistency
 -->
 
-<!DOCTYPE language SYSTEM "language.dtd" [
+<!DOCTYPE language [
   <!ENTITY lengths "(bp|cc|cm|dd|in|mm|pc|pt)">
 ]>
-<language name="Metapost/Metafont" section="Markup" version="11" kateversion="5.0"
+<language name="Metapost/Metafont" section="Markup" version="12" kateversion="5.0"
 extensions="*.mp;*.mps;*.mpost;*.mf" mimetype="text/x-metapost" 
 author="Yedvilun (yedvilun@gmail.com)" license="LGPL">
   <highlighting>
@@ -691,7 +691,6 @@
       <item>pen_bot</item>
       <item>savepen</item>
 
-      <item>clearpen</item>
       <item>clear_pen_memory</item>
       <item>lft</item>
       <item>rt</item>
@@ -716,7 +715,6 @@
       <item>clearxy</item>
       <item>clearit</item>
       <item>clearpen</item>
-      <item>pickup</item>
       <item>shipit</item>
 
       <item>bye</item>
@@ -936,36 +934,36 @@
         <IncludeRules context="##Comments" />
         <DetectChar char="&#xd7;" attribute="Bullet" context="#stay"/>
       </context>
+    </contexts>
 
-</contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Keyword" defStyleNum="dsNormal" color="#800000" selColor="#60FFFF" bold="0" italic="0"/>
-      <itemData name="Keyword Mathmode" defStyleNum="dsNormal" color="#606000" selColor="#FFD0FF" bold="0" italic="0"/>
+      <itemData name="Keyword" defStyleNum="dsFunction"/>
+      <itemData name="Keyword Mathmode" defStyleNum="dsFunction" italic="1"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
 
       <itemData name="Error" defStyleNum="dsAlert"/>
-      <itemData name="Math" defStyleNum="dsNormal" color="#00A000" selColor="#FF40FF"  bold="0" italic="0"/>
+      <itemData name="Math" defStyleNum="dsSpecialString"/>
       <itemData name="TeX" defStyleNum="dsNormal"/>
       <itemData name="String" defStyleNum="dsString"/>
       <itemData name="Verbatim" defStyleNum="dsVerbatimString"/>
-      <itemData name="Macro"  defStyleNum="dsKeyword" color="#770000" selColor="#99FFFF" bold="0" italic="0"/>
+      <itemData name="Macro"  defStyleNum="dsKeyword"/>
       <itemData name="Operator" defStyleNum="dsOperator"/>
       <itemData name="Special" defStyleNum="dsKeyword" color="#008000" bold="0"/>
-      <itemData name="Conditional" defStyleNum="dsKeyword"/>
+      <itemData name="Conditional" defStyleNum="dsControlFlow"/>
 
-      <itemData name="Statement" defStyleNum="dsNormal" color="#0000FF" selColor="#FFFF00" bold="0" italic="0"/>
-      <itemData name="BoolExp" defStyleNum="dsKeyword" italic="1" bold="0" color="#AA00AA" selColor="#FFFF00"/>
-      <itemData name="NumExp" defStyleNum="dsFunction"/>
+      <itemData name="Statement" defStyleNum="dsAttribute"/>
+      <itemData name="BoolExp" defStyleNum="dsBuiltIn"/>
+      <itemData name="NumExp" defStyleNum="dsBuiltIn"/>
       <itemData name="Variable" defStyleNum="dsVariable"/>
-      <itemData name="Identifier" defStyleNum="dsKeyword"/>
+      <itemData name="Identifier" defStyleNum="dsRegionMarker"/>
       <itemData name="Type" defStyleNum="dsDataType"/>
       <itemData name="Decimal" defStyleNum="dsDecVal"/>
       <itemData name="Octal" defStyleNum="dsBaseN"/>
       <itemData name="Hex" defStyleNum="dsBaseN"/>
       <itemData name="Bullet" defStyleNum="dsExtension"/>
       <itemData name="Float" defStyleNum="dsFloat"/>
- </itemDatas>
+    </itemDatas>
   </highlighting>
 
   <general>
diff --git a/xml/mips.xml b/xml/mips.xml
--- a/xml/mips.xml
+++ b/xml/mips.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="MIPS Assembler" version="6" kateversion="5.0" section="Assembler" extensions="*.s;" mimetype="text/x-mips" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="-1">
   <highlighting>
     <list name="type">
@@ -117,10 +117,6 @@
       <item>rfe</item>
       <item>sb</item>
       <item>sh</item>
-      <item>sw</item>
-      <item>swcl</item>
-      <item>swl</item>
-      <item>swr</item>
       <item>sll</item>
       <item>sllv</item>
       <item>slt</item>
@@ -139,6 +135,7 @@
       <item>swc1</item>
       <item>swc2</item>
       <item>swc3</item>
+      <item>swcl</item>
       <item>swl</item>
       <item>swr</item>
       <item>syscall</item>
diff --git a/xml/modelines.xml b/xml/modelines.xml
--- a/xml/modelines.xml
+++ b/xml/modelines.xml
@@ -1,14 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-    <!ENTITY space " ">
-    <!ENTITY end "&#59;">
-]>
+<!DOCTYPE language>
 <!--
   Copyright (c) 2012-2014 by Alex Turbov (i.zaufi@gmail.com)
   -->
 <language name="Modelines"
-          version="6"
+          version="7"
           kateversion="5.0"
           section="Other"
           extensions=""
@@ -33,15 +29,15 @@
   <list name="Booleans">
     <item>auto-brackets</item>
     <!-- NOTE Deprecated -->
-<!--     <item>auto-insert-doxygen</item> -->
+    <!--<item>auto-insert-doxygen</item> -->
     <item>automatic-spell-checking</item>                 <!-- NOTE Since KDE 4.?? -->
     <item>backspace-indents</item>
-    <item>block-selection</item>
     <item>bookmark-sorting</item>
     <item>bom</item>
     <item>byte-order-marker</item>
     <item>byte-order-mark</item>
     <item>dynamic-word-wrap</item>
+    <item>enter-to-insert-completion</item>
     <item>folding-markers</item>
     <item>folding-preview</item>                          <!-- Since KTextEditor 5.24 -->
     <item>icon-border</item>
@@ -55,7 +51,8 @@
     <!-- <item>remove-trailing-space</item> -->
     <item>replace-tabs-save</item>
     <item>replace-tabs</item>
-    <item>replace-trailing-space-save</item>
+    <!-- NOTE Deprecated since KDE 4.10 -->
+    <!-- <item>replace-trailing-space-save</item> -->
     <item>smart-home</item>
     <item>scrollbar-minimap</item>                         <!-- Since KTextEditor 5.24 -->
     <item>scrollbar-preview</item>                         <!-- Since KTextEditor 5.24 -->
@@ -64,7 +61,6 @@
     <item>show-trailing-spaces</item>                     <!-- NOTE Since KDE 4.?? -->
     <item>tab-indents</item>
     <item>word-wrap</item>
-    <item>wrap-cursor</item>
   </list>
 
   <list name="True">
@@ -82,10 +78,10 @@
   <list name="Integrals">
     <item>auto-center-lines</item>
     <item>font-size</item>
-    <item>indent-mode</item>
     <item>indent-width</item>
     <item>tab-width</item>
-    <item>undo-steps</item>
+    <!-- NOTE Deprecated since KDE 4 -->
+    <!-- <item>undo-steps</item> -->
     <item>word-wrap-column</item>
   </list>
 
@@ -100,6 +96,7 @@
     <item>font</item>
     <item>hl</item>
     <item>icon-bar-color</item>
+    <item>indent-mode</item>
     <item>mode</item>                                     <!-- NOTE Since KDE 4.?? -->
     <item>scheme</item>
     <item>selection-color</item>
@@ -129,7 +126,6 @@
   <contexts>
     <context name="Normal" attribute="Comment" lineEndContext="#stay">
       <keyword String="ModelineStartKeyword" context="Modeline" attribute="Keyword" />
-      <RegExpr String="\bkate-(?:mimetype|wildcard)\(.*\):" context="Modeline" attribute="Keyword" />
     </context>
 
     <context name="Modeline" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
@@ -141,31 +137,28 @@
     </context>
 
     <context name="Booleans" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-      <DetectSpaces />
-      <keyword String="True" attribute="Option ON" context="#stay" />
-      <keyword String="False" attribute="Option OFF" context="#stay" />
-      <DetectChar char="&end;" context="#pop" attribute="Variable" />
+      <IncludeRules context="SpacesEnd"/>
+      <keyword String="True" attribute="Option ON" context="#pop!SpacesEnd" />
+      <keyword String="False" attribute="Option OFF" context="#pop!SpacesEnd" />
     </context>
 
     <context name="Integrals" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-      <DetectSpaces />
-      <Int attribute="Number" context="#stay" />
-      <DetectChar char="&end;" context="#pop" attribute="Variable" />
+      <IncludeRules context="SpacesEnd"/>
+      <Int attribute="Number" context="#pop!SpacesEnd" />
     </context>
 
     <context name="Strings" attribute="String" lineEndContext="#pop">
-      <DetectSpaces />
-      <RegExpr String="[^&end;&space;]" context="#stay" />
-      <DetectChar char="&end;" context="#pop" attribute="Variable" />
+      <IncludeRules context="SpacesEnd"/>
     </context>
 
     <context name="RemoveSpaces" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-      <DetectSpaces />
-      <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!RemoveSpacesEnd" />
-      <DetectChar char="&end;" context="#pop" attribute="Variable" />
+      <IncludeRules context="SpacesEnd"/>
+      <keyword String="RemoveSpacesOptions" attribute="Value" context="#pop!SpacesEnd" />
     </context>
-    <context name="RemoveSpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-      <DetectChar char="&end;" context="#pop" attribute="Variable" />
+
+    <context name="SpacesEnd" attribute="Comment" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <DetectSpaces/>
+      <DetectChar char=";" context="#pop" attribute="Variable" />
     </context>
 
   </contexts>
diff --git a/xml/modula-2.xml b/xml/modula-2.xml
--- a/xml/modula-2.xml
+++ b/xml/modula-2.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Modula-2" mimetype="text/x-modula2" version="8"
   kateversion="5.0" section="Sources" priority="5" extensions="*.mod;*.def"
   casesensitive="1"  author="B. Kowarsch (trijezdci@github)"  license="MIT">
diff --git a/xml/modula-3.xml b/xml/modula-3.xml
--- a/xml/modula-3.xml
+++ b/xml/modula-3.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- author ik Iztok Kobal (iztok.kobal@siol.net) -->
 <!-- followed CM3 documentation (http://www.elegosoft.com/cm3/doc/reference/index.html , chapter Syntax) -->
 <!-- 03.03.2005 ik mailed version 1.00 to Dominik Haumann <dhdev@gmx.de> of kate team -->
diff --git a/xml/monobasic.xml b/xml/monobasic.xml
--- a/xml/monobasic.xml
+++ b/xml/monobasic.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 
 <!--
     Mono Basic syntax
diff --git a/xml/mustache.xml b/xml/mustache.xml
--- a/xml/mustache.xml
+++ b/xml/mustache.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY name          "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY attributeName "(?:\s|^)[A-Za-z_:\*#\(\[][\)\]\w\.:_-]*">
@@ -43,7 +43,7 @@
      * v1 [2019-02-10]: Initial version
 -->
 
-<language name="Mustache/Handlebars (HTML)" version="8" kateversion="5.53"
+<language name="Mustache/Handlebars (HTML)" version="10" kateversion="5.79"
           section="Markup" priority="1" mimetype=""
           extensions="*.mustache;*.handlebars;*.hbs;*.ractive;*.hogan;*.hulk;*.html.mst;*.html.mu;*.html.rac"
           author="Nibaldo González (nibgonz@gmail.com), based on the HTML highlighter by Wilbert Berendsen (wilbert@kde.nl)"
@@ -54,8 +54,8 @@
 	<contexts>
 
 		<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="CSS" attribute="Element Tag" String="&lt;style\b" insensitive="true" beginRegion="style" />
-			<RegExpr context="JS" attribute="Element Tag" String="&lt;script\b" insensitive="true" beginRegion="script" />
+			<WordDetect context="CSS" attribute="Element Tag" String="&lt;style" insensitive="true" beginRegion="style" />
+			<WordDetect context="JS" attribute="Element Tag" String="&lt;script" insensitive="true" beginRegion="script" />
 			<IncludeRules context="Base" />
 		</context>
 
@@ -64,7 +64,7 @@
 			<IncludeRules context="MustacheVariables" />
 
 			<StringDetect context="CDATA" attribute="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-			<RegExpr context="Doctype" attribute="Doctype" String="&lt;!DOCTYPE\s+" insensitive="true" beginRegion="doctype"  />
+			<WordDetect context="Doctype" attribute="Doctype" String="&lt;!DOCTYPE" insensitive="true" beginRegion="doctype" />
 			<IncludeRules context="FindPI" />
 
 			<IncludeRules context="FindTags" />
@@ -153,11 +153,11 @@
 			<LineContinue context="#stay" attribute="Escape" />
 			<HlCStringChar context="#stay" attribute="Escape" />
 		</context>
-		<context name="MustacheSymbolValue" attribute="Mustache Inside" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+		<context name="MustacheSymbolValue" attribute="Mustache Inside" lineEndContext="#pop" fallthroughContext="#pop">
 			<DetectChar context="#pop!MustacheValue" attribute="Symbol" char="=" />
 			<DetectSpaces />
 		</context>
-		<context name="MustacheValue" attribute="Mustache Inside" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+		<context name="MustacheValue" attribute="Mustache Inside" lineEndContext="#pop" fallthroughContext="#pop">
 			<DetectSpaces />
 			<RegExpr context="#pop" attribute="Number" String="\d+(?=[\s\}\)\]]|$)" />
 		</context>
@@ -223,19 +223,19 @@
 			<RegExpr context="#stay" attribute="Element Tag" String="&lt;/\s*&gt;" />
 			<RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*&name;" />
 		</context>
-		<context name="ElementTagEnd" attribute="Normal Text" lineEndContext="#stay">
+		<context name="ElementTagEnd" attribute="Error" lineEndContext="#stay">
 			<DetectChar context="#pop" attribute="Element Tag" char="&gt;" />
+			<DetectSpaces attribute="Normal Text"/>
 			<IncludeRules context="MustacheVariables" />
-			<RegExpr context="#stay" attribute="Error" String="\S" />
 		</context>
 
 		<!-- Inside the tag -->
-		<context name="ElementTag" attribute="Normal Text" lineEndContext="#stay">
+		<context name="ElementTag" attribute="Error" lineEndContext="#stay">
 			<Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" />
 			<DetectChar context="#pop" attribute="Element Tag" char="&gt;" />
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindAttributes" />
-			<RegExpr context="#stay" attribute="Error" String="\S" />
+			<DetectSpaces attribute="Normal Text"/>
 		</context>
 		<context name="FindAttributes" attribute="Normal Text" lineEndContext="#stay">
 			<RegExpr context="#stay" attribute="Attribute" String="&attributeName;" />
@@ -243,7 +243,7 @@
 			<DetectChar context="Value" attribute="Symbol" char="=" />
 		</context>
 
-		<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!ValueNQ">
+		<context name="Value" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!ValueNQ">
 			<DetectChar context="#pop!ValueDQ" attribute="Value" char="&quot;" />
 			<DetectChar context="#pop!ValueSQ" attribute="Value" char="&apos;" />
 			<RegExpr context="#pop" attribute="Number" String="\d+(?=\s|/?&gt;|$)" />
@@ -259,7 +259,7 @@
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindEntityRefs" />
 		</context>
-		<context name="ValueNQ" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+		<context name="ValueNQ" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindEntityRefs" />
 			<RegExpr context="#stay" attribute="Value" String="/(?!&gt;)|[^/&gt;&lt;&quot;&apos;\s]" />
@@ -274,7 +274,6 @@
 		<context name="Comment" attribute="Comment" lineEndContext="#stay">
 			<DetectSpaces/>
 			<StringDetect context="#pop" attribute="Comment" String="--&gt;" endRegion="Comment" />
-			<RegExpr context="#stay" attribute="Error" String="-(?:-(?!-&gt;))+" />
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="##Comments" />
 		</context>
@@ -295,7 +294,6 @@
 		<context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
 			<IncludeRules context="MustacheVariables" />
 			<StringDetect context="#pop" attribute="CDATA" String="]]&gt;" endRegion="cdata" />
-			<StringDetect context="#stay" attribute="EntityRef" String="]]&amp;gt;" />
 		</context>
 
 		<context name="PI" attribute="Normal Text" lineEndContext="#stay">
@@ -335,15 +333,15 @@
 
 		<!-- CSS -->
 
-		<context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+		<context name="CSS" attribute="Error" lineEndContext="#stay">
 			<Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" endRegion="style" />
 			<DetectChar context="#pop!CSSContent" attribute="Element Tag" char="&gt;" />
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindAttributes" />
-			<RegExpr context="#stay" attribute="Error" String="\S" />
+			<DetectSpaces attribute="Normal Text"/>
 		</context>
 		<context name="CSSContent" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/style\b" insensitive="true" endRegion="style" />
+			<WordDetect context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/style" insensitive="true" endRegion="style" />
 			<IncludeRules context="MustacheVariables" />
 
 			<DetectChar context="CSS-RuleSet" attribute="Normal Text" char="{" beginRegion="ruleset" />
@@ -352,11 +350,23 @@
 		</context>
 
 		<!-- Overwrite some rules of 'css.xml' to add Mustache variables -->
-		<context name="CSS-RuleSet" attribute="Normal Text" lineEndContext="#stay">
+		<context name="CSS-RuleSet" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="CSS-Rule">
+			<IncludeRules context="MustacheVariables" />
+			<DetectChar context="CSS-RuleSet" attribute="Normal Text" char="{" beginRegion="ruleset" />
 			<DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="ruleset" />
+         <AnyChar context="CSS-Selector" String=".#:,[*>+~|&amp;" lookAhead="1" />
+		</context>
+		<context name="CSS-Selector" attribute="Normal Text" lineEndContext="#stay">
 			<IncludeRules context="MustacheVariables" />
-			<IncludeRules context="RuleSet##CSS" />
+			<DetectChar context="#pop!CSS-RuleSet" attribute="Normal Text" char="{" beginRegion="ruleset" />
+			<DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset"/>
+			<IncludeRules context="Selector##CSS" />
 		</context>
+		<context name="CSS-Rule" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="MustacheVariables" />
+			<AnyChar context="#pop!CSS-Selector" String=".#,[*>+~|&amp;@{}" lookAhead="1"/>
+			<IncludeRules context="Rule##CSS" />
+		</context>
 		<context name="CSS-SelectorAttr" attribute="CSS: Selector Attribute" lineEndContext="#stay">
 			<DetectChar context="#pop" attribute="CSS: Selector Attribute" char="]" />
 			<IncludeRules context="MustacheVariables" />
@@ -365,23 +375,23 @@
 
 		<!-- JavaScript -->
 
-		<context name="JS" attribute="Normal Text" lineEndContext="#stay">
+		<context name="JS" attribute="Error" lineEndContext="#stay">
 			<DetectChar context="#pop!JSContent" attribute="Element Tag" char="&gt;" />
 			<Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" endRegion="script" />
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="FindAttributes" />
-			<RegExpr attribute="Error" context="#stay" String="\S" />
+			<DetectSpaces attribute="Normal Text"/>
 		</context>
 
 		<context name="JSContent" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
+			<WordDetect context="#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script" insensitive="true" endRegion="script" />
 			<RegExpr context="JSCommentClose" attribute="Comment" String="//(?=.*&lt;/script\b)" insensitive="true" />
 			<IncludeRules context="MustacheVariables" />
 			<IncludeRules context="OverwriteJavaScript" />
 			<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
 		</context>
 		<context name="JSCommentClose" attribute="Comment" lineEndContext="#pop">
-			<RegExpr context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script\b" insensitive="true" endRegion="script" />
+			<WordDetect context="#pop#pop!ElementTagEnd" attribute="Element Tag" String="&lt;/script" insensitive="true" endRegion="script" />
 			<DetectSpaces />
 			<IncludeRules context="##Comments" />
 		</context>
diff --git a/xml/nasm.xml b/xml/nasm.xml
--- a/xml/nasm.xml
+++ b/xml/nasm.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY float1 "0x[0-9a-f_]*+(?:(?:\.[0-9a-f_]*+)?p[-+]?[0-9_]++|\.[0-9a-f_]*+)">
     <!ENTITY float2 "0++p([0-9][0-9_]*+)?">
@@ -2547,7 +2547,6 @@
       <item>__?SNaN?__</item>
       <item>__?FLOAT_DAZ?__</item>
       <item>__?FLOAT_ROUND?__</item>
-      <item>__?FLOAT?__</item>
       <item>__?FLOAT?__</item>
     </list>
 
diff --git a/xml/nginx.xml b/xml/nginx.xml
new file mode 100644
--- /dev/null
+++ b/xml/nginx.xml
@@ -0,0 +1,934 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language
+[
+  <!-- list of units taken from https://nginx.org/en/docs/syntax.html -->
+  <!ENTITY units "([dGghKkMmswy]|ms)">
+]
+>
+<language name="nginx Configuration" section="Configuration"
+          version="3" kateversion="5.79"
+          indenter="cstyle"
+          extensions="nginx.conf;*.nginx"
+          mimetype=""
+          author="Jyrki Gadinger (nilsding@nilsding.org)" license="MIT">
+  <highlighting>
+    <!-- see https://nginx.org/en/docs/dirindex.html for a full list of directives -->
+    <list name="directives">
+      <item>absolute_redirect</item>
+      <item>accept_mutex</item>
+      <item>accept_mutex_delay</item>
+      <item>access_log</item>
+      <item>add_after_body</item>
+      <item>add_before_body</item>
+      <item>add_header</item>
+      <item>add_trailer</item>
+      <item>addition_types</item>
+      <item>aio</item>
+      <item>aio_write</item>
+      <item>alias</item>
+      <item>allow</item>
+      <item>ancient_browser</item>
+      <item>ancient_browser_value</item>
+      <item>api</item>
+      <item>auth_basic</item>
+      <item>auth_basic_user_file</item>
+      <item>auth_delay</item>
+      <item>auth_http</item>
+      <item>auth_http_header</item>
+      <item>auth_http_pass_client_cert</item>
+      <item>auth_http_timeout</item>
+      <item>auth_jwt</item>
+      <item>auth_jwt_claim_set</item>
+      <item>auth_jwt_header_set</item>
+      <item>auth_jwt_key_cache</item>
+      <item>auth_jwt_key_file</item>
+      <item>auth_jwt_key_request</item>
+      <item>auth_jwt_leeway</item>
+      <item>auth_jwt_require</item>
+      <item>auth_jwt_type</item>
+      <item>auth_request</item>
+      <item>auth_request_set</item>
+      <item>autoindex</item>
+      <item>autoindex_exact_size</item>
+      <item>autoindex_format</item>
+      <item>autoindex_localtime</item>
+      <item>break</item>
+      <item>charset</item>
+      <item>charset_map</item>
+      <item>charset_types</item>
+      <item>chunked_transfer_encoding</item>
+      <item>client_body_buffer_size</item>
+      <item>client_body_in_file_only</item>
+      <item>client_body_in_single_buffer</item>
+      <item>client_body_temp_path</item>
+      <item>client_body_timeout</item>
+      <item>client_header_buffer_size</item>
+      <item>client_header_timeout</item>
+      <item>client_max_body_size</item>
+      <item>connect_timeout</item>
+      <item>connection_pool_size</item>
+      <item>create_full_put_path</item>
+      <item>daemon</item>
+      <item>dav_access</item>
+      <item>dav_methods</item>
+      <item>debug_connection</item>
+      <item>debug_points</item>
+      <item>default_type</item>
+      <item>deny</item>
+      <item>directio</item>
+      <item>directio_alignment</item>
+      <item>disable_symlinks</item>
+      <item>empty_gif</item>
+      <item>env</item>
+      <item>error_log</item>
+      <item>error_page</item>
+      <item>etag</item>
+      <item>events</item>
+      <item>expires</item>
+      <item>f4f</item>
+      <item>f4f_buffer_size</item>
+      <item>fastcgi_bind</item>
+      <item>fastcgi_buffer_size</item>
+      <item>fastcgi_buffering</item>
+      <item>fastcgi_buffers</item>
+      <item>fastcgi_busy_buffers_size</item>
+      <item>fastcgi_cache</item>
+      <item>fastcgi_cache_background_update</item>
+      <item>fastcgi_cache_bypass</item>
+      <item>fastcgi_cache_key</item>
+      <item>fastcgi_cache_lock</item>
+      <item>fastcgi_cache_lock_age</item>
+      <item>fastcgi_cache_lock_timeout</item>
+      <item>fastcgi_cache_max_range_offset</item>
+      <item>fastcgi_cache_methods</item>
+      <item>fastcgi_cache_min_uses</item>
+      <item>fastcgi_cache_path</item>
+      <item>fastcgi_cache_purge</item>
+      <item>fastcgi_cache_revalidate</item>
+      <item>fastcgi_cache_use_stale</item>
+      <item>fastcgi_cache_valid</item>
+      <item>fastcgi_catch_stderr</item>
+      <item>fastcgi_connect_timeout</item>
+      <item>fastcgi_force_ranges</item>
+      <item>fastcgi_hide_header</item>
+      <item>fastcgi_ignore_client_abort</item>
+      <item>fastcgi_ignore_headers</item>
+      <item>fastcgi_index</item>
+      <item>fastcgi_intercept_errors</item>
+      <item>fastcgi_keep_conn</item>
+      <item>fastcgi_limit_rate</item>
+      <item>fastcgi_max_temp_file_size</item>
+      <item>fastcgi_next_upstream</item>
+      <item>fastcgi_next_upstream_timeout</item>
+      <item>fastcgi_next_upstream_tries</item>
+      <item>fastcgi_no_cache</item>
+      <item>fastcgi_param</item>
+      <item>fastcgi_pass</item>
+      <item>fastcgi_pass_header</item>
+      <item>fastcgi_pass_request_body</item>
+      <item>fastcgi_pass_request_headers</item>
+      <item>fastcgi_read_timeout</item>
+      <item>fastcgi_request_buffering</item>
+      <item>fastcgi_send_lowat</item>
+      <item>fastcgi_send_timeout</item>
+      <item>fastcgi_socket_keepalive</item>
+      <item>fastcgi_split_path_info</item>
+      <item>fastcgi_store</item>
+      <item>fastcgi_store_access</item>
+      <item>fastcgi_temp_file_write_size</item>
+      <item>fastcgi_temp_path</item>
+      <item>flv</item>
+      <item>geo</item>
+      <item>geoip_city</item>
+      <item>geoip_country</item>
+      <item>geoip_org</item>
+      <item>geoip_proxy</item>
+      <item>geoip_proxy_recursive</item>
+      <item>google_perftools_profiles</item>
+      <item>grpc_bind</item>
+      <item>grpc_buffer_size</item>
+      <item>grpc_connect_timeout</item>
+      <item>grpc_hide_header</item>
+      <item>grpc_ignore_headers</item>
+      <item>grpc_intercept_errors</item>
+      <item>grpc_next_upstream</item>
+      <item>grpc_next_upstream_timeout</item>
+      <item>grpc_next_upstream_tries</item>
+      <item>grpc_pass</item>
+      <item>grpc_pass_header</item>
+      <item>grpc_read_timeout</item>
+      <item>grpc_send_timeout</item>
+      <item>grpc_set_header</item>
+      <item>grpc_socket_keepalive</item>
+      <item>grpc_ssl_certificate</item>
+      <item>grpc_ssl_certificate_key</item>
+      <item>grpc_ssl_ciphers</item>
+      <item>grpc_ssl_conf_command</item>
+      <item>grpc_ssl_crl</item>
+      <item>grpc_ssl_name</item>
+      <item>grpc_ssl_password_file</item>
+      <item>grpc_ssl_protocols</item>
+      <item>grpc_ssl_server_name</item>
+      <item>grpc_ssl_session_reuse</item>
+      <item>grpc_ssl_trusted_certificate</item>
+      <item>grpc_ssl_verify</item>
+      <item>grpc_ssl_verify_depth</item>
+      <item>gunzip</item>
+      <item>gunzip_buffers</item>
+      <item>gzip</item>
+      <item>gzip_buffers</item>
+      <item>gzip_comp_level</item>
+      <item>gzip_disable</item>
+      <item>gzip_http_version</item>
+      <item>gzip_min_length</item>
+      <item>gzip_proxied</item>
+      <item>gzip_static</item>
+      <item>gzip_types</item>
+      <item>gzip_vary</item>
+      <item>hash</item>
+      <item>health_check</item>
+      <item>health_check_timeout</item>
+      <item>hls</item>
+      <item>hls_buffers</item>
+      <item>hls_forward_args</item>
+      <item>hls_fragment</item>
+      <item>hls_mp4_buffer_size</item>
+      <item>hls_mp4_max_buffer_size</item>
+      <item>http</item>
+      <item>http2</item>
+      <item>http2_body_preread_size</item>
+      <item>http2_chunk_size</item>
+      <item>http2_idle_timeout</item>
+      <item>http2_max_concurrent_pushes</item>
+      <item>http2_max_concurrent_streams</item>
+      <item>http2_max_field_size</item>
+      <item>http2_max_header_size</item>
+      <item>http2_max_requests</item>
+      <item>http2_push</item>
+      <item>http2_push_preload</item>
+      <item>http2_recv_buffer_size</item>
+      <item>http2_recv_timeout</item>
+      <item>http3</item>
+      <item>http3_hq</item>
+      <item>http3_max_concurrent_streams</item>
+      <item>http3_stream_buffer_size</item>
+      <item>if</item>
+      <item>if_modified_since</item>
+      <item>ignore_invalid_headers</item>
+      <item>image_filter</item>
+      <item>image_filter_buffer</item>
+      <item>image_filter_interlace</item>
+      <item>image_filter_jpeg_quality</item>
+      <item>image_filter_sharpen</item>
+      <item>image_filter_transparency</item>
+      <item>image_filter_webp_quality</item>
+      <item>imap_auth</item>
+      <item>imap_capabilities</item>
+      <item>imap_client_buffer</item>
+      <item>include</item>
+      <item>index</item>
+      <item>internal</item>
+      <item>internal_redirect</item>
+      <item>ip_hash</item>
+      <item>js_access</item>
+      <item>js_body_filter</item>
+      <item>js_content</item>
+      <item>js_fetch_buffer_size</item>
+      <item>js_fetch_ciphers</item>
+      <item>js_fetch_max_response_buffer_size</item>
+      <item>js_fetch_protocols</item>
+      <item>js_fetch_timeout</item>
+      <item>js_fetch_trusted_certificate</item>
+      <item>js_fetch_verify</item>
+      <item>js_fetch_verify_depth</item>
+      <item>js_filter</item>
+      <item>js_header_filter</item>
+      <item>js_import</item>
+      <item>js_include</item>
+      <item>js_path</item>
+      <item>js_periodic</item>
+      <item>js_preload_object</item>
+      <item>js_preread</item>
+      <item>js_set</item>
+      <item>js_shared_dict_zone</item>
+      <item>js_var</item>
+      <item>keepalive</item>
+      <item>keepalive_disable</item>
+      <item>keepalive_requests</item>
+      <item>keepalive_time</item>
+      <item>keepalive_timeout</item>
+      <item>keyval</item>
+      <item>keyval_zone</item>
+      <item>large_client_header_buffers</item>
+      <item>least_conn</item>
+      <item>least_time</item>
+      <item>limit_conn</item>
+      <item>limit_conn_dry_run</item>
+      <item>limit_conn_log_level</item>
+      <item>limit_conn_status</item>
+      <item>limit_conn_zone</item>
+      <item>limit_except</item>
+      <item>limit_rate</item>
+      <item>limit_rate_after</item>
+      <item>limit_req</item>
+      <item>limit_req_dry_run</item>
+      <item>limit_req_log_level</item>
+      <item>limit_req_status</item>
+      <item>limit_req_zone</item>
+      <item>limit_zone</item>
+      <item>lingering_close</item>
+      <item>lingering_time</item>
+      <item>lingering_timeout</item>
+      <item>listen</item>
+      <item>load_module</item>
+      <item>location</item>
+      <item>lock_file</item>
+      <item>log_format</item>
+      <item>log_not_found</item>
+      <item>log_subrequest</item>
+      <item>mail</item>
+      <item>map</item>
+      <item>map_hash_bucket_size</item>
+      <item>map_hash_max_size</item>
+      <item>master_process</item>
+      <item>match</item>
+      <item>max_errors</item>
+      <item>max_ranges</item>
+      <item>memcached_bind</item>
+      <item>memcached_buffer_size</item>
+      <item>memcached_connect_timeout</item>
+      <item>memcached_gzip_flag</item>
+      <item>memcached_next_upstream</item>
+      <item>memcached_next_upstream_timeout</item>
+      <item>memcached_next_upstream_tries</item>
+      <item>memcached_pass</item>
+      <item>memcached_read_timeout</item>
+      <item>memcached_send_timeout</item>
+      <item>memcached_socket_keepalive</item>
+      <item>merge_slashes</item>
+      <item>mgmt</item>
+      <item>min_delete_depth</item>
+      <item>mirror</item>
+      <item>mirror_request_body</item>
+      <item>modern_browser</item>
+      <item>modern_browser_value</item>
+      <item>mp4</item>
+      <item>mp4_buffer_size</item>
+      <item>mp4_limit_rate</item>
+      <item>mp4_limit_rate_after</item>
+      <item>mp4_max_buffer_size</item>
+      <item>mp4_start_key_frame</item>
+      <item>mqtt</item>
+      <item>mqtt_buffers</item>
+      <item>mqtt_preread</item>
+      <item>mqtt_rewrite_buffer_size</item>
+      <item>mqtt_set_connect</item>
+      <item>msie_padding</item>
+      <item>msie_refresh</item>
+      <item>multi_accept</item>
+      <item>ntlm</item>
+      <item>open_file_cache</item>
+      <item>open_file_cache_errors</item>
+      <item>open_file_cache_min_uses</item>
+      <item>open_file_cache_valid</item>
+      <item>open_log_file_cache</item>
+      <item>otel_exporter</item>
+      <item>otel_service_name</item>
+      <item>otel_span_attr</item>
+      <item>otel_span_name</item>
+      <item>otel_trace</item>
+      <item>otel_trace_context</item>
+      <item>output_buffers</item>
+      <item>override_charset</item>
+      <item>pass</item>
+      <item>pcre_jit</item>
+      <item>perl</item>
+      <item>perl_modules</item>
+      <item>perl_require</item>
+      <item>perl_set</item>
+      <item>pid</item>
+      <item>pop3_auth</item>
+      <item>pop3_capabilities</item>
+      <item>port_in_redirect</item>
+      <item>postpone_output</item>
+      <item>preread_buffer_size</item>
+      <item>preread_timeout</item>
+      <item>protocol</item>
+      <item>proxy_bind</item>
+      <item>proxy_buffer</item>
+      <item>proxy_buffer_size</item>
+      <item>proxy_buffering</item>
+      <item>proxy_buffers</item>
+      <item>proxy_busy_buffers_size</item>
+      <item>proxy_cache</item>
+      <item>proxy_cache_background_update</item>
+      <item>proxy_cache_bypass</item>
+      <item>proxy_cache_convert_head</item>
+      <item>proxy_cache_key</item>
+      <item>proxy_cache_lock</item>
+      <item>proxy_cache_lock_age</item>
+      <item>proxy_cache_lock_timeout</item>
+      <item>proxy_cache_max_range_offset</item>
+      <item>proxy_cache_methods</item>
+      <item>proxy_cache_min_uses</item>
+      <item>proxy_cache_path</item>
+      <item>proxy_cache_purge</item>
+      <item>proxy_cache_revalidate</item>
+      <item>proxy_cache_use_stale</item>
+      <item>proxy_cache_valid</item>
+      <item>proxy_connect_timeout</item>
+      <item>proxy_cookie_domain</item>
+      <item>proxy_cookie_flags</item>
+      <item>proxy_cookie_path</item>
+      <item>proxy_download_rate</item>
+      <item>proxy_force_ranges</item>
+      <item>proxy_half_close</item>
+      <item>proxy_headers_hash_bucket_size</item>
+      <item>proxy_headers_hash_max_size</item>
+      <item>proxy_hide_header</item>
+      <item>proxy_http_version</item>
+      <item>proxy_ignore_client_abort</item>
+      <item>proxy_ignore_headers</item>
+      <item>proxy_intercept_errors</item>
+      <item>proxy_limit_rate</item>
+      <item>proxy_max_temp_file_size</item>
+      <item>proxy_method</item>
+      <item>proxy_next_upstream</item>
+      <item>proxy_next_upstream_timeout</item>
+      <item>proxy_next_upstream_tries</item>
+      <item>proxy_no_cache</item>
+      <item>proxy_pass</item>
+      <item>proxy_pass_error_message</item>
+      <item>proxy_pass_header</item>
+      <item>proxy_pass_request_body</item>
+      <item>proxy_pass_request_headers</item>
+      <item>proxy_protocol</item>
+      <item>proxy_protocol_timeout</item>
+      <item>proxy_read_timeout</item>
+      <item>proxy_redirect</item>
+      <item>proxy_request_buffering</item>
+      <item>proxy_requests</item>
+      <item>proxy_responses</item>
+      <item>proxy_send_lowat</item>
+      <item>proxy_send_timeout</item>
+      <item>proxy_session_drop</item>
+      <item>proxy_set_body</item>
+      <item>proxy_set_header</item>
+      <item>proxy_smtp_auth</item>
+      <item>proxy_socket_keepalive</item>
+      <item>proxy_ssl</item>
+      <item>proxy_ssl_certificate</item>
+      <item>proxy_ssl_certificate_key</item>
+      <item>proxy_ssl_ciphers</item>
+      <item>proxy_ssl_conf_command</item>
+      <item>proxy_ssl_crl</item>
+      <item>proxy_ssl_name</item>
+      <item>proxy_ssl_password_file</item>
+      <item>proxy_ssl_protocols</item>
+      <item>proxy_ssl_server_name</item>
+      <item>proxy_ssl_session_reuse</item>
+      <item>proxy_ssl_trusted_certificate</item>
+      <item>proxy_ssl_verify</item>
+      <item>proxy_ssl_verify_depth</item>
+      <item>proxy_store</item>
+      <item>proxy_store_access</item>
+      <item>proxy_temp_file_write_size</item>
+      <item>proxy_temp_path</item>
+      <item>proxy_timeout</item>
+      <item>proxy_upload_rate</item>
+      <item>queue</item>
+      <item>quic_active_connection_id_limit</item>
+      <item>quic_bpf</item>
+      <item>quic_gso</item>
+      <item>quic_host_key</item>
+      <item>quic_retry</item>
+      <item>random</item>
+      <item>random_index</item>
+      <item>read_ahead</item>
+      <item>read_timeout</item>
+      <item>real_ip_header</item>
+      <item>real_ip_recursive</item>
+      <item>recursive_error_pages</item>
+      <item>referer_hash_bucket_size</item>
+      <item>referer_hash_max_size</item>
+      <item>request_pool_size</item>
+      <item>reset_timedout_connection</item>
+      <item>resolver</item>
+      <item>resolver_timeout</item>
+      <item>return</item>
+      <item>rewrite</item>
+      <item>rewrite_log</item>
+      <item>root</item>
+      <item>satisfy</item>
+      <item>scgi_bind</item>
+      <item>scgi_buffer_size</item>
+      <item>scgi_buffering</item>
+      <item>scgi_buffers</item>
+      <item>scgi_busy_buffers_size</item>
+      <item>scgi_cache</item>
+      <item>scgi_cache_background_update</item>
+      <item>scgi_cache_bypass</item>
+      <item>scgi_cache_key</item>
+      <item>scgi_cache_lock</item>
+      <item>scgi_cache_lock_age</item>
+      <item>scgi_cache_lock_timeout</item>
+      <item>scgi_cache_max_range_offset</item>
+      <item>scgi_cache_methods</item>
+      <item>scgi_cache_min_uses</item>
+      <item>scgi_cache_path</item>
+      <item>scgi_cache_purge</item>
+      <item>scgi_cache_revalidate</item>
+      <item>scgi_cache_use_stale</item>
+      <item>scgi_cache_valid</item>
+      <item>scgi_connect_timeout</item>
+      <item>scgi_force_ranges</item>
+      <item>scgi_hide_header</item>
+      <item>scgi_ignore_client_abort</item>
+      <item>scgi_ignore_headers</item>
+      <item>scgi_intercept_errors</item>
+      <item>scgi_limit_rate</item>
+      <item>scgi_max_temp_file_size</item>
+      <item>scgi_next_upstream</item>
+      <item>scgi_next_upstream_timeout</item>
+      <item>scgi_next_upstream_tries</item>
+      <item>scgi_no_cache</item>
+      <item>scgi_param</item>
+      <item>scgi_pass</item>
+      <item>scgi_pass_header</item>
+      <item>scgi_pass_request_body</item>
+      <item>scgi_pass_request_headers</item>
+      <item>scgi_read_timeout</item>
+      <item>scgi_request_buffering</item>
+      <item>scgi_send_timeout</item>
+      <item>scgi_socket_keepalive</item>
+      <item>scgi_store</item>
+      <item>scgi_store_access</item>
+      <item>scgi_temp_file_write_size</item>
+      <item>scgi_temp_path</item>
+      <item>secure_link</item>
+      <item>secure_link_md5</item>
+      <item>secure_link_secret</item>
+      <item>send_lowat</item>
+      <item>send_timeout</item>
+      <item>sendfile</item>
+      <item>sendfile_max_chunk</item>
+      <item>server</item>
+      <item>server_name</item>
+      <item>server_name_in_redirect</item>
+      <item>server_names_hash_bucket_size</item>
+      <item>server_names_hash_max_size</item>
+      <item>server_tokens</item>
+      <item>session_log</item>
+      <item>session_log_format</item>
+      <item>session_log_zone</item>
+      <item>set</item>
+      <item>set_real_ip_from</item>
+      <item>slice</item>
+      <item>smtp_auth</item>
+      <item>smtp_capabilities</item>
+      <item>smtp_client_buffer</item>
+      <item>smtp_greeting_delay</item>
+      <item>source_charset</item>
+      <item>split_clients</item>
+      <item>ssi</item>
+      <item>ssi_last_modified</item>
+      <item>ssi_min_file_chunk</item>
+      <item>ssi_silent_errors</item>
+      <item>ssi_types</item>
+      <item>ssi_value_length</item>
+      <item>ssl</item>
+      <item>ssl_alpn</item>
+      <item>ssl_buffer_size</item>
+      <item>ssl_certificate</item>
+      <item>ssl_certificate_key</item>
+      <item>ssl_ciphers</item>
+      <item>ssl_client_certificate</item>
+      <item>ssl_conf_command</item>
+      <item>ssl_crl</item>
+      <item>ssl_dhparam</item>
+      <item>ssl_early_data</item>
+      <item>ssl_ecdh_curve</item>
+      <item>ssl_engine</item>
+      <item>ssl_handshake_timeout</item>
+      <item>ssl_name</item>
+      <item>ssl_ocsp</item>
+      <item>ssl_ocsp_cache</item>
+      <item>ssl_ocsp_responder</item>
+      <item>ssl_password_file</item>
+      <item>ssl_prefer_server_ciphers</item>
+      <item>ssl_preread</item>
+      <item>ssl_protocols</item>
+      <item>ssl_reject_handshake</item>
+      <item>ssl_server_name</item>
+      <item>ssl_session_cache</item>
+      <item>ssl_session_ticket_key</item>
+      <item>ssl_session_tickets</item>
+      <item>ssl_session_timeout</item>
+      <item>ssl_stapling</item>
+      <item>ssl_stapling_file</item>
+      <item>ssl_stapling_responder</item>
+      <item>ssl_stapling_verify</item>
+      <item>ssl_trusted_certificate</item>
+      <item>ssl_verify</item>
+      <item>ssl_verify_client</item>
+      <item>ssl_verify_depth</item>
+      <item>starttls</item>
+      <item>state</item>
+      <item>status</item>
+      <item>status_format</item>
+      <item>status_zone</item>
+      <item>sticky</item>
+      <item>sticky_cookie_insert</item>
+      <item>stream</item>
+      <item>stub_status</item>
+      <item>sub_filter</item>
+      <item>sub_filter_last_modified</item>
+      <item>sub_filter_once</item>
+      <item>sub_filter_types</item>
+      <item>subrequest_output_buffer_size</item>
+      <item>tcp_nodelay</item>
+      <item>tcp_nopush</item>
+      <item>thread_pool</item>
+      <item>timeout</item>
+      <item>timer_resolution</item>
+      <item>try_files</item>
+      <item>types</item>
+      <item>types_hash_bucket_size</item>
+      <item>types_hash_max_size</item>
+      <item>underscores_in_headers</item>
+      <item>uninitialized_variable_warn</item>
+      <item>upstream</item>
+      <item>upstream_conf</item>
+      <item>usage_report</item>
+      <item>use</item>
+      <item>user</item>
+      <item>userid</item>
+      <item>userid_domain</item>
+      <item>userid_expires</item>
+      <item>userid_flags</item>
+      <item>userid_mark</item>
+      <item>userid_name</item>
+      <item>userid_p3p</item>
+      <item>userid_path</item>
+      <item>userid_service</item>
+      <item>uuid_file</item>
+      <item>uwsgi_bind</item>
+      <item>uwsgi_buffer_size</item>
+      <item>uwsgi_buffering</item>
+      <item>uwsgi_buffers</item>
+      <item>uwsgi_busy_buffers_size</item>
+      <item>uwsgi_cache</item>
+      <item>uwsgi_cache_background_update</item>
+      <item>uwsgi_cache_bypass</item>
+      <item>uwsgi_cache_key</item>
+      <item>uwsgi_cache_lock</item>
+      <item>uwsgi_cache_lock_age</item>
+      <item>uwsgi_cache_lock_timeout</item>
+      <item>uwsgi_cache_max_range_offset</item>
+      <item>uwsgi_cache_methods</item>
+      <item>uwsgi_cache_min_uses</item>
+      <item>uwsgi_cache_path</item>
+      <item>uwsgi_cache_purge</item>
+      <item>uwsgi_cache_revalidate</item>
+      <item>uwsgi_cache_use_stale</item>
+      <item>uwsgi_cache_valid</item>
+      <item>uwsgi_connect_timeout</item>
+      <item>uwsgi_force_ranges</item>
+      <item>uwsgi_hide_header</item>
+      <item>uwsgi_ignore_client_abort</item>
+      <item>uwsgi_ignore_headers</item>
+      <item>uwsgi_intercept_errors</item>
+      <item>uwsgi_limit_rate</item>
+      <item>uwsgi_max_temp_file_size</item>
+      <item>uwsgi_modifier1</item>
+      <item>uwsgi_modifier2</item>
+      <item>uwsgi_next_upstream</item>
+      <item>uwsgi_next_upstream_timeout</item>
+      <item>uwsgi_next_upstream_tries</item>
+      <item>uwsgi_no_cache</item>
+      <item>uwsgi_param</item>
+      <item>uwsgi_pass</item>
+      <item>uwsgi_pass_header</item>
+      <item>uwsgi_pass_request_body</item>
+      <item>uwsgi_pass_request_headers</item>
+      <item>uwsgi_read_timeout</item>
+      <item>uwsgi_request_buffering</item>
+      <item>uwsgi_send_timeout</item>
+      <item>uwsgi_socket_keepalive</item>
+      <item>uwsgi_ssl_certificate</item>
+      <item>uwsgi_ssl_certificate_key</item>
+      <item>uwsgi_ssl_ciphers</item>
+      <item>uwsgi_ssl_conf_command</item>
+      <item>uwsgi_ssl_crl</item>
+      <item>uwsgi_ssl_name</item>
+      <item>uwsgi_ssl_password_file</item>
+      <item>uwsgi_ssl_protocols</item>
+      <item>uwsgi_ssl_server_name</item>
+      <item>uwsgi_ssl_session_reuse</item>
+      <item>uwsgi_ssl_trusted_certificate</item>
+      <item>uwsgi_ssl_verify</item>
+      <item>uwsgi_ssl_verify_depth</item>
+      <item>uwsgi_store</item>
+      <item>uwsgi_store_access</item>
+      <item>uwsgi_temp_file_write_size</item>
+      <item>uwsgi_temp_path</item>
+      <item>valid_referers</item>
+      <item>variables_hash_bucket_size</item>
+      <item>variables_hash_max_size</item>
+      <item>worker_aio_requests</item>
+      <item>worker_connections</item>
+      <item>worker_cpu_affinity</item>
+      <item>worker_priority</item>
+      <item>worker_processes</item>
+      <item>worker_rlimit_core</item>
+      <item>worker_rlimit_nofile</item>
+      <item>worker_shutdown_timeout</item>
+      <item>working_directory</item>
+      <item>xclient</item>
+      <item>xml_entities</item>
+      <item>xslt_last_modified</item>
+      <item>xslt_param</item>
+      <item>xslt_string_param</item>
+      <item>xslt_stylesheet</item>
+      <item>xslt_types</item>
+      <item>zone</item>
+      <item>zone_sync</item>
+      <item>zone_sync_buffers</item>
+      <item>zone_sync_connect_retry_interval</item>
+      <item>zone_sync_connect_timeout</item>
+      <item>zone_sync_interval</item>
+      <item>zone_sync_recv_buffer_size</item>
+      <item>zone_sync_server</item>
+      <item>zone_sync_ssl</item>
+      <item>zone_sync_ssl_certificate</item>
+      <item>zone_sync_ssl_certificate_key</item>
+      <item>zone_sync_ssl_ciphers</item>
+      <item>zone_sync_ssl_conf_command</item>
+      <item>zone_sync_ssl_crl</item>
+      <item>zone_sync_ssl_name</item>
+      <item>zone_sync_ssl_password_file</item>
+      <item>zone_sync_ssl_protocols</item>
+      <item>zone_sync_ssl_server_name</item>
+      <item>zone_sync_ssl_trusted_certificate</item>
+      <item>zone_sync_ssl_verify</item>
+      <item>zone_sync_ssl_verify_depth</item>
+      <item>zone_sync_timeout</item>
+    </list>
+
+    <!-- see https://nginx.org/en/docs/varindex.html for a full list of variables -->
+    <list name="variables">
+      <item>$ancient_browser</item>
+      <item>$args</item>
+      <item>$binary_remote_addr</item>
+      <item>$body_bytes_sent</item>
+      <item>$bytes_received</item>
+      <item>$bytes_sent</item>
+      <item>$connection</item>
+      <item>$connection_requests</item>
+      <item>$connection_time</item>
+      <item>$connections_active</item>
+      <item>$connections_reading</item>
+      <item>$connections_waiting</item>
+      <item>$connections_writing</item>
+      <item>$content_length</item>
+      <item>$content_type</item>
+      <item>$date_gmt</item>
+      <item>$date_local</item>
+      <item>$document_root</item>
+      <item>$document_uri</item>
+      <item>$fastcgi_path_info</item>
+      <item>$fastcgi_script_name</item>
+      <item>$geoip_area_code</item>
+      <item>$geoip_city</item>
+      <item>$geoip_city_continent_code</item>
+      <item>$geoip_city_country_code</item>
+      <item>$geoip_city_country_code3</item>
+      <item>$geoip_city_country_name</item>
+      <item>$geoip_country_code</item>
+      <item>$geoip_country_code3</item>
+      <item>$geoip_country_name</item>
+      <item>$geoip_dma_code</item>
+      <item>$geoip_latitude</item>
+      <item>$geoip_longitude</item>
+      <item>$geoip_org</item>
+      <item>$geoip_postal_code</item>
+      <item>$geoip_region</item>
+      <item>$geoip_region_name</item>
+      <item>$gzip_ratio</item>
+      <item>$host</item>
+      <item>$hostname</item>
+      <item>$http2</item>
+      <item>$http3</item>
+      <item>$https</item>
+      <item>$invalid_referer</item>
+      <item>$is_args</item>
+      <item>$jwt_payload</item>
+      <item>$limit_conn_status</item>
+      <item>$limit_rate</item>
+      <item>$limit_req_status</item>
+      <item>$memcached_key</item>
+      <item>$modern_browser</item>
+      <item>$mqtt_preread_clientid</item>
+      <item>$mqtt_preread_username</item>
+      <item>$msec</item>
+      <item>$msie</item>
+      <item>$nginx_version</item>
+      <item>$otel_parent_id</item>
+      <item>$otel_parent_sampled</item>
+      <item>$otel_span_id</item>
+      <item>$otel_trace_id</item>
+      <item>$pid</item>
+      <item>$pipe</item>
+      <item>$protocol</item>
+      <item>$proxy_add_x_forwarded_for</item>
+      <item>$proxy_host</item>
+      <item>$proxy_port</item>
+      <item>$proxy_protocol_addr</item>
+      <item>$proxy_protocol_port</item>
+      <item>$proxy_protocol_server_addr</item>
+      <item>$proxy_protocol_server_port</item>
+      <item>$proxy_protocol_tlv_aws_vpce_id</item>
+      <item>$proxy_protocol_tlv_azure_pel_id</item>
+      <item>$proxy_protocol_tlv_gcp_conn_id</item>
+      <item>$query_string</item>
+      <item>$realip_remote_addr</item>
+      <item>$realip_remote_port</item>
+      <item>$realpath_root</item>
+      <item>$remote_addr</item>
+      <item>$remote_port</item>
+      <item>$remote_user</item>
+      <item>$request</item>
+      <item>$request_body</item>
+      <item>$request_body_file</item>
+      <item>$request_completion</item>
+      <item>$request_filename</item>
+      <item>$request_id</item>
+      <item>$request_length</item>
+      <item>$request_method</item>
+      <item>$request_time</item>
+      <item>$request_uri</item>
+      <item>$scheme</item>
+      <item>$secure_link</item>
+      <item>$secure_link_expires</item>
+      <item>$server_addr</item>
+      <item>$server_name</item>
+      <item>$server_port</item>
+      <item>$server_protocol</item>
+      <item>$session_log_binary_id</item>
+      <item>$session_log_id</item>
+      <item>$session_time</item>
+      <item>$slice_range</item>
+      <item>$ssl_alpn_protocol</item>
+      <item>$ssl_cipher</item>
+      <item>$ssl_ciphers</item>
+      <item>$ssl_client_cert</item>
+      <item>$ssl_client_escaped_cert</item>
+      <item>$ssl_client_fingerprint</item>
+      <item>$ssl_client_i_dn</item>
+      <item>$ssl_client_i_dn_legacy</item>
+      <item>$ssl_client_raw_cert</item>
+      <item>$ssl_client_s_dn</item>
+      <item>$ssl_client_s_dn_legacy</item>
+      <item>$ssl_client_serial</item>
+      <item>$ssl_client_v_end</item>
+      <item>$ssl_client_v_remain</item>
+      <item>$ssl_client_v_start</item>
+      <item>$ssl_client_verify</item>
+      <item>$ssl_curve</item>
+      <item>$ssl_curves</item>
+      <item>$ssl_early_data</item>
+      <item>$ssl_preread_alpn_protocols</item>
+      <item>$ssl_preread_protocol</item>
+      <item>$ssl_preread_server_name</item>
+      <item>$ssl_protocol</item>
+      <item>$ssl_server_name</item>
+      <item>$ssl_session_id</item>
+      <item>$ssl_session_reused</item>
+      <item>$status</item>
+      <item>$tcpinfo_rcv_space</item>
+      <item>$tcpinfo_rtt</item>
+      <item>$tcpinfo_rttvar</item>
+      <item>$tcpinfo_snd_cwnd</item>
+      <item>$time_iso8601</item>
+      <item>$time_local</item>
+      <item>$uid_got</item>
+      <item>$uid_reset</item>
+      <item>$uid_set</item>
+      <item>$upstream_addr</item>
+      <item>$upstream_bytes_received</item>
+      <item>$upstream_bytes_sent</item>
+      <item>$upstream_cache_status</item>
+      <item>$upstream_connect_time</item>
+      <item>$upstream_first_byte_time</item>
+      <item>$upstream_header_time</item>
+      <item>$upstream_last_server_name</item>
+      <item>$upstream_queue_time</item>
+      <item>$upstream_response_length</item>
+      <item>$upstream_response_time</item>
+      <item>$upstream_session_time</item>
+      <item>$upstream_status</item>
+      <item>$uri</item>
+    </list>
+
+    <list name="keywords">
+      <item>on</item>
+      <item>off</item>
+      <item>ssl</item> <!-- listen ... ssl -->
+      <item>all</item> <!-- deny all -->
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces/>
+        <keyword attribute="Directive" context="Params" String="directives"/>
+        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Block"/>
+        <IncludeRules context="Variables"/>
+        <DetectChar attribute="String" context="Strings" char="'" beginRegion="String"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="Params">
+        <DetectSpaces/>
+        <DetectChar attribute="Symbol" context="#pop" char=";"/>
+        <DetectChar attribute="Symbol" context="#pop" char="{" beginRegion="Block"/>
+        <IncludeRules context="Variables"/>
+        <DetectChar attribute="String" context="Strings" char="'" beginRegion="String"/>
+        <RegExpr attribute="Number" context="#stay" String="\b[0-9]+&units;?\b"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Variable" lineEndContext="#pop" name="Variables">
+        <keyword attribute="Variable" context="#stay" String="variables"/>
+        <RegExpr attribute="Variable" String="\$[a-zA-Z_0-9]+\b" context="#stay"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#stay" name="Strings">
+        <IncludeRules context="Variables"/>
+        <DetectChar attribute="String" context="#pop" char="'" endRegion="String"/>
+      </context>
+
+      <context name="Comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"   spellChecking="false"/>
+      <itemData name="Directive"   defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword"  spellChecking="false"/>
+      <itemData name="Comment"     defStyleNum="dsComment"/>
+      <itemData name="Variable"    defStyleNum="dsVariable"/>
+      <itemData name="Symbol"      defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="String"      defStyleNum="dsString"/>
+      <itemData name="Number"      defStyleNum="dsDecVal"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#" position="afterwhitespace" />
+    </comments>
+    <keywords casesensitive="1" />
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/nim.xml b/xml/nim.xml
--- a/xml/nim.xml
+++ b/xml/nim.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 
 <!--
 Improvements:
@@ -20,10 +20,10 @@
 
 <language
 	name="Nim"
-	version="3"
+	version="4"
 	kateversion="5.53"
 	section="Sources"
-	extensions="*.nim"
+	extensions="*.nim;*.nims;*.nimble"
 	mimetype="text/x-nim"
 	indenter="python"
 	author="github.com/juancarlospaco"
@@ -224,7 +224,7 @@
 			</context>
 
 			<context name="stringescape" attribute="String" lineEndContext="#stay">
-				<RegExpr attribute="String Char" String="\\[&quot;abfnrtv]" context="#stay"/>
+				<RegExpr attribute="String Char" String="\\[&quot;abfnrtv\\]" context="#stay"/>
 			</context>
 
 			<context name="string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
diff --git a/xml/ninja.xml b/xml/ninja.xml
new file mode 100644
--- /dev/null
+++ b/xml/ninja.xml
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language[
+  <!ENTITY ident "[-_a-zA-Z0-9]+">
+  <!ENTITY deplist "[^$|:]+">
+]>
+<language
+  name="Ninja" section="Other"
+  version="3" kateversion="5.0"
+  extensions="*.ninja"
+  author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT"
+>
+  <highlighting>
+    <list name="keywords">
+      <item>rule</item>
+      <item>build</item>
+      <item>pool</item>
+      <item>default</item>
+      <item>include</item>
+      <item>subninja</item>
+    </list>
+
+    <list name="other keywords">
+      <item>console</item>
+      <item>phony</item>
+      <item>depth</item>
+    </list>
+
+    <list name="topVariables">
+      <item>builddir</item>
+      <item>ninja_required_version</item>
+    </list>
+
+    <list name="ruleVariables">
+      <item>command</item>
+      <item>console</item>
+      <item>depfile</item>
+      <item>deps</item>
+      <item>msvc_deps_prefix</item>
+      <item>description</item>
+      <item>dyndep</item>
+      <item>generator</item>
+      <item>in</item>
+      <item>in_newline</item>
+      <item>out</item>
+      <item>pool</item>
+      <item>restat</item>
+      <item>rspfile</item>
+      <item>rspfile_content</item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal" name="Normal" lineEndContext="#stay" fallthrough="1" fallthroughContext="ErrorOrComment">
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <WordDetect attribute="Keyword" context="BuildStatement" String="build"/>
+        <WordDetect attribute="Keyword" context="RuleStatement" String="rule"/>
+        <WordDetect attribute="Keyword" context="PoolStatement" String="pool"/>
+        <keyword attribute="Keyword" context="SimpleStatement" String="keywords"/>
+        <keyword attribute="Special Key" context="VariableAssignment" String="topVariables"/>
+        <RegExpr attribute="Key" context="VariableAssignment" String="&ident;"/>
+      </context>
+
+      <context attribute="Normal" name="ErrorOrComment" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Error" name="Error" lineEndContext="#pop"/>
+
+      <!-- rule -->
+
+      <context attribute="Normal" name="RuleStatement" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <DetectSpaces/>
+        <RegExpr attribute="Normal" context="#pop!RuleKeys" String="&ident;"/>
+      </context>
+
+      <context attribute="Normal" name="RuleKeys" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+        <DetectSpaces context="RuleKey"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Normal" name="RuleKey" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
+        <WordDetect attribute="Special Key" context="#pop!PoolVariableAssignment" String="pool"/>
+        <keyword attribute="Special Key" context="#pop!RuleVariableAssignment" String="ruleVariables"/>
+      </context>
+
+      <context attribute="Normal" name="RuleVariableAssignment" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <DetectSpaces/>
+        <DetectChar attribute="Operator" context="#pop!RuleValue" char="="/>
+      </context>
+
+      <context attribute="Normal" name="RuleValue" lineEndContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal" context="RuleDollar" char="$" lookAhead="true"/>
+        <AnyChar attribute="Symbol" context="#stay" String="&lt;>&amp;|=(){}[]&quot;';!%?*"/>
+        <RegExpr attribute="Normal" context="#stay" String="[^&lt;>&amp;|=(){}[\]&quot;';!%?*$]"/>
+      </context>
+
+      <context attribute="Error" name="RuleDollar" lineEndContext="#pop">
+        <LineContinue attribute="Line Continuation" context="#pop!LineContinuation" char="$"/>
+        <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=" "/>
+        <Detect2Chars attribute="Special Char" context="#pop" char="$" char1="$"/>
+        <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=":"/>
+        <Detect2Chars attribute="Variable Delimiter" context="#pop!RuleOpenVariableName" char="$" char1="{"/>
+        <DetectChar attribute="Variable Delimiter" context="#pop!RuleVariableName" char="$"/>
+      </context>
+
+      <context attribute="Variable" name="RuleOpenVariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <DetectChar attribute="Variable Delimiter" context="#pop" char="}"/>
+        <keyword attribute="Special Variable" context="#stay" String="ruleVariables"/>
+        <RegExpr attribute="Variable" context="#stay" String="&ident;"/>
+      </context>
+
+      <context attribute="Variable" name="RuleVariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <keyword attribute="Special Variable" context="#pop" String="ruleVariables"/>
+        <RegExpr attribute="Variable" context="#pop" String="&ident;"/>
+      </context>
+
+      <!-- build -->
+
+      <context attribute="Normal" name="BuildStatement" lineEndContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>
+        <DetectChar attribute="Operator" context="#pop!BuildRuleName" char=":"/>
+        <DetectChar attribute="Operator" context="#pop!ImplicitOutput" char="|"/>
+        <RegExpr attribute="Normal" context="#stay" String="&deplist;"/>
+      </context>
+
+      <context attribute="Implicit Output" name="ImplicitOutput" lineEndContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>
+        <DetectChar attribute="Operator" context="#pop!BuildRuleName" char=":"/>
+        <RegExpr attribute="Implicit Output" context="#stay" String="&deplist;"/>
+      </context>
+
+      <context attribute="Normal" name="BuildRuleName" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">
+        <DetectSpaces/>
+        <WordDetect attribute="Special Rule Name" context="#pop!BuildDependancies" String="phony"/>
+        <RegExpr attribute="Rule Name" context="#pop!BuildDependancies" String="&ident;"/>
+      </context>
+
+      <context attribute="Dependancy" name="BuildDependancies" lineEndContext="#pop!BuildKeys">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>
+        <Detect2Chars attribute="Operator" context="#pop!ImplicitBuildDependancies" char="|" char1="@"/>
+        <DetectChar attribute="Operator" context="#pop!ImplicitBuildDependancies" char="|"/>
+        <DetectChar attribute="Error" context="#stay" char=":"/>
+        <RegExpr attribute="Dependancy" context="#stay" String="&deplist;"/>
+      </context>
+
+      <context attribute="Implicit Dependancy" name="ImplicitBuildDependancies" lineEndContext="#pop!BuildKeys">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>
+        <Detect2Chars attribute="Operator" context="#stay" char="|" char1="@"/>
+        <DetectChar attribute="Operator" context="#stay" char="|"/>
+        <DetectChar attribute="Error" context="#stay" char=":"/>
+        <RegExpr attribute="Implicit Dependancy" context="#stay" String="&deplist;"/>
+      </context>
+
+      <context attribute="Normal" name="BuildKeys" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+        <DetectSpaces context="BuildKey"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Normal" name="BuildKey" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
+        <WordDetect attribute="Special Key" context="#pop!PoolVariableAssignment" String="pool"/>
+        <keyword attribute="Special Key" context="#pop!VariableAssignment" String="ruleVariables"/>
+        <RegExpr attribute="Key" context="#pop!VariableAssignment" String="&ident;"/>
+      </context>
+
+      <!-- pool -->
+
+      <context attribute="Normal" name="PoolStatement" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">
+        <DetectSpaces/>
+        <RegExpr attribute="Normal" context="#pop!PoolKeys" String="&ident;"/>
+      </context>
+
+      <context attribute="Normal" name="PoolKeys" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+        <DetectSpaces context="PoolKey"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Normal" name="PoolKey" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">
+        <DetectChar attribute="Comment" context="#pop!Comment" char="#"/>
+        <WordDetect attribute="Special Key" context="#pop!PoolVariableAssignment" String="depth"/>
+      </context>
+
+      <context attribute="Normal" name="PoolVariableAssignment" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <DetectSpaces/>
+        <DetectChar attribute="Operator" context="#pop!PoolValue" char="="/>
+      </context>
+
+      <context attribute="Normal" name="PoolValue" lineEndContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>
+        <WordDetect attribute="Special Value" context="BuildStatement" String="console"/>
+        <RegExpr attribute="Normal" context="#stay" String="&ident;"/>
+      </context>
+
+      <!-- default, include, subninja -->
+
+      <context attribute="Normal" name="SimpleStatement" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!Error">
+        <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>
+        <RegExpr attribute="Normal" context="#stay" String="&deplist;"/>
+      </context>
+
+      <!-- Value -->
+
+      <context attribute="Normal" name="VariableAssignment" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <DetectSpaces/>
+        <DetectChar attribute="Operator" context="#pop!Value" char="="/>
+      </context>
+
+      <context attribute="Normal" name="Value" lineEndContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal" context="Dollar" char="$" lookAhead="true"/>
+        <AnyChar attribute="Symbol" context="#stay" String="&lt;>&amp;|=(){}[]&quot;';!%?*"/>
+        <RegExpr attribute="Normal" context="#stay" String="[^&lt;>&amp;|=(){}[\]&quot;';!%?*$]"/>
+      </context>
+
+      <!-- $ -->
+
+      <context attribute="Error" name="Dollar" lineEndContext="#pop">
+        <LineContinue attribute="Line Continuation" context="#pop!LineContinuation" char="$"/>
+        <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=" "/>
+        <Detect2Chars attribute="Special Char" context="#pop" char="$" char1="$"/>
+        <Detect2Chars attribute="Special Char" context="#pop" char="$" char1=":"/>
+        <Detect2Chars attribute="Variable Delimiter" context="#pop!OpenVariableName" char="$" char1="{"/>
+        <DetectChar attribute="Variable Delimiter" context="#pop!VariableName" char="$"/>
+      </context>
+
+      <context attribute="Variable" name="OpenVariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <DetectChar attribute="Variable Delimiter" context="#pop" char="}"/>
+        <RegExpr attribute="Variable" context="#stay" String="&ident;"/>
+      </context>
+
+      <context attribute="Variable" name="VariableName" lineEndContext="#pop" fallthrough="1" fallthroughContext="Error">
+        <RegExpr attribute="Variable" context="#pop" String="&ident;"/>
+      </context>
+
+      <context attribute="Line Continuation" name="LineContinuation" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+        <DetectSpaces/>
+      </context>
+
+      <!-- comment -->
+
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments" />
+        <DetectIdentifier attribute="Comment" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="0"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Rule Name" defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="Special Rule Name" defStyleNum="dsBuiltIn" spellChecking="0"/>
+      <itemData name="Dependancy" defStyleNum="dsNormal" spellChecking="0"/>
+      <itemData name="Implicit Dependancy" defStyleNum="dsNormal" italic="1" spellChecking="0"/>
+      <itemData name="Implicit Output" defStyleNum="dsNormal" italic="1" spellChecking="0"/>
+      <itemData name="Special Key" defStyleNum="dsBuiltIn" spellChecking="0"/>
+      <itemData name="Key" defStyleNum="dsVariable" spellChecking="0"/>
+      <itemData name="Variable Delimiter" defStyleNum="dsOperator" spellChecking="0"/>
+      <itemData name="Special Variable" defStyleNum="dsBuiltIn" spellChecking="0"/>
+      <itemData name="Variable" defStyleNum="dsVariable" spellChecking="0"/>
+      <itemData name="Special Value" defStyleNum="dsBuiltIn" spellChecking="0"/>
+      <itemData name="Operator" defStyleNum="dsOperator" spellChecking="0"/>
+      <itemData name="Line Continuation" defStyleNum="dsSpecialChar" spellChecking="0"/>
+      <itemData name="Special Char" defStyleNum="dsSpecialChar" spellChecking="0"/>
+      <itemData name="Symbol" defStyleNum="dsNormal" bold="1" spellChecking="0"/>
+      <itemData name="Error" defStyleNum="dsError" spellChecking="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#"/>
+    </comments>
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/nix.xml b/xml/nix.xml
--- a/xml/nix.xml
+++ b/xml/nix.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd" [
+<!DOCTYPE language [
     <!ENTITY ident "[a-zA-Z_][a-zA-Z0-9_\-']*">
 ]>
 
 <!--
-    SPDX-FileCopyrightText: 2021 Marco Rebhan <me@dblsaiko.net>
+    SPDX-FileCopyrightText: 2024-2025 Katalin Rebhan <me@dblsaiko.net>
     SPDX-FileContributor: Tuan Le <webmaster@michivi.com>
 
     SPDX-License-Identifier: MIT
@@ -12,18 +12,17 @@
 
 <language
     name="Nix"
-    version="1"
+    version="5"
     kateversion="5.79"
     section="Scripts"
     extensions="*.nix"
     casesensitive="1"
-    author="Marco Rebhan &lt;me@dblsaiko.net&gt;"
+    author="Katalin Rebhan &lt;me@dblsaiko.net&gt;"
     license="MIT"
     priority="1"
 >
     <highlighting>
         <list name="keywords">
-            <item>assert</item>
             <item>rec</item>
             <item>and</item>
             <item>or</item>
@@ -50,15 +49,19 @@
                 <WordDetect String="let" attribute="Keyword" context="Let" />
                 <WordDetect String="if" attribute="Keyword" context="If" />
                 <WordDetect String="with" attribute="Keyword" context="With" />
+                <WordDetect String="assert" attribute="Keyword" context="Assert" />
                 <Detect2Chars char="/" char1="/" attribute="Operator" />
                 <Detect2Chars char="?" char1="?" attribute="Operator" />
                 <Detect2Chars char="+" char1="+" attribute="Operator" />
                 <Detect2Chars char="|" char1="|" attribute="Operator" />
                 <Detect2Chars char="&amp;" char1="&amp;" attribute="Operator" />
                 <AnyChar String="+-*/?!" attribute="Operator" />
-                <RegExpr String="\b&ident;\s*:" context="Function" lookAhead="true" />
+                <RegExpr String="\b&ident;(?=\s*:)" context="Function" attribute="Identifier" />
+
+                <DetectIdentifier />
             </context>
             <context name="Single Expression" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
                 <IncludeRules context="Comment Rules" />
 
                 <keyword String="builtins" attribute="Builtin" />
@@ -68,12 +71,18 @@
                 <DetectChar char="[" attribute="Symbol" context="List" beginRegion="List" />
                 <DetectChar char="(" attribute="Symbol" context="Parentheses" />
                 <RegExpr String="[a-zA-Z0-9-_.]*(/[a-zA-Z0-9-_.]+)+" attribute="Path" />
-                <Int attribute="Int" />
                 <Float attribute="Float" />
+                <Int attribute="Int" />
+                <DetectChar char="." attribute="Symbol" context="Set Access" />
                 <WordDetect String="true" attribute="Constant" />
                 <WordDetect String="false" attribute="Constant" />
                 <WordDetect String="null" attribute="Constant" />
             </context>
+            <context name="Set Access" attribute="Normal Text" lineEndContext="#stay">
+                <Detect2Chars char="$" char1="{" attribute="Special Char" context="#pop!Interpolated String" />
+                <DetectChar char="&quot;" attribute="String" context="#pop!String" />
+                <DetectIdentifier context="#pop" />
+            </context>
             <context name="Parentheses" attribute="Normal Text" lineEndContext="#stay">
                 <DetectChar char=")" attribute="Symbol" context="#pop" />
 
@@ -91,10 +100,7 @@
             </context>
             <context name="Multi-Line Comment" attribute="Comment" lineEndContext="#stay">
                 <Detect2Chars char="*" char1="/" attribute="Comment" context="#pop" endRegion="Comment" />
-
-                <DetectSpaces attribute="Comment"/>
-                <IncludeRules context="##Comments"/>
-                <DetectIdentifier attribute="Comment" context="#stay" />
+                <IncludeRules context="Comment"/>
             </context>
 
             <context name="String" attribute="String" lineEndContext="#stay">
@@ -121,6 +127,7 @@
                 yet
             -->
             <context name="Any Brace" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
                 <DetectChar char="}" attribute="Symbol" context="#pop" endRegion="Set"/>
 
                 <WordDetect String="inherit" attribute="Keyword" context="Any Brace - Inherit" />
@@ -128,6 +135,7 @@
                 <DetectChar char="=" attribute="Operator" context="Any Brace - Set Value" />
                 <DetectChar char="&quot;" attribute="String" context="Any Brace - String" />
                 <Detect2Chars char="'" char1="'" attribute="String" context="Any Brace - String2" />
+                <Detect2Chars char="$" char1="{" attribute="Special Char" context="Any Brace - Interpolated String" />
 
                 <DetectChar char="," attribute="Symbol" context="#pop!Set Expansion" />
                 <DetectChar char="?" attribute="Symbol" context="Any Brace - Default Value" />
@@ -145,11 +153,11 @@
                 <DetectChar char=";" attribute="Symbol" context="#pop#pop!Set" />
                 <IncludeRules context="Set Value" />
             </context>
-            <context name="Any Brace - String" attribute="Normal Text" lineEndContext="#stay">
+            <context name="Any Brace - String" attribute="String" lineEndContext="#stay">
                 <DetectChar char="&quot;" attribute="String" context="#pop#pop!Set" />
                 <IncludeRules context="String" />
             </context>
-            <context name="Any Brace - String2" attribute="Normal Text" lineEndContext="#stay">
+            <context name="Any Brace - String2" attribute="String" lineEndContext="#stay">
                 <Detect2Chars char="'" char1="'" attribute="String" context="#pop#pop!Set" />
                 <IncludeRules context="String" />
             </context>
@@ -157,6 +165,10 @@
                 <DetectChar char=";" attribute="Symbol" context="#pop#pop!Set" />
                 <IncludeRules context="Inherit" />
             </context>
+            <context name="Any Brace - Interpolated String" attribute="Normal Text">
+                <DetectChar char="}" attribute="Special Char" context="#pop!Set" />
+                <IncludeRules context="Interpolated String" />
+            </context>
             <context name="Any Brace - Default Value" attribute="Normal Text" lineEndContext="#stay">
                 <DetectChar char="," attribute="Symbol" context="#pop#pop!Set Expansion" />
                 <IncludeRules context="Default Value" />
@@ -164,20 +176,32 @@
 
             <!-- include for sets and let expressions -->
             <context name="Set-Like" attribute="Normal Text" lineEndContext="#stay">
-                <WordDetect String="inherit" attribute="Keyword" context="Inherit" />
                 <DetectChar char="&quot;" attribute="String" context="String" />
                 <Detect2Chars char="'" char1="'" attribute="String" context="String2" />
                 <DetectChar char="=" attribute="Operator" context="Set Value" />
+                <Detect2Chars char="$" char1="{" attribute="Special Char" context="Interpolated String" />
                 <RegExpr String="&ident;" attribute="Identifier" />
                 <IncludeRules context="Comment Rules" />
             </context>
             <context name="Inherit" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar char=";" attribute="Symbol" context="#pop" />
-                <IncludeRules context="Single Expression" />
+                <DetectChar char="(" attribute="Symbol" context="Inherit - Source" />
+                <DetectIdentifier attribute="Identifier" context="Inherit - Keys" />
             </context>
+            <context name="Inherit - Source" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar char=")" attribute="Symbol" context="#pop!Inherit - Keys" />
 
+                <IncludeRules context="Parentheses" />
+            </context>
+            <context name="Inherit - Keys" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar char=";" attribute="Symbol" context="#pop#pop" />
+                <DetectChar char="(" attribute="Error" />
+                <DetectIdentifier attribute="Identifier" />
+            </context>
+
             <context name="Set" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
                 <DetectChar char="}" attribute="Symbol" context="#pop" endRegion="Set" />
+                <WordDetect String="inherit" attribute="Keyword" context="Inherit" />
 
                 <IncludeRules context="Set-Like" />
             </context>
@@ -189,6 +213,7 @@
             </context>
 
             <context name="Set Expansion" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
                 <DetectChar char="}" attribute="Symbol" context="#pop" endRegion="Set"/>
 
                 <DetectChar char="," attribute="Symbol" />
@@ -212,16 +237,13 @@
 
             <context name="Function" attribute="Normal Text" lineEndContext="#stay">
                 <DetectChar char=":" attribute="Symbol" context="#pop" />
-
-                <RegExpr String="&ident;" attribute="Identifier" />
-
-                <IncludeRules context="Comment Rules" />
+                <DetectSpaces attribute="Normal Text" />
             </context>
 
             <context name="Let" attribute="Normal Text" lineEndContext="#stay">
+                <DetectSpaces />
                 <WordDetect String="in" attribute="Keyword" context="#pop" />
 
-                <RegExpr String="&ident;" attribute="Identifier" />
                 <IncludeRules context="Set-Like" />
             </context>
 
@@ -237,6 +259,10 @@
             </context>
 
             <context name="With" attribute="Normal Text" lineEndContext="#stay">
+                <DetectChar char=";" attribute="Symbol" context="#pop" />
+                <IncludeRules context="Expression" />
+            </context>
+            <context name="Assert" attribute="Normal Text" lineEndContext="#stay">
                 <DetectChar char=";" attribute="Symbol" context="#pop" />
                 <IncludeRules context="Expression" />
             </context>
diff --git a/xml/noweb.xml b/xml/noweb.xml
--- a/xml/noweb.xml
+++ b/xml/noweb.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="noweb" version="5" kateversion="5.53" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
+<!DOCTYPE language>
+<language name="noweb" version="5" kateversion="5.79" section="Sources" extensions="*.w;*.nw" author="Scott Collins (scc@scottcollins.net)">
 <!-- 
 #########################################################################
 # First version added to repository was 0.4, added as 1.0 .
diff --git a/xml/objectivec.xml b/xml/objectivec.xml
--- a/xml/objectivec.xml
+++ b/xml/objectivec.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Objective-C" version="7" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
+<!DOCTYPE language>
+<language name="Objective-C" alternativeNames="ObjectiveC;ObjC" version="8" kateversion="5.0" section="Sources" extensions="*.m;*.h" mimetype="text/x-objc-src;text/x-c-hdr">
   <highlighting>
     <list name="keywords">
       <item>break</item>
diff --git a/xml/objectivecpp.xml b/xml/objectivecpp.xml
--- a/xml/objectivecpp.xml
+++ b/xml/objectivecpp.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Objective-C++" version="11" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objc++src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">
+<!DOCTYPE language>
+<language name="Objective-C++" alternativeNames="ObjectiveC++;Objective-CPP;ObjectiveCPP;ObjC++;ObjCPP" version="13" kateversion="5.0" section="Sources" extensions="*.mm;*.M;*.h" mimetype="text/x-objc++src;text/x-c-hdr" author="Gennady Telegin (gepo@lvk.cs.msu.su">
   <highlighting>
     <list name="keywords">
       <item>break</item>
@@ -94,7 +94,6 @@
       <item>Q_SIGNALS</item>
       <item>Q_SLOTS</item>
       <item>Q_FOREACH</item>
-      <item>Q_DECLARE_FLAGS</item>
       <item>Q_INIT_RESOURCE</item>
       <item>Q_CLEANUP_RESOURCE</item>
       <item>Q_GLOBAL_STATIC</item>
diff --git a/xml/ocaml.xml b/xml/ocaml.xml
--- a/xml/ocaml.xml
+++ b/xml/ocaml.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- Kate syntax highlighting for Objective Caml version 4.02 in the standard and revised syntaxes, with Ocamldoc comments. -->
 
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 <!-- Regular expresion constants: -->
 <!ENTITY LOWER  "a-z\300-\326\330-\337">         <!-- Lowercase Latin-1 letters. -->
@@ -9,17 +9,18 @@
 <!ENTITY LETTER "&LOWER;&UPPER;">                <!-- All Latin-1 letters. -->
 <!ENTITY LIDENT "[&LOWER;_][&LETTER;0-9_']*">    <!-- Lowercase OCaml identifiers. -->
 <!ENTITY UIDENT "`?[&UPPER;][&LETTER;0-9_']*">   <!-- Uppercase OCaml identifiers. -->
-<!ENTITY IDENT  "`?[&LETTER;][&LETTER;0-9_']*">  <!-- All OCaml identifiers. -->
-<!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
+<!ENTITY IDENT  "[&LETTER;_][&LETTER;0-9_']*">  <!-- All OCaml identifiers. -->
+<!ENTITY ESC    "(\\[ntbr'&quot; \\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2}|\\o[0-3][0-7]{2})"> <!-- OCaml character code escapes. -->
 <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
+<!ENTITY HEX    "0[xX][0-9A-Fa-f][0-9A-Fa-f_]*">                    <!-- Integer hex literals. -->
 ]>
 <language name="Objective Caml"
           extensions="*.ml;*.mli"
           mimetype="text/x-ocaml"
           section="Sources"
-          version="9"
+          version="12"
           priority="10"
-          kateversion="5.0"
+          kateversion="6.22"
           author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
           license="LGPL" >
 
@@ -36,7 +37,6 @@
       <item>asr</item>
       <item>begin</item>
       <item>class</item>
-      <item>closed</item>
       <item>constraint</item>
       <item>do</item>
       <item>done</item>
@@ -54,6 +54,7 @@
       <item>in</item>
       <item>include</item>
       <item>inherit</item>
+      <item>initializer</item>
       <item>land</item>
       <item>lazy</item>
       <item>let</item>
@@ -102,11 +103,15 @@
       <item>abs</item>
       <item>abs_float</item>
       <item>acos</item>
+      <item>acosh</item>
       <item>asin</item>
+      <item>asinh</item>
       <item>at_exit</item>
       <item>atan</item>
       <item>atan2</item>
+      <item>atanh</item>
       <item>bool_of_string</item>
+      <item>bool_of_string_opt</item>
       <item>ceil</item>
       <item>char_of_int</item>
       <item>classify_float</item>
@@ -120,12 +125,14 @@
       <item>cosh</item>
       <item>decr</item>
       <item>do_at_exit</item>
+      <item>do_domain_local_at_exit</item>
       <item>epsilon_float</item>
       <item>exp</item>
       <item>expm1</item>
       <item>float</item>
       <item>float_of_int</item>
       <item>float_of_string</item>
+      <item>float_of_string_opt</item>
       <item>floor</item>
       <item>flush</item>
       <item>flush_all</item>
@@ -146,6 +153,7 @@
       <item>int_of_char</item>
       <item>int_of_float</item>
       <item>int_of_string</item>
+      <item>int_of_string_opt</item>
       <item>ldexp</item>
       <item>lnot</item>
       <item>log</item>
@@ -195,7 +203,9 @@
       <item>print_newline</item>
       <item>print_string</item>
       <item>read_float</item>
+      <item>read_float_opt</item>
       <item>read_int</item>
+      <item>read_int_opt</item>
       <item>read_line</item>
       <item>really_input</item>
       <item>really_input_string</item>
@@ -240,6 +250,7 @@
       <item>char</item>
       <item>exn</item>
       <item>float</item>
+      <item>format</item>
       <item>format4</item>
       <item>format6</item>
       <item>fpclass</item>
@@ -253,19 +264,21 @@
       <item>open_flag</item>
       <item>option</item>
       <item>out_channel</item>
-      <item>real</item>
       <item>ref</item>
+      <item>result</item>
       <item>string</item>
       <item>unit</item>
     </list>
 
     <list name="Pervasive Variant Tags">
+      <item>Error</item>
       <item>FP_infinite</item>
       <item>FP_nan</item>
       <item>FP_normal</item>
       <item>FP_subnormal</item>
       <item>FP_zero</item>
       <item>None</item>
+      <item>Ok</item>
       <item>Open_append</item>
       <item>Open_binary</item>
       <item>Open_creat</item>
@@ -298,18 +311,29 @@
       <item>Arg</item>
       <item>Array</item>
       <item>ArrayLabels</item>
+      <item>Atomic</item>
+      <item>Bigarray</item>
+      <item>Bool</item>
       <item>Buffer</item>
       <item>Bytes</item>
+      <item>BytesLabels</item>
       <item>Callback</item>
       <item>Char</item>
       <item>Complex</item>
+      <item>Condition</item>
       <item>Digest</item>
+      <item>Domain</item>
+      <item>Effect</item>
+      <item>Either</item>
       <item>Ephemeron</item>
       <item>Filename</item>
       <item>Format</item>
+      <item>Fun</item>
       <item>Gc</item>
       <item>Genlex</item>
       <item>Hashtbl</item>
+      <item>In_channel</item>
+      <item>Int</item>
       <item>Int32</item>
       <item>Int64</item>
       <item>Lazy</item>
@@ -319,14 +343,20 @@
       <item>Map</item>
       <item>Marshal</item>
       <item>MoreLabels</item>
+      <item>Mutex</item>
       <item>Nativeint</item>
+      <item>Obj</item>
       <item>Oo</item>
+      <item>Option</item>
+      <item>Out_channel</item>
       <item>Parsing</item>
       <item>Printexc</item>
       <item>Printf</item>
       <item>Queue</item>
       <item>Random</item>
       <item>Scanf</item>
+      <item>Semaphore</item>
+      <item>Seq</item>
       <item>Set</item>
       <item>Sort</item>
       <item>Spacetime</item>
@@ -336,7 +366,9 @@
       <item>String</item>
       <item>StringLabels</item>
       <item>Sys</item>
+      <item>Type</item>
       <item>Uchar</item>
+      <item>Unit</item>
       <item>Weak</item>
     </list>
 
@@ -344,11 +376,6 @@
 
       <context name="Code" lineEndContext="#stay" attribute="Operator">
 
-        <!-- ] and ]} close code samples in Ocamldoc, so -->
-        <!-- nested [ ] and { } brackets have to be allowed for: -->
-        <DetectChar char="[" context="Nested Code 1" attribute="Operator" />
-        <DetectChar char="{" context="Nested Code 2" attribute="Operator" />
-
         <!-- Comments. -->
         <!-- A (** begins a special comment with Ocamldoc documentation markup. -->
         <StringDetect String="(**)"      context="#stay"    attribute="Comment" />
@@ -359,17 +386,23 @@
         <!-- Interpreter directives. -->
         <!-- (These are lines where the first symbol is a '#' followed by an identifier. -->
         <!-- Such lines could also be part of a method call split over two lines but     -->
-        <!-- it's unlikey anyone would code like that.)                                  -->
+        <!-- it's unlikely anyone would code like that.)                                  -->
         <RegExpr String="#&IDENT;.*$" context="#stay" firstNonSpace="true" attribute="Directive"/>
 
         <!-- String, character and Camlp4 "quotation" constants.              -->
         <!-- Note: If you must modify the pattern for characters be precise:  -->
         <!-- single quotes have several meanings in Ocaml.                    -->
         <DetectChar char="&quot;" context="String" attribute="String" />
+        <RegExpr String="{[a-z_]*\|" context="Quoted String" attribute="Quoted String" />
         <RegExpr String="'(&ESC;|[^'])'" context="#stay" attribute="Character" />
         <Detect2Chars char="&lt;" char1="&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
         <RegExpr String="&lt;:&IDENT;&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
 
+        <!-- ] and ]} close code samples in Ocamldoc, so -->
+        <!-- nested [ ] and { } brackets have to be allowed for: -->
+        <DetectChar char="[" context="Nested Code 1" attribute="Operator" />
+        <DetectChar char="{" context="Nested Code 2" attribute="Operator" />
+
         <!-- Identifiers and keywords. -->
         <keyword String="Keywords"                 context="#stay" attribute="Keyword" />
         <keyword String="Revised Syntax Keywords"  context="#stay" attribute="Revised Syntax Keyword" />
@@ -384,11 +417,11 @@
 
         <!-- Numeric constants. -->
         <!-- Note that they may contain underscores. -->
-        <RegExpr String="-?0[xX][0-9A-Fa-f_]+" context="#stay" attribute="Hexadecimal" />
-        <RegExpr String="-?0[oO][0-7_]+" context="#stay" attribute="Octal" />
-        <RegExpr String="-?0[bB][01_]+" context="#stay" attribute="Binary" />
-        <RegExpr String="-?&DEC;(\.&DEC;([eE][-+]?&DEC;)?|[eE][-+]?&DEC;)" context="#stay" attribute="Float" />
-        <RegExpr String="-?&DEC;" context="#stay" attribute="Decimal" />
+        <RegExpr String="-?0[oO][0-7][0-7_]*[lLn]?" context="#stay" attribute="Octal" />
+        <RegExpr String="-?0[bB][01][01_]*[lLn]?" context="#stay" attribute="Binary" />
+        <RegExpr String="-?(&DEC;(\.&DEC;([eE][-+]?&DEC;)?|[eE][-+]?&DEC;)|&HEX;(\.[0-9A-Fa-f_]+)?[pP][+-]&DEC;)" context="#stay" attribute="Float" />
+        <RegExpr String="-?&HEX;[lLn]?" context="#stay" attribute="Hexadecimal" />
+        <RegExpr String="-?&DEC;[lLn]?" context="#stay" attribute="Decimal" />
 
         <IncludeRules context="Unmatched Closing Brackets" />
       </context>
@@ -407,7 +440,7 @@
         <DetectChar char="&quot;" context="#pop" attribute="String" />
         <!-- A backslash at the end of a line in a string indicates  -->
         <!-- that the string will continue on the next line:         -->
-        <RegExpr String="&ESC;|\\$" context="#stay" attribute="Escaped Characters" />
+        <RegExpr String="&ESC;|\\$|\\u{[0-9A-Fa-f]+}" context="#stay" attribute="Escaped Characters" />
       </context>
 
       <context name="qtest header" lineEndContext="qtest" attribute="Operator">
@@ -440,6 +473,10 @@
         <IncludeRules context="String" />
       </context>
 
+      <context name="Quoted String" lineEndContext="#stay" attribute="Quoted String">
+        <RegExpr String="\|[a-z_]*}" context="#pop" attribute="Quoted String" />
+      </context>
+
       <!-- Camlp4 Quotations. These are source code literals used by the Campl4 preprocessor.           -->
       <!-- The only escapes allowed in a Camlp4 quotation are for the quotation start and stop symbols. -->
       <context name="Camlp4 Quotation" lineEndContext="#stay" attribute="Camlp4 Quotation">
@@ -560,6 +597,7 @@
         <Detect2Chars char="]" char1="}" context="#stay" attribute="Mismatched Brackets" />
         <Detect2Chars char="%" char1="}" context="#stay" attribute="Mismatched Brackets" />
         <AnyChar      String="]}"        context="#stay" attribute="Mismatched Brackets" />
+        <RegExpr String="\|[a-z_]*}"      context="#pop" attribute="Mismatched Brackets" />
       </context>
     </contexts>
 
@@ -588,6 +626,7 @@
 
       <itemData name="Character"               defStyleNum="dsChar"     />
       <itemData name="String"                  defStyleNum="dsString"   />
+      <itemData name="Quoted String"           defStyleNum="dsString"   />
       <itemData name="Camlp4 Quotation"        defStyleNum="dsString"   />
       <itemData name="Escaped Characters"      defStyleNum="dsChar"     />
 
diff --git a/xml/ocamllex.xml b/xml/ocamllex.xml
new file mode 100644
--- /dev/null
+++ b/xml/ocamllex.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Kate syntax highlighting for the Objective Caml 'Ocamlllex' -->
+<!DOCTYPE language
+[
+<!-- Regular expresion constants: -->
+<!ENTITY LETTER "A-Za-z\300-\326\330-\366\370-\377">                <!-- Latin-1 letters. -->
+<!ENTITY IDENT  "`?[&LETTER;_][&LETTER;0-9_']*">                    <!-- OCaml identifiers. -->
+<!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
+]>
+<language name="Objective Caml Ocamllex"
+          section="Sources"
+          extensions="*.mll"
+          mimetype=""
+          version="8"
+          kateversion="6.22"
+          priority="10"
+          author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
+          license="LGPL" >
+
+  <highlighting>
+
+    <list name="keywords">
+      <item>and</item>
+      <item>as</item>
+      <item>eof</item>
+      <item>let</item>
+      <item>parse</item>
+      <item>rule</item>
+      <item>shortest</item>
+    </list>
+
+    <contexts>
+      <context name="Rules" lineEndContext="#stay" attribute="Normal">
+        <Detect2Chars char="(" char1="*"      context="Comment" attribute="Comment" beginRegion="comment" />
+        <DetectChar   char="{"                context="Ocaml"   attribute="Normal"  beginRegion="code" />
+        <DetectChar   char="&quot;"           context="String"  attribute="String" />
+        <RegExpr      String="'(&ESC;|[^'])'" context="#stay"   attribute="Character" />
+        <keyword      String="keywords"       context="#stay"   attribute="Keyword" />
+        <RegExpr      String="&IDENT;"        context="#stay"   attribute="Identifier" />
+        <DetectChar   char="}"                context="#stay"   attribute="Mismatched Brackets" />
+        <Detect2Chars char="*" char1=")"      context="#stay"   attribute="Mismatched Brackets" />
+      </context>
+
+      <context name="Comment" lineEndContext="#stay" attribute="Comment">
+        <Detect2Chars char="*" char1=")" context="#pop"    attribute="Comment" endRegion="comment" />
+        <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
+        <DetectChar   char="&quot;"      context="String"  attribute="String" />
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+
+      <context name="Ocaml" lineEndContext="#stay" attribute="Normal">
+        <DetectChar char="}" context="#pop" attribute="Normal" endRegion="code" />
+        <IncludeRules context="##Objective Caml" includeAttrib="true" />
+      </context>
+
+      <context name="String" lineEndContext="#stay" attribute="String">
+        <DetectChar char="&quot;"  context="#pop"  attribute="String" />
+        <RegExpr    String="&ESC;|\\$"   context="#stay" attribute="Escaped Characters" />
+      </context>
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal"                  defStyleNum="dsOthers"    />
+      <itemData name="Identifier"              defStyleNum="dsNormal"   />
+      <itemData name="Keyword"                 defStyleNum="dsOthers" bold="true" />
+      <itemData name="Character"               defStyleNum="dsChar"     />
+      <itemData name="String"                  defStyleNum="dsString"   />
+      <itemData name="Escaped Characters"      defStyleNum="dsChar"     />
+      <itemData name="Comment"                 defStyleNum="dsComment"  />
+      <itemData name="Mismatched Brackets"     defStyleNum="dsError"    />
+    </itemDatas>
+  </highlighting>
+
+  <general>
+    <keywords casesensitive="true" />
+    <comments>
+      <comment name="multiLine" start="(*" end="*)" region="comment" />
+    </comments>
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/ocamlyacc.xml b/xml/ocamlyacc.xml
new file mode 100644
--- /dev/null
+++ b/xml/ocamlyacc.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Kate syntax highlighting for the Objective Caml 'Ocamlllex' -->
+<!DOCTYPE language
+[
+<!-- Regular expresion constants: -->
+<!ENTITY LOWER  "a-z\300-\326\330-\337">         <!-- Lowercase Latin-1 letters. -->
+<!ENTITY UPPER  "A-Z\340-\366\370-\377">         <!-- Uppercase Latin-1 letters. -->
+<!ENTITY LETTER "&LOWER;&UPPER;">                <!-- All Latin-1 letters. -->
+<!ENTITY LIDENT "[&LOWER;_][&LETTER;0-9_']*">    <!-- Lowercase OCaml identifiers. -->
+<!ENTITY UIDENT "`?[&UPPER;][&LETTER;0-9_']*">   <!-- Uppercase OCaml identifiers. -->
+<!ENTITY IDENT  "`?[&LETTER;][&LETTER;0-9_']*">  <!-- All OCaml identifiers. -->
+]>
+<language name="Objective Caml Ocamlyacc"
+          section="Sources"
+          extensions="*.mly"
+          mimetype=""
+          version="7"
+          kateversion="6.22"
+          priority="10"
+          author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
+          license="LGPL" >
+
+  <highlighting>
+    <list name="typed symbol list keywords">
+      <item>%token</item>
+      <item>%type</item>
+    </list>
+
+    <list name="symbol list keywords">
+      <item>%left</item>
+      <item>%right</item>
+      <item>%nonassoc</item>
+      <item>%start</item>
+    </list>
+
+    <list name="rule keywords">
+      <item>%prec</item>
+      <item>error</item>
+    </list>
+
+    <contexts>
+      <!-- Note: Because the Yacc grammar is so simple I've written this so that any symbol
+           that has not been specifically dealt with by a highlighting rule is an error. -->
+
+      <!-- Declaration section: Header sections and Yacc symbol declararations. -->
+      <!-- A %% marks the end of the Declaration section and the start of the rules section. -->
+      <context name="Declarations" lineEndContext="#stay" attribute="Error">
+        <Detect2Chars char="%" char1="{"                  context="Header"            attribute="Normal" beginRegion="header" />
+        <keyword      String="typed symbol list keywords" context="Typed Symbol List" attribute="Keyword" />
+        <keyword      String="symbol list keywords"       context="Symbol List"       attribute="Keyword" />
+        <Detect2Chars char="%" char1="%"                  context="Rules"             attribute="Normal" />
+        <IncludeRules context="General" />
+      </context>
+
+      <!-- Header section: Ocaml code in the declarations between %{ %} brackets -->
+      <context name="Header" lineEndContext="#stay" attribute="Normal">
+        <Detect2Chars char="%" char1="}" context="#pop" attribute="Normal" endRegion="header" />
+        <IncludeRules context="##Objective Caml" includeAttrib="true" />
+      </context>
+
+      <!-- A typed symbol list: an optional Ocaml type declaration between < > brackets, followed by a symbol list. -->
+        <context name="Typed Symbol List" lineEndContext="#pop" attribute="Error">
+        <DetectChar char="&lt;" context="Type" attribute="Normal" />
+        <RegExpr String="&UIDENT;" context="Symbol List" attribute="Uppercase Name (Token)" />
+        <RegExpr String="&LIDENT;" context="Symbol List" attribute="Lowercase Name (Rule)" />
+        <IncludeRules context="General" />
+      </context>
+      <context name="Type" lineEndContext="#stay" attribute="Normal">
+        <DetectChar char="&gt;" context="#pop" attribute="Normal" />
+        <IncludeRules context="##Objective Caml" includeAttrib="true" />
+      </context>
+
+      <!-- A symbol list: one line of sybmol names and option comments. -->
+      <context name="Symbol List" lineEndContext="#pop" attribute="Error">
+        <RegExpr String="&UIDENT;" context="#stay" attribute="Uppercase Name (Token)" />
+        <RegExpr String="&LIDENT;" context="#stay" attribute="Lowercase Name (Rule)" />
+        <IncludeRules context="General" />
+      </context>
+
+      <!-- Rules section:. -->
+      <!-- A %% marks the end of the rules section and the start of the trailer section: -->
+      <context name="Rules" lineEndContext="#stay" attribute="Error">
+        <Detect2Chars char="%" char1="%" context="Trailer" attribute="Normal" />
+        <RegExpr String="&IDENT;" context="Rule, Expecting Colon" attribute="Rule Definition Name" beginRegion="rule" />
+        <IncludeRules context="General" />
+      </context>
+      <context name="Rule, Expecting Colon" lineEndContext="#stay" attribute="Error">
+        <DetectChar char=":" context="Rule" attribute="Normal" />
+        <!-- Incomplete rule before the start of the trailer: -->
+        <Detect2Chars char="%" char1="%" context="Trailer" attribute="Error" />
+        <IncludeRules context="General" />
+      </context>
+      <context name="Rule" lineEndContext="#stay" attribute="Error">
+        <DetectChar char=";"               context="#pop#pop" attribute="Normal" endRegion="rule" />
+        <DetectChar char="|"               context="#stay"    attribute="Normal" />
+        <keyword    String="rule keywords" context="#stay"    attribute="Keyword" />
+        <RegExpr    String="&UIDENT;"      context="#stay"    attribute="Uppercase Name (Token)" />
+        <RegExpr    String="&LIDENT;"      context="#stay"    attribute="Lowercase Name (Rule)" />
+        <DetectChar char="{"               context="Action"   attribute="Normal" beginRegion="action" />
+        <IncludeRules context="General" />
+      </context>
+
+      <!-- A rule action: Ocaml code between { } brackets containing $1,$2,$3.. symbols. -->
+      <!-- (The "Nested Action" contexts override the rules for [ ] and { } brackets in the Objective
+           Caml highlighting file. They make make the $1,$2,$3.. symbols show up inside those brackets.) -->
+      <context name="Action" lineEndContext="#stay" attribute="Normal">
+        <DetectChar char="}" context="#pop" attribute="Normal" endRegion="action" />
+        <RegExpr String="[$][0-9]+" context="#stay" attribute="Semantic Attribute" />
+        <DetectChar char="{" context="Nested Action 1" />
+        <DetectChar char="[" context="Nested Action 2" />
+        <IncludeRules context="##Objective Caml" includeAttrib="true" />
+      </context>
+      <context name="Nested Action 1" lineEndContext="#stay" attribute="Normal">
+        <DetectChar char="}" context="#pop" />
+        <IncludeRules context="Action" includeAttrib="true" />
+      </context>
+      <context name="Nested Action 2" lineEndContext="#stay" attribute="Normal">
+        <DetectChar char="]" context="#pop" />
+        <IncludeRules context="Action" includeAttrib="true" />
+      </context>
+
+      <!-- Trailer section: Ocaml code until the end of the file. -->
+      <context name="Trailer" lineEndContext="#stay" attribute="Normal">
+        <IncludeRules context="##Objective Caml" includeAttrib="true" />
+      </context>
+
+      <!-- General rules for all contexts: -->
+      <!-- 1) Whitespace is expected. -->
+      <!-- 2) Ocamlyacc's comments are in /* */ brackets and are nestable. -->
+      <context name="General" lineEndContext="#stay" attribute="Normal">
+        <DetectSpaces context="#stay" attribute="Normal" />
+        <Detect2Chars char="/" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
+      </context>
+      <context name="Comment" lineEndContext="#stay" attribute="Comment">
+        <Detect2Chars char="*" char1="/" context="#pop"    attribute="Comment" endRegion="comment" />
+        <Detect2Chars char="/" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
+        <DetectSpaces />
+        <IncludeRules context="##Comments" />
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Keyword"                defStyleNum="dsOthers" bold="true" />
+      <itemData name="Normal"                 defStyleNum="dsOthers" />
+      <itemData name="Uppercase Name (Token)" defStyleNum="dsOthers" />
+      <itemData name="Lowercase Name (Rule)"  defStyleNum="dsOthers" italic="true" />
+      <itemData name="Rule Definition Name"   defStyleNum="dsOthers" italic="true" bold="true" />
+      <itemData name="Semantic Attribute"     defStyleNum="dsOthers" />
+      <itemData name="Comment"                defStyleNum="dsComment" />
+      <itemData name="Error"                  defStyleNum="dsError"  />
+    </itemDatas>
+  </highlighting>
+
+  <general>
+    <keywords casesensitive="true" weakDeliminator="%" />
+    <comments>
+      <comment name="multiLine" start="/*" end="*/" region="comment" />
+    </comments>
+  </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
diff --git a/xml/octave.xml b/xml/octave.xml
--- a/xml/octave.xml
+++ b/xml/octave.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
   =====================================================================================================
   Octave syntax highlighting file for the KDE editors Kate and Kwrite
@@ -1847,7 +1847,6 @@
       <item>bisectionstep</item>
       <item>builtin</item>
       <item>bwfill</item>
-      <item>bwlabel</item>
       <item>cell2csv</item>
       <item>celleval</item>
       <item>Chi</item>
@@ -1877,7 +1876,6 @@
       <item>dispatch</item>
       <item>dispatch_help</item>
       <item>display_fixed_operations</item>
-      <item>dlmread</item>
       <item>ellint_Ecomp</item>
       <item>ellint_Kcomp</item>
       <item>ellipj</item>
@@ -2054,7 +2052,6 @@
       <item>transport_3</item>
       <item>transport_4</item>
       <item>transport_5</item>
-      <item>trisolve</item>
       <item>waitbar</item>
       <item>xmlread</item>
       <item>zeta</item>
@@ -2202,7 +2199,6 @@
       <item>dftmtx</item>
       <item>dhbar</item>
       <item>dilate</item>
-      <item>dispatch</item>
       <item>distance</item>
       <item>dlmread</item>
       <item>dlmwrite</item>
@@ -2215,7 +2211,6 @@
       <item>edit</item>
       <item>ellip</item>
       <item>ellipdemo</item>
-      <item>ellipj</item>
       <item>ellipke</item>
       <item>ellipord</item>
       <item>__ellip_ws</item>
diff --git a/xml/odin.xml b/xml/odin.xml
new file mode 100644
--- /dev/null
+++ b/xml/odin.xml
@@ -0,0 +1,290 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language
+[
+  <!ENTITY symbols ":!&#37;&amp;()+,-/.*&lt;=&gt;?[]|~^;">
+  <!ENTITY bin_int "(?:[01]+(?:_[01]+)*)">
+  <!ENTITY oct_int "(?:[0-7]+(?:_[0-7]+)*)">
+  <!ENTITY dec_int "(?:[0-9]+(?:_[0-9]+)*)">
+  <!ENTITY hex_int "(?:[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)">
+  <!ENTITY exp_float "(?:[eE][+-]?&dec_int;)">
+  <!ENTITY exp_hexfloat "(?:[pP][-+]?&dec_int;)">
+]>
+<language name="Odin" section="Sources"
+          version="7" kateversion="5.79"
+          indenter="cstyle"
+          extensions="*.odin"
+          priority="1"
+          author="Akseli Lahtinen (akselmo@akselmo.dev)"
+          license="MIT">
+
+  <highlighting>
+    <list name="controlflow">
+     <item>if</item>
+     <item>else</item>
+     <item>when</item>
+     <item>for</item>
+     <item>in</item>
+     <item>not_in</item>
+     <item>switch</item>
+     <item>return</item>
+     <item>do</item>
+     <item>where</item>
+     <item>fallthrough</item>
+     <item>break</item>
+     <item>continue</item>
+     <item>or_else</item>
+     <item>or_return</item>
+     <item>or_break</item>
+     <item>or_continue</item>
+    </list>
+
+    <list name="keywords">
+      <item>const</item>
+      <item>case</item>
+      <item>defer</item>
+      <item>asm</item>
+      <item>distinct</item>
+      <item>nil</item>
+      <item>true</item>
+      <item>false</item>
+      <item>---</item>
+      <item>struct</item>
+      <item>enum</item>
+      <item>union</item>
+      <item>map</item>
+      <item>bit_set</item>
+      <item>dynamic</item>
+      <item>cast</item>
+      <item>transmute</item>
+      <item>auto_cast</item>
+      <item>force_inline</item>
+      <item>force_no_inline</item>
+      <item>size_of</item>
+      <item>align_of</item>
+      <item>offset_of</item>
+      <item>type_of</item>
+      <item>type_info_of</item>
+      <item>typeid_of</item>
+    </list>
+
+    <list name="context">
+      <item>context</item>
+    </list>
+
+    <list name="types">
+      <item>i8</item>
+      <item>i16</item>
+      <item>i32</item>
+      <item>i64</item>
+      <item>i128</item>
+      <item>int</item>
+      <item>u8</item>
+      <item>u16</item>
+      <item>u32</item>
+      <item>u64</item>
+      <item>u128</item>
+      <item>uint</item>
+      <item>uintptr</item>
+      <item>f16</item>
+      <item>f32</item>
+      <item>f64</item>
+      <item>f16le</item>
+      <item>f32le</item>
+      <item>f64le</item>
+      <item>f16be</item>
+      <item>f32be</item>
+      <item>f64be</item>
+      <item>complex32</item>
+      <item>complex64</item>
+      <item>complex128</item>
+      <item>complex_float</item>
+      <item>complex_double</item>
+      <item>quaternion64</item>
+      <item>quaternion128</item>
+      <item>quaternion256</item>
+      <item>bool</item>
+      <item>b8</item>
+      <item>b16</item>
+      <item>b32</item>
+      <item>b64</item>
+      <item>string</item>
+      <item>cstring</item>
+      <item>rune</item>
+      <item>rawptr</item>
+      <item>any</item>
+      <item>typeid</item>
+      <item>byte</item>
+      <item>u16le</item>
+      <item>u32le</item>
+      <item>u64le</item>
+      <item>u128le</item>
+      <item>i16le</item>
+      <item>i32le</item>
+      <item>i64le</item>
+      <item>i128le</item>
+      <item>i16be</item>
+      <item>i32be</item>
+      <item>i64be</item>
+      <item>i128be</item>
+      <item>u16be</item>
+      <item>u32be</item>
+      <item>u64be</item>
+      <item>u128be</item>
+    </list>
+
+    <list name="procedure">
+      <item>proc</item>
+    </list>
+
+    <list name="import">
+      <item>import</item>
+      <item>package</item>
+      <item>foreign</item>
+    </list>
+
+    <list name="attributes">
+      <item>private</item>
+      <item>require</item>
+      <item>link_name</item>
+      <item>link_prefix</item>
+      <item>linkage</item>
+      <item>default_calling_convention</item>
+      <item>link_section</item>
+      <item>extra_linker_flags</item>
+      <item>deferred_in</item>
+      <item>deferred_out</item>
+      <item>deferred_in_out</item>
+      <item>deferred_none</item>
+      <item>deprecated</item>
+      <item>require_results</item>
+      <item>disabled</item>
+      <item>init</item>
+      <item>cold</item>
+      <item>optimization_mode</item>
+      <item>test</item>
+      <item>static</item>
+      <item>thread_local</item>
+      <item>builtin</item>
+      <item>objc_type</item>
+      <item>objc_is_class_method</item>
+      <item>require_target_feature</item>
+      <item>enable_target_feature</item>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
+        <Detect2Chars attribute="Comment" char="/" char1="/" context="SingleLineComment"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" lookAhead="true" beginRegion="Comment1" />
+        <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
+        <DetectChar attribute="String" context="DoubleQuoteString" char="&quot;"/>
+        <DetectChar attribute="Character" context="Character" char="'"/>
+        <keyword attribute="Control Flow" context="#stay" String="controlflow" />
+        <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Data Type" context="#stay" String="types" />
+        <keyword String="context" attribute="Context Variable" context="#stay"/>
+        <DetectChar attribute="Attribute" context="AttributeContext" char='@' column="0"/>
+        <AnyChar context="Number" String="0123456789" lookAhead="1" />
+        <RegExpr attribute="Directive" context="#stay" String="\#\w+"/>
+        <RegExpr attribute="Procedure" firstNonSpace="true" context="Procedure" String="\w{1,}\s{0,}::\s{0,}(?=proc)" lookAhead="true"/>
+        <RegExpr attribute="Procedure" context="#stay" String="[A-Za-z_0-9]*\s*(?=\()" />
+        <RegExpr attribute="Variable" context="#stay" firstNonSpace="true" String="\w{1,},{0,1}\s{0,}\w{0,}\s{0,}(?=:\=|:\s{0,}\w{1,}\s{0,}\=)(?!::)"/> <!--TODO this is too expensive-->
+        <AnyChar attribute="Operator" context="#stay" String="&symbols;" />
+        <DetectChar attribute="Operator" context="#stay" char="{" beginRegion="Brace1" />
+        <DetectChar attribute="Operator" context="#stay" char="}" endRegion="Brace1" />
+        <DetectChar attribute="RawString" context="RawString" char="`" />
+        <keyword attribute="Use" context="#stay" String="import"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="##Comments" />
+      </context>
+
+      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="##Comments" />
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment1"/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="DoubleQuoteString">
+          <DetectChar context="EscapeChar" char="\" lookAhead="1"/>
+          <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Character" lineEndContext="#pop" name="Character">
+          <DetectChar context="EscapeChar" char="\" lookAhead="1"/>
+          <DetectChar attribute="Character" context="#pop" char="'"/>
+      </context>
+      <context name="EscapeChar" attribute="String Char" lineEndContext="#pop">
+          <RegExpr attribute="String Char" context="#pop" String="\\([nrt'&quot;\\]|x[0-9a-fA-F]{2}|[0-7]{3}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})"/>
+      </context>
+
+      <context name="RawString" attribute="RawString" lineEndContext="#stay">
+          <DetectChar attribute="RawString" context="#pop" char="`" />
+      </context>
+
+      <context name="Procedure" attribute="Procedure" lineEndContext="#pop">
+        <Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
+        <WordDetect attribute="Keyword" context="#stay" String="proc" />
+        <DetectChar attribute="String" context="SimpleDoubleQuoteString" char="&quot;"/> <!--e.g, "contextless" | "c" -->
+        <AnyChar attribute="Symbol" context="#pop" lookAhead="true" String="\("/>
+      </context>
+
+      <context attribute="String" lineEndContext="#pop" name="SimpleDoubleQuoteString">
+          <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+
+      <context name="AttributeContext" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar attribute="Symbol" context="#stay" char='('/>
+        <DetectSpaces />
+        <keyword attribute="Attribute" context="#pop" String="attributes" />
+      </context>
+
+      <!-- Integer / Float -->
+      <context name="Number" attribute="Normal Text" lineEndContext="#pop">
+          <RegExpr attribute="Float" context="#pop!SuffixNumber" String="&dec_int;(\.&dec_int;&exp_float;?|&exp_float;)"/>
+          <RegExpr attribute="Decimal" context="#pop!SuffixNumber" String="0(?=[^xob]|$)|(?=0[xob])|&dec_int;"/>
+          <RegExpr attribute="Hex" context="#pop!SuffixNumber" String="0x&hex_int;"/>
+          <RegExpr attribute="Octal" context="#pop!SuffixNumber" String="0o&oct_int;"/>
+          <RegExpr attribute="Binary" context="#pop!SuffixNumber" String="0b&bin_int;"/>
+          <DetectChar attribute="Decimal" context="#pop!SuffixNumber" char="0"/>
+      </context>
+      <context name="SuffixNumber" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+          <DetectChar attribute="Symbol" char=':' context="#pop"/> <!-- in `[0:a]` -->
+          <StringDetect attribute="Symbol" String=".." context="#pop"/> <!-- in `0..a` -->
+          <AnyChar attribute="Error" String=".0123456789" context="#pop"/>
+          <DetectIdentifier attribute="Error" context="#pop"/>
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"  defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Variable" defStyleNum="dsVariable"/>
+      <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Data Type"    defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Attribute"       defStyleNum="dsAttribute"/>
+      <itemData name="Directive"       defStyleNum="dsPreprocessor"/>
+      <itemData name="Procedure"       defStyleNum="dsFunction"/>
+      <itemData name="Operator"       defStyleNum="dsOperator"/>
+      <itemData name="String"       defStyleNum="dsString"/>
+      <itemData name="RawString"       defStyleNum="dsSpecialString"/>
+      <itemData name="Comment"      defStyleNum="dsComment"/>
+      <itemData name="Binary"       defStyleNum="dsBaseN"  spellChecking="false"/>
+      <itemData name="Octal"        defStyleNum="dsBaseN"  spellChecking="false"/>
+      <itemData name="Hex"          defStyleNum="dsBaseN"  spellChecking="false"/>
+      <itemData name="Decimal"      defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="Float"        defStyleNum="dsFloat"  spellChecking="false"/>
+      <itemData name="Use"          defStyleNum="dsImport"/>
+      <itemData name="Error"        defStyleNum="dsError" spellChecking="false"/>
+      <itemData name="Context Variable" defStyleNum="dsKeyword" spellChecking="0"/>
+      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="String Char"  defStyleNum="dsSpecialChar"/>
+      <itemData name="Character" defStyleNum="dsChar" spellChecking="false"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="//" position="afterwhitespace" />
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
+    </comments>
+  </general>
+</language>
diff --git a/xml/opencl.xml b/xml/opencl.xml
--- a/xml/opencl.xml
+++ b/xml/opencl.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="OpenCL" section="Sources"
           version="9" kateversion="5.0"
           indenter="cstyle"
diff --git a/xml/orgmode.xml b/xml/orgmode.xml
--- a/xml/orgmode.xml
+++ b/xml/orgmode.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 <!ENTITY listbullet "[\+\-]">
 <!ENTITY checkbox "\[[ \-X]\](?=\s)">
@@ -33,20 +33,33 @@
 
 <!-- org syntax spec: https://orgmode.org/worg/dev/org-syntax.html -->
 <!-- syntax highlight: https://docs.kde.org/stable5/en/kate/katepart/highlight.html -->
-<language name="Org Mode" version="3" kateversion="5.79" section="Markup" extensions="*.org" priority="15" author="Gary Wang" license="MIT">
+<language name="Org Mode" version="9" kateversion="6.22" section="Markup" extensions="*.org" priority="15" author="Gary Wang" license="MIT">
   <highlighting>
     <list name="org-todo-keywords-todo">
       <item>TODO</item>
+      <item>NEXT</item>
     </list>
+    <list name="org-todo-keywords-doing">
+      <item>DOING</item>
+    </list>
+    <list name="org-todo-keywords-waiting">
+      <item>WAITING</item>
+    </list>
+    <list name="org-todo-keywords-canceled">
+      <item>CANCELED</item>
+      <item>CANCELLED</item>
+    </list>
     <list name="org-todo-keywords-done">
       <item>DONE</item>
     </list>
     <contexts>
       <context name="Normal Text" attribute="Normal Text" lineEndContext="#stay">
+        <StringDetect String=":PROPERTIES:" attribute="Block" context="property-block" beginRegion="PropertiesBlock" lookAhead="true"/>
         <DetectChar context="find-header" char="*" column="0" lookAhead="true"/>
         <RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/>
         <RegExpr attribute="Number List" context="numlist" String="^(\s*)\d+(?:\.|\))(\s+)" column="0"/>
         <RegExpr attribute="Comment" String="^(\s*)# .*" column="0"/>
+        <StringDetect attribute="Block" context="find-src-block" String="#+BEGIN_SRC" beginRegion="RegionBlock" column="0"/>
         <RegExpr attribute="Block" context="find-block" String="^#\+BEGIN(_\w+|:).*" beginRegion="RegionBlock" column="0"/>
         <RegExpr attribute="Babel" String="^(\s*)#\+[A-Z]+(?:\[[A-Z]+\])?:.*" column="0"/>
         <DetectChar context="find-bold-normal" char="*" lookAhead="true"/>
@@ -60,12 +73,18 @@
         <RegExpr attribute="Normal Text: Link" String="&implicitlink;"/>
       </context>
       <context name="find-header" attribute="Normal Text" lineEndContext="#pop">
-        <RegExpr attribute="Keyword" context="parse-header" String="^(?:\*){1,}\s+(?:([A-Z]+)\s+){0,1}(?:(\[#(?:[A-Z\d]+)\])\s+){0,1}(.*)\s*(\[[\d/%]+\]){0,1}\s*$" column="0" lookAhead="true"/>
+        <RegExpr context="parse-header" String="^(?:\*){1,}\s+(?:([A-Z]+)\s+){0,1}(?:(\[#(?:[A-Z\d]+)\])\s+){0,1}(.*)\s*(\[[\d/%]+\]){0,1}\s*$" column="0" lookAhead="true" beginRegion="ItemBlock" endRegion="ItemBlock"/>
       </context>
+      <context name="property-block" attribute="Block" lineEndContext="#stay">
+        <StringDetect String=":END:" attribute="Block" context="#pop" endRegion="PropertiesBlock" lookAhead="false"/>
+      </context>
       <context name="parse-header" attribute="Heading" lineEndContext="#pop">
         <RegExpr attribute="Heading" String="(?:\*){1,}\s+" lookAhead="false"/>
         <keyword String="org-todo-keywords-todo" attribute="Keyword Todo" context="#stay" />
         <keyword String="org-todo-keywords-done" attribute="Keyword Done" context="#stay" />
+        <keyword String="org-todo-keywords-doing" attribute="Keyword Doing" context="#stay" />
+        <keyword String="org-todo-keywords-waiting" attribute="Keyword Waiting" context="#stay" />
+        <keyword String="org-todo-keywords-canceled" attribute="Keyword Canceled" context="#stay" />
         <RegExpr attribute="Cookie: Priority" String="\[#(?:[A-Z\d]+)\]" lookAhead="false"/>
         <RegExpr attribute="Cookie: Statistics" String="\[[\d/%]+\]" lookAhead="false"/>
       </context>
@@ -80,6 +99,46 @@
       <context name="find-block" attribute="Block" lineEndContext="#stay">
         <StringDetect context="#pop" attribute="Block" String="#+END%1" dynamic="true" endRegion="RegionBlock" column="0"/>
       </context>
+      <!-- Source Code Syntax Highlighting Blocks -->
+      <context name="find-src-block" attribute="Block" lineEndContext="#pop">
+        <RegExpr attribute="Block" context="#pop!bash-code" String="\s*(?:bash(?:rc|_profile|_login|_logout)?|shell|sh|profile|PKGBUILD|APKBUILD|ebuild|eclass|nix)" insensitive="true"/>
+        <RegExpr attribute="Block" context="#pop!zsh-code" String="\s*(?:zsh)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!cpp-code" String="\s*(?:[ch]pp|[ch]\+\+|[ch]xx|h?cc|hh|cuh?|ino|pde|moc)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!csharp-code" String="\s*(?:cs|csharp|c\#)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!cmake-code" String="\s*(?:cmake|CMakeLists(?:\.txt)?)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!css-code" String="\s*css" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!c-code" String="\s*[ch]" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!doxygen-code" String="\s*doxygen" insensitive="true" beginRegion="code-block"/> <!-- Block comment of Doxygen -->
+        <RegExpr attribute="Block" context="#pop!email-code" String="\s*(?:email|emlx?|mbo?x)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!go-code" String="\s*go(?:lang)?" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!hamlet-code" String="\s*[wxs]?hamlet" insensitive="true" beginRegion="code-block"/> <!-- Included in the Haskell definition -->
+        <RegExpr attribute="Block" context="#pop!haskell-code" String="\s*(?:haskell|c?hs|hs\-boot)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!html-code" String="\s*(?:[sx]?html?|inc|tmpl|tpl)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!java-code" String="\s*(?:java|bsh)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!javascript-code" String="\s*(?:javascript|m?js|es6|kwinscript|julius)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!jsx-code" String="\s*(?:jsx|tsx|(?:java|type)script\-react)" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition. Also apply for TSX. -->
+        <RegExpr attribute="Block" context="#pop!json-code" String="\s*(?:json5?|gltf)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!yaml-code" String="\s*(?:ya?ml)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!matlab-code" String="\s*matlab" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!markdown-code" String="\s*(?:markdown|m?md)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!mustache-code" String="\s*(?:handlebars|hbs|mustache|mst|ractive|hogan|hulk)" insensitive="true" beginRegion="code-block"/> <!-- Included in the HTML definition -->
+        <RegExpr attribute="Block" context="#pop!perl-code" String="\s*(?:perl|p[lm]|pod|psgi|vcl)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!php-code" String="\s*(?:php[3457t]?|wml|phtml?|aw|ctp)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!python-code" String="\s*(?:python[23]?|py[23w]?|[rc]py|sconstruct|gypi?)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!qml-code" String="\s*qml(?:types)?" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!r-code" String="\s*(?:r|rprofile|rscript).?\n" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!raku-code" String="\s*(?:raku(?:mod|doc|test)?|perl6|p[lm]?6|pod6|nqp)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!rest-code" String="\s*(?:rst|rest|restructuredtext)" insensitive="true" beginRegion="code-block"/> <!-- Included in the CMake definition -->
+        <RegExpr attribute="Block" context="#pop!rust-code" String="\s*(?:rust|rs)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!ruby-code" String="\s*(?:ruby|rbx?|rjs|rake|f?cgi|gemspec|irbrc|ru|prawn|Appraisals|(?:Rake|Cap|Chef|Gem|Guard|Hobo|Vagrant||Rant|Berks|Thor|Puppet)file|rxml)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!rhtml-code" String="\s*(?:xml\.|js\.)?erb" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!mysql-code" String="\s*(?:mysql|sql|ddl)" insensitive="true" beginRegion="code-block"/> <!-- Included in the PHP definition -->
+        <RegExpr attribute="Block" context="#pop!nim-code" String="\s*(?:nims?)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!typescript-code" String="\s*(?:typescript|ts)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!xml-code" String="\s*(?:xml|xsd|xspf|tld|jsp|c?pt|dtml|rss|opml|svg|daml|rdf|ui|kcfg|qrc|wsdl|scxml|xbel|dae|sch|brd|docbook)" insensitive="true" beginRegion="code-block"/>
+        <RegExpr attribute="Block" context="#pop!odin-code" String="\s*(?:odin)" insensitive="true" beginRegion="code-block"/>
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+      </context>
       <context name="find-bold-normal" attribute="Normal Text" lineEndContext="#pop">
         <RegExpr attribute="Bold Text" context="#pop" minimal="true" String="&bold_regex;"/>
         <DetectChar attribute="Normal Text" context="#pop" char="*"/>
@@ -114,6 +173,153 @@
         <RegExpr attribute="Code" context="#pop" minimal="true" String="&inlinecode_regex;"/>
         <DetectChar attribute="Normal Text" context="#pop" char="~"/>
       </context>
+
+      <!-- Source Code Syntax Highlighting -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="bash-code" fallthroughContext="Command##Bash">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Bash" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="zsh-code" fallthroughContext="Command##Zsh">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Zsh" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cmake-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##CMake" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="c-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##C" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="cpp-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##C++" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="csharp-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##C#" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="css-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##CSS" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="doxygen-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="BlockComment##Doxygen" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="email-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Email" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="go-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Go" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="hamlet-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Hamlet" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="haskell-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Haskell" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="html-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##HTML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="java-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Java" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="javascript-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="jsx-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="Normal##JavaScript React (JSX)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="json-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##JSON" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="yaml-code" fallthroughContext="Lvl0Text##YAML">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##YAML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="markdown-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="Normal Text##Markdown"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="matlab-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Matlab" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mustache-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Mustache/Handlebars (HTML)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="perl-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Perl" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="php-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="phpsource##PHP/PHP" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="python-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Python" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="qml-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="Normal##QML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="r-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##R Script" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="raku-code" fallthroughContext="term##Raku">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="base##Raku" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rest-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##reStructuredText" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ruby-code" fallthroughContext="Expr##Ruby">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="Ruby##Ruby" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rhtml-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Ruby/Rails/RHTML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="rust-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Rust" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="mysql-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##SQL (MySQL)" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="nim-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Nim" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="typescript-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="xml-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##XML" includeAttrib="true"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="odin-code">
+        <StringDetect context="#pop" attribute="Block" String="#+END_SRC" endRegion="RegionBlock" column="0"/>
+        <IncludeRules context="##Odin" includeAttrib="true"/>
+      </context>
+
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
@@ -122,9 +328,11 @@
       <itemData name="Underline Text" defStyleNum="dsNormal" underline="true"/>
       <itemData name="Italic Text" defStyleNum="dsNormal" italic="true"/>
       <itemData name="Strikethrough Text" defStyleNum="dsNormal" strikeOut="true"/>
-      <itemData name="Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
       <itemData name="Keyword Done" defStyleNum="dsInformation" spellChecking="false"/>
       <itemData name="Keyword Todo" defStyleNum="dsAlert" spellChecking="false"/>
+      <itemData name="Keyword Doing" defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Keyword Waiting" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Keyword Canceled" defStyleNum="dsError" spellChecking="false"/>
       <itemData name="Cookie: Priority" defStyleNum="dsInformation" spellChecking="false"/>
       <itemData name="Cookie: Statistics" defStyleNum="dsInformation" spellChecking="false"/>
       <itemData name="Heading" defStyleNum="dsFunction"/>
diff --git a/xml/pascal.xml b/xml/pascal.xml
--- a/xml/pascal.xml
+++ b/xml/pascal.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Pascal"
           section="Sources" 
           version="4"
diff --git a/xml/perl.xml b/xml/perl.xml
--- a/xml/perl.xml
+++ b/xml/perl.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language [
+  <!-- https://perldoc.perl.org/perlre#Overview -->
+  <!ENTITY subst_flags "[msixpadluncgeor]*">
+]>
 <!--
    This file is part of the KDE project
    Copyright (C) 2001, 2002, 2003, 2004 Anders Lund <anders@alweb.dk>
@@ -39,9 +42,9 @@
 
    Enhance tr/// and y/// support.
 -->
-<language name="Perl" version="18" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
+<language name="Perl" alternativeNames="PL" version="23" kateversion="5.0" section="Scripts" extensions="*.pl;*.PL;*.pm" mimetype="application/x-perl;text/x-perl" priority="5" author="Anders Lund (anders@alweb.dk)" license="LGPLv2">
   <highlighting>
-    <list name="keywords">
+    <list name="control_flow">
       <item>if</item>
       <item>unless</item>
       <item>else</item>
@@ -51,11 +54,18 @@
       <item>for</item>
       <item>each</item>
       <item>foreach</item>
-      <item>next</item>
-      <item>last</item>
       <item>break</item>
       <item>continue</item>
+      <item>next</item>
+      <item>last</item>
+      <item>redo</item>
       <item>return</item>
+      <item>when</item>
+      <item>given</item>
+      <item>default</item>
+      <item>defer</item>
+    </list>
+    <list name="keywords">
       <item>my</item>
       <item>our</item>
       <item>local</item>
@@ -65,9 +75,6 @@
       <item>package</item>
       <item>sub</item>
       <item>do</item>
-      <item>given</item>
-      <item>when</item>
-      <item>default</item>
       <item>__END__</item>
       <item>__DATA__</item>
       <item>__FILE__</item>
@@ -75,42 +82,6 @@
       <item>__PACKAGE__</item>
     </list>
     <list name="operators">
-      <item>=</item>
-      <item>!=</item>
-      <item>~=</item>
-      <item>+=</item>
-      <item>-=</item>
-      <item>*=</item>
-      <item>/=</item>
-      <item>**=</item>
-      <item>|=</item>
-      <item>||=</item>
-      <item>//=</item>
-      <item>&amp;=</item>
-      <item>&amp;&amp;=</item>
-      <item>?=</item>
-      <item>+</item>
-      <item>-</item>
-      <item>*</item>
-      <!-- <item>/</item>//-->
-      <item>%</item>
-      <item>||</item>
-      <item>//</item>
-      <item>&amp;&amp;</item>
-      <item>|</item>
-      <item>&amp;</item>
-      <item>&lt;</item>
-      <item>&lt;&lt;</item>
-      <item>&gt;</item>
-      <item>&gt;&gt;</item>
-      <item>^</item>
-      <item>-&gt;</item>
-      <item>=&gt;</item>
-      <item>.</item>
-      <item>,</item>
-      <item>;</item>
-      <item>::</item>
-      <item>\</item>
       <item>and</item>
       <item>or</item>
       <item>not</item>
@@ -242,7 +213,6 @@
       <item>readline</item>
       <item>readlink</item>
       <item>recv</item>
-      <item>redo</item>
       <item>ref</item>
       <item>rename</item>
       <item>require</item>
@@ -339,25 +309,27 @@
     </list>
     <contexts>
       <context name="normal" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Keyword" context="#stay" String="^#!\/.*" column="0" />
+        <DetectSpaces />
+
         <StringDetect attribute="Keyword" context="data_handle" String="__DATA__" firstNonSpace="true" />
         <StringDetect attribute="Keyword" context="#stay" String="__END__" firstNonSpace="true"/>
         <RegExpr attribute="Keyword" context="sub_name_def" String="\bsub\s+" />
         <keyword attribute="Keyword" context="#stay" String="keywords" />
+        <keyword attribute="Control Flow" context="#stay" String="control_flow" />
         <keyword attribute="Operator" context="#stay" String="operators" />
         <keyword attribute="Function" context="#stay" String="functions" />
         <keyword attribute="Pragma" context="#stay" String="pragmas" />
         <RegExpr attribute="Pod" context="pod" String="^\=\w+(\s|$)" column="0" beginRegion="POD"/>
-        <DetectSpaces />
+
+        <RegExpr attribute="Keyword" context="#stay" String="^#!/.*" column="0" />
         <DetectChar attribute="Comment" context="comment" char="#" />
 
         <!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->
-        <RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="slash_safe_escape"/>
-        <RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="slash_safe_escape"/>
-        <RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="slash_safe_escape"/>
-        <RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="slash_safe_escape"/>
-        <RegExpr attribute="Decimal" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="slash_safe_escape"/>
-        <Int attribute="Decimal" context="slash_safe_escape" />
+        <RegExpr attribute="Float" String="\b\-?((0+|[1-9][_0-9]*)(\.([_0-9]*([eE][-+]?_*[0-9][_0-9]*)?)?|[eE][-+]?_*[0-9][_0-9]*)|0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][-+]?[0-9][_0-9]*)" context="slash_safe_escape"/>
+        <RegExpr attribute="Hex" String="\b\-?0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*" context="slash_safe_escape"/>
+        <RegExpr attribute="Bin" String="\b\-?0[bB]_*[01][_01]*" context="slash_safe_escape"/>
+        <RegExpr attribute="Octal" String="\b\-?0_*[1-7][_0-7]*" context="slash_safe_escape"/>
+        <RegExpr attribute="Decimal" String="\b\-?([1-9][_0-9]*|0+)" context="slash_safe_escape"/>
 
         <!-- Allow strings as scalar references (ex: \'string') (see bug #348765). -->
         <!-- <RegExpr attribute="Normal Text" context="#stay" String="\\([&quot;'])[^\1]" /> -->
@@ -370,10 +342,10 @@
 
         <RegExpr attribute="Keyword" context="#stay" String="&lt;[A-Z0-9_]+&gt;" />
 
-        <RegExpr attribute="Operator" context="find_here_document" String="\s*&lt;&lt;(?=\w+|\s*[&quot;'])" beginRegion="HereDocument" />
+        <RegExpr attribute="Operator" context="find_here_document" String="&lt;&lt;(?=\w+|\s*[&quot;'])" beginRegion="HereDocument" />
 
-        <RegExpr attribute="Normal Text" context="#stay" String="\s*\}\s*/{1,2}" endRegion="Block"/>
-        <RegExpr attribute="Normal Text" context="#stay" String="\s*[)\]]\s*/{1,2}" />
+        <RegExpr attribute="Normal Text" context="#stay" String="\}\s*/{1,2}" endRegion="Block"/>
+        <RegExpr attribute="Normal Text" context="#stay" String="[)\]]\s*/{1,2}" />
 
         <RegExpr attribute="Function" context="sub_name_def" String="\w+::" />
         <RegExpr attribute="Normal Text" context="#stay" String="\w+[=]" />
@@ -385,6 +357,8 @@
         <RegExpr attribute="Operator" context="find_pattern" String="\b(?:m|qr)(?=\s*[^\w\s\]})])" />
 
         <RegExpr attribute="Normal Text" context="#stay" String="[\w_]+\s*//?\=?|[&lt;&gt;&quot;':]//?\=?" />
+        <DetectIdentifier/>
+
         <!-- Avoid conflicts between operators / and // -->
         <StringDetect attribute="Normal Text" context="#stay" String="//=" />
         <Detect2Chars attribute="Normal Text" context="#stay" char="/" char1="/" />
@@ -426,12 +400,15 @@
       </context>
 
       <!-- ====== Contexts for strings ===== -->
-      <context name="ipstring_internal" attribute="String (interpolated)" lineEndContext="#stay">
-        <DetectIdentifier />
+      <context name="ipstring_internal_without_identifier" attribute="String (interpolated)" lineEndContext="#stay">
         <RegExpr attribute="String Special Character" context="#stay" String="\\c[^\s\\]|\\g(\{(\w+|\-\d+)\}|\d+)|\\k(\{\w+\}|&lt;\w+&gt;|'\w+')|\\N\{[^\{\}]*\}|\\o\{[0-7]+\}|\\[pP](\{\w+\}|P)|\\x([0-9a-fA-F]{2}|\{[0-9a-fA-F]+\})|\\[0-7]{3}|\\[1aAbBdDeEfFGhHKlLnNQrRsStuUvVwWXzZ]" />
         <RegExpr attribute="String (interpolated)" context="#stay" String="\\." />
         <RegExpr attribute="Normal Text" context="find_variable_unsafe" String="(?:[\$@]\S|%([\w\{\-\+!]|\^H))" lookAhead="true" />
       </context>
+      <context name="ipstring_internal" attribute="String (interpolated)" lineEndContext="#stay">
+        <DetectIdentifier />
+        <IncludeRules context="ipstring_internal_without_identifier" />
+      </context>
       <context name="ip_string" attribute="String (interpolated)" lineEndContext="#stay">
         <DetectChar attribute="Operator" context="#pop" char="&quot;" endRegion="String"/>
         <IncludeRules context="ipstring_internal" />
@@ -506,7 +483,7 @@
 
       <!-- ====== contexts for  s/// ====== -->
       <context name="find_subst" attribute="Normal Text" lineEndContext="#stay" >
-        <RegExpr attribute="Comment" context="#stay" String="\s+#.*" /><!-- s # == comment, look for the delim on the next line -->
+        <RegExpr attribute="Comment" context="comment" String="\s+#" /><!-- s # == comment, look for the delim on the next line -->
         <DetectChar attribute="Operator" context="subst_curlybrace_pattern" char="{" beginRegion="Pattern" />
         <DetectChar attribute="Operator" context="subst_paren_pattern" char="(" beginRegion="Pattern" />
         <DetectChar attribute="Operator" context="subst_bracket_pattern" char="[" beginRegion="Pattern" />
@@ -521,24 +498,10 @@
       <context name="subst_curlybrace_pattern" attribute="Pattern" lineEndContext="#stay">
         <RegExpr attribute="Comment" context="#stay" String="\s+#.*$" />
         <IncludeRules context="regex_pattern_internal_ip" />
-        <DetectChar attribute="Operator" context="subst_curlybrace_middle" char="}" endRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_middle" char="}" endRegion="Pattern" />
         <!-- Recursive brackets. Avoid closing brackets incorrectly (bug #364866). -->
         <DetectChar attribute="Pattern" context="subst_curlybrace_pattern_recursive" char="{" />
       </context>
-      <context name="subst_curlybrace_middle" attribute="Normal Text" lineEndContext="#stay" >
-        <DetectChar attribute="Comment" context="comment" char="#" />
-        <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" />
-      </context>
-      <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay">
-        <IncludeRules context="ipstring_internal" />
-        <DetectChar attribute="Normal Text" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
-        <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\}[cegimosx]*" endRegion="Replacement" />
-      </context>
-      <context name="subst_curlybrace_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" >
-        <DetectChar attribute="String (interpolated)" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
-        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Block" />
-        <IncludeRules context="ipstring_internal" />
-      </context>
       <context name="subst_curlybrace_pattern_recursive" attribute="Pattern" lineEndContext="#stay">
         <DetectChar attribute="Pattern" context="#pop" char="}" />
         <IncludeRules context="subst_curlybrace_pattern" />
@@ -548,52 +511,97 @@
         <DetectChar attribute="Comment" context="#pop!comment" char="#" />
       </context>
 
+      <!-- Fully parse s () (). -->
       <context name="subst_paren_pattern" attribute="Pattern" lineEndContext="#stay">
         <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />
-        <DetectChar attribute="Operator" context="subst_paren_replace" char=")" endRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_middle" char=")" endRegion="Pattern" />
         <!-- Round brackets of RegExp pattern inside -->
         <DetectChar attribute="Pattern Internal Operator" context="subst_paren_pattern_internal_recursive" char="(" />
         <IncludeRules context="regex_pattern_internal_ip" />
       </context>
-      <context name="subst_paren_replace" attribute="String (interpolated)" lineEndContext="#stay">
-        <IncludeRules context="ipstring_internal" />
-        <DetectChar attribute="Operator" context="#stay" char="(" beginRegion="Replacement" />
-        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\)[cegimosx]*" endRegion="Replacement" />
-      </context>
       <context name="subst_paren_pattern_internal_recursive" attribute="Pattern" lineEndContext="#stay">
         <DetectChar attribute="Pattern Internal Operator" context="#pop" char=")" />
         <IncludeRules context="subst_paren_pattern" />
       </context>
 
+      <!-- Fully parse s [] []. -->
       <context name="subst_bracket_pattern" attribute="Pattern" lineEndContext="#stay">
         <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />
         <IncludeRules context="regex_pattern_internal_ip" />
-        <DetectChar attribute="Operator" context="subst_bracket_replace" char="]" endRegion="Pattern" />
+        <DetectChar attribute="Operator" context="subst_middle" char="]" endRegion="Pattern" />
       </context>
+
+      <context name="subst_middle" attribute="Normal Text" lineEndContext="#stay" >
+        <DetectChar attribute="Comment" context="comment" char="#" />
+        <DetectChar attribute="Operator" context="subst_curlybrace_replace" char="{" beginRegion="Replacement" />
+        <DetectChar attribute="Operator" context="subst_bracket_replace" char="[" beginRegion="Replacement" />
+        <DetectChar attribute="Operator" context="subst_paren_replace" char="(" beginRegion="Replacement" />
+        <DetectChar attribute="Operator" context="#pop!subst_sq_replace" char="'" beginRegion="Replacement" />
+        <DetectSpaces/>
+        <RegExpr attribute="Operator" context="#pop!subst_slash_replace" String="([^\w])" beginRegion="Replacement" />
+        <!-- partially buggy if the character is in a set, a variable, etc. -->
+        <RegExpr attribute="Operator" context="#pop!subst_any_replace" String="(.)" beginRegion="Replacement" />
+      </context>
+      <context name="subst_any_replace" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="%1&subst_flags;" dynamic="true" endRegion="Replacement" />
+        <IncludeRules context="ipstring_internal_without_identifier" />
+      </context>
+
+      <!-- {} replacement -->
+      <context name="subst_curlybrace_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Normal Text" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\}&subst_flags;" endRegion="Replacement" />
+      </context>
+      <context name="subst_curlybrace_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" >
+        <DetectChar attribute="String (interpolated)" context="subst_curlybrace_replace_recursive" char="{" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="Block" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <!-- () replacement -->
+      <context name="subst_paren_replace" attribute="String (interpolated)" lineEndContext="#stay">
+        <IncludeRules context="ipstring_internal" />
+        <DetectChar attribute="Normal Text" context="subst_paren_replace_recursive" char="(" beginRegion="Block" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\)&subst_flags;" endRegion="Replacement" />
+      </context>
+      <context name="subst_paren_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" >
+        <DetectChar attribute="String (interpolated)" context="subst_paren_replace_recursive" char="(" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#pop" char=")" endRegion="Block" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
+
+      <!-- [] replacement -->
       <context name="subst_bracket_replace" attribute="String (interpolated)" lineEndContext="#stay">
         <IncludeRules context="ipstring_internal" />
-        <DetectChar attribute="Operator" context="#stay" char="[" beginRegion="Replacement" />
-        <RegExpr attribute="Operator" context="#pop#pop#pop" String="\][cegimosx]*" endRegion="Replacement" />
+        <DetectChar attribute="Normal Text" context="subst_bracket_replace_recursive" char="[" beginRegion="Block" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop#pop" String="\]&subst_flags;" endRegion="Replacement" />
       </context>
+      <context name="subst_bracket_replace_recursive" attribute="String (interpolated)" lineEndContext="#stay" >
+        <DetectChar attribute="String (interpolated)" context="subst_bracket_replace_recursive" char="[" beginRegion="Block" />
+        <DetectChar attribute="Normal Text" context="#pop" char="]" endRegion="Block" />
+        <IncludeRules context="ipstring_internal" />
+      </context>
 
+      <!-- Fully parse s / / /. -->
       <context name="subst_slash_pattern" attribute="Pattern" lineEndContext="#stay" dynamic="true">
         <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\$(?=%1)" dynamic="true" />
         <RegExpr attribute="Operator" context="subst_slash_replace" String="(%1)" dynamic="true" endRegion="Pattern" beginRegion="Replacement" />
         <IncludeRules context="regex_pattern_internal_ip" />
       </context>
       <context name="subst_slash_replace" attribute="String (interpolated)" lineEndContext="#stay" dynamic="true">
-        <RegExpr attribute="Operator" context="#pop#pop#pop" String="%1[cegimosx]*" dynamic="true" endRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="%1&subst_flags;" dynamic="true" endRegion="Replacement" />
         <IncludeRules context="ipstring_internal" />
-
       </context>
 
+      <!-- Fully parse s ' ' '. -->
       <context name="subst_sq_pattern" attribute="Pattern" lineEndContext="#stay">
         <DetectSpaces attribute="Pattern" context="subst_maybe_comment" />
         <IncludeRules context="regex_pattern_internal" />
         <DetectChar attribute="Operator" context="subst_sq_replace" char="'" endRegion="Pattern" beginRegion="Pattern" />
       </context>
       <context name="subst_sq_replace" attribute="String" lineEndContext="#stay">
-        <RegExpr attribute="Operator" context="#pop#pop#pop" String="'[cegimosx]*" endRegion="Replacement" />
+        <RegExpr attribute="Operator" context="#pop#pop#pop" String="'&subst_flags;" endRegion="Replacement" />
       </context>
 
       <context name="tr" attribute="Pattern" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" >
@@ -715,14 +723,11 @@
         <AnyChar attribute="Operator" context="#pop" String="$@%*" />
       </context>
       <context name="var_detect"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-        <IncludeRules context="var_detect_rules" />
+        <IncludeRules context="var_detect_unsafe" />
         <IncludeRules context="slash_safe_escape" />
       </context>
       <context name="var_detect_unsafe"  attribute="Data Type" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-        <IncludeRules context="var_detect_rules" />
-      </context>
-      <context name="var_detect_rules" attribute="Data Type" lineEndContext="#pop#pop" >
-        <RegExpr attribute="Data Type" context="#stay" String="[\w_]+" />
+        <RegExpr attribute="Data Type" context="#stay" String="(?&lt;![0-9])[\w_]+" />
         <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
         <DetectChar attribute="Operator" context="#stay" char="'" />
         <Detect2Chars attribute="Normal Text" context="#stay" char="-" char1="&gt;" />
@@ -799,9 +804,10 @@
       </context>
 
       <context name="sub_name_def" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Normal Text" context="sub_arg_definition" char="(" />
         <RegExpr attribute="Function" context="#stay" String="\w+" />
         <RegExpr attribute="Normal Text" context="find_variable" String="\$\S" lookAhead="true" />
-        <RegExpr attribute="Normal Text" context="sub_arg_definition" String="\s*\(" />
         <Detect2Chars attribute="Normal Text" context="#stay" char=":" char1=":" />
       </context>
 
@@ -829,23 +835,24 @@
     </contexts>
     <itemDatas>
       <itemData name="Normal Text"               defStyleNum="dsNormal" />
-      <itemData name="Keyword"                   defStyleNum="dsKeyword" />
-      <itemData name="Pragma"                    defStyleNum="dsKeyword" />
-      <itemData name="Function"                  defStyleNum="dsFunction" />
-      <itemData name="Operator"                  defStyleNum="dsOthers" bold="1" /> <!-- #008000 -->
-      <itemData name="Data Type"                 defStyleNum="dsDataType" />
+      <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Pragma"                    defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Operator"                  defStyleNum="dsOthers" bold="1" spellChecking="false"/> <!-- #008000 -->
+      <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>
       <itemData name="Special Variable"          defStyleNum="dsWarning" bold="0" italic="0" /> <!-- #C00000 -->
-      <itemData name="Decimal"                   defStyleNum="dsDecVal" />
-      <itemData name="Octal"                     defStyleNum="dsBaseN" />
-      <itemData name="Hex"                       defStyleNum="dsBaseN" />
-      <itemData name="Bin"                       defStyleNum="dsBaseN" />
-      <itemData name="Float"                     defStyleNum="dsFloat" />
+      <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Bin"                       defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>
       <itemData name="String"                    defStyleNum="dsSpecialString" /> <!-- #FF6C6C -->
       <itemData name="String (interpolated)"     defStyleNum="dsString" />
       <itemData name="String Special Character"  defStyleNum="dsChar" />
-      <itemData name="Pattern"                   defStyleNum="dsOthers" />
-      <itemData name="Pattern Internal Operator" defStyleNum="dsChar" />
-      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" />
+      <itemData name="Pattern"                   defStyleNum="dsOthers"  spellChecking="false"/>
+      <itemData name="Pattern Internal Operator" defStyleNum="dsChar"  spellChecking="false"/>
+      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN"  spellChecking="false"/>
       <itemData name="Data"                      defStyleNum="dsNormal" />
       <itemData name="Comment"                   defStyleNum="dsComment" />
       <itemData name="Pod"                       defStyleNum="dsComment" />
@@ -853,7 +860,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="#" />
+      <comment name="singleLine" start="#" position="afterwhitespace"/>
     </comments>
     <keywords casesensitive="1" />
   </general>
diff --git a/xml/php.xml b/xml/php.xml
--- a/xml/php.xml
+++ b/xml/php.xml
@@ -69,7 +69,7 @@
 - Added alternative syntax control structures, and named logical operators ("and", "or", and "xor") (by Nicola Gigante).
 
 -->
-<!DOCTYPE language SYSTEM "language.dtd" [
+<!DOCTYPE language [
   <!ENTITY types "integer|bool|boolean|float|double|real|string|array|object">
   <!ENTITY varid "[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*">
   <!ENTITY LNUM  "[0-9]++(_[0-9]++)*+">
@@ -77,10 +77,10 @@
   <!ENTITY float "\b&LNUM;(\.(&LNUM;)?(&EXPONENT;)?|&EXPONENT;)|\.&LNUM;(&EXPONENT;)?">
 ]>
 
-<language name="PHP/PHP" indenter="cstyle" version="22" kateversion="5.53" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
+<language name="PHP/PHP" indenter="cstyle" version="29" kateversion="5.79" section="Scripts" extensions="" priority="5" mimetype="" hidden="true">
   <highlighting>
     <!-- https://php.watch/versions -->
-    <!-- Based on 8.1 -->
+    <!-- Based on 8.3 (https://php.watch/versions/8.3 and https://stitcher.io/blog/new-in-php-83) -->
 
     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->
     <list name="control structures">
@@ -208,6 +208,11 @@
 
     <!-- https://secure.php.net/manual/en/reserved.keywords.php -->
     <!-- https://secure.php.net/manual/en/reserved.constants.php -->
+    <!--
+      Use this command line to extract page constants:
+
+      wget -O- ${url} | sed -nE 's#.*<strong><code>([^< ]+) *</code></strong>.*#      <item>\1</item>#p'
+    -->
     <list name="constants">
       <!-- PHP 5.6 (Compile-Time Constants) -->
       <item>__CLASS__</item>
@@ -300,8 +305,6 @@
       <item>MYSQLI_RPL_SLAVE</item>
       <item>M_ABSTRACT</item>
       <item>M_FINAL</item>
-      <item>M_LN10</item>
-      <item>M_LOG10E</item>
       <item>M_PRIVATE</item>
       <item>M_PROTECTED</item>
       <item>M_PUBLIC</item>
@@ -692,8 +695,13 @@
       <item>CRYPT_STD_DES</item>
       <item>CRYPT_SHA256</item>
       <item>CRYPT_SHA512</item>
+      <item>CURLALTSVC_H1</item>
+      <item>CURLALTSVC_H2</item>
+      <item>CURLALTSVC_H3</item>
+      <item>CURLALTSVC_READONLYFILE</item>
       <item>CURLAUTH_ANY</item>
       <item>CURLAUTH_ANYSAFE</item>
+      <item>CURLAUTH_AWS_SIGV4</item>
       <item>CURLAUTH_BASIC</item>
       <item>CURLAUTH_BEARER</item>
       <item>CURLAUTH_DIGEST</item>
@@ -754,6 +762,7 @@
       <item>CURLE_OPERATION_TIMEOUTED</item>
       <item>CURLE_OUT_OF_MEMORY</item>
       <item>CURLE_PARTIAL_FILE</item>
+      <item>CURLE_PROXY</item>
       <item>CURLE_READ_ERROR</item>
       <item>CURLE_RECV_ERROR</item>
       <item>CURLE_SEND_ERROR</item>
@@ -777,6 +786,7 @@
       <item>CURLFTPAUTH_DEFAULT</item>
       <item>CURLFTPAUTH_SSL</item>
       <item>CURLFTPAUTH_TLS</item>
+      <item>CURLFTPMETHOD_DEFAULT</item>
       <item>CURLFTPSSL_ALL</item>
       <item>CURLFTPSSL_CONTROL</item>
       <item>CURLFTPSSL_NONE</item>
@@ -786,6 +796,8 @@
       <item>CURLFTP_CREATE_DIR_RETRY</item>
       <item>CURLHEADER_SEPARATE</item>
       <item>CURLHEADER_UNIFIED</item>
+      <item>CURLHSTS_ENABLE</item>
+      <item>CURLHSTS_READONLYFILE</item>
       <item>CURLINFO_APPCONNECT_TIME_T</item>
       <item>CURLINFO_CONNECT_TIME</item>
       <item>CURLINFO_CONNECT_TIME_T</item>
@@ -794,6 +806,7 @@
       <item>CURLINFO_CONTENT_LENGTH_UPLOAD</item>
       <item>CURLINFO_CONTENT_LENGTH_UPLOAD_T</item>
       <item>CURLINFO_CONTENT_TYPE</item>
+      <item>CURLINFO_EFFECTIVE_METHOD</item>
       <item>CURLINFO_EFFECTIVE_URL</item>
       <item>CURLINFO_FILETIME</item>
       <item>CURLINFO_FILETIME_T</item>
@@ -811,13 +824,16 @@
       <item>CURLINFO_PRIMARY_PORT</item>
       <item>CURLINFO_PRIVATE</item>
       <item>CURLINFO_PROTOCOL</item>
+      <item>CURLINFO_PROXY_ERROR</item>
       <item>CURLINFO_PROXY_SSL_VERIFYRESULT</item>
       <item>CURLINFO_REDIRECT_COUNT</item>
       <item>CURLINFO_REDIRECT_TIME</item>
       <item>CURLINFO_REDIRECT_TIME_T</item>
       <item>CURLINFO_REDIRECT_URL</item>
+      <item>CURLINFO_REFERER</item>
       <item>CURLINFO_REQUEST_SIZE</item>
       <item>CURLINFO_RESPONSE_CODE</item>
+      <item>CURLINFO_RETRY_AFTER</item>
       <item>CURLINFO_SCHEME</item>
       <item>CURLINFO_SIZE_DOWNLOAD</item>
       <item>CURLINFO_SIZE_DOWNLOAD_T</item>
@@ -835,6 +851,7 @@
       <item>CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE</item>
       <item>CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE</item>
       <item>CURLMOPT_MAXCONNECTS</item>
+      <item>CURLMOPT_MAX_CONCURRENT_STREAMS</item>
       <item>CURLMOPT_MAX_HOST_CONNECTIONS</item>
       <item>CURLMOPT_MAX_PIPELINE_LENGTH</item>
       <item>CURLMOPT_MAX_TOTAL_CONNECTIONS</item>
@@ -848,10 +865,14 @@
       <item>CURLM_OK</item>
       <item>CURLM_OUT_OF_MEMORY</item>
       <item>CURLOPT_ABSTRACT_UNIX_SOCKET</item>
+      <item>CURLOPT_ALTSVC</item>
+      <item>CURLOPT_ALTSVC_CTRL</item>
       <item>CURLOPT_AUTOREFERER</item>
+      <item>CURLOPT_AWS_SIGV4</item>
       <item>CURLOPT_BINARYTRANSFER</item>
       <item>CURLOPT_BUFFERSIZE</item>
       <item>CURLOPT_CAINFO</item>
+      <item>CURLOPT_CAINFO_BLOB</item>
       <item>CURLOPT_CAPATH</item>
       <item>CURLOPT_CERTINFO</item>
       <item>CURLOPT_CLOSEPOLICY</item>
@@ -868,13 +889,16 @@
       <item>CURLOPT_CUSTOMREQUEST</item>
       <item>CURLOPT_DEFAULT_PROTOCOL</item>
       <item>CURLOPT_DISALLOW_USERNAME_IN_URL</item>
-      <item>CURLOPT_DOH_URL</item>
       <item>CURLOPT_DNS_CACHE_TIMEOUT</item>
       <item>CURLOPT_DNS_INTERFACE</item>
       <item>CURLOPT_DNS_LOCAL_IP4</item>
       <item>CURLOPT_DNS_LOCAL_IP6</item>
       <item>CURLOPT_DNS_SHUFFLE_ADDRESSES</item>
       <item>CURLOPT_DNS_USE_GLOBAL_CACHE</item>
+      <item>CURLOPT_DOH_SSL_VERIFYHOST</item>
+      <item>CURLOPT_DOH_SSL_VERIFYPEER</item>
+      <item>CURLOPT_DOH_SSL_VERIFYSTATUS</item>
+      <item>CURLOPT_DOH_URL</item>
       <item>CURLOPT_EGDSOCKET</item>
       <item>CURLOPT_ENCODING</item>
       <item>CURLOPT_EXPECT_100_TIMEOUT_MS</item>
@@ -899,6 +923,8 @@
       <item>CURLOPT_HEADER</item>
       <item>CURLOPT_HEADERFUNCTION</item>
       <item>CURLOPT_HEADEROPT</item>
+      <item>CURLOPT_HSTS</item>
+      <item>CURLOPT_HSTS_CTRL</item>
       <item>CURLOPT_HTTP09_ALLOWED</item>
       <item>CURLOPT_HTTP200ALIASES</item>
       <item>CURLOPT_HTTPAUTH</item>
@@ -910,13 +936,18 @@
       <item>CURLOPT_INFILESIZE</item>
       <item>CURLOPT_INTERFACE</item>
       <item>CURLOPT_IPRESOLVE</item>
+      <item>CURLOPT_ISSUERCERT_BLOB</item>
       <item>CURLOPT_KEEP_SENDING_ON_ERROR</item>
       <item>CURLOPT_KEYPASSWD</item>
       <item>CURLOPT_KRB4LEVEL</item>
       <item>CURLOPT_LOGIN_OPTIONS</item>
       <item>CURLOPT_LOW_SPEED_LIMIT</item>
       <item>CURLOPT_LOW_SPEED_TIME</item>
+      <item>CURLOPT_MAIL_RCPT_ALLLOWFAILS</item>
+      <item>CURLOPT_MAXAGE_CONN</item>
       <item>CURLOPT_MAXCONNECTS</item>
+      <item>CURLOPT_MAXFILESIZE_LARGE</item>
+      <item>CURLOPT_MAXLIFETIME_CONN</item>
       <item>CURLOPT_MAXREDIRS</item>
       <item>CURLOPT_MAX_RECV_SPEED_LARGE</item>
       <item>CURLOPT_MAX_SEND_SPEED_LARGE</item>
@@ -945,15 +976,20 @@
       <item>CURLOPT_PROXYTYPE</item>
       <item>CURLOPT_PROXYUSERPWD</item>
       <item>CURLOPT_PROXY_CAINFO</item>
+      <item>CURLOPT_PROXY_CAINFO_BLOB</item>
       <item>CURLOPT_PROXY_CAPATH</item>
       <item>CURLOPT_PROXY_CRLFILE</item>
+      <item>CURLOPT_PROXY_ISSUERCERT</item>
+      <item>CURLOPT_PROXY_ISSUERCERT_BLOB</item>
       <item>CURLOPT_PROXY_KEYPASSWD</item>
       <item>CURLOPT_PROXY_PINNEDPUBLICKEY</item>
       <item>CURLOPT_PROXY_SERVICE_NAME</item>
       <item>CURLOPT_PROXY_SSLCERT</item>
       <item>CURLOPT_PROXY_SSLCERTTYPE</item>
+      <item>CURLOPT_PROXY_SSLCERT_BLOB</item>
       <item>CURLOPT_PROXY_SSLKEY</item>
       <item>CURLOPT_PROXY_SSLKEYTYPE</item>
+      <item>CURLOPT_PROXY_SSLKEY_BLOB</item>
       <item>CURLOPT_PROXY_SSLVERSION</item>
       <item>CURLOPT_PROXY_SSL_CIPHER_LIST</item>
       <item>CURLOPT_PROXY_SSL_OPTIONS</item>
@@ -975,6 +1011,7 @@
       <item>CURLOPT_RESUME_FROM</item>
       <item>CURLOPT_RETURNTRANSFER</item>
       <item>CURLOPT_SAFE_UPLOAD</item>
+      <item>CURLOPT_SASL_AUTHZID</item>
       <item>CURLOPT_SASL_IR</item>
       <item>CURLOPT_SERVICE_NAME</item>
       <item>CURLOPT_SHARE</item>
@@ -982,18 +1019,22 @@
       <item>CURLOPT_SSH_AUTH_TYPES</item>
       <item>CURLOPT_SSH_COMPRESSION</item>
       <item>CURLOPT_SSH_HOST_PUBLIC_KEY_MD5</item>
+      <item>CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256</item>
       <item>CURLOPT_SSH_PRIVATE_KEYFILE</item>
       <item>CURLOPT_SSH_PUBLIC_KEYFILE</item>
       <item>CURLOPT_SSLCERT</item>
       <item>CURLOPT_SSLCERTPASSWD</item>
       <item>CURLOPT_SSLCERTTYPE</item>
+      <item>CURLOPT_SSLCERT_BLOB</item>
       <item>CURLOPT_SSLENGINE</item>
       <item>CURLOPT_SSLENGINE_DEFAULT</item>
       <item>CURLOPT_SSLKEY</item>
       <item>CURLOPT_SSLKEYPASSWD</item>
       <item>CURLOPT_SSLKEYTYPE</item>
+      <item>CURLOPT_SSLKEY_BLOB</item>
       <item>CURLOPT_SSLVERSION</item>
       <item>CURLOPT_SSL_CIPHER_LIST</item>
+      <item>CURLOPT_SSL_EC_CURVES</item>
       <item>CURLOPT_SSL_ENABLE_ALPN</item>
       <item>CURLOPT_SSL_ENABLE_NPN</item>
       <item>CURLOPT_SSL_FALSESTART</item>
@@ -1019,7 +1060,9 @@
       <item>CURLOPT_TRANSFERTEXT</item>
       <item>CURLOPT_UNIX_SOCKET_PATH</item>
       <item>CURLOPT_UNRESTRICTED_AUTH</item>
+      <item>CURLOPT_UPKEEP_INTERVAL_MS</item>
       <item>CURLOPT_UPLOAD</item>
+      <item>CURLOPT_UPLOAD_BUFFERSIZE</item>
       <item>CURLOPT_URL</item>
       <item>CURLOPT_USERAGENT</item>
       <item>CURLOPT_USERNAME</item>
@@ -1027,26 +1070,8 @@
       <item>CURLOPT_VERBOSE</item>
       <item>CURLOPT_WRITEFUNCTION</item>
       <item>CURLOPT_WRITEHEADER</item>
+      <item>CURLOPT_XFERINFOFUNCTION</item>
       <item>CURLOPT_XOAUTH2_BEARER</item>
-      <item>CURLSSH_AUTH_GSSAPI</item>
-      <item>CURL_HTTP_VERSION_2_0</item>
-      <item>CURL_LOCK_DATA_CONNECT</item>
-      <item>CURL_LOCK_DATA_PSL</item>
-      <item>CURL_VERSION_ALTSVC</item>
-      <item>CURL_VERSION_ASYNCHDNS</item>
-      <item>CURL_VERSION_BROTLI</item>
-      <item>CURL_VERSION_CONV</item>
-      <item>CURL_VERSION_CURLDEBUG</item>
-      <item>CURL_VERSION_DEBUG</item>
-      <item>CURL_VERSION_GSSAPI</item>
-      <item>CURL_VERSION_GSSNEGOTIATE</item>
-      <item>CURL_VERSION_IDN</item>
-      <item>CURL_VERSION_MULTI_SSL</item>
-      <item>CURL_VERSION_NTLM</item>
-      <item>CURL_VERSION_NTLM_WB</item>
-      <item>CURL_VERSION_SPNEGO</item>
-      <item>CURL_VERSION_SSPI</item>
-      <item>CURL_VERSION_TLSAUTH_SRP</item>
       <item>CURLPAUSE_ALL</item>
       <item>CURLPAUSE_CONT</item>
       <item>CURLPAUSE_RECV</item>
@@ -1056,6 +1081,7 @@
       <item>CURLPIPE_HTTP1</item>
       <item>CURLPIPE_MULTIPLEX</item>
       <item>CURLPIPE_NOTHING</item>
+      <item>CURLPROTO_MQTT</item>
       <item>CURLPROTO_SMB</item>
       <item>CURLPROTO_SMBS</item>
       <item>CURLPROXY_HTTP</item>
@@ -1065,27 +1091,69 @@
       <item>CURLPROXY_SOCKS4A</item>
       <item>CURLPROXY_SOCKS5</item>
       <item>CURLPROXY_SOCKS5_HOSTNAME</item>
+      <item>CURLPX_BAD_ADDRESS_TYPE</item>
+      <item>CURLPX_BAD_VERSION</item>
+      <item>CURLPX_CLOSED</item>
+      <item>CURLPX_GSSAPI</item>
+      <item>CURLPX_GSSAPI_PERMSG</item>
+      <item>CURLPX_GSSAPI_PROTECTION</item>
+      <item>CURLPX_IDENTD</item>
+      <item>CURLPX_IDENTD_DIFFER</item>
+      <item>CURLPX_LONG_HOSTNAME</item>
+      <item>CURLPX_LONG_PASSWD</item>
+      <item>CURLPX_LONG_USER</item>
+      <item>CURLPX_NO_AUTH</item>
+      <item>CURLPX_OK</item>
+      <item>CURLPX_RECV_ADDRESS</item>
+      <item>CURLPX_RECV_AUTH</item>
+      <item>CURLPX_RECV_CONNECT</item>
+      <item>CURLPX_RECV_REQACK</item>
+      <item>CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED</item>
+      <item>CURLPX_REPLY_COMMAND_NOT_SUPPORTED</item>
+      <item>CURLPX_REPLY_CONNECTION_REFUSED</item>
+      <item>CURLPX_REPLY_GENERAL_SERVER_FAILURE</item>
+      <item>CURLPX_REPLY_HOST_UNREACHABLE</item>
+      <item>CURLPX_REPLY_NETWORK_UNREACHABLE</item>
+      <item>CURLPX_REPLY_NOT_ALLOWED</item>
+      <item>CURLPX_REPLY_TTL_EXPIRED</item>
+      <item>CURLPX_REPLY_UNASSIGNED</item>
+      <item>CURLPX_REQUEST_FAILED</item>
+      <item>CURLPX_RESOLVE_HOST</item>
+      <item>CURLPX_SEND_AUTH</item>
+      <item>CURLPX_SEND_CONNECT</item>
+      <item>CURLPX_SEND_REQUEST</item>
+      <item>CURLPX_UNKNOWN_FAIL</item>
+      <item>CURLPX_UNKNOWN_MODE</item>
+      <item>CURLPX_USER_REJECTED</item>
       <item>CURLSHOPT_SHARE</item>
       <item>CURLSHOPT_UNSHARE</item>
       <item>CURLSSH_AUTH_AGENT</item>
       <item>CURLSSH_AUTH_ANY</item>
       <item>CURLSSH_AUTH_DEFAULT</item>
+      <item>CURLSSH_AUTH_GSSAPI</item>
       <item>CURLSSH_AUTH_HOST</item>
       <item>CURLSSH_AUTH_KEYBOARD</item>
       <item>CURLSSH_AUTH_NONE</item>
       <item>CURLSSH_AUTH_PASSWORD</item>
       <item>CURLSSH_AUTH_PUBLICKEY</item>
       <item>CURLSSLOPT_ALLOW_BEAST</item>
+      <item>CURLSSLOPT_AUTO_CLIENT_CERT</item>
+      <item>CURLSSLOPT_NATIVE_CA</item>
+      <item>CURLSSLOPT_NO_PARTIALCHAIN</item>
       <item>CURLSSLOPT_NO_REVOKE</item>
+      <item>CURLSSLOPT_REVOKE_BEST_EFFORT</item>
       <item>CURLVERSION_NOW</item>
       <item>CURL_HTTP_VERSION_1_0</item>
       <item>CURL_HTTP_VERSION_1_1</item>
       <item>CURL_HTTP_VERSION_2</item>
       <item>CURL_HTTP_VERSION_2TLS</item>
+      <item>CURL_HTTP_VERSION_2_0</item>
       <item>CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE</item>
       <item>CURL_HTTP_VERSION_NONE</item>
+      <item>CURL_LOCK_DATA_CONNECT</item>
       <item>CURL_LOCK_DATA_COOKIE</item>
       <item>CURL_LOCK_DATA_DNS</item>
+      <item>CURL_LOCK_DATA_PSL</item>
       <item>CURL_LOCK_DATA_SSL_SESSION</item>
       <item>CURL_MAX_READ_SIZE</item>
       <item>CURL_NETRC_IGNORED</item>
@@ -1114,15 +1182,37 @@
       <item>CURL_TIMECOND_IFMODSINCE</item>
       <item>CURL_TIMECOND_IFUNMODSINCE</item>
       <item>CURL_TIMECOND_LASTMOD</item>
+      <item>CURL_TIMECOND_NONE</item>
+      <item>CURL_VERSION_ALTSVC</item>
+      <item>CURL_VERSION_ASYNCHDNS</item>
+      <item>CURL_VERSION_BROTLI</item>
+      <item>CURL_VERSION_CONV</item>
+      <item>CURL_VERSION_CURLDEBUG</item>
+      <item>CURL_VERSION_DEBUG</item>
+      <item>CURL_VERSION_GSASL</item>
+      <item>CURL_VERSION_GSSAPI</item>
+      <item>CURL_VERSION_GSSNEGOTIATE</item>
+      <item>CURL_VERSION_HSTS</item>
       <item>CURL_VERSION_HTTP2</item>
+      <item>CURL_VERSION_HTTP3</item>
       <item>CURL_VERSION_HTTPS_PROXY</item>
+      <item>CURL_VERSION_IDN</item>
       <item>CURL_VERSION_IPV6</item>
       <item>CURL_VERSION_KERBEROS4</item>
       <item>CURL_VERSION_KERBEROS5</item>
+      <item>CURL_VERSION_LARGEFILE</item>
       <item>CURL_VERSION_LIBZ</item>
+      <item>CURL_VERSION_MULTI_SSL</item>
+      <item>CURL_VERSION_NTLM</item>
+      <item>CURL_VERSION_NTLM_WB</item>
       <item>CURL_VERSION_PSL</item>
+      <item>CURL_VERSION_SPNEGO</item>
       <item>CURL_VERSION_SSL</item>
+      <item>CURL_VERSION_SSPI</item>
+      <item>CURL_VERSION_TLSAUTH_SRP</item>
+      <item>CURL_VERSION_UNICODE</item>
       <item>CURL_VERSION_UNIX_SOCKETS</item>
+      <item>CURL_VERSION_ZSTD</item>
       <item>CURL_WRAPPERS_ENABLED</item>
       <item>CURRENCY_SYMBOL</item>
       <item>CYRUS_CALLBACK_NOLITERAL</item>
@@ -1173,6 +1263,8 @@
       <item>DBASE_TYPE_DBASE</item>
       <item>DBASE_TYPE_FOXPRO</item>
       <item>DBASE_VERSION</item>
+      <item>DBA_LMDB_USE_SUB_DIR</item>
+      <item>DBA_LMDB_NO_SUB_DIR</item>
       <item>DBPLUS_ERR_CLOSE</item>
       <item>DBPLUS_ERR_CORRUPT_TUPLE</item>
       <item>DBPLUS_ERR_CRC</item>
@@ -1238,8 +1330,10 @@
       <item>DECIMAL_POINT</item>
       <item>DELETED_EVENT</item>
       <item>DIRECTORY_SEPARATOR</item>
+      <item>DISP_E_BADINDEX</item>
       <item>DISP_E_DIVBYZERO</item>
       <item>DISP_E_OVERFLOW</item>
+      <item>DISP_E_PARAMNOTFOUND</item>
       <item>DNS_A</item>
       <item>DNS_AAAA</item>
       <item>DNS_ALL</item>
@@ -1508,6 +1602,7 @@
       <item>FILTER_FLAG_ENCODE_AMP</item>
       <item>FILTER_FLAG_ENCODE_HIGH</item>
       <item>FILTER_FLAG_ENCODE_LOW</item>
+      <item>FILTER_FLAG_GLOBAL_RANGE</item>
       <item>FILTER_FLAG_HOSTNAME</item>
       <item>FILTER_FLAG_HOST_REQUIRED</item>
       <item>FILTER_FLAG_IPV4</item>
@@ -2158,6 +2253,8 @@
       <item>LIBXML_XINCLUDE</item>
       <item>LIBXSLT_DOTTED_VERSION</item>
       <item>LIBXSLT_VERSION</item>
+      <item>LOCALE_NEUTRAL</item>
+      <item>LOCAL_CREDS_PERSISTENT</item>
       <item>LOCK_EX</item>
       <item>LOCK_NB</item>
       <item>LOCK_SH</item>
@@ -2372,6 +2469,7 @@
       <item>MSG_OOB</item>
       <item>MSG_PEEK</item>
       <item>MSG_WAITALL</item>
+      <item>MSG_ZEROCOPY</item>
       <item>MSQL_ASSOC</item>
       <item>MSQL_BOTH</item>
       <item>MSQL_NUM</item>
@@ -3203,7 +3301,6 @@
       <item>PGSQL_CONNECTION_SSL_STARTUP</item>
       <item>PGSQL_CONNECTION_STARTED</item>
       <item>PGSQL_CONNECT_ASYNC</item>
-      <item>PGSQL_CONNECT_ASYNC</item>
       <item>PGSQL_CONNECT_FORCE_NEW</item>
       <item>PGSQL_CONV_FORCE_NULL</item>
       <item>PGSQL_CONV_IGNORE_DEFAULT</item>
@@ -3240,7 +3337,6 @@
       <item>PGSQL_FATAL_ERROR</item>
       <item>PGSQL_LIBPQ_VERSION</item>
       <item>PGSQL_LIBPQ_VERSION_STR</item>
-      <item>PGSQL_LIBPQ_VERSION_STR</item>
       <item>PGSQL_NONFATAL_ERROR</item>
       <item>PGSQL_NOTICE_ALL</item>
       <item>PGSQL_NOTICE_CLEAR</item>
@@ -3343,12 +3439,14 @@
       <item>POSIX_RLIMIT_DATA</item>
       <item>POSIX_RLIMIT_FSIZE</item>
       <item>POSIX_RLIMIT_INFINITY</item>
+      <item>POSIX_RLIMIT_KQUEUES</item>
       <item>POSIX_RLIMIT_LOCKS</item>
       <item>POSIX_RLIMIT_MEMLOCK</item>
       <item>POSIX_RLIMIT_MSGQUEUE</item>
       <item>POSIX_RLIMIT_NICE</item>
       <item>POSIX_RLIMIT_NOFILE</item>
       <item>POSIX_RLIMIT_NPROC</item>
+      <item>POSIX_RLIMIT_NPTS</item>
       <item>POSIX_RLIMIT_RSS</item>
       <item>POSIX_RLIMIT_RTPRIO</item>
       <item>POSIX_RLIMIT_RTTIME</item>
@@ -3655,6 +3753,7 @@
       <item>SCANDIR_SORT_ASCENDING</item>
       <item>SCANDIR_SORT_DESCENDING</item>
       <item>SCANDIR_SORT_NONE</item>
+      <item>SCM_CREDS2</item>
       <item>SEARCHD_ERROR</item>
       <item>SEARCHD_OK</item>
       <item>SEARCHD_RETRY</item>
@@ -3744,6 +3843,24 @@
       <item>SI_TIMER</item>
       <item>SI_TKILL</item>
       <item>SI_USER</item>
+      <item>SKF_AD_ALU_XOR_X</item>
+      <item>SKF_AD_CPU</item>
+      <item>SKF_AD_HATYPE</item>
+      <item>SKF_AD_IFINDEX</item>
+      <item>SKF_AD_MARK</item>
+      <item>SKF_AD_MAX</item>
+      <item>SKF_AD_NLATTR</item>
+      <item>SKF_AD_NLATTR_NEST</item>
+      <item>SKF_AD_OFF</item>
+      <item>SKF_AD_PAY_OFFSET</item>
+      <item>SKF_AD_PKTTYPE</item>
+      <item>SKF_AD_PROTOCOL</item>
+      <item>SKF_AD_QUEUE</item>
+      <item>SKF_AD_RANDOM</item>
+      <item>SKF_AD_RXHASH</item>
+      <item>SKF_AD_VLAN_TAG</item>
+      <item>SKF_AD_VLAN_TAG_PRESENT</item>
+      <item>SKF_AD_VLAN_TPID</item>
       <item>SNMP_BIT_STR</item>
       <item>SNMP_COUNTER</item>
       <item>SNMP_COUNTER64</item>
@@ -3933,6 +4050,10 @@
       <item>SODIUM_CRYPTO_BOX_SEALBYTES</item>
       <item>SODIUM_CRYPTO_BOX_SECRETKEYBYTES</item>
       <item>SODIUM_CRYPTO_BOX_SEEDBYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_BYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_HASHBYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_NONREDUCEDSCALARBYTES</item>
+      <item>SODIUM_CRYPTO_CORE_RISTRETTO255_SCALARBYTES</item>
       <item>SODIUM_CRYPTO_GENERICHASH_BYTES</item>
       <item>SODIUM_CRYPTO_GENERICHASH_BYTES_MAX</item>
       <item>SODIUM_CRYPTO_GENERICHASH_BYTES_MIN</item>
@@ -3966,6 +4087,8 @@
       <item>SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX</item>
       <item>SODIUM_CRYPTO_PWHASH_STRPREFIX</item>
       <item>SODIUM_CRYPTO_SCALARMULT_BYTES</item>
+      <item>SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_BYTES</item>
+      <item>SODIUM_CRYPTO_SCALARMULT_RISTRETTO255_SCALARBYTES</item>
       <item>SODIUM_CRYPTO_SCALARMULT_SCALARBYTES</item>
       <item>SODIUM_CRYPTO_SECRETBOX_KEYBYTES</item>
       <item>SODIUM_CRYPTO_SECRETBOX_MACBYTES</item>
@@ -3979,6 +4102,8 @@
       <item>SODIUM_CRYPTO_SIGN_SEEDBYTES</item>
       <item>SODIUM_CRYPTO_STREAM_KEYBYTES</item>
       <item>SODIUM_CRYPTO_STREAM_NONCEBYTES</item>
+      <item>SODIUM_CRYPTO_STREAM_XCHACHA20_KEYBYTES</item>
+      <item>SODIUM_CRYPTO_STREAM_XCHACHA20_NONCEBYTES</item>
       <item>SODIUM_LIBRARY_MAJOR_VERSION</item>
       <item>SODIUM_LIBRARY_MINOR_VERSION</item>
       <item>SODIUM_LIBRARY_VERSION</item>
@@ -4004,13 +4129,19 @@
       <item>SORT_NUMERIC</item>
       <item>SORT_REGULAR</item>
       <item>SORT_STRING</item>
+      <item>SO_ACCEPTFILTER</item>
+      <item>SO_BPF_EXTENSIONS</item>
       <item>SO_BROADCAST</item>
       <item>SO_DEBUG</item>
       <item>SO_DONTROUTE</item>
+      <item>SO_DONTTRUNC</item>
       <item>SO_ERROR</item>
       <item>SO_FREE</item>
+      <item>SO_INCOMING_CPU</item>
       <item>SO_KEEPALIVE</item>
       <item>SO_LINGER</item>
+      <item>SO_MARK</item>
+      <item>SO_MEMINFO</item>
       <item>SO_NOSERVER</item>
       <item>SO_OOBINLINE</item>
       <item>SO_RCVBUF</item>
@@ -4018,10 +4149,14 @@
       <item>SO_RCVTIMEO</item>
       <item>SO_REUSEADDR</item>
       <item>SO_REUSEPORT</item>
+      <item>SO_RTABLE</item>
+      <item>SO_SETFIB</item>
       <item>SO_SNDBUF</item>
       <item>SO_SNDLOWAT</item>
       <item>SO_SNDTIMEO</item>
       <item>SO_TYPE</item>
+      <item>SO_WANTMORE</item>
+      <item>SO_ZEROCOPY</item>
       <item>SPH_ATTR_BOOL</item>
       <item>SPH_ATTR_FLOAT</item>
       <item>SPH_ATTR_INTEGER</item>
@@ -4461,7 +4596,14 @@
       <item>S_SESSION</item>
       <item>S_SQL</item>
       <item>S_VARS</item>
+      <item>TCP_CONGESTION</item>
+      <item>TCP_DEFER_ACCEPT</item>
+      <item>TCP_KEEPALIVE</item>
+      <item>TCP_KEEPCNT</item>
+      <item>TCP_KEEPIDLE</item>
+      <item>TCP_KEEPINTVL</item>
       <item>TCP_NODELAY</item>
+      <item>TCP_NOTSENT_LOWAT</item>
       <item>THOUSANDS_SEP</item>
       <item>THOUSEP</item>
       <item>TIDY_NODETYPE_ASP</item>
@@ -4972,6 +5114,7 @@
       <item>VT_I1</item>
       <item>VT_I2</item>
       <item>VT_I4</item>
+      <item>VT_I8</item>
       <item>VT_INT</item>
       <item>VT_NULL</item>
       <item>VT_R4</item>
@@ -4979,6 +5122,7 @@
       <item>VT_UI1</item>
       <item>VT_UI2</item>
       <item>VT_UI4</item>
+      <item>VT_UI8</item>
       <item>VT_UINT</item>
       <item>VT_UNKNOWN</item>
       <item>VT_VARIANT</item>
@@ -5905,6 +6049,7 @@
       <item>curl_share_strerror</item>
       <item>curl_strerror</item>
       <item>curl_unescape</item>
+      <item>curl_upkeep</item>
       <item>curl_version</item>
       <item>current</item>
       <item>cyrus_authenticate</item>
@@ -7139,6 +7284,7 @@
       <item>imap_header</item>
       <item>imap_headerinfo</item>
       <item>imap_headers</item>
+      <item>imap_is_open</item>
       <item>imap_last_error</item>
       <item>imap_list</item>
       <item>imap_listmailbox</item>
@@ -7229,6 +7375,7 @@
       <item>ini_alter</item>
       <item>ini_get</item>
       <item>ini_get_all</item>
+      <item>ini_parse_quantity</item>
       <item>ini_restore</item>
       <item>ini_set</item>
       <item>inotify_add_watch</item>
@@ -7341,6 +7488,7 @@
       <item>json_encode</item>
       <item>json_last_error</item>
       <item>json_last_error_msg</item>
+      <item>json_validate</item>
       <item>judy_type</item>
       <item>judy_version</item>
       <item>juliantojd</item>
@@ -7425,6 +7573,7 @@
       <item>libxml_clear_errors</item>
       <item>libxml_disable_entity_loader</item>
       <item>libxml_get_errors</item>
+      <item>libxml_get_external_entity_loader</item>
       <item>libxml_get_last_error</item>
       <item>libxml_set_external_entity_loader</item>
       <item>libxml_set_streams_context</item>
@@ -7625,6 +7774,8 @@
       <item>mb_scrub</item>
       <item>mb_send_mail</item>
       <item>mb_split</item>
+      <item>mb_str_pad</item>
+      <item>mb_str_split</item>
       <item>mb_strcut</item>
       <item>mb_strimwidth</item>
       <item>mb_stripos</item>
@@ -7648,6 +7799,7 @@
       <item>memcache_debug</item>
       <item>memory_get_peak_usage</item>
       <item>memory_get_usage</item>
+      <item>memory_reset_peak_usage</item>
       <item>metaphone</item>
       <item>method_exists</item>
       <item>mhash</item>
@@ -7783,6 +7935,7 @@
       <item>mysqli_error_list</item>
       <item>mysqli_escape_string</item>
       <item>mysqli_execute</item>
+      <item>mysqli_execute_query</item>
       <item>mysqli_fetch_all</item>
       <item>mysqli_fetch_array</item>
       <item>mysqli_fetch_assoc</item>
@@ -8274,6 +8427,7 @@
       <item>oci_set_edition</item>
       <item>oci_set_module_name</item>
       <item>oci_set_prefetch</item>
+      <item>oci_set_prefetch_lob</item>
       <item>oci_statement_type</item>
       <item>oci_unregister_taf_callback</item>
       <item>octdec</item>
@@ -8285,6 +8439,9 @@
       <item>odbc_columns</item>
       <item>odbc_commit</item>
       <item>odbc_connect</item>
+      <item>odbc_connection_string_is_quoted</item>
+      <item>odbc_connection_string_quote</item>
+      <item>odbc_connection_string_should_quote</item>
       <item>odbc_cursor</item>
       <item>odbc_data_source</item>
       <item>odbc_do</item>
@@ -8354,6 +8511,7 @@
       <item>opendir</item>
       <item>openlog</item>
       <item>openssl_cipher_iv_length</item>
+      <item>openssl_cipher_key_length</item>
       <item>openssl_csr_export</item>
       <item>openssl_csr_export_to_file</item>
       <item>openssl_csr_get_public_key</item>
@@ -8721,7 +8879,9 @@
       <item>pos</item>
       <item>posix_access</item>
       <item>posix_ctermid</item>
+      <item>posix_eaccess</item>
       <item>posix_errno</item>
+      <item>posix_fpathconf</item>
       <item>posix_getcwd</item>
       <item>posix_getegid</item>
       <item>posix_geteuid</item>
@@ -8745,6 +8905,7 @@
       <item>posix_kill</item>
       <item>posix_mkfifo</item>
       <item>posix_mknod</item>
+      <item>posix_pathconf</item>
       <item>posix_setegid</item>
       <item>posix_seteuid</item>
       <item>posix_setgid</item>
@@ -8753,6 +8914,7 @@
       <item>posix_setsid</item>
       <item>posix_setuid</item>
       <item>posix_strerror</item>
+      <item>posix_sysconf</item>
       <item>posix_times</item>
       <item>posix_ttyname</item>
       <item>posix_uname</item>
@@ -9254,6 +9416,7 @@
       <item>sodium_crypto_stream_xchacha20</item>
       <item>sodium_crypto_stream_xchacha20_keygen</item>
       <item>sodium_crypto_stream_xchacha20_xor</item>
+      <item>sodium_crypto_stream_xchacha20_xor_ic</item>
       <item>sodium_crypto_stream_xor</item>
       <item>sodium_hex2bin</item>
       <item>sodium_increment</item>
@@ -9477,6 +9640,7 @@
       <item>stream_context_get_options</item>
       <item>stream_context_get_params</item>
       <item>stream_context_set_default</item>
+      <item>stream_context_set_options</item>
       <item>stream_context_set_option</item>
       <item>stream_context_set_params</item>
       <item>stream_copy_to_stream</item>
@@ -10330,7 +10494,10 @@
         <item>CurlShareHandle</item>
         <item>CURLStringFile</item>
         <item>DateInterval</item>
+        <item>DateInvalidOperationException</item>
+        <item>DateMalformedIntervalStringException</item>
         <item>DatePeriod</item>
+        <item>DateRangeError</item>
         <item>DateTime</item>
         <item>DateTimeImmutable</item>
         <item>DateTimeInterface</item>
@@ -10520,6 +10687,7 @@
         <item>QuickHashIntSet</item>
         <item>QuickHashIntStringHash</item>
         <item>QuickHashStringIntHash</item>
+        <item>Randomizer</item>
         <item>RangeException</item>
         <item>RecursiveArrayIterator</item>
         <item>RecursiveCachingIterator</item>
@@ -11020,7 +11188,7 @@
         <Detect2Chars attribute="Comment" context="MatchComment" char="/" char1="*" lookAhead="true" />
       </context>
 
-      <context name="MatchComment" attribute="PHP Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+      <context name="MatchComment" attribute="PHP Text" lineEndContext="#pop" fallthroughContext="#pop">
         <IncludeRules context="##Doxygen" />
         <Detect2Chars attribute="Comment" context="#pop!onelinecomment" char="/" char1="/" />
         <Detect2Chars attribute="Comment" context="#pop!twolinecomment" char="/" char1="*" beginRegion="Comment" />
@@ -11053,11 +11221,11 @@
         $var[$ident]
              ^_ error
       -->
-      <context name="dqaftervarname" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqaftervarname" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">
         <DetectChar attribute="Symbol" context="#pop!dqarray" char="["/>
         <Detect2Chars context="#pop!dqobject" char="-" char1=">" lookAhead="1"/>
       </context>
-      <context name="dqarray" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqarray" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectIdentifier attribute="String" context="#pop!dqarrayclose"/>
         <Int attribute="Decimal" context="#pop!dqarrayclose"/>
         <DetectChar attribute="Operator" context="#stay" char="-"/>
@@ -11065,25 +11233,25 @@
         <RegExpr attribute="Variable" context="#pop!dqarrayclose" String="\$&varid;"/>
         <IncludeRules context="finddqarraycharerror"/>
       </context>
-      <context name="dqarrayclose" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqarrayclose" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectChar attribute="Symbol" context="#pop" char="]"/>
         <IncludeRules context="finddqarraycharerror"/>
       </context>
-      <context name="dqobject" attribute="String" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+      <context name="dqobject" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">
         <RegExpr attribute="Symbol" context="#pop!dqobjectmem" String="->(?=&varid;)"/>
       </context>
       <context name="dqobjectmem" attribute="Variable" lineEndContext="#pop">
         <DetectIdentifier attribute="PHP Text" context="#pop"/>
       </context>
-      <context name="finddqarraycharerror" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="finddqarraycharerror" attribute="String" lineEndContext="#stay" fallthroughContext="#pop">
         <RegExpr attribute="Error" context="#pop" String="[^&quot;`]"/>
       </context>
 
-      <context name="dqcomplexvariable" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">
+      <context name="dqcomplexvariable" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop!finddqarraycharerror">
         <DetectChar attribute="Symbol" context="#stay" char="{"/>
         <DetectChar attribute="Variable" context="#pop!dqcomplexvariable2" char="$"/>
       </context>
-      <context name="dqcomplexvariable2" attribute="Variable" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!finddqarraycharerror">
+      <context name="dqcomplexvariable2" attribute="Variable" lineEndContext="#stay" fallthroughContext="#pop!finddqarraycharerror">
         <DetectIdentifier attribute="Variable" context="#pop!dqaftercomplexvariable"/>
         <DetectChar attribute="Variable" context="#stay" char="$"/>
         <IncludeRules context="finddqarraycharerror"/>
@@ -11119,7 +11287,7 @@
       <context name="doublequotestringescaped" attribute="String" lineEndContext="#stay">
         <!-- Common rules for double quoted strings and backticks (execution operator) URL:
               https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double -->
-        <RegExpr attribute="Backslash Code" context="#pop" String="\\([\\nrtvef$&quot;]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u\{[0-9A-Fa-f]+\})"/>
+        <RegExpr attribute="Backslash Code" context="#pop" String="\\([\\nrtvef$&quot;{]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2}|u\{[0-9A-Fa-f]+\})"/>
         <DetectChar attribute="String" context="#pop" char="\"/>
       </context>
 
@@ -11161,7 +11329,7 @@
       </context>
       <context name="heredoc" attribute="String" lineEndContext="#stay" dynamic="true">
         <IncludeRules context="doublestringvariablecommon" />
-        <RegExpr attribute="Heredoc" context="#pop" String="^%1(?=;?$)" dynamic="true" endRegion="Heredoc" column="0" />
+        <RegExpr attribute="Heredoc" context="#pop" String="^\s*%1(?=[,;]?$)" dynamic="true" endRegion="Heredoc" column="0" />
       </context>
 
       <context name="htmlnowdoc" attribute="Normal Text" lineEndContext="#stay" dynamic="true">
@@ -11181,7 +11349,7 @@
         <IncludeRules context="Normal##JavaScript" />
       </context>
       <context name="nowdoc" attribute="String" lineEndContext="#stay" dynamic="true">
-        <RegExpr attribute="Nowdoc" context="#pop" String="^%1(?=;?$)" dynamic="true" endRegion="Nowdoc" column="0" />
+        <RegExpr attribute="Nowdoc" context="#pop" String="^\s*%1(?=[,;]?$)" dynamic="true" endRegion="Nowdoc" column="0" />
       </context>
 
       <context name="number" attribute="PHP Text" lineEndContext="#stay">
@@ -11216,7 +11384,7 @@
         <!--/ Alternate PHP Block Syntax -->
         <DetectIdentifier attribute="Control Structures" context="#pop"/>
       </context>
-      <context name="yield" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="yield" attribute="PHP Text" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectSpaces attribute="PHP Text" context="#stay"/>
         <WordDetect attribute="Control Structures" context="#pop" String="from"/>
       </context>
@@ -11224,7 +11392,7 @@
         <DetectIdentifier attribute="Control Structures" context="#pop" endRegion="Alternate Block"/>
       </context>
 
-      <context name="MaybeAlternateBlock" attribute="PHP Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
+      <context name="MaybeAlternateBlock" attribute="PHP Text" lineEndContext="#stay" fallthroughContext="#pop">
         <DetectChar attribute="Symbol" context="#pop!MaybeAlternateBlockOpen" char="("/>
         <DetectSpaces attribute="PHP Text"/>
         <IncludeRules context="FindComment"/>
@@ -11239,7 +11407,7 @@
         <DetectChar attribute="Symbol" context="#pop" char=")"/>
         <IncludeRules context="phpsource"/>
       </context>
-      <context name="MaybeAlternateBlockClose" attribute="PHP Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+      <context name="MaybeAlternateBlockClose" attribute="PHP Text" lineEndContext="#pop" fallthroughContext="#pop">
         <DetectChar attribute="Other" context="#pop" char=":" beginRegion="Alternate Block"/>
         <DetectSpaces attribute="PHP Text"/>
       </context>
@@ -11291,7 +11459,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
+      <comment name="singleLine" start="//" position="afterwhitespace" />
       <comment name="multiLine" start="/*" end="*/" region="Comment" />
     </comments>
     <keywords casesensitive="0" weakDeliminator="" additionalDeliminator="@" />
diff --git a/xml/pike.xml b/xml/pike.xml
--- a/xml/pike.xml
+++ b/xml/pike.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- FIXME: Find a way to prevent ranges (e.g. [1..] or [0..99]) from matching as floats. -pp -->
 <language name="Pike" version="4" kateversion="5.0" section="Scripts" extensions="*.pike" mimetype="application/x-pike;text/x-pike" casesensitive="1" author="Paul Pogonyshev" license="">
   <highlighting>
diff --git a/xml/postscript.xml b/xml/postscript.xml
--- a/xml/postscript.xml
+++ b/xml/postscript.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="PostScript" version="4" kateversion="5.0" section="Markup" extensions="*.ps;*.ai;*.eps" mimetype="application/postscript">
 <highlighting>
 	<list name="keywords">
diff --git a/xml/povray.xml b/xml/povray.xml
--- a/xml/povray.xml
+++ b/xml/povray.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- Extended and updated by                                    -->
 <!-- Christoph Hormann <chris_hormann@gmx.de>, March 2004       -->
 <!-- features full POV-Ray 3.6 syntax with special highlighting -->
@@ -376,7 +376,6 @@
 			<item>tightness</item>
 			<item>tile2</item>
 			<item>tiles</item>
-			<item>normal</item>
 			<item>tolerance</item>
 			<item>toroidal</item>
 			<item>torus</item>
@@ -716,7 +715,6 @@
 			<item>texture</item>
 			<item>tile2</item>
 			<item>tiles</item>
-			<item>normal</item>
 			<item>toroidal</item>
 			<item>transmit</item>
 			<item>triangle_wave</item>
diff --git a/xml/powershell.xml b/xml/powershell.xml
--- a/xml/powershell.xml
+++ b/xml/powershell.xml
@@ -1,48 +1,54 @@
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language [
+  <!ENTITY varscope "(?:global|local|private|script|using|workflow|alias|env|function|variable)">
+  <!ENTITY varname  "(?:[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)">
+]>
 <language
   name="PowerShell"
-  version="11"
-  kateversion="5.0"
+  version="16"
+  kateversion="5.79"
   extensions="*.ps1;*.psm1;*.psd1"
   section="Scripts"
   author="Motoki Kashihara (motoki8791@gmail.com); Michael Lombardi (Michael.T.Lombardi@outlook.com)"
   casesensitive="0"
   license="MIT">
   <highlighting>
-    <list name="keywords">
-      <item>Begin</item>
+    <list name="control-flow">
       <item>Exit</item>
       <item>Process</item>
       <item>Break</item>
-      <item>Filter</item>
       <item>Return</item>
       <item>Catch</item>
       <item>Finally</item>
-      <item>Sequence</item>
       <item>Class</item>
       <item>For</item>
       <item>Switch</item>
       <item>Continue</item>
       <item>ForEach</item>
       <item>Throw</item>
+      <item>Try</item>
+      <item>Do</item>
+      <item>If</item>
+      <item>Until</item>
+      <item>Else</item>
+      <item>ElseIf</item>
+      <item>While</item>
+    </list>
+
+    <list name="keywords">
+      <item>Begin</item>
+      <item>Filter</item>
+      <item>Sequence</item>
       <item>Data</item>
       <item>From</item>
       <item>Trap</item>
       <item>Define</item>
       <item>Function</item>
-      <item>Try</item>
-      <item>Do</item>
-      <item>If</item>
-      <item>Until</item>
       <item>DynamicParam</item>
       <item>In</item>
       <item>Using</item>
-      <item>Else</item>
       <item>InlineScript</item>
       <item>Var</item>
-      <item>ElseIf</item>
       <item>Parallel</item>
-      <item>While</item>
       <item>End</item>
       <item>Param</item>
       <item>Workflow</item>
@@ -75,69 +81,6 @@
       <item>ulong</item>
       <item>ushort</item>
     </list>
-<!-- TODO: Seems unused?!
-      <list name="operators">
-      <item>-split</item>
-      <item>-isplit</item>
-      <item>-csplit</item>
-      <item>-join</item>
-      <item>-is</item>
-      <item>-isnot</item>
-      <item>-as</item>
-      <item>-eq</item>
-      <item>-ieq</item>
-      <item>-ceq</item>
-      <item>-ne</item>
-      <item>-ine</item>
-      <item>-cne</item>
-      <item>-gt</item>
-      <item>-igt</item>
-      <item>-cgt</item>
-      <item>-ge</item>
-      <item>-ige</item>
-      <item>-cge</item>
-      <item>-lt</item>
-      <item>-ilt</item>
-      <item>-clt</item>
-      <item>-le</item>
-      <item>-ile</item>
-      <item>-cle</item>
-      <item>-like</item>
-      <item>-ilike</item>
-      <item>-clike</item>
-      <item>-notlike</item>
-      <item>-inotlike</item>
-      <item>-cnotlike</item>
-      <item>-match</item>
-      <item>-imatch</item>
-      <item>-cmatch</item>
-      <item>-notmatch</item>
-      <item>-inotmatch</item>
-      <item>-cnotmatch</item>
-      <item>-contains</item>
-      <item>-icontains</item>
-      <item>-ccontains</item>
-      <item>-notcontains</item>
-      <item>-inotcontains</item>
-      <item>-cnotcontains</item>
-      <item>-replace</item>
-      <item>-ireplace</item>
-      <item>-creplace</item>
-      <item>-band</item>
-      <item>-bor</item>
-      <item>-bxor</item>
-      <item>-and</item>
-      <item>-or</item>
-      <item>-xor</item>
-      <item>.</item>
-      <item>&amp;</item>
-      <item>=</item>
-      <item>+=</item>
-      <item>-=</item>
-      <item>*=</item>
-      <item>/=</item>
-      <item>%=</item>
-    </list>-->
     <list name="cmdlets">
       <item>Add-Content</item>
       <item>Add-ADComputerServiceAccount</item>
@@ -161,7 +104,6 @@
       <item>Add-ClusterSharedVolume</item>
       <item>Add-ClusterVirtualMachineRole</item>
       <item>Add-Computer</item>
-      <item>Add-Content</item>
       <item>Add-History</item>
       <item>Add-JobTrigger</item>
       <item>Add-Member</item>
@@ -847,11 +789,23 @@
       <item>\%</item>
       <item>\?</item>
     </list>
+
     <list name="special-variables">
+      <!-- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_scopes?view=powershell-7.3#scope-modifiers -->
+      <item>$Global:</item>
+      <item>$Local:</item>
+      <item>$Private:</item>
+      <item>$Script:</item>
+      <item>$Using:</item>
+      <item>$Workflow:</item>
+      <item>$Alias:</item>
+      <item>$Env:</item>
+      <item>$Function:</item>
+      <item>$Variable:</item>
+
       <item>$_</item>
       <item>$True</item>
       <item>$False</item>
-      <item>$Env</item>
       <item>$Null</item>
       <item>$^</item>
       <item>$$</item>
@@ -873,63 +827,181 @@
       <item>$Host</item>
       <item>$OFS</item>
     </list>
+
+    <!-- https://learn.microsoft.com/en-us/powershell/scripting/developer/help/comment-based-help-keywords?view=powershell-7.3 -->
+    <list name="comment-based-help">
+      <item>.SYNOPSIS</item>
+      <item>.DESCRIPTION</item>
+      <item>.PARAMETER</item>
+      <item>.EXAMPLE</item>
+      <item>.INPUTS</item>
+      <item>.OUTPUTS</item>
+      <item>.NOTES</item>
+      <item>.LINK</item>
+      <item>.COMPONENT</item>
+      <item>.ROLE</item>
+      <item>.FUNCTIONALITY</item>
+      <item>.FORWARDHELPTARGETNAME</item>
+      <item>.FORWARDHELPCATEGORY</item>
+      <item>.REMOTEHELPRUNSPACE</item>
+      <item>.EXTERNALHELP</item>
+    </list>
+
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <DetectSpaces attribute="Normal Text"/>
+        <IncludeRules context="FindSpecialSymbol"/>
+        <DetectChar attribute="Symbol" context="Attribute" char="["/>
+        <IncludeRules context="FindSpecialOtherSymbol"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword attribute="Data Type" context="#stay" String="types" />
-        <IncludeRules context="Cmdlet" />
-        <DetectChar attribute="String" context="String" char="&quot;"/>
-        <Detect2Chars attribute="HereString" context="HereStringer" char="@" char1="&quot;" beginRegion="StringRegion"/>
+        <keyword attribute="Control Flow" context="#stay" String="control-flow"/>
+        <keyword attribute="Function" context="#stay" String="cmdlets"/>
+        <IncludeRules context="FindIdentifiant"/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+
+      <context attribute="Attribute" name="Attribute">
+        <DetectSpaces attribute="Normal Text"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <IncludeRules context="FindIdentifiant"/>
+        <DetectChar attribute="Symbol" context="#pop" char="]"/>
+        <IncludeRules context="FindSpecialSymbol"/>
+        <IncludeRules context="FindSpecialOtherSymbol"/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+
+      <context attribute="Normal Text" name="FindSpecialSymbol">
+        <DetectChar attribute="String" context="StringDQ" char="&quot;"/>
+        <DetectChar attribute="String" context="StringSQ" char="'"/>
+        <StringDetect attribute="HereString" context="HereStringDQ" String="@&quot;" beginRegion="StringRegion"/>
+        <StringDetect attribute="HereString" context="HereStringSQ" String="@'" beginRegion="StringRegion"/>
+        <StringDetect attribute="Symbol" String="@("/>
         <DetectChar attribute="Comment" context="Commentar 1" char="#"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="&lt;" char1="#" beginRegion="CommentRegion"/>
+        <StringDetect attribute="Comment" context="Commentar 2" String="&lt;#" beginRegion="CommentRegion"/>
         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="block1"/>
         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="block1"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\b\$(global|script)(?=\s+(:))"/>
-        <RegExpr attribute="Variable" context="#stay" String="\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" />
-        <keyword attribute="Special Variable" context="#stay" String="special-variables"/>
-        <DetectChar attribute="Symbol" context="Member" char="." />
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^&#59;"/>
+        <DetectChar attribute="Symbol" context="Member" char="."/>
       </context>
-      <context attribute="String Char" lineEndContext="#stay" name="StringEscape">
-        <RegExpr attribute="String Char" String="`[`&quot;0abefnrtv]|`u\{[0-9A-Fa-f]+\}" context="#stay"/>
+
+      <context attribute="Normal Text" name="FindSpecialOtherSymbol">
+        <RegExpr attribute="Operator" String="(?&lt;=^|[\s(){}])-([ic]?(split|eq|ne|gt|ge|lt|le|like|notlike|match|notmatch|contains|notcontains|replace)|b?(and|or|xor)|join|not|isnot|is|as)(?=[\s(){}$]|$)"/>
+        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/*&lt;=&gt;?[]|~^;"/>
+        <IncludeRules context="FindVariable"/>
       </context>
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <IncludeRules context="StringEscape"/>
-        <LineContinue attribute="String" context="#pop"/>
+
+      <context attribute="Normal Text" name="FindEscape">
+        <RegExpr attribute="String Char" String="`u\{[0-9A-Fa-f]+\}|`."/>
+        <RegExpr attribute="Escape" String="(?&lt;=\s)`"/>
+      </context>
+
+      <context attribute="Normal Text" name="FindVariable">
+        <StringDetect attribute="Variable Substitution" context="VarSubst" String="${" />
+        <StringDetect attribute="Symbol" context="VarCmd" String="$(" />
+        <RegExpr attribute="Variable" context="VariableScopeModifier" String="\$(?=&varscope;:)" insensitive="1"/>
+        <RegExpr attribute="Variable" String="\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*|[?^$])"/>
+      </context>
+
+      <context attribute="Normal Text" name="FindIdentifiant">
+        <RegExpr attribute="Number" context="NumericSuffix" String="\b(0b[01]+|0x[0-9a-fA-F]+|([0-9]+(\.[0-9]*)?|\.[0-9]+)(e([-+][0-9]+|[0-9]*))?)(?=(u?[ysl]|[und])?([kmgtp]b)?\b)" insensitive="1"/>
+        <RegExpr String="[-\w]+"/>
+      </context>
+      <context attribute="Numeric Suffix" name="NumericSuffix" fallthroughContext="#pop" lineEndContext="#pop">
+        <DetectIdentifier attribute="Numeric Suffix" context="#pop"/>
+      </context>
+
+      <!-- $( -->
+      <context attribute="Normal Text" name="VarCmd">
+        <DetectChar attribute="Symbol" context="#pop" char=")"/>
+        <DetectChar attribute="Symbol" context="VarCmdFuncCall" char="("/>
+        <IncludeRules context="Normal"/>
+      </context>
+      <context attribute="Normal Text" name="VarCmdFuncCall">
+        <DetectChar attribute="Symbol" context="#pop" char=")"/>
+        <IncludeRules context="Normal"/>
+      </context>
+
+      <!-- ${ -->
+      <context attribute="Variable" name="VarSubst" fallthroughContext="VarNameSubst">
+        <DetectChar attribute="Variable Substitution" context="#pop" char="}"/>
+        <RegExpr attribute="Scope Modifier" context="VariableName" String="&varscope;:" insensitive="1"/>
+      </context>
+      <context attribute="Variable" name="VarNameSubst">
+        <DetectChar attribute="Variable Substitution" context="#pop#pop" char="}"/>
+      </context>
+
+      <!-- $xxx:varname -->
+      <context attribute="Normal Text" name="VariableScopeModifier" lineEndContext="#pop">
+        <DetectChar attribute="Symbol" context="#pop!VariableName" char=":"/>
+        <DetectIdentifier attribute="Scope Modifier"/>
+      </context>
+      <context attribute="Normal Text" name="VariableName" lineEndContext="#pop">
+        <RegExpr attribute="Variable" context="#pop" String="&varname;(:&varname;)*"/>
+      </context>
+
+      <context attribute="String" name="StringDQ">
+        <IncludeRules context="FindVariable"/>
+        <RegExpr attribute="String Char" String="`u\{[0-9A-Fa-f]+\}|`.|`$|&quot;&quot;"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
-      <context attribute="HereString" lineEndContext="#stay" name="HereStringer">
-        <Detect2Chars attribute="HereString" context="#pop" char="&quot;" char1="@" endRegion="StringRegion"/>
+      <context attribute="String" name="StringSQ">
+        <StringDetect attribute="String Char" String="''"/>
+        <DetectChar attribute="String" context="#pop" char="'"/>
       </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="Function" context="#pop" String="\b[_\w][_\w\d]*(?=[\s]*)" />
+
+      <context attribute="HereString" lineEndContext="#stay" name="HereStringDQ">
+        <IncludeRules context="FindVariable"/>
+        <StringDetect attribute="HereString" context="#pop" String="&quot;@" endRegion="StringRegion" column="0"/>
       </context>
+      <context attribute="HereString" lineEndContext="#stay" name="HereStringSQ">
+        <StringDetect attribute="HereString" context="#pop" String="'@" endRegion="StringRegion" column="0"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Member" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#pop" String="[_[:alpha:]]\w*" />
+      </context>
+
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
         <DetectSpaces />
         <IncludeRules context="##Comments"/>
       </context>
+
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
         <DetectSpaces />
         <Detect2Chars attribute="Comment" context="#pop" char="#" char1="&gt;" endRegion="CommentRegion"/>
+        <!-- no delimiter except spaces -->
+        <keyword context="CommentHelp" String="comment-based-help" weakDeliminator="!%&amp;()*+,-./:;$lt;=>?[\]^{|}~" firstNonSpace="1" lookAhead="1" insensitive="0"/>
         <IncludeRules context="##Comments"/>
       </context>
-      <context attribute="Cmdlets" lineEndContext="#stay" name="Cmdlet">
-        <keyword attribute="Function" context="#stay" String="cmdlets"/>
+      <context attribute="Comment-Based Help Keyword" lineEndContext="#pop" name="CommentHelp">
+        <DetectChar attribute="Symbol" char="."/>
+        <DetectIdentifier attribute="Comment-Based Help Keyword" context="CommentHelpParam"/>
       </context>
+      <context attribute="Comment-Based Help Paramater" lineEndContext="#pop#pop" name="CommentHelpParam">
+      </context>
+
     </contexts>
+
     <itemDatas>
-      <itemData name="Normal Text"  defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Keyword"      defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Function"     defStyleNum="dsFunction" spellChecking="false"/>
-      <itemData name="Data Type"    defStyleNum="dsDataType" spellChecking="false"/>
-      <itemData name="String"       defStyleNum="dsString"/>
-      <itemData name="String Char"  defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="HereString"       defStyleNum="dsVerbatimString"/>
-      <itemData name="Comment"      defStyleNum="dsComment"/>
-      <itemData name="Cmdlets"      defStyleNum="dsBuiltIn" spellChecking="false"/>
-      <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false"/>
-      <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
-      <itemData name="Special Variable" defStyleNum="dsVariable" bold="1" spellChecking="false"/>
+      <itemData name="Normal Text"           defStyleNum="dsNormal"   spellChecking="false"/>
+      <itemData name="Attribute"             defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Escape"                defStyleNum="dsChar"     spellChecking="false"/>
+      <itemData name="Keyword"               defStyleNum="dsKeyword"  spellChecking="false"/>
+      <itemData name="Control Flow"          defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Function"              defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Data Type"             defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="String"                defStyleNum="dsString"/>
+      <itemData name="String Char"           defStyleNum="dsChar"     spellChecking="false"/>
+      <itemData name="HereString"            defStyleNum="dsVerbatimString"/>
+      <itemData name="Number"                defStyleNum="dsDecVal"   spellChecking="false"/>
+      <itemData name="Numeric Suffix"        defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Comment"               defStyleNum="dsComment"/>
+      <itemData name="Comment-Based Help Keyword" defStyleNum="dsDocumentation" spellChecking="false"/>
+      <itemData name="Comment-Based Help Paramater" defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="Symbol"                defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Operator"              defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Variable"              defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Scope Modifier"        defStyleNum="dsVariable" spellChecking="false" bold="1"/>
+      <itemData name="Variable Substitution" defStyleNum="dsPreprocessor" spellChecking="false"/>
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/prolog.xml b/xml/prolog.xml
--- a/xml/prolog.xml
+++ b/xml/prolog.xml
@@ -29,7 +29,7 @@
  * Boston, MA  02110-1301, USA.                                       *
  **********************************************************************
 -->
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [<!-- [Regular Expressions, Character Classes & Important Tokens]
 E.g. the dot "." has so many different meanings (i.e. in an RegExpr 'any char',
 'fullstop' of a clause, etc. pp.) that I decided it's usefull to write these out
@@ -105,7 +105,7 @@
     <!ENTITY bs         "\">
 ]>
 <language name="Prolog" section="Sources"
-	  version="16" kateversion="5.62"
+	  version="17" kateversion="5.62"
 	  mimetype="text/x-prolog"
 	  extensions="*.prolog;*.dcg;*.pro"
 	  author="Torsten Eichstädt (torsten.eichstaedt@web.de)"
@@ -597,14 +597,10 @@
 	    "atomic" and "operator" below with context="#stay" (two or three occurrences) -->
 	    <context name="arith_expr" lineEndContext="#stay" attribute="Syntax Error" noIndentationBasedFolding="true" >
 		<DetectChar char="(" context="nested_expr" beginRegion="nested" attribute="( ) [ ]" />
-		<DetectChar lookAhead="true" char=")" context="#pop" attribute="( ) [ ]" />
-		<DetectChar lookAhead="true" char="}" context="#pop" attribute="{ DCG }" />
-		<DetectChar lookAhead="true" char="]" context="#pop" attribute="( ) [ ]" />
 		<!-- FIXME check if cut may be an op, else (and in any case 99.9% likely) it's a usual cut here -->
-		<AnyChar lookAhead="true" String="&cut;&comma;" context="#pop" attribute="Logic &amp; Control" />
 		<!-- bar & dot could be a user-def'd op, pre-def'd ops could be
 		redef'd; but let's assume the default and just end the expr -->
-		<DetectChar lookAhead="true" char="&bar;" context="#pop" attribute="other built-in operator" />
+		<AnyChar lookAhead="true" String=")}]&bar;&cut;&comma;&bar;" context="#pop"/>
 		<RegExpr lookAhead="true" String="&fullstop_iso;|&logic_control_ops_iso;" context="#pop" attribute="Logic &amp; Control" />
 		<IncludeRules context="arith_expr_common" />
 	    </context>
diff --git a/xml/protobuf.xml b/xml/protobuf.xml
--- a/xml/protobuf.xml
+++ b/xml/protobuf.xml
@@ -1,27 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Protobuf" version="9" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">
+<!DOCTYPE language>
+<language name="Protobuf" version="10" kateversion="5.0" section="Sources" extensions="*.proto" mimetype="text/x-protobuf" author="Slawomir Mikula (slawek.mikula@gmail.com)" license="LGPL">
+    <!--
+      https://protobuf.dev/programming-guides/editions/
+      https://protobuf.dev/reference/protobuf/
+      https://protobuf.dev/reference/protobuf/edition-2023-spec/
+    -->
+
   <highlighting>
     <list name="keywords">
-      <item>message</item>
-      <item>required</item>
-      <item>optional</item>
-      <item>repeated</item>
-      <item>packed</item>
-      <item>enum</item>
       <item>default</item>
-      <item>import</item>
-      <item>public</item>
+      <item>enum</item>
+      <item>extend</item>
       <item>extensions</item>
-      <item>package</item>
+      <item>import</item>
+      <item>message</item>
       <item>option</item>
-      <item>deprecated</item>
-      <item>extend</item>
-    </list>
-    <list name="operators">
-      <item>=</item>
-      <item>;</item>
+      <item>optional</item> <!-- proto2 -->
+      <item>oneof</item>
+      <item>package</item>
+      <item>packed</item> <!-- option -->
+      <item>repeated</item>
+      <item>required</item> <!-- deprecated -->
+      <item>reserved</item>
+      <item>returns</item>
+      <item>rpc</item>
+      <item>service</item>
     </list>
+
     <list name="datatypes">
       <item>double</item>
       <item>float</item>
@@ -42,74 +48,86 @@
 
 <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
-        <DetectSpaces />
-        <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword attribute="Operator" context="#stay" String="operators"/>
-        <keyword attribute="Data Type" context="#stay" String="datatypes"/>
-        <RegExpr attribute="Keyword" context="Imports" String="\b(?:package|import)\b" />
-        <DetectIdentifier />
-        <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
-        <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
-        <DetectChar attribute="String" context="String" char="&quot;"/>
-        <Detect2Chars attribute="Comment" context="Commentar 1" char="/" char1="/"/>
-        <Detect2Chars attribute="Comment" context="Commentar 2" char="/" char1="*" beginRegion="Comment"/>
-        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;?[]|~^&#59;"/>
-        <Float attribute="Float" context="#stay"/>
-        <HlCOct attribute="Octal" context="#stay"/>
-        <HlCHex attribute="Hex" context="#stay"/>
-        <Int attribute="Decimal" context="#stay"/>
-        <HlCChar attribute="Char" context="#stay"/>
-        <RegExpr attribute="Char" context="#stay" String="'\\u[0-9a-fA-F]{4}'"/>
+        <DetectSpaces/>
+        <AnyChar attribute="Operator" String="=:"/>
+        <AnyChar attribute="Separator Symbol" String=",;"/>
+        <AnyChar attribute="Block Symbol" String="[]&lt;&gt;"/>
+        <DetectChar attribute="Block Symbol" char="{" beginRegion="Brace1"/>
+        <DetectChar attribute="Block Symbol" char="}" endRegion="Brace1"/>
+        <DetectChar attribute="String" context="StringDQ" char='"'/>
+        <DetectChar attribute="String" context="StringSQ" char="'"/>
+        <StringDetect attribute="Comment" context="Commentar 1" String="//"/>
+        <StringDetect attribute="Comment" context="Commentar 2" String="/*" beginRegion="Comment"/>
+        <AnyChar attribute="Symbol" String="!%&amp;()+-/.*?|~^"/>
+        <Float attribute="Float"/>
+        <HlCHex attribute="Hex"/>
+        <HlCOct attribute="Octal"/>
+        <Int attribute="Decimal"/>
+        <keyword attribute="Keyword" String="keywords"/>
+        <keyword attribute="Data Type" String="datatypes"/>
+        <WordDetect attribute="Keyword" String="true"/>
+        <WordDetect attribute="Keyword" String="false"/>
+        <WordDetect attribute="Float" String="inf"/>
+        <WordDetect attribute="Float" String="nan"/>
+        <DetectIdentifier/>
       </context>
 
-      <context attribute="String" lineEndContext="#pop" name="String">
-        <LineContinue attribute="String" context="#stay"/>
-        <HlCStringChar attribute="String Char" context="#stay"/>
-        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      <context attribute="String" lineEndContext="#pop" name="StringSQ">
+        <DetectChar attribute="String" context="#pop" char="'"/>
+        <DetectChar context="EscapeString" char="\" lookAhead="1"/>
       </context>
 
-      <context attribute="Normal Text" lineEndContext="#pop" name="Imports">
-        <RegExpr attribute="Imports" context="#pop" String="\s*.*;" />
+      <context attribute="String" lineEndContext="#pop" name="StringDQ">
+        <DetectChar attribute="String" context="#pop" char='"'/>
+        <DetectChar context="EscapeString" char="\" lookAhead="1"/>
       </context>
 
+      <context attribute="String Char" lineEndContext="#pop" name="EscapeString">
+        <RegExpr attribute="String Char" context="#pop" String="\\([abfnrtv\\'&quot;]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3}|u[0-9a-fA-F]{4}|U000[0-9a-fA-F]{5}|U0010[0-9a-fA-F]{4})"/>
+        <RegExpr attribute="Error" context="#pop" String="\\([xX][0-9a-fA-F]?|u[0-9a-fA-F]{,3}|U(0(0(0[0-9a-fA-F]{,5}|1(0[0-9a-fA-F]{,4})?)?)?)?)?"/>
+      </context>
+
       <context attribute="Comment" lineEndContext="#pop" name="Commentar 1">
-        <LineContinue attribute="Comment" context="#stay"/>
-        <DetectSpaces />
-        <IncludeRules context="##Comments" />
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
       </context>
 
       <context attribute="Comment" lineEndContext="#stay" name="Commentar 2">
-        <DetectSpaces />
-        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
-        <IncludeRules context="##Comments" />
+        <DetectSpaces/>
+        <StringDetect attribute="Comment" context="#pop" String="*/" endRegion="Comment"/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
       </context>
 
     </contexts>
+
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
       <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
       <itemData name="Data Type" defStyleNum="dsDataType" spellChecking="false"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
-      <itemData name="Imports" defStyleNum="dsOthers"/>
 
       <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
       <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
       <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
       <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
-      <itemData name="Char" defStyleNum="dsChar" spellChecking="false"/>
       <itemData name="String" defStyleNum="dsString"/>
-      <itemData name="String Char" defStyleNum="dsChar"/>
+      <itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
 
       <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
       <itemData name="Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Separator Symbol" defStyleNum="dsNormal" spellChecking="false" bold="1"/>
+      <itemData name="Block Symbol" defStyleNum="dsNormal" spellChecking="false" bold="1"/>
     </itemDatas>
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="//" />
-      <comment name="multiLine" start="/*" end="*/" region="Comment" />
+      <comment name="singleLine" start="//"/>
+      <comment name="multiLine" start="/*" end="*/" region="Comment"/>
     </comments>
-    <keywords casesensitive="1" />
+    <keywords casesensitive="1"/>
   </general>
 </language>
 <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/pure.xml b/xml/pure.xml
--- a/xml/pure.xml
+++ b/xml/pure.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
 
  Pure syntax highlighting for kate. Usage:
diff --git a/xml/purebasic.xml b/xml/purebasic.xml
--- a/xml/purebasic.xml
+++ b/xml/purebasic.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language SYSTEM "language.dtd">
+<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE language>
 <language name="PureBasic" version="10" kateversion="5.0" section="Sources" extensions="*.pb;*.pbi" mimetype="text/x-purebasic" author="Alexander Clay (Tuireann@EpicBasic.org);Sven Langenkamp (ace@kylixforum.de)" license="LGPL" priority="1" >
   <highlighting>
     <list name="keywords">
diff --git a/xml/purescript.xml b/xml/purescript.xml
new file mode 100644
--- /dev/null
+++ b/xml/purescript.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="PureScript" version="1" kateversion="5.53" section="Sources" extensions="*.purs" author="Gleb Popov (6yearold@gmail.com)" license="BSD3" indenter="haskell" style="haskell">
+  <highlighting>
+  <contexts>
+    <context attribute="Normal" lineEndContext="#stay" name="code">
+      <IncludeRules context="code##Haskell" />
+    </context>
+  </contexts>
+  <itemDatas>
+    <itemData name="Normal"           defStyleNum="dsNormal"   spellChecking="false" />
+  </itemDatas>
+  </highlighting>
+  <general>
+    <folding indentationsensitive="1"/>
+    <comments>
+      <comment name="singleLine" start="--" />
+      <comment name="multiLine" start="{-" end="-}" />
+    </comments>
+    <keywords casesensitive="1" />
+</general>
+</language>
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -1,900 +1,2436 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-	<!ENTITY digitPart "[0-9](?:_?[0-9])*">
-	<!ENTITY beforeDigit "(?&lt;![\.\w[:^ascii:]])">
-	<!ENTITY beforePointFloat "(?&lt;![\w[:^ascii:]])">
-
-	<!-- Python 2 style. Syntax:
-		1. start character '%'
-		2. [optional] Mapping key, e.g. '(foo)'
-		3. [optional] Conversion flags, one of '#0- +'
-		4. [optional] Minimum width, integer or '*'
-		5. [optional] Precision, '.' followed by integer or '*'
-		6. [optional] Length modifier, one of 'hlL'
-		7. conversion type, one of 'crsdiouxXeEfFgG%'
-		[Special cases: %prog and %default - see http://docs.python.org/library/optparse.html]
-	-->
-	<!ENTITY strsubstitution_py2 "&#37;(?:(?:\([a-zA-Z0-9_]+\))?[#0\- +]?(?:[1-9][0-9]*|\*)?(?:\.(?:[1-9][0-9]*|\*))?[hlL]?[crsdiouxXeEfFgG&#37;]|prog|default)">
-	<!-- http://docs.python.org/2/library/string.html#format-string-syntax:
-	     replacement_field ::=  "{" [field_name] ["!" conversion] [":" format_spec] "}"
-	     field_name        ::=  arg_name ("." attribute_name | "[" element_index "]")*
-	     arg_name          ::=  [identifier | integer]
-	     attribute_name    ::=  identifier
-	     element_index     ::=  integer | index_string
-	     index_string      ::=  <any source character except "]"> +
-	     conversion        ::=  "r" | "s"
-	     format_spec       ::=  [[fill]align][sign][#][0][width][,][.precision][type]
-	     fill              ::=  <any character>
-	     align             ::=  "<" | ">" | "=" | "^"
-	     sign              ::=  "+" | "-" | " "
-	     width             ::=  integer
-	     precision         ::=  integer
-	     type              ::=  "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
-	-->
-	<!ENTITY strsubstitution_py3 "\{(?:(?:[a-zA-Z0-9_]+|[0-9]+)(?:\.[a-zA-Z0-9_]+|\[[^ \]]+\])*)?(?:![rs])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?#?0?[0-9]*(?:\.[0-9]+)?[bcdeEfFgGnosxX&#37;]?)?\}">
-
-	<!ENTITY rawString "(?:ru|u?r|)(?:'(?:[^']++|\\')*+'|&quot;(?:[^&quot;]++|\\&quot;)*+&quot;)">
-	<!ENTITY formatString "(?:r?f|fr?)(?:'(?:[^'{]++|\\'|\{\{|\{[^}]++\})*+'|&quot;(?:[^&quot;]++|\\&quot;|\{\{|\{[^}]*+\})*+&quot;)">
-	<!ENTITY string "&rawString;|&formatString;">
-]>
-<!-- Python syntax highlightning v0.9 by Per Wigren -->
-<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
-<!-- Python syntax highlighting v1.97 by Paul Giannaros -->
-<!-- Python syntax highlighting v1.99 by Primoz Anzur -->
-<!-- Python syntax highlighting v2.01 by Paul Giannaros:
-	* full format character support
-	* unicode string modifier supported -->
-<!-- v2.02 remove RegExpr for nums and make indent consistent -->
-<!-- v2.03 highlight decorators, remove operator regex, don't highlight parens as operators -->
-<!-- v2.04 make alerts visible even if they are directly after ''' or # without a space -->
-<!-- v2.06 decorator names can (and often do) contain periods -->
-<!-- v2.07 add support for %prog and co, see bug 142832 -->
-<!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
-<!-- v2.29 recognize escape sequenzes correctly -->
-<language name="Python" version="23" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;SConstruct;SConscript;*.FCMacro" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
-	<highlighting>
-		<list name="import">
-			<item>import</item>
-			<item>from</item>
-			<item>as</item>
-		</list>
-		<list name="defs">
-			<item>class</item>
-			<item>def</item>
-			<item>del</item>
-			<item>global</item>
-			<item>lambda</item>
-			<item>nonlocal</item>
-		</list>
-		<list name="operators">
-			<item>and</item>
-			<item>in</item>
-			<item>is</item>
-			<item>not</item>
-			<item>or</item>
-		</list>
-		<list name="flow">
-			<item>assert</item>
-			<item>break</item>
-			<item>continue</item>
-			<item>elif</item>
-			<item>else</item>
-			<item>except</item>
-			<item>finally</item>
-			<item>for</item>
-			<item>if</item>
-			<item>pass</item>
-			<item>raise</item>
-			<item>return</item>
-			<item>try</item>
-			<item>while</item>
-			<item>with</item>
-			<item>async</item>
-			<item>await</item>
-		</list>
-		<list name="flow_yield">
-			<item>yield</item>
-			<!--
-				"yield from" added here as a keyword for autocompletion. The actual handling
-				is in context="yield" so that we won't need to add space as a weakDeliminator.
-			-->
-			<item>yield from</item>
-		</list>
-		<list name="patternmatching">
-			<item>match</item>
-			<item>case</item>
-		</list>
-		<list name="builtinfuncs">
-			<item>__import__</item>
-			<item>abs</item>
-			<item>all</item>
-			<item>any</item>
-			<item>apply</item>
-			<item>ascii</item>
-			<item>basestring</item>
-			<item>bin</item>
-			<item>breakpoint</item>
-			<item>bool</item>
-			<item>buffer</item>
-			<item>bytearray</item>
-			<item>bytes</item>
-			<item>callable</item>
-			<item>chr</item>
-			<item>classmethod</item>
-			<item>cmp</item>
-			<item>coerce</item>
-			<item>compile</item>
-			<item>complex</item>
-			<item>delattr</item>
-			<item>dict</item>
-			<item>dir</item>
-			<item>divmod</item>
-			<item>enumerate</item>
-			<item>eval</item>
-			<item>exec</item>
-			<item>execfile</item>
-			<item>file</item>
-			<item>filter</item>
-			<item>float</item>
-			<item>format</item>
-			<item>frozenset</item>
-			<item>getattr</item>
-			<item>globals</item>
-			<item>hasattr</item>
-			<item>hash</item>
-			<item>help</item>
-			<item>hex</item>
-			<item>id</item>
-			<item>input</item>
-			<item>int</item>
-			<item>intern</item>
-			<item>isinstance</item>
-			<item>issubclass</item>
-			<item>iter</item>
-			<item>len</item>
-			<item>list</item>
-			<item>locals</item>
-			<item>long</item>
-			<item>map</item>
-			<item>max</item>
-			<item>memoryview</item>
-			<item>min</item>
-			<item>next</item>
-			<item>object</item>
-			<item>oct</item>
-			<item>open</item>
-			<item>ord</item>
-			<item>pow</item>
-			<item>print</item>
-			<item>property</item>
-			<item>range</item>
-			<item>raw_input</item>
-			<item>reduce</item>
-			<item>reload</item>
-			<item>repr</item>
-			<item>reversed</item>
-			<item>round</item>
-			<item>set</item>
-			<item>setattr</item>
-			<item>slice</item>
-			<item>sorted</item>
-			<item>staticmethod</item>
-			<item>str</item>
-			<item>sum</item>
-			<item>super</item>
-			<item>tuple</item>
-			<item>type</item>
-			<item>unichr</item>
-			<item>unicode</item>
-			<item>vars</item>
-			<item>xrange</item>
-			<item>zip</item>
-		</list>
-		<list name="specialvars">
-			<item>None</item>
-			<item>self</item>
-			<item>True</item>
-			<item>False</item>
-			<item>NotImplemented</item>
-			<item>Ellipsis</item>
-			<item>__debug__</item>
-			<item>__file__</item>
-			<item>__name__</item>
-		</list>
-		<list name="bindings">
-			<item>SIGNAL</item>
-			<item>SLOT</item>
-			<item>connect</item>
-		</list>
-		<list name="overloaders">
-			<item>__new__</item>
-			<item>__init__</item>
-			<item>__del__</item>
-			<item>__repr__</item>
-			<item>__str__</item>
-			<item>__lt__</item>
-			<item>__le__</item>
-			<item>__eq__</item>
-			<item>__ne__</item>
-			<item>__gt__</item>
-			<item>__ge__</item>
-			<item>__cmp__</item>
-			<item>__rcmp__</item>
-			<item>__hash__</item>
-			<item>__nonzero__</item>
-			<item>__unicode__</item>
-			<item>__getattr__</item>
-			<item>__setattr__</item>
-			<item>__delattr__</item>
-			<item>__getattribute__</item>
-			<item>__get__</item>
-			<item>__set__</item>
-			<item>__delete__</item>
-			<item>__call__</item>
-			<item>__len__</item>
-			<item>__getitem__</item>
-			<item>__setitem__</item>
-			<item>__delitem__</item>
-			<item>__iter__</item>
-			<item>__reversed__</item>
-			<item>__contains__</item>
-			<item>__getslice__</item>
-			<item>__setslice__</item>
-			<item>__delslice__</item>
-			<item>__add__</item>
-			<item>__sub__</item>
-			<item>__mul__</item>
-			<item>__floordiv__</item>
-			<item>__mod__</item>
-			<item>__divmod__</item>
-			<item>__pow__</item>
-			<item>__lshift__</item>
-			<item>__rshift__</item>
-			<item>__and__</item>
-			<item>__xor__</item>
-			<item>__or__</item>
-			<item>__div__</item>
-			<item>__truediv__</item>
-			<item>__radd__</item>
-			<item>__rsub__</item>
-			<item>__rmul__</item>
-			<item>__rdiv__</item>
-			<item>__rtruediv__</item>
-			<item>__rfloordiv__</item>
-			<item>__rmod__</item>
-			<item>__rdivmod__</item>
-			<item>__rpow__</item>
-			<item>__rlshift__</item>
-			<item>__rrshift__</item>
-			<item>__rand__</item>
-			<item>__rxor__</item>
-			<item>__ror__</item>
-			<item>__iadd__</item>
-			<item>__isub__</item>
-			<item>__imul__</item>
-			<item>__idiv__</item>
-			<item>__itruediv__</item>
-			<item>__ifloordiv__</item>
-			<item>__imod__</item>
-			<item>__ipow__</item>
-			<item>__ilshift__</item>
-			<item>__irshift__</item>
-			<item>__iand__</item>
-			<item>__ixor__</item>
-			<item>__ior__</item>
-			<item>__neg__</item>
-			<item>__pos__</item>
-			<item>__abs__</item>
-			<item>__invert__</item>
-			<item>__complex__</item>
-			<item>__int__</item>
-			<item>__long__</item>
-			<item>__float__</item>
-			<item>__oct__</item>
-			<item>__hex__</item>
-			<item>__index__</item>
-			<item>__coerce__</item>
-			<item>__enter__</item>
-			<item>__exit__</item>
-			<item>__bytes__</item>
-			<item>__format__</item>
-			<item>__next__</item>
-			<item>__dir__</item>
-			<item>__await__</item>
-			<item>__aiter__</item>
-			<item>__anext__</item>
-			<item>__aenter__</item>
-			<item>__aexit__</item>
-		</list>
-		<list name="exceptions">
-			<!--
-				Exceptions list resources used:
-				- http://docs.python.org/2.7/library/exceptions.html#exception-hierarchy
-				- http://docs.python.org/3.4/library/exceptions.html#exception-hierarchy
-			-->
-			<item>ArithmeticError</item>
-			<item>AssertionError</item>
-			<item>AttributeError</item>
-			<item>BaseException</item>
-			<item>BlockingIOError</item>
-			<item>BrokenPipeError</item>
-			<item>BufferError</item>
-			<item>BytesWarning</item>
-			<item>ChildProcessError</item>
-			<item>ConnectionAbortedError</item>
-			<item>ConnectionError</item>
-			<item>ConnectionRefusedError</item>
-			<item>ConnectionResetError</item>
-			<item>DeprecationWarning</item>
-			<item>EnvironmentError</item>
-			<item>EOFError</item>
-			<item>Exception</item>
-			<item>FileExistsError</item>
-			<item>FileNotFoundError</item>
-			<item>FloatingPointError</item>
-			<item>FutureWarning</item>
-			<item>GeneratorExit</item>
-			<item>ImportError</item>
-			<item>ImportWarning</item>
-			<item>IndentationError</item>
-			<item>IndexError</item>
-			<item>InterruptedError</item>
-			<item>IOError</item>
-			<item>IsADirectoryError</item>
-			<item>KeyboardInterrupt</item>
-			<item>KeyError</item>
-			<item>LookupError</item>
-			<item>MemoryError</item>
-			<item>NameError</item>
-			<item>NotADirectoryError</item>
-			<item>NotImplementedError</item>
-			<item>OSError</item>
-			<item>OverflowError</item>
-			<item>PendingDeprecationWarning</item>
-			<item>PermissionError</item>
-			<item>ProcessLookupError</item>
-			<item>ReferenceError</item>
-			<item>ResourceWarning</item>
-			<item>RuntimeError</item>
-			<item>RuntimeWarning</item>
-			<item>StandardError</item>
-			<item>StopIteration</item>
-			<item>SyntaxError</item>
-			<item>SyntaxWarning</item>
-			<item>SystemError</item>
-			<item>SystemExit</item>
-			<item>TabError</item>
-			<item>TimeoutError</item>
-			<item>TypeError</item>
-			<item>UnboundLocalError</item>
-			<item>UnicodeDecodeError</item>
-			<item>UnicodeEncodeError</item>
-			<item>UnicodeError</item>
-			<item>UnicodeTranslateError</item>
-			<item>UnicodeWarning</item>
-			<item>UserWarning</item>
-			<item>ValueError</item>
-			<item>Warning</item>
-			<item>WindowsError</item>
-			<item>ZeroDivisionError</item>
-		</list>
-		<contexts>
-			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-				<DetectSpaces attribute="Normal Text"/>
-
-				<keyword attribute="Import" String="import" context="#stay"/>
-				<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
-				<keyword attribute="Operator Keyword" String="operators" context="#stay"/>
-				<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>
-				<keyword attribute="Flow Control Keyword" String="flow_yield" context="yield"/>
-				<keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/>
-				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
-				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
-				<keyword attribute="Extensions" String="bindings" context="#stay"/>
-				<keyword attribute="Exceptions" String="exceptions" context="#stay"/>
-				<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
-
-				<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
-				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
-				<DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/>
-
-				<DetectChar attribute="Comment" char="#" context="Hash comment"/>
-
-				<IncludeRules context="Number" />
-				<IncludeRules context="CommentVariants" />
-				<IncludeRules context="StringVariants" />
-
-				<DetectIdentifier attribute="Normal Text"/>
-
-				<RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>
-				<AnyChar attribute="Operator" String="+*/%|=;&lt;&gt;!^&amp;~-@" context="#stay"/>
-
-				<LineContinue attribute="Operator" context="MultiLineExpr"/>
-
-				<Int attribute="Error"/>
-			</context>
-			<context name="MultiLineExpr" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-				<DetectSpaces attribute="Normal Text"/>
-				<IncludeRules context="StringVariants" />
-			</context>
-
-			<!-- https://docs.python.org/2/reference/lexical_analysis.html#integer-and-long-integer-literals -->
-			<!-- https://docs.python.org/3/reference/lexical_analysis.html#integer-literals -->
-			<context name="Number" attribute="Normal Text" lineEndContext="#pop">
-				<!-- fast path -->
-				<RegExpr String="&beforeDigit;[0-9]|&beforePointFloat;\.[0-9]" context="AssumeNumber" lookAhead="1"/>
-			</context>
-			<context name="AssumeNumber" attribute="Normal Text" lineEndContext="#pop">
-				<!-- Complex: 1j ; 1.1j ; 1.j ; .1j ; 1e3j ; 1.1e3j ; 1.e3j ; .1e3j -->
-				<RegExpr attribute="Complex" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)(?:[eE][\+\-]?&digitPart;)?[jJ]" context="CheckSuffixError"/>
-				<!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->
-				<RegExpr attribute="Hex" String="0[xX](?:_?[0-9a-fA-F])+" context="CheckSuffixError"/>
-				<RegExpr attribute="Binary" String="0[bB](?:_?[01])+" context="CheckSuffixError"/>
-				<RegExpr attribute="Octal" String="0[oO](?:_?[0-7])+" context="CheckSuffixError"/>
-				<!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->
-				<RegExpr attribute="Float" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|\.&digitPart;)[eE][\+\-]?&digitPart;|&digitPart;\.(?:&digitPart;)?|\.&digitPart;" context="CheckSuffixError"/>
-				<!-- Decimal: 123 ; 000 -->
-				<!-- l and L are python2 suffixes -->
-				<RegExpr attribute="Int" String="(?:[1-9](?:_?\d)*|0(?:_?0)*)[lL]?" context="CheckSuffixError"/>
-			</context>
-			<context name="CheckSuffixError" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-				<RegExpr attribute="Error" String="[\w\d]+" context="#pop#pop"/>
-			</context>
-
-			<context name="yield" attribute="Flow Control Keyword" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-				<DetectSpaces attribute="Normal Text" context="#stay"/>
-				<WordDetect attribute="Flow Control Keyword" context="#pop" String="from"/>
-			</context>
-
-			<context name="Pattern Matching" attribute="Flow Control Keyword" lineEndContext="#pop">
-				<!--
-					Python 3.10: https://docs.python.org/3.10/reference/compound_stmts.html#the-match-statement
-					( 'match' | 'case' ) expression ':'
-					exclude:
-					( 'match' | 'case' ) ( 'if' | 'for' | '.' | ':' | '=' | ',' | ']' | ')' ) ...
-				-->
-				<RegExpr attribute="Flow Control Keyword" String="\w++(?=\s+(?!(?:if|for)\b)[\w'&quot;~]|\s*+(?![.:=\]),]|(?:if|for)\b)((?:&string;|[^#;(){}]|\(\)|\((?1)\)|\{\}|\{(\s*+(?:(?:&string;|[a-zA-Z0-9.]++)\s*+:\s*+(?:&string;|[^#;(){},]|\(\)|\((?1)\)|\{\}|\{(?2)\})++,?)*+)\})+?):)|" context="#pop"/>
-				<DetectIdentifier attribute="Normal Text" context="#pop"/>
-			</context>
-
-			<context name="#CheckForString" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-				<DetectSpaces/>
-				<LineContinue attribute="Normal Text" context="#pop!CheckForStringNext"/>
-			</context>
-
-			<context name="CheckForStringNext" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-				<DetectSpaces/>
-				<LineContinue attribute="Normal Text" context="#stay"/>
-				<IncludeRules context="StringVariants"/>
-			</context>
-
-			<!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->
-			<!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->
-			<context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">
-				<!-- fast path -->
-				<RegExpr String="(?:u|r|b|f|ur|fr|rf|br|rb)?['&quot;]" insensitive="true" context="AssumeStringVariants" lookAhead="1"/>
-			</context>
-			<context name="AssumeStringVariants" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="String" String="u?'''"                insensitive="true" context="#pop!Triple A-string" beginRegion="Triple A-region"/>
-				<RegExpr attribute="String" String="u?&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-string" beginRegion="Triple Q-region"/>
-				<RegExpr attribute="String" String="u?'"                  insensitive="true" context="#pop!Single A-string"/>
-				<RegExpr attribute="String" String="u?&quot;"             insensitive="true" context="#pop!Single Q-string"/>
-
-				<RegExpr attribute="Raw String" String="u?r'''"                insensitive="true" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>
-				<RegExpr attribute="Raw String" String="u?r&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>
-				<RegExpr attribute="Raw String" String="u?r'"                  insensitive="true" context="#pop!Raw A-string"/>
-				<RegExpr attribute="Raw String" String="u?r&quot;"             insensitive="true" context="#pop!Raw Q-string"/>
-
-				<StringDetect attribute="F-String" String="f'''"                insensitive="true" context="#pop!Triple A-F-String" beginRegion="Triple A-region"/>
-				<StringDetect attribute="F-String" String="f&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-F-String" beginRegion="Triple Q-region"/>
-				<StringDetect attribute="F-String" String="f'"                  insensitive="true" context="#pop!Single A-F-String"/>
-				<StringDetect attribute="F-String" String="f&quot;"             insensitive="true" context="#pop!Single Q-F-String"/>
-
-				<RegExpr attribute="Raw F-String" String="(?:fr|rf)'''"                insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>
-				<RegExpr attribute="Raw F-String" String="(?:fr|rf)&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>
-				<RegExpr attribute="Raw F-String" String="(?:fr|rf)'"                  insensitive="true" context="#pop!Raw A-F-String"/>
-				<RegExpr attribute="Raw F-String" String="(?:fr|rf)&quot;"             insensitive="true" context="#pop!Raw Q-F-String"/>
-
-				<StringDetect attribute="B-String" String="b'''"                insensitive="true" context="#pop!Triple A-B-String" beginRegion="Triple A-region"/>
-				<StringDetect attribute="B-String" String="b&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-B-String" beginRegion="Triple Q-region"/>
-				<StringDetect attribute="B-String" String="b'"                  insensitive="true" context="#pop!Single A-B-String"/>
-				<StringDetect attribute="B-String" String="b&quot;"             insensitive="true" context="#pop!Single Q-B-String"/>
-
-				<RegExpr attribute="Raw B-String" String="(?:br|rb)'''"                insensitive="true" context="#pop!Raw Triple A-B-String" beginRegion="Triple A-region"/>
-				<RegExpr attribute="Raw B-String" String="(?:br|rb)&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-B-String" beginRegion="Triple Q-region"/>
-				<RegExpr attribute="Raw B-String" String="(?:br|rb)'"                  insensitive="true" context="#pop!Raw A-B-String"/>
-				<RegExpr attribute="Raw B-String" String="(?:br|rb)&quot;"             insensitive="true" context="#pop!Raw Q-B-String"/>
-			</context>
-
-			<!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->
-			<!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->
-			<context name="CommentVariants" attribute="Normal Text" lineEndContext="#stay">
-				<!-- fast path -->
-				<RegExpr String="(?:u|r|ur)?['&quot;]" insensitive="true" firstNonSpace="true" context="AssumeCommentVariants" lookAhead="1"/>
-			</context>
-			<context name="AssumeCommentVariants" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Comment" String="(?:u?r?)'''"                insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>
-				<RegExpr attribute="Comment" String="(?:u?r?)&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>
-				<RegExpr attribute="Comment" String="(?:u?r?)'"                  insensitive="true" context="#pop!Single A-comment"/>
-				<RegExpr attribute="Comment" String="(?:u?r?)&quot;"             insensitive="true" context="#pop!Single Q-comment"/>
-			</context>
-
-			<context name="Dictionary" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces/>
-				<DetectChar attribute="Normal Text" char="}" context="#pop" endRegion="Dictionary"/>
-				<IncludeRules context="StringVariants" />
-				<IncludeRules context="Normal" />
-			</context>
-
-			<context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces/>
-				<DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>
-				<IncludeRules context="StringVariants" />
-				<IncludeRules context="Normal" />
-			</context>
-
-			<context name="Tuple" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces/>
-				<DetectChar attribute="Normal Text" char=")" context="#pop" endRegion="Tuple"/>
-				<IncludeRules context="StringVariants" />
-				<IncludeRules context="Normal" />
-			</context>
-
-			<context name="UnfinishedStringError" attribute="Error" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<!-- A single string/comment reached the end of the line without a \ line escape -->
-				<!-- We set ALL succeeding lines to the "Error" attribute so that this error is easier to spot -->
-			</context>
-
-			<!-- Comments -->
-
-			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">
-				<DetectSpaces />
-				<IncludeRules context="##Comments" />
-				<DetectIdentifier/>
-			</context>
-
-			<context name="Triple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces/>
-				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Triple A-region"/>
-				<IncludeRules context="##Comments" />
-				<DetectIdentifier/>
-				<IncludeRules context="stringescape"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces/>
-				<StringDetect attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
-				<IncludeRules context="##Comments" />
-				<DetectIdentifier/>
-				<IncludeRules context="stringescape"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Single A-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces/>
-				<DetectChar attribute="Comment" char="'" context="#pop"/>
-				<IncludeRules context="##Comments" />
-				<DetectIdentifier/>
-				<IncludeRules context="stringescape"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Single Q-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces/>
-				<DetectChar attribute="Comment" char="&quot;" context="#pop"/>
-				<IncludeRules context="##Comments" />
-				<DetectIdentifier/>
-				<IncludeRules context="stringescape"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<!-- Strings -->
-
-			<!-- format characters -->
-			<context name="stringformat" attribute="String Substitution" lineEndContext="#stay">
-				<RegExpr attribute="String Substitution" String="&strsubstitution_py2;|&strsubstitution_py3;" context="#stay"/>
-				<Detect2Chars attribute="String Substitution" char="{" char1="{" context="#stay" />
-				<Detect2Chars attribute="String Substitution" char="}" char1="}" context="#stay" />
-			</context>
-
-			<!-- escape characters -->
-			<context name="stringescape" attribute="String Char" lineEndContext="#stay">
-				<!-- As this highlighting style is for both, Python 2 and 3,
-				we do not know if a normal string is “unicode” or not. So we
-				-->
-				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8}|\\N\{[a-zA-Z0-9\- ]+\}" context="#stay"/>
-			</context>
-
-			<!-- escape characters -->
-			<context name="bytesescape" attribute="String Char" lineEndContext="#stay">
-				<!-- As this highlighting style is for both, Python 2 and 3,
-				we do not know if a normal string is “unicode” or not. So we
-				-->
-				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}" context="#stay"/>
-			</context>
-
-			<!-- f-literals -->
-			<context name="stringinterpolation" attribute="F-String" lineEndContext="#stay">
-				<Detect2Chars attribute="String Char" char="{" char1="{" context="#stay"/>
-				<DetectChar attribute="String Substitution" char="{" context="String Interpolation"/>
-				<Detect2Chars attribute="String Char" char="}" char1="}" context="#stay"/>
-				<DetectChar attribute="Error" char="}" context="#stay"/>
-			</context>
-			<context name="String Interpolation" attribute="String Substitution" lineEndContext="#stay">
-				<DetectChar attribute="Error" char="\" context="#pop"/>
-				<!-- format specifiers: [[fill]align][sign][#][0][minimumwidth][.precision][type] -->
-				<RegExpr attribute="String Substitution" String="(?:![rsa])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?#?0?[0-9]*(?:\.[0-9]+)?[bcdeEfFgGnosxX%]?)?\}" context="#pop"/>
-				<IncludeRules context="Normal"/> <!-- TODO: create expression context instead -->
-			</context>
-
-
-			<!--
-			It follows a Binary tree of string kinds (not even touching byte literals).
-			The levels are:
-			1. triple- vs. single-quoted
-			2. apostrophe vs. quotation mark
-			3. static vs. interpolated (f-literal)
-			4. escaped vs. raw
-			Adding byte literals wouldn’t make the current 2⁴ into 2⁵ contexts, as there are no byte f-literals
-			-->
-
-			<!-- Triple-quoted A-strings -->
-			<context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="String"/>
-				<DetectIdentifier attribute="String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringformat"/>
-				<StringDetect attribute="String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw Triple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="Raw String"/>
-				<DetectIdentifier attribute="Raw String"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="'"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
-				<IncludeRules context="stringformat"/>
-				<StringDetect attribute="Raw String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
-			</context>
-
-			<context name="Triple A-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="F-String"/>
-				<DetectIdentifier attribute="F-String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringinterpolation"/>
-				<StringDetect attribute="F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw Triple A-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="Raw F-String"/>
-				<DetectIdentifier attribute="Raw F-String"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
-				<IncludeRules context="stringinterpolation"/>
-				<StringDetect attribute="Raw F-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
-			</context>
-
-			<context name="Triple A-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|'(?!''))++"/>
-				<IncludeRules context="bytesescape"/>
-				<StringDetect attribute="B-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-			<context name="Raw Triple A-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?|'(?!''))++"/>
-				<StringDetect attribute="Raw B-String" String="'''" context="#pop!#CheckForString" endRegion="Triple A-region"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-			<!-- Triple-quoted Q-strings -->
-			<context name="Triple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="String"/>
-				<DetectIdentifier attribute="String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringformat"/>
-				<StringDetect attribute="String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw Triple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="Raw String"/>
-				<DetectIdentifier attribute="Raw String"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
-				<IncludeRules context="stringformat"/>
-				<StringDetect attribute="Raw String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
-			</context>
-
-			<context name="Triple Q-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="F-String"/>
-				<DetectIdentifier attribute="F-String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringinterpolation"/>
-				<StringDetect attribute="F-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw Triple Q-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<DetectSpaces attribute="Raw F-String"/>
-				<DetectIdentifier attribute="Raw F-String"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
-				<IncludeRules context="stringinterpolation"/>
-				<StringDetect attribute="Raw F-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
-			</context>
-
-			<context name="Triple Q-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2})|&quot;(?!&quot;&quot;))++"/>
-				<IncludeRules context="bytesescape"/>
-				<StringDetect attribute="B-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-			<context name="Raw Triple Q-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
-				<RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.?|&quot;(?!&quot;&quot;))++"/>
-				<StringDetect attribute="Raw B-String" String="&quot;&quot;&quot;" context="#pop!#CheckForString" endRegion="Triple Q-region"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-
-			<!-- Single-quoted A-strings -->
-			<context name="Single A-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="String"/>
-				<DetectIdentifier attribute="String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringformat"/>
-				<DetectChar attribute="String" char="'" context="#pop!#CheckForString"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw A-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="Raw String"/>
-				<DetectIdentifier attribute="Raw String"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="'"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
-				<IncludeRules context="stringformat"/>
-				<DetectChar attribute="Raw String" char="'" context="#pop!#CheckForString"/>
-				<LineContinue attribute="Raw String" context="#stay"/>
-			</context>
-
-			<context name="Single A-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="F-String"/>
-				<DetectIdentifier attribute="F-String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringinterpolation"/>
-				<DetectChar attribute="F-String" char="'" context="#pop!#CheckForString"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="Raw F-String"/>
-				<DetectIdentifier attribute="Raw F-String"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
-				<IncludeRules context="stringinterpolation"/>
-				<DetectChar attribute="Raw F-String" char="'" context="#pop!#CheckForString"/>
-				<LineContinue attribute="Raw F-String" context="#stay"/>
-			</context>
-
-			<context name="Single A-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">
-				<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>
-				<IncludeRules context="bytesescape"/>
-				<DetectChar attribute="B-String" char="'" context="#pop!#CheckForString"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-			<context name="Raw A-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">
-				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.)++"/>
-				<DetectChar attribute="Raw B-String" char="'" context="#pop!#CheckForString"/>
-				<LineContinue attribute="Raw B-String" context="#stay"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-			<!-- Single-quoted Q-strings -->
-			<context name="Single Q-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="String"/>
-				<DetectIdentifier attribute="String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringformat"/>
-				<DetectChar attribute="String" char="&quot;" context="#pop!#CheckForString"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw Q-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="Raw String"/>
-				<DetectIdentifier attribute="Raw String"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>
-				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
-				<IncludeRules context="stringformat"/>
-				<DetectChar attribute="Raw String" char="&quot;" context="#pop!#CheckForString"/>
-				<LineContinue attribute="Raw String" context="#stay"/>
-			</context>
-
-			<context name="Single Q-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="F-String"/>
-				<DetectIdentifier attribute="F-String"/>
-				<IncludeRules context="stringescape"/>
-				<IncludeRules context="stringinterpolation"/>
-				<DetectChar attribute="F-String" char="&quot;" context="#pop!#CheckForString"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-			</context>
-
-			<context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
-				<DetectSpaces attribute="Raw F-String"/>
-				<DetectIdentifier attribute="Raw F-String"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>
-				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
-				<IncludeRules context="stringinterpolation"/>
-				<DetectChar attribute="Raw F-String" char="&quot;" context="#pop!#CheckForString"/>
-				<LineContinue attribute="Raw F-String" context="#stay"/>
-			</context>
-
-			<context name="Single Q-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">
-				<RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>
-				<IncludeRules context="bytesescape"/>
-				<DetectChar attribute="B-String" char="&quot;" context="#pop!#CheckForString"/>
-				<LineContinue attribute="String Char" context="#stay"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-			<context name="Raw Q-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">
-				<RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.)++"/>
-				<DetectChar attribute="Raw B-String" char="&quot;" context="#pop!#CheckForString"/>
-				<Detect2Chars attribute="Raw B-String" char="\" char1="\"/>
-				<LineContinue attribute="Raw B-String" context="#stay"/>
-				<RegExpr attribute="Error" String="."/>
-			</context>
-
-		</contexts>
-
-		<itemDatas>
-			<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
-			<itemData name="Definition Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
-			<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
-			<itemData name="Operator Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
-			<itemData name="Flow Control Keyword" defStyleNum="dsControlFlow" spellChecking="false"/>
-			<itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false"/>
-			<itemData name="Special Variable" defStyleNum="dsVariable" spellChecking="false"/>
-			<itemData name="Extensions" defStyleNum="dsExtension" spellChecking="false"/>
-			<itemData name="Exceptions" defStyleNum="dsPreprocessor" spellChecking="false"/>
-			<itemData name="Overloaders" defStyleNum="dsFunction" spellChecking="false"/>
-			<itemData name="Import" defStyleNum="dsImport" spellChecking="false"/>
-			<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
-			<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
-			<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
-			<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
-			<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
-			<itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/>
-			<itemData name="Comment" defStyleNum="dsComment"/>
-			<itemData name="String" defStyleNum="dsString"/>
-			<itemData name="Raw String" defStyleNum="dsVerbatimString"/>
-			<itemData name="F-String" defStyleNum="dsSpecialString"/>
-			<itemData name="Raw F-String" defStyleNum="dsVerbatimString"/>
-			<itemData name="B-String" defStyleNum="dsString" spellChecking="false"/>
-			<itemData name="Raw B-String" defStyleNum="dsVerbatimString" spellChecking="false"/>
-			<itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>
-			<itemData name="String Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>
-			<itemData name="Decorator" defStyleNum="dsAttribute" spellChecking="false"/>
-			<itemData name="Error" defStyleNum="dsError"/>
-		</itemDatas>
-	</highlighting>
-	<general>
-		<folding indentationsensitive="1" />
-		<emptyLines>
-			<emptyLine regexpr="(?:\s+|\s*#.*)"/>
-		</emptyLines>
-		<comments>
-			<comment name="singleLine" start="#" position="afterwhitespace"/>
-		</comments>
-		<keywords casesensitive="1" additionalDeliminator="#'"/>
-	</general>
-</language>
-
-<!-- kate: space-indent off; indent-width 4; -->
+<!DOCTYPE language
+[
+	<!ENTITY digitPart "[0-9](?:_?[0-9])*">
+	<!ENTITY beforeDigit "(?&lt;![\.\w[:^ascii:]])">
+	<!ENTITY beforePointFloat "(?&lt;![\w[:^ascii:]])">
+
+	<!-- Python 2 style. Syntax:
+		1. start character '%'
+		2. [optional] Mapping key, e.g. '(foo)'
+		3. [optional] Conversion flags, one of '#0- +'
+		4. [optional] Minimum width, integer or '*'
+		5. [optional] Precision, '.' followed by integer or '*'
+		6. [optional] Length modifier, one of 'hlL'
+		7. conversion type, one of 'crsdiouxXeEfFgG%'
+		[Special cases: %prog and %default - see http://docs.python.org/library/optparse.html]
+	-->
+	<!ENTITY strsubstitution_py2 "&#37;(?:(?:\([a-zA-Z0-9_]+\))?[#0\- +]?(?:[1-9][0-9]*|\*)?(?:\.(?:[1-9][0-9]*|\*))?[hlL]?[crsdiouxXeEfFgG&#37;]|prog|default)">
+	<!--
+	(Based on 3.14)
+	http://docs.python.org/3/library/string.html#format-string-syntax:
+
+		replacement_field: "{" [field_name] ["!" conversion] [":" format_spec] "}"
+		field_name:        arg_name ("." attribute_name | "[" element_index "]")*
+		arg_name:          [identifier | digit+]
+		attribute_name:    identifier
+		element_index:     digit+ | index_string
+		index_string:      <any source character except "]"> +
+		conversion:        "r" | "s" | "a"
+		format_spec:       format-spec:format_spec
+
+	https://docs.python.org/3/library/string.html#format-specification-mini-language
+
+		format_spec:             [options][width_and_precision][type]
+		options:                 [[fill]align][sign]["z"]["#"]["0"]
+		fill:                    <any character>
+		align:                   "<" | ">" | "=" | "^"
+		sign:                    "+" | "-" | " "
+		width_and_precision:     [width_with_grouping][precision_with_grouping]
+		width_with_grouping:     [width][grouping]
+		precision_with_grouping: "." [precision][grouping]
+		width:                   digit+
+		precision:               digit+
+		grouping:                "," | "_"
+		type:                    "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g"
+		                       | "G" | "n" | "o" | "s" | "x" | "X" | "%"
+
+		Note: precision_with_grouping should be
+			"." precision [grouping] | "." grouping
+			https://github.com/python/cpython/issues/134449
+	-->
+	<!ENTITY format_spec "(?:![rsa])?(?::(?:[^}]?[&lt;&gt;=^])?[ +-]?z?#?0?[0-9]*[,_]?(?:\.[0-9]+[,_]?|\.[,_])?[bcdeEfFgGnosxX&#37;]?)?">
+	<!ENTITY strsubstitution_py3 "\{(?:(?:[a-zA-Z0-9_]+|[0-9]+)(?:\.[a-zA-Z0-9_]+|\[[^ \]]+\])*)?&format_spec;?\}">
+
+	<!ENTITY rawString "(?:ru|u?r|)(?:'(?:[^']++|\\')*+'|&quot;(?:[^&quot;]++|\\&quot;)*+&quot;)">
+	<!ENTITY formatString "(?:r?f|fr?)(?:'(?:[^'{]++|\\'|\{\{|\{[^}]++\})*+'|&quot;(?:[^&quot;]++|\\&quot;|\{\{|\{[^}]*+\})*+&quot;)">
+	<!ENTITY string "&rawString;|&formatString;">
+
+	<!ENTITY escapedHex "\\x[0-9A-Fa-f]{2}">
+	<!ENTITY escapedHexUni "&escapedHex;|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8}|\\N\{[a-zA-Z0-9\- ]+\}">
+
+	<!ENTITY fStringSimpleParam "(?:[\w(), ]*|'[^']*'|&quot;[^&quot;]*&quot;)*">
+	<!ENTITY fStringSimpleIdent "(?:[_[:alpha:]]\w*&format_spec;)">
+	<!ENTITY fStringSimple "(?:\{[-+]?(&fStringSimpleIdent;(\.&fStringSimpleIdent;?|\(&fStringSimpleParam;\)|\[&fStringSimpleParam;\]|[-+*/&#37;@|&amp;^ ])*+)?\})">
+	<!ENTITY regFStringRangeN "(?:&fStringSimple;|[0-9]+)">
+]>
+<!-- Python syntax highlightning v0.9 by Per Wigren -->
+<!-- Python syntax highlighting v1.9 by Michael Bueker (improved keyword differentiation) -->
+<!-- Python syntax highlighting v1.97 by Paul Giannaros -->
+<!-- Python syntax highlighting v1.99 by Primoz Anzur -->
+<!-- Python syntax highlighting v2.01 by Paul Giannaros:
+	* full format character support
+	* unicode string modifier supported -->
+<!-- v2.02 remove RegExpr for nums and make indent consistent -->
+<!-- v2.03 highlight decorators, remove operator regex, don't highlight parens as operators -->
+<!-- v2.04 make alerts visible even if they are directly after ''' or # without a space -->
+<!-- v2.06 decorator names can (and often do) contain periods -->
+<!-- v2.07 add support for %prog and co, see bug 142832 -->
+<!-- v2.08 add missing overloaders, new Python 3 statements, builtins, and keywords -->
+<!-- v2.29 recognize escape sequenzes correctly -->
+<language name="Python" alternativeNames="Py" version="33" style="python" indenter="python" kateversion="5.0" section="Scripts" extensions="*.py;*.pyw;*.pyi;SConstruct;SConscript;*.FCMacro;*.sage" mimetype="application/x-python;text/x-python;text/x-python3" casesensitive="1" author="Michael Bueker" license="">
+	<highlighting>
+		<list name="import">
+			<item>import</item>
+			<item>from</item>
+			<item>as</item>
+			<!--
+				"lazy from" and "lazy import" are added here for autocompletion.
+				The actual handling is in context="kw_lazy"
+				so that we won't need to add space as a weakDeliminator.
+			-->
+			<item>lazy from</item> <!-- 3.15 -->
+			<item>lazy import</item> <!-- 3.15 -->
+		</list>
+		<list name="defs">
+			<item>class</item>
+			<item>def</item>
+			<item>del</item>
+			<item>global</item>
+			<item>lambda</item>
+			<item>nonlocal</item>
+		</list>
+		<list name="operators">
+			<item>and</item>
+			<item>in</item>
+			<item>is</item>
+			<item>not</item>
+			<item>or</item>
+		</list>
+		<list name="flow">
+			<item>assert</item>
+			<item>break</item>
+			<item>continue</item>
+			<item>elif</item>
+			<item>else</item>
+			<item>except</item>
+			<item>finally</item>
+			<item>for</item>
+			<item>if</item>
+			<item>pass</item>
+			<item>raise</item>
+			<item>return</item>
+			<item>try</item>
+			<item>while</item>
+			<item>with</item>
+			<item>async</item>
+			<item>await</item>
+		</list>
+		<list name="flow_yield">
+			<item>yield</item>
+			<!--
+				"yield from" added here as a keyword for autocompletion. The actual handling
+				is in context="kw_yield" so that we won't need to add space as a weakDeliminator.
+			-->
+			<item>yield from</item>
+		</list>
+		<list name="patternmatching">
+			<item>match</item>
+			<item>case</item>
+		</list>
+		<list name="builtinfuncs">
+			<!-- https://docs.python.org/3.11/library/functions.html#built-in-funcs -->
+			<item>__import__</item>
+			<item>abs</item>
+			<item>aiter</item>
+			<item>all</item>
+			<item>anext</item>
+			<item>any</item>
+			<item>apply</item>
+			<item>ascii</item>
+			<item>basestring</item>
+			<item>bin</item>
+			<item>breakpoint</item>
+			<item>bool</item>
+			<item>buffer</item>
+			<item>bytearray</item>
+			<item>bytes</item>
+			<item>callable</item>
+			<item>chr</item>
+			<item>classmethod</item>
+			<item>cmp</item>
+			<item>coerce</item>
+			<item>compile</item>
+			<item>complex</item>
+			<item>delattr</item>
+			<item>dict</item>
+			<item>dir</item>
+			<item>divmod</item>
+			<item>enumerate</item>
+			<item>eval</item>
+			<item>exec</item>
+			<item>execfile</item>
+			<item>file</item>
+			<item>filter</item>
+			<item>float</item>
+			<item>format</item>
+			<item>frozendict</item>
+			<item>frozenset</item>
+			<item>getattr</item>
+			<item>globals</item>
+			<item>hasattr</item>
+			<item>hash</item>
+			<item>help</item>
+			<item>hex</item>
+			<item>id</item>
+			<item>input</item>
+			<item>int</item>
+			<item>intern</item>
+			<item>isinstance</item>
+			<item>issubclass</item>
+			<item>iter</item>
+			<item>len</item>
+			<item>list</item>
+			<item>locals</item>
+			<item>long</item>
+			<item>map</item>
+			<item>max</item>
+			<item>memoryview</item>
+			<item>min</item>
+			<item>next</item>
+			<item>object</item>
+			<item>oct</item>
+			<item>open</item>
+			<item>ord</item>
+			<item>pow</item>
+			<item>print</item>
+			<item>property</item>
+			<item>range</item>
+			<item>raw_input</item>
+			<item>reduce</item>
+			<item>reload</item>
+			<item>repr</item>
+			<item>reversed</item>
+			<item>round</item>
+			<item>set</item>
+			<item>setattr</item>
+			<item>slice</item>
+			<item>sorted</item>
+			<item>staticmethod</item>
+			<item>str</item>
+			<item>sum</item>
+			<item>super</item>
+			<item>tuple</item>
+			<item>type</item>
+			<item>unichr</item>
+			<item>unicode</item>
+			<item>vars</item>
+			<item>xrange</item>
+			<item>zip</item>
+		</list>
+		<list name="specialvars">
+			<item>None</item>
+			<item>self</item>
+			<item>True</item>
+			<item>False</item>
+			<item>NotImplemented</item>
+			<item>Ellipsis</item>
+			<item>__all__</item>
+			<item>__class__</item>
+			<item>__debug__</item>
+			<item>__file__</item>
+			<item>__name__</item>
+			<item>__qualname__</item>
+			<item>__slots__</item>
+		</list>
+		<!-- Qt extension (PySide) -->
+		<list name="bindings">
+			<item>SIGNAL</item>
+			<item>SLOT</item>
+			<item>connect</item>
+		</list>
+		<list name="overloaders">
+			<!-- https://docs.python.org/3.10/reference/datamodel.html#special-method-names -->
+			<item>__new__</item>
+			<item>__init__</item>
+			<item>__del__</item>
+			<item>__repr__</item>
+			<item>__str__</item>
+			<item>__lt__</item>
+			<item>__le__</item>
+			<item>__eq__</item>
+			<item>__ne__</item>
+			<item>__gt__</item>
+			<item>__ge__</item>
+			<item>__cmp__</item>
+			<item>__rcmp__</item>
+			<item>__hash__</item>
+			<item>__bool__</item>
+			<item>__nonzero__</item>
+			<item>__unicode__</item>
+			<item>__getattr__</item>
+			<item>__setattr__</item>
+			<item>__delattr__</item>
+			<item>__getattribute__</item>
+			<item>__get__</item>
+			<item>__set__</item>
+			<item>__delete__</item>
+			<item>__call__</item>
+			<item>__len__</item>
+			<item>__length_hint__</item>
+			<item>__getitem__</item>
+			<item>__setitem__</item>
+			<item>__delitem__</item>
+			<item>__missing__</item>
+			<item>__iter__</item>
+			<item>__reversed__</item>
+			<item>__contains__</item>
+			<item>__getslice__</item>
+			<item>__setslice__</item>
+			<item>__delslice__</item>
+			<item>__add__</item>
+			<item>__sub__</item>
+			<item>__mul__</item>
+			<item>__matmul__</item>
+			<item>__floordiv__</item>
+			<item>__mod__</item>
+			<item>__divmod__</item>
+			<item>__pow__</item>
+			<item>__lshift__</item>
+			<item>__rshift__</item>
+			<item>__and__</item>
+			<item>__xor__</item>
+			<item>__or__</item>
+			<item>__div__</item>
+			<item>__truediv__</item>
+			<item>__radd__</item>
+			<item>__rsub__</item>
+			<item>__rmul__</item>
+			<item>__rmatmul__</item>
+			<item>__rdiv__</item>
+			<item>__rtruediv__</item>
+			<item>__rfloordiv__</item>
+			<item>__rmod__</item>
+			<item>__rdivmod__</item>
+			<item>__rpow__</item>
+			<item>__rlshift__</item>
+			<item>__rrshift__</item>
+			<item>__rand__</item>
+			<item>__rxor__</item>
+			<item>__ror__</item>
+			<item>__iadd__</item>
+			<item>__isub__</item>
+			<item>__imul__</item>
+			<item>__imatmul__</item>
+			<item>__idiv__</item>
+			<item>__itruediv__</item>
+			<item>__ifloordiv__</item>
+			<item>__imod__</item>
+			<item>__ipow__</item>
+			<item>__ilshift__</item>
+			<item>__irshift__</item>
+			<item>__iand__</item>
+			<item>__ixor__</item>
+			<item>__ior__</item>
+			<item>__neg__</item>
+			<item>__pos__</item>
+			<item>__abs__</item>
+			<item>__invert__</item>
+			<item>__complex__</item>
+			<item>__int__</item>
+			<item>__long__</item>
+			<item>__float__</item>
+			<item>__oct__</item>
+			<item>__hex__</item>
+			<item>__index__</item>
+			<item>__round__</item>
+			<item>__trunc__</item>
+			<item>__floor__</item>
+			<item>__ceil__</item>
+			<item>__coerce__</item>
+			<item>__enter__</item>
+			<item>__exit__</item>
+			<item>__match_args__</item>
+			<item>__buffer__</item>
+			<item>__release_buffer__</item>
+			<item>__bytes__</item>
+			<item>__format__</item>
+			<item>__next__</item>
+			<item>__dir__</item>
+			<item>__await__</item>
+			<item>__aiter__</item>
+			<item>__anext__</item>
+			<item>__aenter__</item>
+			<item>__aexit__</item>
+			<item>__slots__</item>
+			<item>__init_subclass__</item>
+			<item>__set_name__</item>
+			<item>__prepare__</item>
+			<item>__instancecheck__</item>
+			<item>__subclasscheck__</item>
+			<item>__class_getitem__</item>
+		</list>
+		<list name="exceptions">
+			<!--
+				Exceptions list resources used:
+				- http://docs.python.org/2.7/library/exceptions.html#exception-hierarchy
+				- http://docs.python.org/3.10/library/exceptions.html#exception-hierarchy
+			-->
+			<item>ArithmeticError</item>
+			<item>AssertionError</item>
+			<item>AttributeError</item>
+			<item>BaseException</item>
+			<item>BlockingIOError</item>
+			<item>BrokenPipeError</item>
+			<item>BufferError</item>
+			<item>BytesWarning</item>
+			<item>ChildProcessError</item>
+			<item>ConnectionAbortedError</item>
+			<item>ConnectionError</item>
+			<item>ConnectionRefusedError</item>
+			<item>ConnectionResetError</item>
+			<item>DeprecationWarning</item>
+			<item>EnvironmentError</item>
+			<item>EOFError</item>
+			<item>EncodingWarning</item>
+			<item>Exception</item>
+			<item>FileExistsError</item>
+			<item>FileNotFoundError</item>
+			<item>FloatingPointError</item>
+			<item>FutureWarning</item>
+			<item>GeneratorExit</item>
+			<item>ImportError</item>
+			<item>ImportWarning</item>
+			<item>IndentationError</item>
+			<item>IndexError</item>
+			<item>InterruptedError</item>
+			<item>IOError</item>
+			<item>IsADirectoryError</item>
+			<item>KeyboardInterrupt</item>
+			<item>KeyError</item>
+			<item>LookupError</item>
+			<item>MemoryError</item>
+			<item>ModuleNotFoundError</item>
+			<item>NameError</item>
+			<item>NotADirectoryError</item>
+			<item>NotImplementedError</item>
+			<item>OSError</item>
+			<item>OverflowError</item>
+			<item>PendingDeprecationWarning</item>
+			<item>PermissionError</item>
+			<item>ProcessLookupError</item>
+			<item>RecursionError</item>
+			<item>ReferenceError</item>
+			<item>ResourceWarning</item>
+			<item>RuntimeError</item>
+			<item>RuntimeWarning</item>
+			<item>StandardError</item>
+			<item>StopAsyncIteration</item>
+			<item>StopIteration</item>
+			<item>SyntaxError</item>
+			<item>SyntaxWarning</item>
+			<item>SystemError</item>
+			<item>SystemExit</item>
+			<item>TabError</item>
+			<item>TimeoutError</item>
+			<item>TypeError</item>
+			<item>UnboundLocalError</item>
+			<item>UnicodeDecodeError</item>
+			<item>UnicodeEncodeError</item>
+			<item>UnicodeError</item>
+			<item>UnicodeTranslateError</item>
+			<item>UnicodeWarning</item>
+			<item>UserWarning</item>
+			<item>ValueError</item>
+			<item>Warning</item>
+			<item>WindowsError</item>
+			<item>ZeroDivisionError</item>
+		</list>
+		<contexts>
+			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+				<DetectSpaces attribute="Normal Text"/>
+
+				<DetectChar attribute="Normal Text" char="(" context="Tuple" beginRegion="Tuple"/>
+				<DetectChar attribute="Normal Text" char="[" context="List" beginRegion="List"/>
+				<DetectChar attribute="Normal Text" char="{" context="Dictionary" beginRegion="Dictionary"/>
+
+				<DetectChar attribute="Comment" char="#" context="Hash comment"/>
+
+				<keyword attribute="Special Variable" String="specialvars" context="#stay"/>
+				<keyword attribute="Flow Control Keyword" String="flow" context="#stay"/>
+				<keyword attribute="Operator Keyword" String="operators" context="#stay"/>
+				<keyword attribute="Builtin Function" String="builtinfuncs" context="#stay"/>
+				<keyword attribute="Definition Keyword" String="defs" context="#stay"/>
+				<keyword attribute="Flow Control Keyword" String="flow_yield" context="kw_yield"/>
+				<keyword attribute="Flow Control Keyword" String="patternmatching" context="Pattern Matching" lookAhead="1" firstNonSpace="1"/>
+				<keyword attribute="Import" String="import" context="#stay"/>
+				<keyword attribute="Exceptions" String="exceptions" context="#stay"/>
+				<keyword attribute="Overloaders" String="overloaders" context="#stay"/>
+				<keyword attribute="Extensions" String="bindings" context="#stay"/>
+
+				<WordDetect String="lazy" context="kw_lazy" lookAhead="1"/>
+
+				<IncludeRules context="Number" />
+				<IncludeRules context="CommentVariants" />
+				<IncludeRules context="StringVariants" />
+
+				<DetectIdentifier attribute="Normal Text"/>
+
+				<RegExpr attribute="Decorator" String="@[_a-zA-Z[:^ascii:]][\._a-zA-Z0-9[:^ascii:]]*" firstNonSpace="true"/>
+				<Detect2Chars attribute="Operator" char=":" char1="=" context="#stay"/>
+				<AnyChar attribute="Operator" String="+*/%|=;&lt;&gt;!^&amp;~-@" context="#stay"/>
+
+				<LineContinue attribute="Operator" context="MultiLineExpr"/>
+
+				<Int attribute="Error"/>
+			</context>
+			<!-- a string at the beginning of lines is a comment, MultiLineExpr prevents this -->
+			<context name="MultiLineExpr" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+				<DetectSpaces attribute="Normal Text"/>
+				<IncludeRules context="StringVariants"/>
+			</context>
+
+			<!-- https://docs.python.org/2/reference/lexical_analysis.html#integer-and-long-integer-literals -->
+			<!-- https://docs.python.org/3/reference/lexical_analysis.html#integer-literals -->
+			<context name="Number" attribute="Normal Text" lineEndContext="#pop">
+				<!-- fast path -->
+				<RegExpr String="&beforeDigit;[0-9]|&beforePointFloat;\.[0-9]" context="AssumeNumber" lookAhead="1"/>
+			</context>
+			<context name="AssumeNumber" attribute="Normal Text" lineEndContext="#pop">
+				<!-- Complex: 1j ; 1.1j ; 1.j ; .1j ; 1e3j ; 1.1e3j ; 1.e3j ; .1e3j -->
+				<RegExpr attribute="Complex" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|&beforePointFloat;\.&digitPart;)(?:[eE][\+\-]?&digitPart;)?[jJ]" context="CheckSuffixError"/>
+				<!-- Hexadecimal: 0xA1, Binary: 0b01, Octal: 0o71 -->
+				<RegExpr attribute="Hex" String="0[xX](?:_?[0-9a-fA-F])+" context="CheckSuffixError"/>
+				<RegExpr attribute="Binary" String="0[bB](?:_?[01])+" context="CheckSuffixError"/>
+				<RegExpr attribute="Octal" String="0[oO](?:_?[0-7])+" context="CheckSuffixError"/>
+				<!-- Float: 1.1 ; 1. ; .1 ; 1e3 ; 1.1e3 ; 1.e3 ; .1e3 -->
+				<RegExpr attribute="Float" String="(?:&digitPart;(?:\.(?:&digitPart;)?)?|\.&digitPart;)[eE][\+\-]?&digitPart;|&digitPart;\.(?:&digitPart;)?|\.&digitPart;" context="CheckSuffixError"/>
+				<!-- Decimal: 123 ; 000 -->
+				<!-- l and L are python2 suffixes -->
+				<RegExpr attribute="Int" String="(?:[1-9](?:_?[0-9])*|0(?:_?0)*)[lL]?" context="CheckSuffixError"/>
+			</context>
+			<context name="CheckSuffixError" attribute="Normal Text" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+				<RegExpr attribute="Error" String="\w+" context="#pop#pop"/>
+			</context>
+
+			<!-- yield from expr
+			           ~~~~ Flow Control Keyword no Import
+			-->
+			<context name="kw_yield" attribute="Flow Control Keyword" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
+				<DetectSpaces attribute="Normal Text" context="#stay"/>
+				<WordDetect attribute="Flow Control Keyword" context="#pop" String="from"/>
+			</context>
+
+			<!-- lazy from ... import ...
+			     ~~~~~~~~~ Import
+					 lazy import ...
+			     ~~~~~~~~~~~ Import
+					 lazy = 2
+			     ~~~~ Normal Text
+			-->
+			<context name="kw_lazy" attribute="Import" lineEndContext="#pop">
+				<RegExpr String="lazy\s+(import|from)\b" attribute="Import" context="#pop"/>
+				<DetectIdentifier attribute="Normal Text" context="#pop"/>
+			</context>
+
+			<context name="Pattern Matching" attribute="Flow Control Keyword" lineEndContext="#pop">
+				<!--
+					Python 3.10: https://docs.python.org/3.10/reference/compound_stmts.html#the-match-statement
+					( 'match' | 'case' ) expression ':'
+					exclude:
+					( 'match' | 'case' ) ( 'if' | 'for' | '.' | ':' | '=' | ',' | ']' | ')' ) ...
+				-->
+				<RegExpr attribute="Flow Control Keyword" String="\w++(?=\s+(?!(?:if|for)\b)[\w'&quot;~]|\s*+(?![.:=\]),]|(?:if|for)\b)((?:&string;|[^#;(){}]|\(\)|\((?1)\)|\{\}|\{(\s*+(?:(?:&string;|[a-zA-Z0-9.]++)\s*+:\s*+(?:&string;|[^#;(){},]|\(\)|\((?1)\)|\{\}|\{(?2)\})++,?)*+)\})+?):)|" context="#pop"/>
+				<DetectIdentifier attribute="Normal Text" context="#pop"/>
+			</context>
+
+			<!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->
+			<!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->
+			<context name="StringVariants" attribute="Normal Text" lineEndContext="#stay">
+				<!-- fast path -->
+				<RegExpr String="(?:u|r|b|f|t|ur|fr|rf|br|rb|tr|rt)?['&quot;]" insensitive="true" context="AssumeStringVariants" lookAhead="1"/>
+			</context>
+			<context name="AssumeStringVariants" attribute="Normal Text" lineEndContext="#stay">
+				<StringDetect attribute="String Deliminator" String="'''"                context="#pop!Triple A-string" beginRegion="Triple A-region"/>
+				<StringDetect attribute="String Deliminator" String="&quot;&quot;&quot;" context="#pop!Triple Q-string" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="String Deliminator" String="'"                  context="#pop!Single A-string"/>
+				<StringDetect attribute="String Deliminator" String="&quot;"             context="#pop!Single Q-string"/>
+
+				<StringDetect attribute="F-String Deliminator" String="f'''"                insensitive="true" context="#pop!Triple A-F-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="F-String Deliminator" String="f&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-F-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="F-String Deliminator" String="f'"                  insensitive="true" context="#pop!Single A-F-String"/>
+				<StringDetect attribute="F-String Deliminator" String="f&quot;"             insensitive="true" context="#pop!Single Q-F-String"/>
+
+				<!-- lower r for regex -->
+				<StringDetect attribute="Raw String Deliminator" String="r'''"                context="#pop!Raw Triple A-Regex" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw String Deliminator" String="r&quot;&quot;&quot;" context="#pop!Raw Triple Q-Regex" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw String Deliminator" String="r'"                  context="#pop!Raw A-Regex"/>
+				<StringDetect attribute="Raw String Deliminator" String="r&quot;"             context="#pop!Raw Q-Regex"/>
+
+				<!-- upper r for string -->
+				<StringDetect attribute="Raw String Deliminator" String="R'''"                context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw String Deliminator" String="R&quot;&quot;&quot;" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw String Deliminator" String="R'"                  context="#pop!Raw A-string"/>
+				<StringDetect attribute="Raw String Deliminator" String="R&quot;"             context="#pop!Raw Q-string"/>
+
+				<StringDetect attribute="B-String Deliminator" String="b'''"                insensitive="true" context="#pop!Triple A-B-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="B-String Deliminator" String="b&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-B-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="B-String Deliminator" String="b'"                  insensitive="true" context="#pop!Single A-B-String"/>
+				<StringDetect attribute="B-String Deliminator" String="b&quot;"             insensitive="true" context="#pop!Single Q-B-String"/>
+
+				<!-- lower r and f for regex -->
+				<StringDetect attribute="Raw F-String Deliminator" String="fr'''"                context="#pop!Raw Triple A-F-Regex" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf'''"                context="#pop!Raw Triple A-F-Regex" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="fr&quot;&quot;&quot;" context="#pop!Raw Triple Q-F-Regex" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf&quot;&quot;&quot;" context="#pop!Raw Triple Q-F-Regex" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="fr'"                  context="#pop!Raw A-F-Regex"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf'"                  context="#pop!Raw A-F-Regex"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="fr&quot;"             context="#pop!Raw Q-F-Regex"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf&quot;"             context="#pop!Raw Q-F-Regex"/>
+
+				<!-- upper r or f for string -->
+				<StringDetect attribute="Raw F-String Deliminator" String="fr'''"                insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf'''"                insensitive="true" context="#pop!Raw Triple A-F-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="fr&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-F-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="fr'"                  insensitive="true" context="#pop!Raw A-F-String"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf'"                  insensitive="true" context="#pop!Raw A-F-String"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="fr&quot;"             insensitive="true" context="#pop!Raw Q-F-String"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="rf&quot;"             insensitive="true" context="#pop!Raw Q-F-String"/>
+
+				<!-- lower r and b for regex -->
+				<StringDetect attribute="Raw B-String Deliminator" String="br'''"                context="#pop!Raw Triple A-B-Regex" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb'''"                context="#pop!Raw Triple A-B-Regex" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="br&quot;&quot;&quot;" context="#pop!Raw Triple Q-B-Regex" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb&quot;&quot;&quot;" context="#pop!Raw Triple Q-B-Regex" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="br'"                  context="#pop!Raw A-B-Regex"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb'"                  context="#pop!Raw A-B-Regex"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="br&quot;"             context="#pop!Raw Q-B-Regex"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb&quot;"             context="#pop!Raw Q-B-Regex"/>
+
+				<!-- upper r or b for string -->
+				<StringDetect attribute="Raw B-String Deliminator" String="br'''"                insensitive="true" context="#pop!Raw Triple A-B-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb'''"                insensitive="true" context="#pop!Raw Triple A-B-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="br&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-B-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-B-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="br'"                  insensitive="true" context="#pop!Raw A-B-String"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb'"                  insensitive="true" context="#pop!Raw A-B-String"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="br&quot;"             insensitive="true" context="#pop!Raw Q-B-String"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="rb&quot;"             insensitive="true" context="#pop!Raw Q-B-String"/>
+
+				<!-- Python 3.14 string template -->
+
+				<!-- t -->
+				<StringDetect attribute="T-String Deliminator" String="t'''"                insensitive="1" context="#pop!Triple A-T-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="T-String Deliminator" String="t&quot;&quot;&quot;" insensitive="1" context="#pop!Triple Q-T-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="T-String Deliminator" String="t'"                  insensitive="1" context="#pop!Single A-T-String"/>
+				<StringDetect attribute="T-String Deliminator" String="t&quot;"             insensitive="1" context="#pop!Single Q-T-String"/>
+
+				<!-- rt / tr -->
+				<StringDetect attribute="Raw T-String Deliminator" String="tr'''" insensitive="1"                context="#pop!Raw Triple A-T-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="rt'''" insensitive="1"                context="#pop!Raw Triple A-T-String" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="tr&quot;&quot;&quot;" insensitive="1" context="#pop!Raw Triple Q-T-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="rt&quot;&quot;&quot;" insensitive="1" context="#pop!Raw Triple Q-T-String" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="tr'" insensitive="1"                  context="#pop!Raw A-T-String"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="rt'" insensitive="1"                  context="#pop!Raw A-T-String"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="tr&quot;" insensitive="1"             context="#pop!Raw Q-T-String"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="rt&quot;" insensitive="1"             context="#pop!Raw Q-T-String"/>
+
+				<!-- Python 2 compatibility (unicode prefix) -->
+
+				<StringDetect attribute="String Deliminator" String="u'''"                     insensitive="true" context="#pop!Triple A-string" beginRegion="Triple A-region"/>
+				<StringDetect attribute="String Deliminator" String="u&quot;&quot;&quot;"      insensitive="true" context="#pop!Triple Q-string" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="String Deliminator" String="u'"                       insensitive="true" context="#pop!Single A-string"/>
+				<StringDetect attribute="String Deliminator" String="u&quot;"                  insensitive="true" context="#pop!Single Q-string"/>
+
+				<StringDetect attribute="Raw String Deliminator" String="ur'''"                insensitive="true" context="#pop!Raw Triple A-string" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Raw String Deliminator" String="ur&quot;&quot;&quot;" insensitive="true" context="#pop!Raw Triple Q-string" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Raw String Deliminator" String="ur'"                  insensitive="true" context="#pop!Raw A-string"/>
+				<StringDetect attribute="Raw String Deliminator" String="ur&quot;"             insensitive="true" context="#pop!Raw Q-string"/>
+			</context>
+
+			<!-- https://docs.python.org/2/reference/lexical_analysis.html#string-literals -->
+			<!-- https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals -->
+			<context name="CommentVariants" attribute="Normal Text" lineEndContext="#stay">
+				<!-- fast path -->
+				<RegExpr String="(?:u|r|ur)?['&quot;]" insensitive="true" firstNonSpace="true" context="AssumeCommentVariants" lookAhead="1"/>
+			</context>
+			<context name="AssumeCommentVariants" attribute="Normal Text" lineEndContext="#stay">
+				<StringDetect attribute="Comment" String="'''"                 insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Comment" String="&quot;&quot;&quot;"  insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Comment" String="'"                   insensitive="true" context="#pop!Single A-comment"/>
+				<StringDetect attribute="Comment" String="&quot;"              insensitive="true" context="#pop!Single Q-comment"/>
+				<StringDetect attribute="Comment" String="r'''"                insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Comment" String="r&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Comment" String="r'"                  insensitive="true" context="#pop!Single A-comment"/>
+				<StringDetect attribute="Comment" String="r&quot;"             insensitive="true" context="#pop!Single Q-comment"/>
+
+				<!-- Python 2 compatibility (unicode prefix) -->
+				<StringDetect attribute="Comment" String="u'''"                 insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Comment" String="u&quot;&quot;&quot;"  insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Comment" String="u'"                   insensitive="true" context="#pop!Single A-comment"/>
+				<StringDetect attribute="Comment" String="u&quot;"              insensitive="true" context="#pop!Single Q-comment"/>
+				<StringDetect attribute="Comment" String="ur'''"                insensitive="true" context="#pop!Triple A-comment" beginRegion="Triple A-region"/>
+				<StringDetect attribute="Comment" String="ur&quot;&quot;&quot;" insensitive="true" context="#pop!Triple Q-comment" beginRegion="Triple Q-region"/>
+				<StringDetect attribute="Comment" String="ur'"                  insensitive="true" context="#pop!Single A-comment"/>
+				<StringDetect attribute="Comment" String="ur&quot;"             insensitive="true" context="#pop!Single Q-comment"/>
+			</context>
+
+			<context name="Dictionary" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<DetectChar attribute="Normal Text" char="}" context="#pop" endRegion="Dictionary"/>
+				<IncludeRules context="StringVariants" />
+				<IncludeRules context="Normal" />
+			</context>
+
+			<context name="List" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<DetectChar attribute="Normal Text" char="]" context="#pop" endRegion="List"/>
+				<IncludeRules context="StringVariants" />
+				<IncludeRules context="Normal" />
+			</context>
+
+			<context name="Tuple" attribute="Normal Text" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<DetectChar attribute="Normal Text" char=")" context="#pop" endRegion="Tuple"/>
+				<IncludeRules context="StringVariants" />
+				<IncludeRules context="Normal" />
+			</context>
+
+			<context name="UnfinishedStringError" attribute="Error" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<!-- A single string/comment reached the end of the line without a \ line escape -->
+				<!-- We set the following line (or part of it) to the "Error" attribute so that this error is easier to spot -->
+				<RegExpr attribute="Error" String="^(\s{4,}|[^[\]()&quot;']{4,}([&quot;'].*)?)" context="#pop" column="0"/>
+			</context>
+
+			<!-- Comments -->
+
+			<context name="Hash comment" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces />
+				<IncludeRules context="##Comments" />
+				<DetectIdentifier/>
+			</context>
+
+			<context name="Triple A-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<StringDetect attribute="Comment" String="'''" context="#pop" endRegion="Triple A-region"/>
+				<IncludeRules context="##Comments" />
+				<DetectIdentifier/>
+				<IncludeRules context="stringescape"/>
+			</context>
+
+			<context name="Triple Q-comment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces/>
+				<StringDetect attribute="Comment" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+				<IncludeRules context="##Comments" />
+				<DetectIdentifier/>
+				<IncludeRules context="stringescape"/>
+			</context>
+
+			<context name="Single A-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces/>
+				<DetectChar attribute="Comment" char="'" context="#pop"/>
+				<IncludeRules context="##Comments" />
+				<DetectIdentifier/>
+				<IncludeRules context="stringescape"/>
+			</context>
+
+			<context name="Single Q-comment" attribute="Comment" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces/>
+				<DetectChar attribute="Comment" char="&quot;" context="#pop"/>
+				<IncludeRules context="##Comments" />
+				<DetectIdentifier/>
+				<IncludeRules context="stringescape"/>
+			</context>
+
+			<!-- Strings -->
+
+			<!-- format characters -->
+			<context name="stringformat" attribute="String Substitution" lineEndContext="#stay">
+				<RegExpr attribute="String Substitution" String="&strsubstitution_py2;|&strsubstitution_py3;" context="#stay"/>
+				<Detect2Chars attribute="String Substitution" char="{" char1="{" context="#stay" />
+				<Detect2Chars attribute="String Substitution" char="}" char1="}" context="#stay" />
+			</context>
+
+			<!-- escape characters -->
+			<context name="stringescape" attribute="String Char" lineEndContext="#stay">
+				<!-- As this highlighting style is for both, Python 2 and 3,
+				we do not know if a normal string is “unicode” or not. So we -->
+				<DetectChar char="\" lookAhead="1" context="stringescape2"/>
+			</context>
+			<context name="stringescape2" attribute="String Char" lineEndContext="#pop">
+				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|&escapedHexUni;" context="#pop"/>
+				<LineContinue attribute="Operator" context="#pop"/>
+				<RegExpr attribute="Error" String="." context="#pop"/>
+			</context>
+
+			<!-- escape characters -->
+			<context name="bytesescape" attribute="String Char" lineEndContext="#stay">
+				<!-- As this highlighting style is for both, Python 2 and 3,
+				we do not know if a normal string is “unicode” or not. So we
+				-->
+				<DetectChar char="\" lookAhead="1" context="bytesescape2"/>
+			</context>
+			<context name="bytesescape2" attribute="String Char" lineEndContext="#pop">
+				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|&escapedHex;" context="#pop"/>
+				<LineContinue attribute="Operator" context="#pop"/>
+				<RegExpr attribute="Error" String="." context="#pop"/>
+			</context>
+
+			<!-- f-literals -->
+			<context name="stringinterpolation" attribute="F-String" lineEndContext="#stay">
+				<Detect2Chars attribute="String Char" char="{" char1="{" context="#stay"/>
+				<DetectChar attribute="String Substitution" char="{" context="String Interpolation"/>
+				<Detect2Chars attribute="String Char" char="}" char1="}" context="#stay"/>
+				<DetectChar attribute="Error" char="}" context="#stay"/>
+			</context>
+			<context name="String Interpolation" attribute="String Substitution" lineEndContext="#stay">
+				<RegExpr attribute="String Substitution" String="&format_spec;\}" context="#pop"/>
+				<IncludeRules context="Normal"/> <!-- TODO: create expression context instead -->
+			</context>
+
+
+			<!--
+			It follows a Binary tree of string kinds (not even touching byte literals).
+			The levels are:
+			1. triple- vs. single-quoted
+			2. apostrophe vs. quotation mark
+			3. static vs. interpolated (f-literal)
+			4. escaped vs. raw
+			Adding byte literals wouldn’t make the current 2⁴ into 2⁵ contexts, as there are no byte f-literals
+			-->
+
+			<!-- Triple-quoted A-strings -->
+			<context name="Triple A-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="String"/>
+				<DetectIdentifier attribute="String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<StringDetect attribute="String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+			</context>
+
+			<context name="Raw Triple A-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="'"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
+				<IncludeRules context="stringformat"/>
+				<StringDetect attribute="Raw String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+			</context>
+
+			<context name="Triple A-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="F-String"/>
+				<DetectIdentifier attribute="F-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="F-String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+			</context>
+
+			<context name="Raw Triple A-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+			</context>
+
+			<context name="Triple A-T-String" attribute="T-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="T-String"/>
+				<DetectIdentifier attribute="T-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="T-String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+			</context>
+
+			<context name="Raw Triple A-T-String" attribute="Raw T-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw T-String"/>
+				<DetectIdentifier attribute="Raw T-String"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="'"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+			</context>
+
+			<context name="Triple A-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|'(?!''))++"/>
+				<IncludeRules context="bytesescape"/>
+				<StringDetect attribute="B-String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<context name="Raw Triple A-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?|'(?!''))++"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="'''" context="#pop" endRegion="Triple A-region"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<!-- Triple-quoted Q-strings -->
+			<context name="Triple Q-string" attribute="String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="String"/>
+				<DetectIdentifier attribute="String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<StringDetect attribute="String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+			</context>
+
+			<context name="Raw Triple Q-string" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
+				<IncludeRules context="stringformat"/>
+				<StringDetect attribute="Raw String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+			</context>
+
+			<context name="Triple Q-F-String" attribute="F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="F-String"/>
+				<DetectIdentifier attribute="F-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="F-String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+			</context>
+
+			<context name="Raw Triple Q-F-String" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="Raw F-String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+			</context>
+
+			<context name="Triple Q-T-String" attribute="T-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="T-String"/>
+				<DetectIdentifier attribute="T-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="T-String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+			</context>
+
+			<context name="Raw Triple Q-T-String" attribute="Raw T-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw T-String"/>
+				<DetectIdentifier attribute="Raw T-String"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="&quot;"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<StringDetect attribute="Raw T-String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+			</context>
+
+			<context name="Triple Q-B-String" attribute="B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|&quot;(?!&quot;&quot;))++"/>
+				<IncludeRules context="bytesescape"/>
+				<StringDetect attribute="B-String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<context name="Raw Triple Q-B-String" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.?|&quot;(?!&quot;&quot;))++"/>
+				<StringDetect attribute="Raw B-String Deliminator" String="&quot;&quot;&quot;" context="#pop" endRegion="Triple Q-region"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+
+			<!-- Single-quoted A-strings -->
+			<context name="Single A-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="String"/>
+				<DetectIdentifier attribute="String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<DetectChar attribute="String Deliminator" char="'" context="#pop"/>
+			</context>
+
+			<context name="Raw A-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="'"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
+				<IncludeRules context="stringformat"/>
+				<DetectChar attribute="Raw String Deliminator" char="'" context="#pop"/>
+				<LineContinue attribute="Raw String" context="#stay"/>
+			</context>
+
+			<context name="Single A-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="F-String"/>
+				<DetectIdentifier attribute="F-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="F-String Deliminator" char="'" context="#pop"/>
+			</context>
+
+			<context name="Raw A-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="'"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="Raw F-String Deliminator" char="'" context="#pop"/>
+				<LineContinue attribute="Raw F-String" context="#stay"/>
+			</context>
+
+			<context name="Single A-T-String" attribute="T-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="T-String"/>
+				<DetectIdentifier attribute="T-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="T-String Deliminator" char="'" context="#pop"/>
+			</context>
+
+			<context name="Raw A-T-String" attribute="Raw T-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw T-String"/>
+				<DetectIdentifier attribute="Raw T-String"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="'"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="Raw T-String Deliminator" char="'" context="#pop"/>
+				<LineContinue attribute="Raw T-String" context="#stay"/>
+			</context>
+
+			<context name="Single A-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">
+				<RegExpr attribute="B-String" String="[\x20-\x26\x28-\x5B\x5D-\x7E]++"/>
+				<IncludeRules context="bytesescape"/>
+				<DetectChar attribute="B-String Deliminator" char="'" context="#pop"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<context name="Raw A-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">
+				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.)++"/>
+				<DetectChar attribute="Raw B-String Deliminator" char="'" context="#pop"/>
+				<LineContinue attribute="Raw B-String" context="#stay"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<!-- Single-quoted Q-strings -->
+			<context name="Single Q-string" attribute="String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="String"/>
+				<DetectIdentifier attribute="String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringformat"/>
+				<DetectChar attribute="String Deliminator" char="&quot;" context="#pop"/>
+			</context>
+
+			<context name="Raw Q-string" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="&quot;"/>
+				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
+				<IncludeRules context="stringformat"/>
+				<DetectChar attribute="Raw String Deliminator" char="&quot;" context="#pop"/>
+				<LineContinue attribute="Raw String" context="#stay"/>
+			</context>
+
+			<context name="Single Q-F-String" attribute="F-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="F-String"/>
+				<DetectIdentifier attribute="F-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="F-String Deliminator" char="&quot;" context="#pop"/>
+			</context>
+
+			<context name="Raw Q-F-String" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="&quot;"/>
+				<Detect2Chars attribute="Raw F-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="Raw F-String Deliminator" char="&quot;" context="#pop"/>
+				<LineContinue attribute="Raw F-String" context="#stay"/>
+			</context>
+
+			<context name="Single Q-T-String" attribute="T-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="T-String"/>
+				<DetectIdentifier attribute="T-String"/>
+				<IncludeRules context="stringescape"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="T-String Deliminator" char="&quot;" context="#pop"/>
+			</context>
+
+			<context name="Raw Q-T-String" attribute="Raw T-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw T-String"/>
+				<DetectIdentifier attribute="Raw T-String"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="&quot;"/>
+				<Detect2Chars attribute="Raw T-String" char="\" char1="\"/>
+				<IncludeRules context="stringinterpolation"/>
+				<DetectChar attribute="Raw T-String Deliminator" char="&quot;" context="#pop"/>
+				<LineContinue attribute="Raw T-String" context="#stay"/>
+			</context>
+
+			<context name="Single Q-B-String" attribute="B-String" lineEndContext="#pop!UnfinishedStringError">
+				<RegExpr attribute="B-String" String="[\x20\x21\x23-\x5B\x5D-\x7E]++"/>
+				<IncludeRules context="bytesescape"/>
+				<DetectChar attribute="B-String Deliminator" char="&quot;" context="#pop"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<context name="Raw Q-B-String" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">
+				<RegExpr attribute="Raw B-String" String="([\x20\x21\x23-\x5B\x5D-\x7E]++|\\.)++"/>
+				<DetectChar attribute="Raw B-String Deliminator" char="&quot;" context="#pop"/>
+				<LineContinue attribute="Raw B-String" context="#stay"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<!-- Regex -->
+
+			<!--
+
+			doctest: NOTE|XXX|HACK|FIXME|BUG|TODO
+			que dit la doc ?
+
+			-->
+
+			<!-- Regex r'...' -->
+
+			<context name="Raw A-Regex" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw A-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw A-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw A-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw A-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw A-Regex Capture"/>
+				<StringDetect String="'" attribute="Raw String Deliminator" context="#pop"/>
+				<IncludeRules context="RegexStringCommon"/>
+			</context>
+
+			<context name="Raw A-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw A-Regex NonCapture"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw A-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw A-Regex ParentComment"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw A-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw A-Regex ParentOptions"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw A-Regex ParentError"/>
+			</context>
+
+			<context name="Raw A-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw A-Regex ParentCond"/>
+			</context>
+			<context name="Raw A-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw A-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-Regex Parenthesis"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw A-Regex ParentError" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw A-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw A-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-Regex Capture"/>
+			</context>
+
+			<context name="Raw A-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw A-Regex Parenthesis"/>
+				<IncludeRules context="Raw A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-Regex Parenthesis" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>
+				<IncludeRules context="Raw A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-Regex Capture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop"/>
+				<IncludeRules context="Raw A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-Regex NonCapture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>
+				<IncludeRules context="Raw A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-Regex ParentInside" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="'" lookAhead="1" context="#pop"/>
+				<IncludeRules context="Raw A-Regex"/>
+			</context>
+
+			<context name="Raw A-Regex ParentComment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="RegexCommentCommon"/>
+				<StringDetect String="'" lookAhead="1" context="#pop#pop"/>
+			</context>
+
+			<context name="Raw A-Regex Set" attribute="Regex Set" lineEndContext="#pop">
+				<IncludeRules context="RegexSetCommon"/>
+				<StringDetect String="'" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex r"..." -->
+
+			<context name="Raw Q-Regex" attribute="Raw String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Q-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Q-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Q-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Q-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Q-Regex Capture"/>
+				<StringDetect String="&quot;" attribute="Raw String Deliminator" context="#pop"/>
+				<IncludeRules context="RegexStringCommon"/>
+			</context>
+
+			<context name="Raw Q-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Q-Regex NonCapture"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Q-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Q-Regex ParentComment"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Q-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Q-Regex ParentOptions"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Q-Regex ParentError"/>
+			</context>
+
+			<context name="Raw Q-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Q-Regex ParentCond"/>
+			</context>
+			<context name="Raw Q-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Q-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-Regex Parenthesis"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: lookaround in conditional pattern: (?(?!...)a|b) etc -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Q-Regex ParentError" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Q-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Q-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-Regex Capture"/>
+			</context>
+
+			<context name="Raw Q-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Q-Regex Parenthesis"/>
+				<IncludeRules context="Raw Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-Regex Parenthesis" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>
+				<IncludeRules context="Raw Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-Regex Capture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop"/>
+				<IncludeRules context="Raw Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-Regex NonCapture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>
+				<IncludeRules context="Raw Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-Regex ParentInside" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="&quot;" lookAhead="1" context="#pop"/>
+				<IncludeRules context="Raw Q-Regex"/>
+			</context>
+
+			<context name="Raw Q-Regex ParentComment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="RegexCommentCommon"/>
+				<StringDetect String="&quot;" lookAhead="1" context="#pop#pop"/>
+			</context>
+
+			<context name="Raw Q-Regex Set" attribute="Regex Set" lineEndContext="#pop">
+				<IncludeRules context="RegexSetCommon"/>
+				<StringDetect String="&quot;" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex r'''...''' -->
+
+			<context name="Raw Triple A-Regex" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Triple A-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Triple A-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Triple A-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Triple A-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Triple A-Regex Capture" beginRegion="RegParent"/>
+				<StringDetect String="#" attribute="Comment" context="Raw Triple A-Regex Comment"/>
+				<StringDetect String="'''" attribute="Raw String Deliminator" context="#pop" endRegion="Triple A-region"/>
+				<IncludeRules context="RegexStringCommon"/>
+			</context>
+
+			<context name="Raw Triple A-Regex Comment" attribute="Comment" lineEndContext="#pop">
+				<StringDetect String="'''" lookAhead="1" context="#pop"/>
+				<LineContinue attribute="Operator"/>
+				<RegExpr String="([^'\\]++|\\.|'(?!''))++" attribute="Comment"/>
+			</context>
+
+			<context name="Raw Triple A-Regex Parent" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple A-Regex NonCapture" beginRegion="RegParent"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Triple A-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Triple A-Regex ParentComment" beginRegion="RegParent"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Triple A-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple A-Regex ParentOptions" beginRegion="RegParent"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple A-Regex ParentError" beginRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple A-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#stay" noIndentationBasedFolding="true">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple A-Regex ParentCond" beginRegion="RegParent"/>
+			</context>
+			<context name="Raw Triple A-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple A-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-Regex Parenthesis" endRegion="RegParent"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Triple A-Regex ParentError" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple A-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Triple A-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-Regex Capture"/>
+			</context>
+
+			<context name="Raw Triple A-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple A-Regex Parenthesis" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-Regex Parenthesis" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-Regex Capture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-Regex NonCapture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-Regex ParentInside" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String="'''" lookAhead="1" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-Regex"/>
+			</context>
+
+			<context name="Raw Triple A-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexTripleCommentCommon"/>
+				<StringDetect String="'''" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple A-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexSetCommon"/>
+				<StringDetect String="'''" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex r"""...""" -->
+
+			<context name="Raw Triple Q-Regex" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw String"/>
+				<DetectIdentifier attribute="Raw String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Triple Q-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Triple Q-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Triple Q-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Triple Q-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Triple Q-Regex Capture" beginRegion="RegParent"/>
+				<StringDetect String="#" attribute="Comment" context="Raw Triple Q-Regex Comment"/>
+				<StringDetect String="&quot;&quot;&quot;" attribute="Raw String Deliminator" context="#pop" endRegion="Triple Q-region"/>
+				<IncludeRules context="RegexStringCommon"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex Comment" attribute="Comment" lineEndContext="#pop">
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop"/>
+				<LineContinue attribute="Operator"/>
+				<RegExpr String="([^&quot;\\]++|\\.|&quot;(?!&quot;&quot;))++" attribute="Comment"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple Q-Regex NonCapture" beginRegion="RegParent"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Triple Q-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Triple Q-Regex ParentComment" beginRegion="RegParent"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Triple Q-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple Q-Regex ParentOptions" beginRegion="RegParent"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple Q-Regex ParentError" beginRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple Q-Regex ParentCond" beginRegion="RegParent"/>
+			</context>
+			<context name="Raw Triple Q-Regex ParentCond" attribute="Raw String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple Q-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-Regex Parenthesis" endRegion="RegParent"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex ParentError" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple Q-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex NamedCapture" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-Regex Capture"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex LookaroundInCond" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple Q-Regex Parenthesis" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex Parenthesis" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex Capture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex NonCapture" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex ParentInside" attribute="Raw String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-Regex"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexTripleCommentCommon"/>
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple Q-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexSetCommon"/>
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex rb'...' -->
+
+			<context name="Raw A-B-Regex" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="Raw B-String" String="[ -#%&amp;,\-/->@-Z\]_-z~]++"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw A-B-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw A-B-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw A-B-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw A-B-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw A-B-Regex Capture"/>
+				<StringDetect String="'" attribute="Raw B-String Deliminator" context="#pop"/>
+				<IncludeRules context="RegexBStringCommon"/>
+			</context>
+
+			<context name="Raw A-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw A-B-Regex NonCapture"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw A-B-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw A-Regex ParentComment"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw A-B-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw A-B-Regex ParentOptions"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw A-B-Regex ParentError"/>
+			</context>
+
+			<context name="Raw A-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-B-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw A-B-Regex ParentCond"/>
+			</context>
+			<context name="Raw A-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw A-B-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-B-Regex Parenthesis"/>
+				<RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-B-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw A-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw A-B-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw A-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-B-Regex Capture"/>
+			</context>
+
+			<context name="Raw A-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw A-B-Regex Parenthesis"/>
+				<IncludeRules context="Raw A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>
+				<IncludeRules context="Raw A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-B-Regex Capture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop"/>
+				<IncludeRules context="Raw A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>
+				<IncludeRules context="Raw A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="'" lookAhead="1" context="#pop"/>
+				<IncludeRules context="Raw A-B-Regex"/>
+			</context>
+
+			<context name="Raw A-B-Regex Set" attribute="Regex Set" lineEndContext="#pop">
+				<RegExpr attribute="Regex Set" String="[ -&amp;(-Z^-~]++"/>
+				<IncludeRules context="RegexBStringSetCommon"/>
+				<StringDetect String="'" lookAhead="1" context="#pop"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+
+			<!-- Regex rb"..." -->
+
+			<context name="Raw Q-B-Regex" attribute="Raw B-String" lineEndContext="#pop!UnfinishedStringError">
+				<RegExpr attribute="Raw B-String" String="[ !#%-',\-/->@-Z\]_-z~]++"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Q-B-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Q-B-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Q-B-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Q-B-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Q-B-Regex Capture"/>
+				<StringDetect String="&quot;" attribute="Raw B-String Deliminator" context="#pop"/>
+				<IncludeRules context="RegexBStringCommon"/>
+			</context>
+
+			<context name="Raw Q-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Q-B-Regex NonCapture"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Q-B-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Q-Regex ParentComment"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Q-B-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Q-B-Regex ParentOptions"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Q-B-Regex ParentError"/>
+			</context>
+
+			<context name="Raw Q-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-B-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Q-B-Regex ParentCond"/>
+			</context>
+			<context name="Raw Q-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Q-B-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-B-Regex Parenthesis"/>
+				<RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-B-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Q-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Q-B-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Q-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-B-Regex Capture"/>
+			</context>
+
+			<context name="Raw Q-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Q-B-Regex Parenthesis"/>
+				<IncludeRules context="Raw Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>
+				<IncludeRules context="Raw Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-B-Regex Capture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop"/>
+				<IncludeRules context="Raw Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>
+				<IncludeRules context="Raw Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="&quot;" lookAhead="1" context="#pop"/>
+				<IncludeRules context="Raw Q-B-Regex"/>
+			</context>
+
+			<context name="Raw Q-B-Regex Set" attribute="Regex Set" lineEndContext="#pop">
+				<RegExpr attribute="Regex Set" String="[ !#-Z^-~]++"/>
+				<IncludeRules context="RegexBStringSetCommon"/>
+				<StringDetect String="&quot;" lookAhead="1" context="#pop"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+
+			<!-- Regex rb'''...''' -->
+
+			<context name="Raw Triple A-B-Regex" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="Raw B-String" String="([ !&quot;%&amp;,\-/->@-Z\]_-z~]++|'(?!''))++"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Triple A-B-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Triple A-B-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Triple A-B-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Triple A-B-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Triple A-B-Regex Capture" beginRegion="RegParent"/>
+				<StringDetect String="#" attribute="Comment" context="Raw Triple A-B-Regex Comment"/>
+				<StringDetect String="'''" attribute="Raw B-String Deliminator" context="#pop" endRegion="Triple A-region"/>
+				<IncludeRules context="RegexBStringCommon"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex Comment" attribute="Comment" lineEndContext="#pop">
+				<StringDetect String="'''" lookAhead="1" context="#pop"/>
+				<LineContinue attribute="Operator"/>
+				<RegExpr String="([ -&amp;(-\[\]-~]++|\\.|'(?!''))++" attribute="Comment"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple A-B-Regex NonCapture" beginRegion="RegParent"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Triple A-B-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Triple A-Regex ParentComment" beginRegion="RegParent"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Triple A-B-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple A-B-Regex ParentOptions" beginRegion="RegParent"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple A-B-Regex ParentError" beginRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-B-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple A-B-Regex ParentCond" beginRegion="RegParent"/>
+			</context>
+			<context name="Raw Triple A-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple A-B-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-B-Regex Parenthesis" endRegion="RegParent"/>
+				<RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-B-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple A-B-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-B-Regex Capture"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple A-B-Regex Parenthesis" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex Capture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String="'''" lookAhead="1" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-B-Regex"/>
+			</context>
+
+			<context name="Raw Triple A-B-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="Regex Set" String="([ -&amp;(-Z^-~]++|'(?!''))++"/>
+				<IncludeRules context="RegexBStringSetCommon"/>
+				<StringDetect String="'''" lookAhead="1" context="#pop"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+
+			<!-- Regex rb"""...""" -->
+
+			<context name="Raw Triple Q-B-Regex" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="Raw B-String" String="([ !%-',\-/->@-Z\]_-z~]++|&quot;(?!&quot;&quot;))++"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Triple Q-B-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Triple Q-B-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Triple Q-B-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Triple Q-B-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Triple Q-B-Regex Capture" beginRegion="RegParent"/>
+				<StringDetect String="#" attribute="Comment" context="Raw Triple Q-B-Regex Comment"/>
+				<StringDetect String="&quot;&quot;&quot;" attribute="Raw B-String Deliminator" context="#pop" endRegion="Triple Q-region"/>
+				<IncludeRules context="RegexBStringCommon"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex Comment" attribute="Comment" lineEndContext="#pop">
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop"/>
+				<LineContinue attribute="Operator"/>
+				<RegExpr String="([ !#-\[\]-~]++|\\.|&quot;(?!&quot;&quot;))++" attribute="Comment"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple Q-B-Regex NonCapture" beginRegion="RegParent"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Triple Q-B-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Triple Q-Regex ParentComment" beginRegion="RegParent"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Triple Q-B-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01])*(-[imsxafLuw]+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple Q-B-Regex ParentOptions" beginRegion="RegParent"/>
+				<IncludeRules context="RegexParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple Q-B-Regex ParentError" beginRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-B-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple Q-B-Regex ParentCond" beginRegion="RegParent"/>
+			</context>
+			<context name="Raw Triple Q-B-Regex ParentCond" attribute="Raw B-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple Q-B-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-B-Regex Parenthesis" endRegion="RegParent"/>
+				<RegExpr String="\b[_a-zA-Z][_a-zA-Z0-9]+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-B-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex ParentError" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple Q-B-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex NamedCapture" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([__a-zA-Z][_a-zA-Z0-9]*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-B-Regex Capture"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex LookaroundInCond" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple Q-B-Regex Parenthesis" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex Parenthesis" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex Capture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex NonCapture" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-B-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex ParentInside" attribute="Raw B-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-B-Regex"/>
+			</context>
+
+			<context name="Raw Triple Q-B-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<RegExpr attribute="Regex Set" String="([ !#-Z^-~]++|&quot;(?!&quot;&quot;))++"/>
+				<IncludeRules context="RegexBStringSetCommon"/>
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+
+			<!-- Regex rf'...' -->
+
+			<context name="Raw A-F-Regex" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw A-F-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw A-F-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw A-F-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw A-F-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw A-F-Regex Capture"/>
+				<StringDetect String="'" attribute="Raw F-String Deliminator" context="#pop"/>
+				<IncludeRules context="RegexFStringCommon"/>
+			</context>
+
+			<context name="Raw A-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw A-F-Regex NonCapture"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw A-F-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw A-F-Regex ParentComment"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw A-F-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw A-F-Regex ParentOptions"/>
+				<IncludeRules context="RegexFStringParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw A-F-Regex ParentError"/>
+			</context>
+
+			<context name="Raw A-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-F-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw A-F-Regex ParentCond"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+			</context>
+			<context name="Raw A-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw A-F-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-F-Regex Parenthesis"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw A-F-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw A-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw A-F-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw A-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw A-F-Regex Capture"/>
+			</context>
+
+			<context name="Raw A-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw A-F-Regex Parenthesis"/>
+				<IncludeRules context="Raw A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>
+				<IncludeRules context="Raw A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-F-Regex Capture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop"/>
+				<IncludeRules context="Raw A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>
+				<IncludeRules context="Raw A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw A-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="'" lookAhead="1" context="#pop"/>
+				<IncludeRules context="Raw A-F-Regex"/>
+			</context>
+
+			<context name="Raw A-F-Regex ParentComment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="RegexCommentCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="'" lookAhead="1" context="#pop#pop"/>
+			</context>
+
+			<context name="Raw A-F-Regex Set" attribute="Regex Set" lineEndContext="#pop">
+				<IncludeRules context="RegexFStringSetCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="'" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex rf"..." -->
+
+			<context name="Raw Q-F-Regex" attribute="Raw F-String" lineEndContext="#pop!UnfinishedStringError">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Q-F-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Q-F-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Q-F-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Q-F-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Q-F-Regex Capture"/>
+				<StringDetect String="&quot;" attribute="Raw F-String Deliminator" context="#pop"/>
+				<IncludeRules context="RegexFStringCommon"/>
+			</context>
+
+			<context name="Raw Q-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Q-F-Regex NonCapture"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Q-F-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Q-F-Regex ParentComment"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Q-F-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Q-F-Regex ParentOptions"/>
+				<IncludeRules context="RegexFStringParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Q-F-Regex ParentError"/>
+			</context>
+
+			<context name="Raw Q-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-F-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Q-F-Regex ParentCond"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+			</context>
+			<context name="Raw Q-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Q-F-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-F-Regex Parenthesis"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: lookaround in conditional pattern: (?(?!...)a|b) etc -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Q-F-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Q-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Q-F-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Q-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Q-F-Regex Capture"/>
+			</context>
+
+			<context name="Raw Q-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Q-F-Regex Parenthesis"/>
+				<IncludeRules context="Raw Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop"/>
+				<IncludeRules context="Raw Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-F-Regex Capture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop"/>
+				<IncludeRules context="Raw Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop"/>
+				<IncludeRules context="Raw Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Q-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="&quot;" lookAhead="1" context="#pop"/>
+				<IncludeRules context="Raw Q-F-Regex"/>
+			</context>
+
+			<context name="Raw Q-F-Regex ParentComment" attribute="Comment" lineEndContext="#pop">
+				<IncludeRules context="RegexCommentCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="&quot;" lookAhead="1" context="#pop#pop"/>
+			</context>
+
+			<context name="Raw Q-F-Regex Set" attribute="Regex Set" lineEndContext="#pop">
+				<IncludeRules context="RegexFStringSetCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="&quot;" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex rf'''...''' -->
+
+			<context name="Raw Triple A-F-Regex" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Triple A-F-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Triple A-F-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Triple A-F-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Triple A-F-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Triple A-F-Regex Capture" beginRegion="RegParent"/>
+				<StringDetect String="#" attribute="Comment" context="Raw Triple A-F-Regex Comment"/>
+				<StringDetect String="'''" attribute="Raw F-String Deliminator" context="#pop" endRegion="Triple A-region"/>
+				<IncludeRules context="RegexFStringCommon"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex Comment" attribute="Comment" lineEndContext="#pop">
+				<StringDetect String="'''" lookAhead="1" context="#pop"/>
+				<LineContinue attribute="Operator"/>
+				<IncludeRules context="RegexFString"/>
+				<RegExpr String="([^'\\{}]++|\\.|'(?!''))++" attribute="Comment"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple A-F-Regex NonCapture" beginRegion="RegParent"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Triple A-F-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Triple A-F-Regex ParentComment" beginRegion="RegParent"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Triple A-F-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple A-F-Regex ParentOptions" beginRegion="RegParent"/>
+				<IncludeRules context="RegexFStringParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple A-F-Regex ParentError" beginRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-F-Regex Parenthesis"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple A-F-Regex ParentCond" beginRegion="RegParent"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+			</context>
+			<context name="Raw Triple A-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple A-F-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-F-Regex Parenthesis" endRegion="RegParent"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple A-F-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple A-F-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple A-F-Regex Capture"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple A-F-Regex Parenthesis" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex Capture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String="'''" lookAhead="1" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple A-F-Regex"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexTripleCommentCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="'''" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple A-F-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexFStringSetCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="'''" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex rf"""...""" -->
+
+			<context name="Raw Triple Q-F-Regex" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<DetectSpaces attribute="Raw F-String"/>
+				<DetectIdentifier attribute="Raw F-String"/>
+				<StringDetect String="[^]" attribute="Regex Set" context="Raw Triple Q-F-Regex Set"/>
+				<StringDetect String="[]" attribute="Regex Set" context="Raw Triple Q-F-Regex Set"/>
+				<StringDetect String="[" attribute="Regex Set" context="Raw Triple Q-F-Regex Set"/>
+				<StringDetect String="(?" lookAhead="1" context="Raw Triple Q-F-Regex Parent"/>
+				<StringDetect String="(" attribute="Regex Capturing" context="Raw Triple Q-F-Regex Capture" beginRegion="RegParent"/>
+				<StringDetect String="#" attribute="Comment" context="Raw Triple Q-F-Regex Comment"/>
+				<StringDetect String="&quot;&quot;&quot;" attribute="Raw F-String Deliminator" context="#pop" endRegion="Triple Q-region"/>
+				<IncludeRules context="RegexFStringCommon"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex Comment" attribute="Comment" lineEndContext="#pop">
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop"/>
+				<LineContinue attribute="Operator"/>
+				<IncludeRules context="RegexFString"/>
+				<RegExpr String="([^&quot;\\{}]++|\\.|&quot;(?!&quot;&quot;))++" attribute="Comment"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex Parent" attribute="Regex Set" lineEndContext="#pop">
+				<StringDetect String="(?:" attribute="Regex Non-Capturing" context="#pop!Raw Triple Q-F-Regex NonCapture" beginRegion="RegParent"/>
+				<StringDetect String="(?P&lt;" lookAhead="1" context="Raw Triple Q-F-Regex NamedCapture"/>
+				<StringDetect String="(?#" attribute="Comment" context="Raw Triple Q-F-Regex ParentComment" beginRegion="RegParent"/>
+				<!-- regex package support: (?<...>) for (?P<...>) -->
+				<StringDetect String="(?&lt;" lookAhead="1" context="Raw Triple Q-F-Regex NamedCapture"/>
+				<!-- regex package support:
+					(?b), (?e), (?p), (?r), (?V0), (?V1), (?f), (?w) (?-a), (?-f), (?-L), (?-u), (?-w)
+					(?|...) -->
+				<RegExpr String="\((?=\?(([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*(-([imsxafLuw]|&fStringSimple;)+)?:|[=>!|]|&lt;[=!]|\())" attribute="Regex Parenthesis" context="Raw Triple Q-F-Regex ParentOptions" beginRegion="RegParent"/>
+				<IncludeRules context="RegexFStringParentCommon"/>
+				<StringDetect String="(" attribute="Regex Parenthesis" context="Raw Triple Q-F-Regex ParentError" beginRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex ParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop#pop!Raw Triple Q-F-Regex Parenthesis">
+			  <!-- regex package support: | -->
+				<AnyChar String=":=>!|" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-F-Regex Parenthesis"/>
+				<AnyChar String="&lt;?" attribute="Regex Parenthesis Options"/>
+				<StringDetect String="(" attribute="Regex Parenthesis Options" context="Raw Triple Q-F-Regex ParentCond" beginRegion="RegParent"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+			</context>
+			<context name="Raw Triple Q-F-Regex ParentCond" attribute="Raw F-String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop!Raw Triple Q-F-Regex Parenthesis">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-F-Regex Parenthesis" endRegion="RegParent"/>
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<RegExpr String="\b[_[:alpha:]]\w+|\b[0-9]{1,2}" attribute="Regex Backreference"/>
+			  <!-- regex package support: -->
+				<RegExpr String="\?&lt;?[=!]" attribute="Regex Parenthesis Options" context="#pop#pop#pop!Raw Triple Q-F-Regex LookaroundInCond"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex ParentError" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="?" attribute="Error" context="#pop#pop!Raw Triple Q-F-Regex Parenthesis"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex NamedCapture" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="(" attribute="Regex Capturing" beginRegion="RegParent"/>
+				<!-- regex package support: P is optional -->
+				<RegExpr String="\?P?&lt;(([_[:alpha:]]\w*)?>)?" attribute="Regex Parenthesis Options" context="#pop#pop!Raw Triple Q-F-Regex Capture"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex LookaroundInCond" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop!Raw Triple Q-F-Regex Parenthesis" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex Parenthesis" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Parenthesis" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex Capture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex NonCapture" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String=")" attribute="Regex Non-Capturing" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-F-Regex ParentInside"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex ParentInside" attribute="Raw F-String" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop" endRegion="RegParent"/>
+				<IncludeRules context="Raw Triple Q-F-Regex"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex ParentComment" attribute="Comment" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexTripleCommentCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop#pop" endRegion="RegParent"/>
+			</context>
+
+			<context name="Raw Triple Q-F-Regex Set" attribute="Regex Set" lineEndContext="#stay" noIndentationBasedFolding="true">
+				<IncludeRules context="RegexFStringSetCommon"/>
+				<IncludeRules context="RegexFString"/>
+				<StringDetect String="&quot;&quot;&quot;" lookAhead="1" context="#pop"/>
+			</context>
+
+
+			<!-- Regex common context -->
+
+			<context name="RegexFString" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="{{" attribute="String Char"/>
+				<StringDetect String="}}" attribute="String Char"/>
+				<StringDetect String="{"  attribute="String Substitution" context="String Interpolation"/>
+				<StringDetect String="}"  attribute="Error"/>
+			</context>
+
+			<context name="RegexFStringParentCommon" attribute="Raw F-String" lineEndContext="#pop">
+				<!-- regex package support: (?R) (?0) -->
+				<RegExpr String="\(\?([R0](?=\))|(?=([aiLmsuxfwbepr]+|V[01]|&fStringSimple;)*\)))" attribute="Regex Parenthesis Options" context="RegexFStringParentOptions"/>
+				<!-- regex package support: (?P=1), (?1), (?P>name), (?P&name) -->
+				<RegExpr String="\(\?P[=>&amp;]" attribute="Regex Backreference" context="RegexFStringParentBackRef"/>
+			</context>
+			<context name="RegexFStringParentOptions" attribute="Regex Parenthesis Options" lineEndContext="#pop#pop">
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<StringDetect String=")" attribute="Regex Parenthesis Options" context="#pop#pop"/>
+			</context>
+			<context name="RegexFStringParentBackRef" attribute="Regex Backreference" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<StringDetect String=")" attribute="Regex Backreference" context="#pop#pop"/>
+				<DetectIdentifier attribute="Regex Backreference"/>
+				<Int attribute="Regex Backreference"/>
+			</context>
+
+			<context name="RegexFStringCommon" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="\" lookAhead="1" context="RegexFStringEscape"/>
+				<IncludeRules context="RegexCommonSymbol"/>
+				<RegExpr String="\{\{(,&regFStringRangeN;?|&regFStringRangeN;(,&regFStringRangeN;?)?)\}\}" lookAhead="1" context="RegexFStringCommonRange"/>
+				<IncludeRules context="RegexFString"/>
+			</context>
+			<context name="RegexFStringCommonRange" attribute="Regex Quantifier" lineEndContext="#pop">
+				<StringDetect String="{{" attribute="String Char"/>
+				<StringDetect String="}}" attribute="String Char" context="#pop"/>
+				<StringDetect String="{"  attribute="String Substitution" context="String Interpolation"/>
+			</context>
+
+			<context name="RegexFStringSetCommon" attribute="Raw F-String" lineEndContext="#pop">
+				<StringDetect String="]" attribute="Regex Set" context="#pop"/>
+				<StringDetect String="\" lookAhead="1" context="RegexFStringSetEscape"/>
+				<!-- regex package support: character classes [:...:] -->
+				<StringDetect String="[" lookAhead="1" context="RegexSetCharClass"/>
+			</context>
+
+			<context name="RegexFStringSetEscape" attribute="Raw F-String" lineEndContext="#pop">
+				<IncludeRules context="RegexFStringEscapeCommon"/>
+				<StringDetect String="\b" attribute="String Char" context="#pop"/>
+				<LineContinue attribute="String Char" context="#pop"/>
+				<RegExpr String="." attribute="Error" context="#pop"/>
+			</context>
+
+			<context name="RegexFStringEscape" attribute="Raw F-String" lineEndContext="#pop">
+				<IncludeRules context="RegexFStringEscapeCommon"/>
+				<IncludeRules context="RegexEscapeCommonBegin"/>
+				<RegExpr String="\\g&lt;(?=&fStringSimple;>)" attribute="Regex Backreference" context="RegexFStringEscapeG"/>
+				<IncludeRules context="RegexEscapeCommonEnd"/>
+			</context>
+			<context name="RegexFStringEscapeG" attribute="Regex Backreference" lineEndContext="#pop#pop">
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<StringDetect String=">" attribute="Regex Backreference" context="#pop#pop"/>
+			</context>
+
+			<!-- contains no \b -->
+			<context name="RegexFStringEscapeCommon" attribute="Raw F-String" lineEndContext="#pop">
+				<IncludeRules context="RegexEscapeSpecialCommon"/>
+				<!-- regex package support: \p{value} \P{value} \p{property=value} \P{property=value} -->
+				<RegExpr String="\\[[:^alnum:]afnrtv]|\\[0-7]{1,3}|&escapedHexUni;|\\[pP]{{\^?[a-zA-Z0-9_]+([:=][a-zA-Z0-9_]*)?}}|\\({{|}})|\\[xuUpPN]?(?={([^{]|$))" attribute="String Char" context="#pop"/>
+				<RegExpr String="\\[pP]{{\^?(?=(&fStringSimple;|[a-zA-Z0-9_]++)[:=]?(([a-zA-Z0-9_]*|&fStringSimple;)?)}})|\\N{{(?=&fStringSimple;}})" attribute="String Char" context="RegexFStringEscapeP"/>
+				<RegExpr String="\\L&lt;(?=&fStringSimple;>)" attribute="Regex Special" context="RegexFStringEscapeL"/>
+			</context>
+			<context name="RegexFStringEscapeP" attribute="String Char" lineEndContext="#pop#pop">
+				<StringDetect String="}}" attribute="String Char" context="#pop#pop"/>
+				<StringDetect String="{"  attribute="String Substitution" context="String Interpolation"/>
+			</context>
+			<context name="RegexFStringEscapeL" attribute="Regex Special" lineEndContext="#pop#pop">
+				<StringDetect String="{" attribute="String Substitution" context="String Interpolation"/>
+				<StringDetect String=">" attribute="Regex Special" context="#pop#pop"/>
+			</context>
+
+
+			<context name="RegexBStringCommon" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="\" lookAhead="1" context="RegexBStringEscape"/>
+				<IncludeRules context="RegexCommonSymbol"/>
+				<IncludeRules context="RegexCommonRangeQuantifier"/>
+				<AnyChar String="{}" attribute="Raw B-String"/>
+				<RegExpr attribute="Error" String="."/>
+			</context>
+
+			<context name="RegexBStringSetCommon" attribute="Raw B-String" lineEndContext="#pop">
+				<StringDetect String="]" attribute="Regex Set" context="#pop"/>
+				<StringDetect String="\" lookAhead="1" context="RegexBStringSetEscape"/>
+				<!-- regex package support: character classes [:...:] -->
+				<StringDetect String="[" lookAhead="1" context="RegexSetCharClass"/>
+			</context>
+
+			<context name="RegexBStringSetEscape" attribute="Raw B-String" lineEndContext="#pop">
+				<IncludeRules context="RegexBStringEscapeCommon"/>
+				<StringDetect String="\b" attribute="String Char" context="#pop"/>
+				<LineContinue attribute="String Char" context="#pop"/>
+				<RegExpr String="." attribute="Error" context="#pop"/>
+			</context>
+
+			<context name="RegexBStringEscape" attribute="Raw B-String" lineEndContext="#pop">
+				<IncludeRules context="RegexBStringEscapeCommon"/>
+				<IncludeRules context="RegexEscapeCommonBegin"/>
+				<IncludeRules context="RegexEscapeCommonEnd"/>
+			</context>
+
+			<!-- contains no \b -->
+			<context name="RegexBStringEscapeCommon" attribute="Raw B-String" lineEndContext="#pop">
+				<IncludeRules context="RegexEscapeSpecialCommon"/>
+				<RegExpr String="\\[[:^alnum:]afnrtv]|\\[0-7]{1,3}|&escapedHex;" attribute="String Char" context="#pop"/>
+			</context>
+
+
+			<context name="RegexStringCommon" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="\" lookAhead="1" context="RegexEscape"/>
+				<IncludeRules context="RegexCommonSymbol"/>
+				<IncludeRules context="RegexCommonRangeQuantifier"/>
+			</context>
+
+			<context name="RegexCommonSymbol" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="|" attribute="Regex Alternation"/>
+				<StringDetect String=")" attribute="Error"/>
+				<AnyChar String="*+?" attribute="Regex Quantifier"/>
+				<AnyChar String="^$." attribute="Regex Special"/>
+			</context>
+			<context name="RegexCommonRangeQuantifier" attribute="Raw String" lineEndContext="#pop">
+				<RegExpr String="\{(,[0-9]*|[0-9]+(,[0-9]*)?)\}" attribute="Regex Quantifier"/>
+			</context>
+
+			<context name="RegexCommentCommon" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces attribute="Comment"/>
+				<DetectIdentifier attribute="Comment"/>
+				<StringDetect String=")" attribute="Comment" context="#pop#pop"/>
+				<StringDetect String="\)" attribute="Comment"/>
+				<StringDetect String="\\" attribute="Comment"/>
+				<StringDetect String="\'" attribute="Comment"/>
+				<StringDetect String="\&quot;" attribute="Comment"/>
+			</context>
+
+			<context name="RegexTripleCommentCommon" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces attribute="Comment"/>
+				<DetectIdentifier attribute="Comment"/>
+				<StringDetect String=")" attribute="Comment" context="#pop#pop" endRegion="RegParent"/>
+				<StringDetect String="\)" attribute="Comment"/>
+				<StringDetect String="\\" attribute="Comment"/>
+				<StringDetect String="\'" attribute="Comment"/>
+				<StringDetect String="\&quot;" attribute="Comment"/>
+			</context>
+
+			<context name="RegexParentCommon" attribute="Raw String" lineEndContext="#pop">
+				<!-- regex package support: (?R) (?0) -->
+				<RegExpr String="\(\?(([aiLmsuxfwbepr]+|V[01])*|[R0])\)" attribute="Regex Parenthesis Options" context="#pop"/>
+				<!-- regex package support: (?P=1), (?1), (?P>name), (?P&name) -->
+				<RegExpr String="\(\?(P=([_[:alpha:]]\w*|[0-9]{1,2})?|[0-9]{1,2}|P[>&amp;]([_[:alpha:]]\w*)?)\)?" attribute="Regex Backreference" context="#pop"/>
+			</context>
+
+			<context name="RegexSetCommon" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="]" attribute="Regex Set" context="#pop"/>
+				<StringDetect String="\" lookAhead="1" context="RegexSetEscape"/>
+				<!-- regex package support: character classes [:...:] -->
+				<StringDetect String="[" lookAhead="1" context="RegexSetCharClass"/>
+			</context>
+
+			<context name="RegexSetCharClass" attribute="Raw String" lineEndContext="#pop">
+				<RegExpr String="\[:\^?[a-zA-Z_]*:\]" attribute="Regex Character Class" context="#pop"/>
+				<StringDetect String="[" attribute="Regex Set" context="#pop"/>
+			</context>
+
+			<context name="RegexSetEscape" attribute="Raw String" lineEndContext="#pop">
+				<IncludeRules context="RegexStringEscapeCommon"/>
+				<StringDetect String="\b" attribute="String Char" context="#pop"/>
+				<LineContinue attribute="String Char" context="#pop"/>
+				<RegExpr String="." attribute="Error" context="#pop"/>
+			</context>
+
+			<context name="RegexEscape" attribute="Raw String" lineEndContext="#pop">
+				<IncludeRules context="RegexStringEscapeCommon"/>
+				<IncludeRules context="RegexEscapeCommonBegin"/>
+				<IncludeRules context="RegexEscapeCommonEnd"/>
+			</context>
+
+			<context name="RegexEscapeCommonBegin" attribute="Raw String" lineEndContext="#pop">
+				<RegExpr String="\\[0-9]{1,2}|\\g&lt;([0-9]{1,2}|[_[:alpha:]]\w*)>" attribute="Regex Backreference" context="#pop"/>
+			</context>
+			<context name="RegexEscapeCommonEnd" attribute="Raw String" lineEndContext="#pop">
+				<StringDetect String="\b" attribute="Regex Special" context="#pop"/>
+				<LineContinue attribute="String Char" context="#pop"/>
+				<RegExpr String="." attribute="Error" context="#pop"/>
+			</context>
+
+			<!-- contains no \b -->
+			<context name="RegexStringEscapeCommon" attribute="Raw String" lineEndContext="#pop">
+				<IncludeRules context="RegexEscapeSpecialCommon"/>
+				<!-- regex package support: \p{value} \P{value} \p{property=value} \P{property=value} -->
+				<RegExpr String="\\[[:^alnum:]afnrtv]|\\[0-7]{1,3}|&escapedHexUni;|\\[pP]\{\^?[a-zA-Z0-9_]+([:=][a-zA-Z0-9_]*)?\}" attribute="String Char" context="#pop"/>
+			</context>
+			<context name="RegexEscapeSpecialCommon" attribute="Raw String" lineEndContext="#pop">
+				<!-- regex package support: \K \m \M \G \X \L<name> -->
+				<RegExpr String="\\[ABdDsSwWzZKmMGX]|\\L&lt;([_[:alpha:]]\w*)?>" attribute="Regex Special" context="#pop"/>
+			</context>
+
+		</contexts>
+
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+			<itemData name="Definition Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+			<itemData name="Operator Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Flow Control Keyword" defStyleNum="dsControlFlow" spellChecking="false"/>
+			<itemData name="Builtin Function" defStyleNum="dsBuiltIn" spellChecking="false"/>
+			<itemData name="Special Variable" defStyleNum="dsVariable" spellChecking="false"/>
+			<itemData name="Extensions" defStyleNum="dsExtension" spellChecking="false"/>
+			<itemData name="Exceptions" defStyleNum="dsPreprocessor" spellChecking="false"/>
+			<itemData name="Overloaders" defStyleNum="dsFunction" spellChecking="false"/>
+			<itemData name="Import" defStyleNum="dsImport" spellChecking="false"/>
+			<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+			<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
+			<itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
+			<itemData name="Complex" defStyleNum="dsOthers" spellChecking="false"/>
+			<itemData name="Comment" defStyleNum="dsComment"/>
+
+			<!-- String -->
+			<itemData name="String Deliminator" defStyleNum="dsString" spellChecking="false"/>
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="Raw String Deliminator" defStyleNum="dsVerbatimString" spellChecking="false"/>
+			<itemData name="Raw String" defStyleNum="dsVerbatimString"/>
+			<!-- f-string -->
+			<itemData name="F-String Deliminator" defStyleNum="dsSpecialString" spellChecking="false"/>
+			<itemData name="F-String" defStyleNum="dsSpecialString"/>
+			<itemData name="Raw F-String Deliminator" defStyleNum="dsVerbatimString" spellChecking="false"/>
+			<itemData name="Raw F-String" defStyleNum="dsVerbatimString"/>
+			<!-- b-string -->
+			<itemData name="B-String Deliminator" defStyleNum="dsString" spellChecking="false"/>
+			<itemData name="B-String" defStyleNum="dsString" spellChecking="false"/>
+			<itemData name="Raw B-String Deliminator" defStyleNum="dsVerbatimString" spellChecking="false"/>
+			<itemData name="Raw B-String" defStyleNum="dsVerbatimString" spellChecking="false"/>
+			<!-- t-string -->
+			<itemData name="T-String Deliminator" defStyleNum="dsSpecialString" spellChecking="false"/>
+			<itemData name="T-String" defStyleNum="dsSpecialString"/>
+			<itemData name="Raw T-String Deliminator" defStyleNum="dsVerbatimString" spellChecking="false"/>
+			<itemData name="Raw T-String" defStyleNum="dsVerbatimString"/>
+
+			<!-- Char -->
+			<itemData name="String Char" defStyleNum="dsChar" spellChecking="false"/>
+			<itemData name="String Substitution" defStyleNum="dsSpecialChar" spellChecking="false"/>
+			<!-- Other -->
+			<itemData name="Decorator" defStyleNum="dsAttribute" spellChecking="false"/>
+			<itemData name="Error" defStyleNum="dsError"/>
+			<!-- Regex -->
+			<itemData name="Regex Alternation" defStyleNum="dsControlFlow" spellChecking="false"/>
+			<itemData name="Regex Set" defStyleNum="dsPreprocessor" spellChecking="false"/>
+			<itemData name="Regex Character Class" defStyleNum="dsExtension" spellChecking="false" bold="0"/>
+			<itemData name="Regex Capturing" defStyleNum="dsKeyword" spellChecking="false"/>
+			<itemData name="Regex Non-Capturing" defStyleNum="dsNormal" spellChecking="false"/>
+			<itemData name="Regex Parenthesis" defStyleNum="dsExtension" spellChecking="false"/>
+			<itemData name="Regex Parenthesis Options" defStyleNum="dsFunction" spellChecking="false"/>
+			<itemData name="Regex Special" defStyleNum="dsDecVal" spellChecking="false"/>
+			<itemData name="Regex Quantifier" defStyleNum="dsOperator" spellChecking="false"/>
+			<itemData name="Regex Backreference" defStyleNum="dsVariable" spellChecking="false"/>
+		</itemDatas>
+	</highlighting>
+	<general>
+		<folding indentationsensitive="1" />
+		<emptyLines>
+			<emptyLine regexpr="(?:\s+|\s*#.*)"/>
+		</emptyLines>
+		<comments>
+			<comment name="singleLine" start="#" position="afterwhitespace"/>
+		</comments>
+		<keywords casesensitive="1" additionalDeliminator="#'"/>
+	</general>
+</language>
+
+<!-- kate: space-indent off; indent-width 2; -->
diff --git a/xml/q.xml b/xml/q.xml
new file mode 100644
--- /dev/null
+++ b/xml/q.xml
@@ -0,0 +1,210 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="q" version="4" kateversion="5.0" section="Scripts" extensions="*.q" license="LGPLv2+" author="James Schmitz (james.schmitz@gmail.com)">
+<highlighting>
+    <list name="DotQ">
+      <item>.Q.addmonths</item>
+      <item>.Q.addr</item>
+      <item>.Q.host</item>
+      <item>.Q.chk</item>
+      <item>.Q.cn</item>
+      <item>.Q.dd</item>
+      <item>.Q.dpft</item>
+      <item>.Q.dsftg</item>
+      <item>.Q.def</item>
+      <item>.Q.en</item>
+      <item>.Q.fc</item>
+      <item>.Q.fk</item>
+      <item>.Q.fmt</item>
+      <item>.Q.fs</item>
+      <item>.Q.ft</item>
+      <item>.Q.fu</item>
+      <item>.Q.gc</item>
+      <item>.Q.hdpf</item>
+      <item>.Q.ind</item>
+      <item>.Q.j10</item>
+      <item>.Q.x10</item>
+      <item>.Q.j12</item>
+      <item>.Q.x12</item>
+      <item>.Q.k</item>
+      <item>.Q.l</item>
+      <item>.Q.opt</item>
+      <item>.Q.par</item>
+      <item>.Q.qp</item>
+      <item>.Q.qt</item>
+      <item>.Q.s</item>
+      <item>.Q.ty</item>
+      <item>.Q.v</item>
+      <item>.Q.V</item>
+      <item>.Q.view</item>
+      <item>.Q.w</item>
+      <item>.Q.M</item>
+      <item>.Q.pf</item>
+      <item>.Q.pt</item>
+      <item>.Q.PD</item>
+      <item>.Q.PV</item>
+      <item>.Q.pd</item>
+      <item>.Q.pv</item>
+      <item>.Q.pn</item>
+      <item>.Q.bv</item>
+      <item>.Q.vp</item>
+      <item>.Q.P</item>
+      <item>.Q.D</item>
+      <item>.Q.u</item>
+    </list>
+    <list name="qkeywords">
+      <item>aj</item>
+      <item>aj0</item>
+      <item>all</item>
+      <item>and</item>
+      <item>any</item>
+      <item>asc</item>
+      <item>asof</item>
+      <item>attr</item>
+      <item>avgs</item>
+      <item>ceiling</item>
+      <item>cols</item>
+      <item>cor</item>
+      <item>count</item>
+      <item>cov</item>
+      <item>cross</item>
+      <item>csv</item>
+      <item>cut</item>
+      <item>deltas</item>
+      <item>desc</item>
+      <item>dev</item>
+      <item>differ</item>
+      <item>distinct</item>
+      <item>each</item>
+      <item>ej</item>
+      <item>enlist</item>
+      <item>eval</item>
+      <item>except</item>
+      <item>fby</item>
+      <item>fills</item>
+      <item>first</item>
+      <item>fkeys</item>
+      <item>flip</item>
+      <item>floor</item>
+      <item>from</item>
+      <item>get</item>
+      <item>group</item>
+      <item>gtime</item>
+      <item>hclose</item>
+      <item>hcount</item>
+      <item>hdel</item>
+      <item>hopen</item>
+      <item>hsym</item>
+      <item>iasc</item>
+      <item>idesc</item>
+      <item>ij</item>
+      <item>inter</item>
+      <item>inv</item>
+      <item>key</item>
+      <item>keys</item>
+      <item>lj</item>
+      <item>load</item>
+      <item>lower</item>
+      <item>lsq</item>
+      <item>ltime</item>
+      <item>ltrim</item>
+      <item>mavg</item>
+      <item>maxs</item>
+      <item>mcount</item>
+      <item>md5</item>
+      <item>mdev</item>
+      <item>med</item>
+      <item>meta</item>
+      <item>mins</item>
+      <item>mmax</item>
+      <item>mmin</item>
+      <item>mmu</item>
+      <item>mod</item>
+      <item>msum</item>
+      <item>neg</item>
+      <item>next</item>
+      <item>not</item>
+      <item>null</item>
+      <item>or</item>
+      <item>over</item>
+      <item>parse</item>
+      <item>peach</item>
+      <item>pj</item>
+      <item>plist</item>
+      <item>prds</item>
+      <item>prev</item>
+      <item>prior</item>
+      <item>rand</item>
+      <item>rank</item>
+      <item>ratios</item>
+      <item>raze</item>
+      <item>read0</item>
+      <item>read1</item>
+      <item>reciprocal</item>
+      <item>reverse</item>
+      <item>rload</item>
+      <item>rotate</item>
+      <item>rsave</item>
+      <item>rtrim</item>
+      <item>save</item>
+      <item>scan</item>
+      <item>set</item>
+      <item>show</item>
+      <item>signum</item>
+      <item>ssr</item>
+      <item>string</item>
+      <item>sublist</item>
+      <item>sums</item>
+      <item>sv</item>
+      <item>system</item>
+      <item>tables</item>
+      <item>til</item>
+      <item>trim</item>
+      <item>txf</item>
+      <item>type</item>
+      <item>uj</item>
+      <item>ungroup</item>
+      <item>union</item>
+      <item>update</item>
+      <item>upper</item>
+      <item>upsert</item>
+      <item>value</item>
+      <item>var</item>
+      <item>view</item>
+      <item>views</item>
+      <item>vs</item>
+      <item>where</item>
+      <item>wj</item>
+      <item>wj1</item>
+      <item>xasc</item>
+      <item>xbar</item>
+      <item>xcol</item>
+      <item>xcols</item>
+      <item>xdesc</item>
+      <item>xgroup</item>
+      <item>xkey</item>
+      <item>xlog</item>
+      <item>xprev</item>
+      <item>xrank</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
+        <keyword attribute="qKeyword" context="#stay" String="qkeywords" />
+        <keyword attribute="DotQfunctions" context="#stay" String="DotQ" />
+        <IncludeRules context="##k" />
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal" />
+      <itemData name="qKeyword" defStyleNum="dsKeyword" />
+      <itemData name="DotQfunctions" defStyleNum="dsKeyword" />
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="/" />
+    </comments>
+    <keywords casesensitive="1" weakDeliminator="." additionalDeliminator="`#'@$&quot;" />
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/qml.xml b/xml/qml.xml
--- a/xml/qml.xml
+++ b/xml/qml.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!ENTITY identifier "[a-zA-Z_$][\w$]*">
 ]>
 <!-- Author: Milian Wolff <mail@milianw.de> -->
-<language name="QML" version="9" kateversion="5.53" section="Scripts" extensions="*.qml;*.qmltypes"
+<language name="QML" version="14" kateversion="5.53" section="Scripts" extensions="*.qml;*.qmltypes"
           mimetype="text/x-qml;application/x-qml" indenter="cstyle"
           author="Milian Wolff (mail@milianw.de)" license="MIT">
   <highlighting>
@@ -88,7 +88,12 @@
     </list>
     <!-- keywords not part of JavaScript -->
     <list name="extra-keywords">
+      <item>pragma</item>
       <item>readonly</item>
+      <item>required</item>
+      <item>virtual</item>
+      <item>final</item>
+      <item>override</item>
     </list>
     <list name="types">
       <!-- see: http://doc.trolltech.com/4.7-snapshot/qml-extending-types.html -->
@@ -104,6 +109,14 @@
       <item>variant</item>
     </list>
     <contexts>
+      <!-- Shebang: ("#!") Detect shebang and fallthrough to Normal -->
+      <!-- Based on the similar clause from prolog.xml.
+           This uses "lineEmptyContext" & "lineEndContext" to force the highlight only on the first line. -->
+      <context name="Shebang" attribute="Normal Text" lineEndContext="Normal" lineEmptyContext="Normal" fallthrough="true" fallthroughContext="Normal">
+        <Detect2Chars column="0" char="#" char1="!" context="Shebang Line" attribute="Shebang" />
+      </context>
+      <context name="Shebang Line" attribute="Shebang" lineEndContext="#pop!Normal" />
+
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
         <DetectSpaces/>
         <WordDetect attribute="Import" context="Import" String="import"/>
@@ -115,15 +128,20 @@
         <DetectChar attribute="String" context="String" char="&quot;" />
         <DetectChar attribute="Normal Text" context="Object" char="{" beginRegion="Brace" />
         <!-- Normal##JavaScript -->
+        <IncludeRules context="FindSomeSymbols##JavaScript" />
+        <AnyChar context="#stay" String="[(" />
+        <AnyChar context="NoRegExp##JavaScript" String="])" />
         <IncludeRules context="FindNumbers##JavaScript" />
         <IncludeRules context="FindKeywords##JavaScript" />
         <IncludeRules context="FindStrings##JavaScript" />
         <RegExpr attribute="Objects" context="FindMemberObjectMath##JavaScript" String="\bMath(?=\s*\.)" />
         <RegExpr attribute="Objects" context="#stay" String="\b[A-Z][\w$]*(?=\s*\.)" />
+        <IncludeRules context="FindMembers##JavaScript" />
         <IncludeRules context="FindObjectMembersAndFunctions##JavaScript" />
         <IncludeRules context="JSBase##JavaScript" />
       </context>
       <context attribute="ImportValue" lineEndContext="#pop" name="Import">
+        <IncludeRules context="FindComments##JavaScript" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Property">
         <WordDetect attribute="Property Type" context="#stay" String="alias" />
@@ -131,6 +149,7 @@
         <DetectSpaces />
         <DetectIdentifier />
         <DetectChar char=":" context="#pop" />
+        <IncludeRules context="FindComments##JavaScript" />
       </context>
       <context attribute="Normal Text" lineEndContext="#pop" name="Signal">
         <DetectSpaces />
@@ -150,7 +169,7 @@
       </context>
       <context attribute="Normal Text" lineEndContext="#stay" name="Object">
         <!--DetectIdentifier-->
-        <RegExpr attribute="Property Type" String="&identifier;\s*(?=:)" />
+        <RegExpr attribute="Property Type" String="&identifier;\s*(?=(\/\*.*?\*\/)?:)" />
         <!-- Avoid highlighting Property Type before ":" in conditional expressions. -->
         <RegExpr attribute="Symbol" context="ConditionalExpression" String="\?(?=[^\}]*&identifier;\s*\:)" />
         <DetectChar attribute="Normal Text" char="}" endRegion="Brace" context="#pop" />
@@ -173,6 +192,7 @@
       <itemData name="String"       defStyleNum="dsString" />
       <itemData name="Objects"      defStyleNum="dsExtension" bold="0" spellChecking="false" />
       <itemData name="Symbol"       defStyleNum="dsOperator" spellChecking="false" />
+      <itemData name="Shebang"      defStyleNum="dsComment" spellChecking="false" />
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/quarto.xml b/xml/quarto.xml
new file mode 100644
--- /dev/null
+++ b/xml/quarto.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language
+[
+<!-- Replicated from "markdown.xml": -->
+<!ENTITY rulerregex "\s*(?:(?:\*\s*){3,}|(?:_\s*){3,}|(?:\-\s*){3,})\s*$">
+<!ENTITY indentedcodeblock "(?:\s{4}|\t).*$">
+<!ENTITY listbullet "[\*\+\-]">
+<!ENTITY emptyline "^\s*$">
+<!ENTITY checkbox "\[[ x]\](?=\s)">
+]>
+<!--
+  Kate highlighting module for Quarto
+  (c) 2025 Thomas Friedrichsmeier (thomas.friedrichsmeier@kdemail.net)
+  Heavily based on the R markdown highlighting definition, originally by:
+  (c) 2014 Dirk Sarpe (dsarpe@posteo.de)
+
+  NOTE: In fact this definition is identical to R markdown in very many parts,
+        and the two should be kept in sync, except for the regions marked with
+        "Quarto_specific"!
+
+  depends on:
+    Kate highlighting module for Markdown
+    Kate highlighting module for R script
+    Kate highlighting module for LaTeX
+    Kate highlighting module for YAML
+-->
+
+<language name="Quarto"
+section="Markup"
+extensions="*.qmd;*.Qmd;*.QMD"
+mimetype="text/x-quarto"
+version="11"
+kateversion="6.22"
+casesensitive="true"
+author="Thomas Friedrichsmeier (thomas.friedrichsmeier@kdemail.net)"
+license="GPL">
+
+  <highlighting>
+    <contexts>
+
+      <context name="Start Document" attribute="Markdown" lineEndContext="Normal Text" lineEmptyContext="Normal Text" fallthroughContext="Normal Text">
+        <RegExpr String="^---$" column="0" attribute="Markdown" context="YAMLhead" beginRegion="YAMLhead block"/>
+      </context>
+
+      <context name="Normal Text" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="find-code-block">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="Overwrite Markdown Normal Text"/>
+        <IncludeRules context="Normal Text##Markdown" includeAttrib="true"/>
+      </context>
+      <context name="find-code-block" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="find-code-block##Markdown" includeAttrib="true"/>
+      </context>
+
+      <context name="Common" attribute="Markdown" lineEndContext="#stay">
+        <RegExpr String="```\{r.*\}" firstNonSpace="true" attribute="Structure"
+                 context="R block" beginRegion="R block"/>
+        <!-- BEGIN Quarto_specific: Alway require braced language sepcifier "{r}" rather than "r" at head of code blocks -->
+        <RegExpr String="`\{r.*\}" attribute="Structure"
+                 context="R inline"/>
+        <!-- END Quarto_specific -->
+        <!-- BEGIN Quarto_specific: Allow python, julia, and ojs blocks in the same was as R bloks -->
+        <!-- NOTE: contrary to R, no (legacy) options seem to be allowed within the braces, for the other languages -->
+        <StringDetect String="```{python}" firstNonSpace="true" attribute="Structure"
+                 context="Python block" beginRegion="Python block"/>
+        <StringDetect String="`{python}" attribute="Structure"
+                 context="Python inline"/>
+        <StringDetect String="```{julia}" firstNonSpace="true" attribute="Structure"
+                 context="Julia block" beginRegion="Julia block"/>
+        <StringDetect String="`{julia}" attribute="Structure"
+                 context="Julia inline"/>
+        <StringDetect String="```{ojs}" firstNonSpace="true" attribute="Structure"
+                 context="OJS block" beginRegion="OJS block"/>
+        <StringDetect String="`{ojs}" attribute="Structure"
+                 context="OJS inline"/>
+        <!-- END Quarto_specific -->
+        <Detect2Chars char="$" char1="$" attribute="MathMode"
+                      context="LaTeX equation block" beginRegion="LaTeX equation block"/>
+        <DetectChar char="$" attribute="MathMode"
+                    context="LaTeX inline equation"/>
+        <Detect2Chars char="\" char1="$" attribute="Backslash Escape" context="#stay"/>
+      </context>
+
+      <context name="R block" attribute="Markdown" lineEndContext="#stay">
+        <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"
+                 endRegion="R block"/>
+        <IncludeRules context="##R Script" includeAttrib="true"/>
+      </context>
+
+      <context name="R inline" attribute="Markdown" lineEndContext="#stay">
+        <DetectChar char="`" attribute="Structure" context="#pop"/>
+        <IncludeRules context="##R Script" includeAttrib="true"/>
+      </context>
+
+      <!-- BEGIN Quarto_specific: Allow python, julia, and ojs blocks in the same was as R bloks -->
+      <context name="Python block" attribute="Markdown" lineEndContext="#stay">
+        <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"
+                 endRegion="Python block"/>
+        <IncludeRules context="##Python" includeAttrib="true"/>
+      </context>
+
+      <context name="Python inline" attribute="Markdown" lineEndContext="#stay">
+        <DetectChar char="`" attribute="Structure" context="#pop"/>
+        <IncludeRules context="##Python" includeAttrib="true"/>
+      </context>
+
+      <context name="Julia block" attribute="Markdown" lineEndContext="#stay">
+        <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"
+                 endRegion="Julia block"/>
+        <IncludeRules context="##Julia" includeAttrib="true"/>
+      </context>
+
+      <context name="Julia inline" attribute="Markdown" lineEndContext="#stay">
+        <DetectChar char="`" attribute="Structure" context="#pop"/>
+        <IncludeRules context="##Julia" includeAttrib="true"/>
+      </context>
+
+      <context name="OJS block" attribute="Markdown" lineEndContext="#stay">
+        <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"
+                 endRegion="OJS block"/>
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+
+      <context name="OJS inline" attribute="Markdown" lineEndContext="#stay">
+        <DetectChar char="`" attribute="Structure" context="#pop"/>
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+      <!-- END Quarto_specific -->
+
+      <context name="LaTeX equation block" attribute="MathMode"
+               lineEndContext="#stay">
+        <Detect2Chars char="$" char1="$" attribute="MathMode"
+                      context="#pop" endRegion="LaTeX equation block"/>
+        <IncludeRules context="MathModeDisplay##LaTeX" includeAttrib="true"/>
+      </context>
+
+      <context name="LaTeX inline equation" attribute="MathMode"
+               lineEndContext="#stay">
+        <DetectChar char="$" attribute="MathMode" context="#pop"/>
+        <IncludeRules context="MathMode##LaTeX" includeAttrib="true"/>
+      </context>
+
+      <context name="YAMLhead" attribute="Document Headers"
+               lineEndContext="#stay" fallthroughContext="Lvl0Text##YAML">
+        <RegExpr String="^---$" column="0" attribute="Markdown" context="#pop"
+                 endRegion="YAMLhead block"/>
+        <IncludeRules context="##YAML" includeAttrib="true"/>
+      </context>
+
+      <!-- Markdown -->
+      <!-- These contexts are replicated from "markdown.xml" to add the features of R Markdown. -->
+
+      <context name="Overwrite Markdown Normal Text" attribute="Markdown" lineEndContext="#stay">
+        <!-- Blockquotes -->
+        <DetectChar attribute="Blockquote" context="blockquote" char="&gt;" firstNonSpace="true"/>
+        <!-- Lists: avoid highlighting code blocks incorrectly, capturing indentation -->
+        <RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist" String="^(\s*)\d\.(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist2" String="^(\s*)\d\d+\.(\s+)" column="0"/>
+      </context>
+
+      <context name="list" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="List: Code" String="^%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s+&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s+&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured corresponds to the item list -->
+        <RegExpr context="content-list" String="^%1%2\s" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+        <!-- Highlight checkbox at the start of the item (task list) -->
+        <RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>
+      </context>
+      <!-- 1. numlist (one digit) -->
+      <context name="numlist" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">
+        <RegExpr attribute="List: Code" String="^%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{2,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <RegExpr context="content-list" String="^%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+      <!-- 10. numlist (two or more digits) -->
+      <context name="numlist2" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">
+        <RegExpr attribute="List: Code" String="^%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{3,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <RegExpr context="content-list" String="^%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+
+      <context name="content-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="content-list##Markdown" includeAttrib="true"/>
+      </context>
+
+      <context name="blockquote" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="blockquote##Markdown" includeAttrib="true"/>
+      </context>
+      <context name="blockquote-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="blockquote-list##Markdown" includeAttrib="true"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Markdown" defStyleNum="dsNormal"/>
+      <itemData name="Structure" defStyleNum="dsRegionMarker"/>
+      <itemData name="MathMode" defStyleNum="dsRegionMarker" color="#00A000"/>
+      <itemData name="Document Headers" defStyleNum="dsOthers"/>
+
+      <itemData name="Blockquote" defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>
+      <itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="List: Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>
+      <itemData name="List: Code" defStyleNum="dsInformation"/>
+      <itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Backslash Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <keywords additionalDeliminator="`"/>
+    <comments>
+      <comment name="multiLine" start="&lt;!--" end="--&gt;"/>
+    </comments>
+  </general>
+
+</language>
diff --git a/xml/r.xml b/xml/r.xml
--- a/xml/r.xml
+++ b/xml/r.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- Kate 2.5 (KDE 3.5) highlighting module for R
 	based on an earlier version by E.L. Willighagen. Code folding code by Ben Goodrich
 	version 2.0: (c) 2006 Thomas Friedrichsmeier, Arne Henningsen, and the RKWard Team
@@ -8,7 +8,7 @@
 	R      : http://www.r-project.org/
 	RKWard : http://rkward.kde.org/
 	-->
-<language version="12" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
+<language version="14" kateversion="5.0" name="R Script" section="Scientific" extensions="*.R;*.r;*.S;*.s;*.q" mimetype="" license="GPLv2">
 <highlighting>
 
 	<list name="controls">
@@ -85,6 +85,10 @@
 			<AnyChar attribute="Error" context="#stay" String="*/&lt;&gt;=|&amp;:^@$~"/>
 		</context>
 
+		<context attribute="Numeric Suffix" lineEndContext="#pop" name="NumericSuffix" fallthrough="true" fallthroughContext="#pop">
+			<AnyChar attribute="Numeric Suffix" context="#pop" String="Li"/>
+		</context>
+
 		<context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
 			<Detect2Chars attribute="Headline" context="Headline" char="#" char1="#"/>
 			<DetectChar attribute="Comment" context="Comment" char="#"/>
@@ -108,7 +112,7 @@
 			<keyword attribute="Control Structure" context="#stay" String="controls"/>
 			<keyword attribute="Reserved Words" context="#stay" String="words"/>
 			<Float attribute="Float" context="#stay"/>
-			<Int attribute="Int" context="#stay"/>
+			<Int attribute="Int" context="NumericSuffix"/>
 			<RegExpr attribute="Keyword" context="#stay" String="[a-zA-Z_]+[a-zA-Z_\.0-9]*(?=[\s]*[(])|\.[a-zA-Z_\.]+[a-zA-Z_\.0-9]*(?=[\s]*[(])"/>
 			<DetectChar attribute="Symbol" context="parenthesis" char="("/>
 
@@ -129,6 +133,7 @@
 			<Detect2Chars attribute="Operator" context="operator_rhs" char="&amp;" char1="&amp;"/>
 			<StringDetect attribute="Operator" context="operator_rhs" String=":::"/>
 			<Detect2Chars attribute="Operator" context="operator_rhs" char=":" char1=":"/>
+			<Detect2Chars attribute="Operator" context="operator_rhs" char=":" char1="="/>
 			<AnyChar attribute="Operator" context="operator_rhs" String="+-*/&lt;&gt;=!|&amp;:^@$~"/>
 			<RangeDetect attribute="Operator" context="operator_rhs" char="%" char1="%"/>
 
@@ -155,6 +160,7 @@
 		<itemData name="String Char"  defStyleNum="dsSpecialChar" spellChecking="false"/>
 		<itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
 		<itemData name="Int" defStyleNum="dsDecVal" spellChecking="false"/>
+		<itemData name="Numeric Suffix" defStyleNum="dsDataType" spellChecking="false"/>
 	</itemDatas>
 </highlighting>
 
diff --git a/xml/racket.xml b/xml/racket.xml
new file mode 100644
--- /dev/null
+++ b/xml/racket.xml
@@ -0,0 +1,1298 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language
+[
+  <!ENTITY xmlattrs "\s+([^&quot;/>]++|&quot;[^&quot;]*+&quot;)*+">
+  <!ENTITY tab      "&#009;">
+  <!ENTITY regex    "(?:[^\\(\[/]++|\\.|\[\^?\]?([^\\\[\]]++|\\.|\[(:[^:]+:\])?)++\]|\((?R)\))+">
+
+  <!ENTITY initial_ascii_set "a-zA-Z!$&#37;&amp;*/:&lt;=&gt;?~_^">
+  <!ENTITY initial_unicode_set "\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Mn}\p{Nl}\p{No}\p{Pd}\p{Pc}\p{Po}\p{Sc}\p{Sm}\p{Sk}\p{So}\p{Co}">
+  <!ENTITY initial_others "\\x[0-9a-fA-F]++;|(?![\x01-\x7f])[&initial_unicode_set;]">
+  <!ENTITY initial "(?:[&initial_ascii_set;]|&initial_others;)">
+  <!ENTITY subsequent "(?:[&initial_ascii_set;0-9-@.+\p{Nd}\p{Mc}\p{Me}]|&initial_others;)">
+  <!ENTITY symbol "(?:&initial;&subsequent;*+)">
+]>
+<!--
+Since Racket supports multiple scheme-like language, this was an extension to scheme.xml
+It also contains keywords for a few popular racket-based langs.
+-->
+<language version="2" kateversion="5.62" name="Racket" section="Scripts" extensions="*.rkt;*.scrbl" author="slbtty(shenlebantongying@gmail.com)" license="MIT" priority="9">
+  <highlighting>
+    <list name="operators">
+      <item>&lt;=</item>
+      <item>&lt;</item>
+      <item>=</item>
+      <item>=&gt;</item>
+      <item>&gt;=</item>
+      <item>&gt;</item>
+      <item>-</item>
+      <item>+</item>
+      <item>!</item>
+      <item>$</item>
+      <item>%</item>
+      <item>*</item>
+      <item>/</item>
+      <item>?</item>
+      <item>^</item>
+      <item>_</item>
+      <item>~</item>
+    </list>
+
+    <list name="characters">
+      <item>alarm</item>
+      <item>backspace</item>
+      <item>delete</item>
+      <item>esc</item>
+      <item>linefeed</item>
+      <item>newline</item>
+      <item>page</item>
+      <item>return</item>
+      <item>space</item>
+      <item>tab</item>
+      <item>vtab</item>
+      <!-- extension -->
+      <item>nul</item>
+      <item>soh</item>
+      <item>stx</item>
+      <item>etx</item>
+      <item>eot</item>
+      <item>enq</item>
+      <item>ack</item>
+      <item>bel</item>
+      <item>bs</item>
+      <item>ht</item>
+      <item>nl</item>
+      <item>vt</item>
+      <item>np</item>
+      <item>cr</item>
+      <item>so</item>
+      <item>si</item>
+      <item>dle</item>
+      <item>dc1</item>
+      <item>dc2</item>
+      <item>dc3</item>
+      <item>dc4</item>
+      <item>nak</item>
+      <item>syn</item>
+      <item>etb</item>
+      <item>can</item>
+      <item>em</item>
+      <item>sub</item>
+      <item>fs</item>
+      <item>gs</item>
+      <item>rs</item>
+      <item>us</item>
+      <item>sp</item>
+      <item>null</item>
+    </list>
+    <list name="defines">
+      <item>define</item>
+      <item>define*</item>
+      <item>define-accessor</item>
+      <item>define-class</item>
+      <item>defined?</item>
+      <item>define-generic</item>
+      <item>define-macro</item>
+      <item>define-method</item>
+      <item>define-module</item>
+      <item>define-private</item>
+      <item>define-public</item>
+      <item>define*-public</item>
+      <item>define-reader-ctor</item>
+      <item>define-syntax</item>
+      <item>define-simple-macro</item>
+      <item>define-syntax-macro</item>
+      <item>efine-syntax-rule </item>
+      <item>define-syntax-class</item>
+      <item>define-syntax-parameter</item>
+      <item>defmacro</item>
+      <item>defmacro*</item>
+      <item>defmacro*-public</item>
+    </list>
+    <list name="keywords">
+      <item>require</item>
+      <item>provide</item>
+      <item>&amp;assertion</item>
+      <item>&amp;condition</item>
+      <item>&amp;error</item>
+      <item>&amp;i/o-decoding</item>
+      <item>&amp;i/o-encoding</item>
+      <item>&amp;i/o-file-already-exists</item>
+      <item>&amp;i/o-file-does-not-exist</item>
+      <item>&amp;i/o-file-is-read-only</item>
+      <item>&amp;i/o-file-protection</item>
+      <item>&amp;i/o-filename</item>
+      <item>&amp;i/o-invalid-position</item>
+      <item>&amp;i/o-port</item>
+      <item>&amp;i/o-read</item>
+      <item>&amp;i/o-write</item>
+      <item>&amp;i/o</item>
+      <item>&amp;implementation-restriction</item>
+      <item>&amp;implementation-violation</item>
+      <item>&amp;irritants</item>
+      <item>&amp;lexical</item>
+      <item>&amp;message</item>
+      <item>&amp;mistake</item>
+      <item>&amp;no-infinities</item>
+      <item>&amp;no-nans</item>
+      <item>&amp;non-continuable</item>
+      <item>&amp;serious</item>
+      <item>&amp;syntax</item>
+      <item>&amp;undefined</item>
+      <item>&amp;violation</item>
+      <item>&amp;warning</item>
+      <item>&amp;who</item>
+      <item>&amp;xcond</item>
+      <item>abs</item>
+      <item>acos</item>
+      <item>and</item>
+      <item>angle</item>
+      <item>append</item>
+      <item>apply</item>
+      <item>applymap</item>
+      <item>asin</item>
+      <item>assert</item>
+      <item>assertion-violation</item>
+      <item>assertion-violation?</item>
+      <item>assoc</item>
+      <item>assp</item>
+      <item>assq</item>
+      <item>assv</item>
+      <item>atan</item>
+      <item>begin</item>
+      <item>binary-port?</item>
+      <item>bitwise-and</item>
+      <item>bitwise-arithmetic-shift-left</item>
+      <item>bitwise-arithmetic-shift-right</item>
+      <item>bitwise-arithmetic-shift</item>
+      <item>bitwise-bit-count</item>
+      <item>bitwise-bit-field</item>
+      <item>bitwise-bit-set?</item>
+      <item>bitwise-copy-bit-field</item>
+      <item>bitwise-copy-bit</item>
+      <item>bitwise-first-bit-set</item>
+      <item>bitwise-if</item>
+      <item>bitwise-ior</item>
+      <item>bitwise-length</item>
+      <item>bitwise-not</item>
+      <item>bitwise-reverse-bit-field</item>
+      <item>bitwise-rotate-bit-field</item>
+      <item>bitwise-xor</item>
+      <item>boolean=?</item>
+      <item>boolean?</item>
+      <item>bound-identifier=?</item>
+      <item>break</item>
+      <item>buffer-mode</item>
+      <item>buffer-mode?</item>
+      <item>bytevector-&gt;sint-list</item>
+      <item>bytevector-&gt;string</item>
+      <item>bytevector-&gt;u8-list</item>
+      <item>bytevector-&gt;uint-list</item>
+      <item>bytevector-copy!</item>
+      <item>bytevector-copy</item>
+      <item>bytevector-fill!</item>
+      <item>bytevector-ieee-double-native-ref</item>
+      <item>bytevector-ieee-double-native-set!</item>
+      <item>bytevector-ieee-double-ref</item>
+      <item>bytevector-ieee-double-set!</item>
+      <item>bytevector-ieee-single-native-ref</item>
+      <item>bytevector-ieee-single-native-set!</item>
+      <item>bytevector-ieee-single-ref</item>
+      <item>bytevector-ieee-single-set!</item>
+      <item>bytevector-length</item>
+      <item>bytevector-s16-native-ref</item>
+      <item>bytevector-s16-native-set!</item>
+      <item>bytevector-s16-ref</item>
+      <item>bytevector-s16-set!</item>
+      <item>bytevector-s32-native-ref</item>
+      <item>bytevector-s32-native-set!</item>
+      <item>bytevector-s32-ref</item>
+      <item>bytevector-s32-set!</item>
+      <item>bytevector-s64-native-ref</item>
+      <item>bytevector-s64-native-set!</item>
+      <item>bytevector-s64-ref</item>
+      <item>bytevector-s64-set!</item>
+      <item>bytevector-s8-ref</item>
+      <item>bytevector-s8-set!</item>
+      <item>bytevector-sint-ref</item>
+      <item>bytevector-sint-set!</item>
+      <item>bytevector-u16-native-ref</item>
+      <item>bytevector-u16-native-set!</item>
+      <item>bytevector-u16-ref</item>
+      <item>bytevector-u16-set!</item>
+      <item>bytevector-u32-native-ref</item>
+      <item>bytevector-u32-native-set!</item>
+      <item>bytevector-u32-ref</item>
+      <item>bytevector-u32-set!</item>
+      <item>bytevector-u64-native-ref</item>
+      <item>bytevector-u64-native-set!</item>
+      <item>bytevector-u64-ref</item>
+      <item>bytevector-u64-set!</item>
+      <item>bytevector-u8-ref</item>
+      <item>bytevector-u8-set!</item>
+      <item>bytevector-uint-ref</item>
+      <item>bytevector-uint-set!</item>
+      <item>bytevector=?</item>
+      <item>bytevector?</item>
+      <item>caaaar</item>
+      <item>caaadr</item>
+      <item>caaar</item>
+      <item>caadar</item>
+      <item>caaddr</item>
+      <item>caadr</item>
+      <item>caar</item>
+      <item>cadaar</item>
+      <item>cadadr</item>
+      <item>cadar</item>
+      <item>caddar</item>
+      <item>cadddr</item>
+      <item>caddr</item>
+      <item>cadr</item>
+      <item>call-with-bytevector-output-port</item>
+      <item>call-with-current-continuation</item>
+      <item>call-with-input-file</item>
+      <item>call-with-output-file</item>
+      <item>call-with-port</item>
+      <item>call-with-string-output-port</item>
+      <item>call-with-values</item>
+      <item>call/cc</item>
+      <item>let/cc</item>
+      <item>car</item>
+      <item>case-lambda</item>
+      <item>case</item>
+      <item>catch</item>
+      <item>cdaaar</item>
+      <item>cdaadr</item>
+      <item>cdaar</item>
+      <item>cdadar</item>
+      <item>cdaddr</item>
+      <item>cdadr</item>
+      <item>cdar</item>
+      <item>cddaar</item>
+      <item>cddadr</item>
+      <item>cddar</item>
+      <item>cdddar</item>
+      <item>cddddr</item>
+      <item>cdddr</item>
+      <item>cddr</item>
+      <item>cdr</item>
+      <item>ceiling</item>
+      <item>char&gt;=?</item>
+      <item>char&gt;?</item>
+      <item>char&lt;=?</item>
+      <item>char&lt;?</item>
+      <item>char&lt;?c</item>
+      <item>char-&gt;integer</item>
+      <item>char-alphabetic?</item>
+      <item>char-ci&gt;=?</item>
+      <item>char-ci&gt;?</item>
+      <item>char-ci&lt;=?</item>
+      <item>char-ci&lt;?</item>
+      <item>char-ci=?</item>
+      <item>char-downcase</item>
+      <item>char-foldcase</item>
+      <item>char-general-category</item>
+      <item>char-lower-case?</item>
+      <item>char-numeric?</item>
+      <item>char-ready?</item>
+      <item>char-title-case?</item>
+      <item>char-titlecase</item>
+      <item>char-upcase</item>
+      <item>char-upper-case?</item>
+      <item>char-whitespace?</item>
+      <item>char=?</item>
+      <item>char?</item>
+      <item>close-input-port</item>
+      <item>close-output-port</item>
+      <item>close-port</item>
+      <item>complex?</item>
+      <item>cond</item>
+      <item>condition-accessor</item>
+      <item>condition-irritants</item>
+      <item>condition-message</item>
+      <item>condition-predicate</item>
+      <item>condition-who</item>
+      <item>condition</item>
+      <item>condition?</item>
+      <item>cons*</item>
+      <item>cons</item>
+      <item>continue</item>
+      <item>cos</item>
+      <item>current-error-port</item>
+      <item>current-input-port</item>
+      <item>current-output-port</item>
+      <item>datum-&gt;syntax</item>
+      <item>define-condition-type</item>
+      <item>define-enumeration</item>
+      <item>define-record-type</item>
+      <item>delete-file</item>
+      <item>denominator</item>
+      <item>display</item>
+      <item>div-and-mod</item>
+      <item>div0-and-mod0</item>
+      <item>div0</item>
+      <item>div</item>
+      <item>do</item>
+      <item>dynamic-wind</item>
+      <item>else</item>
+      <item>endianness</item>
+      <item>enum-set-&gt;list</item>
+      <item>enum-set-complement</item>
+      <item>enum-set-constructor</item>
+      <item>enum-set-difference</item>
+      <item>enum-set-indexer</item>
+      <item>enum-set-intersection</item>
+      <item>enum-set-member?</item>
+      <item>enum-set-projection</item>
+      <item>enum-set-subset?</item>
+      <item>enum-set-union</item>
+      <item>enum-set-universe</item>
+      <item>enum-set=?</item>
+      <item>eof-object</item>
+      <item>eof-object?</item>
+      <item>eol-style</item>
+      <item>eq?</item>
+      <item>equal-hash</item>
+      <item>equal?</item>
+      <item>eqv?</item>
+      <item>error-handling-mode</item>
+      <item>error</item>
+      <item>error?</item>
+      <item>eval</item>
+      <item>even?</item>
+      <item>exact->inexact</item>
+      <item>exact-integer-sqrt</item>
+      <item>exact</item>
+      <item>exact?</item>
+      <item>exp</item>
+      <item>expt</item>
+      <item>file-exists?</item>
+      <item>file-options</item>
+      <item>filter</item>
+      <item>find</item>
+      <item>finite?</item>
+      <item>fixnum-&gt;flonum</item>
+      <item>fixnum-width</item>
+      <item>fixnum?</item>
+      <item>fl&gt;=?</item>
+      <item>fl&gt;?</item>
+      <item>fl&lt;=?</item>
+      <item>fl&lt;?</item>
+      <item>fl*</item>
+      <item>fl+</item>
+      <item>fl-</item>
+      <item>fl/</item>
+      <item>fl=?</item>
+      <item>flabs</item>
+      <item>flacos</item>
+      <item>flasin</item>
+      <item>flatan</item>
+      <item>flceiling</item>
+      <item>flcos</item>
+      <item>fldenominator</item>
+      <item>fldiv-and-mod</item>
+      <item>fldiv0-and-mod0</item>
+      <item>fldiv0</item>
+      <item>fldiv</item>
+      <item>fleven?</item>
+      <item>flexp</item>
+      <item>flexpt</item>
+      <item>flfinite?</item>
+      <item>flfloor</item>
+      <item>flinfinite?</item>
+      <item>flinteger?</item>
+      <item>fllog</item>
+      <item>flmax</item>
+      <item>flmin</item>
+      <item>flmod0</item>
+      <item>flmod</item>
+      <item>flnan?</item>
+      <item>flnegative?</item>
+      <item>flnumerator</item>
+      <item>flodd?</item>
+      <item>flonum?</item>
+      <item>floor</item>
+      <item>flpositive?</item>
+      <item>flround</item>
+      <item>flsin</item>
+      <item>flsqrt</item>
+      <item>fltan</item>
+      <item>fltruncate</item>
+      <item>flush-output-port</item>
+      <item>flzero?</item>
+      <item>for-each</item>
+      <item>force</item>
+      <item>free-identifier=?</item>
+      <item>fx&gt;=?</item>
+      <item>fx&gt;?</item>
+      <item>fx&lt;=?</item>
+      <item>fx&lt;?</item>
+      <item>fx*/carry</item>
+      <item>fx*</item>
+      <item>fx+/carry</item>
+      <item>fx+</item>
+      <item>fx-/carry</item>
+      <item>fx-</item>
+      <item>fx=?</item>
+      <item>fxand</item>
+      <item>fxarithmetic-shift-left</item>
+      <item>fxarithmetic-shift-right</item>
+      <item>fxarithmetic-shift</item>
+      <item>fxbit-count</item>
+      <item>fxbit-field</item>
+      <item>fxbit-set?</item>
+      <item>fxcopy-bit-field</item>
+      <item>fxcopy-bit</item>
+      <item>fxdiv-and-mod</item>
+      <item>fxdiv0-and-mod0</item>
+      <item>fxdiv0</item>
+      <item>fxdiv</item>
+      <item>fxeven?</item>
+      <item>fxfirst-bit-set</item>
+      <item>fxif</item>
+      <item>fxior</item>
+      <item>fxlength</item>
+      <item>fxmax</item>
+      <item>fxmin</item>
+      <item>fxmod0</item>
+      <item>fxmod</item>
+      <item>fxnegative?</item>
+      <item>fxnot</item>
+      <item>fxodd?</item>
+      <item>fxpositive?</item>
+      <item>fxreverse-bit-field</item>
+      <item>fxrotate-bit-field</item>
+      <item>fxxor</item>
+      <item>fxzero?</item>
+      <item>gcd</item>
+      <item>generate-temporaries</item>
+      <item>get-bytevector-all</item>
+      <item>get-bytevector-n!</item>
+      <item>get-bytevector-n</item>
+      <item>get-bytevector-some</item>
+      <item>get-char</item>
+      <item>get-datum</item>
+      <item>get-line</item>
+      <item>get-string-all</item>
+      <item>get-string-n!</item>
+      <item>get-string-n</item>
+      <item>get-u8</item>
+      <item>greatest-fixnum</item>
+      <item>guard</item>
+      <item>har-ci&lt;?</item>
+      <item>hashtable-clear!</item>
+      <item>hashtable-contains?</item>
+      <item>hashtable-copy</item>
+      <item>hashtable-delete!</item>
+      <item>hashtable-entries</item>
+      <item>hashtable-equivalence-function</item>
+      <item>hashtable-hash-function</item>
+      <item>hashtable-keys</item>
+      <item>hashtable-mutable?</item>
+      <item>hashtable-ref</item>
+      <item>hashtable-set!</item>
+      <item>hashtable-size</item>
+      <item>hashtable-update!</item>
+      <item>hashtable?</item>
+      <item>i/o-decoding-error?</item>
+      <item>i/o-encoding-error-char</item>
+      <item>i/o-encoding-error?</item>
+      <item>i/o-error-filename</item>
+      <item>i/o-error-port</item>
+      <item>i/o-error-position</item>
+      <item>i/o-error?</item>
+      <item>i/o-file-already-exists-error?</item>
+      <item>i/o-file-does-not-exist-error?</item>
+      <item>i/o-file-is-read-only-error?</item>
+      <item>i/o-file-protection-error?</item>
+      <item>i/o-filename-error?</item>
+      <item>i/o-invalid-position-error?</item>
+      <item>i/o-port-error?</item>
+      <item>i/o-read-error?</item>
+      <item>i/o-write-error?</item>
+      <item>identifier-syntax</item>
+      <item>identifier?</item>
+      <item>if</item>
+      <item>imag-part</item>
+      <item>implementation-restriction-violation?</item>
+      <item>inexact-&gt;exact</item>
+      <item>inexact</item>
+      <item>inexact?</item>
+      <item>infinite?</item>
+      <item>input-port?</item>
+      <item>integer-&gt;char</item>
+      <item>integer-valued?</item>
+      <item>integer?</item>
+      <item>interaction-environment</item>
+      <item>irritants-condition?</item>
+      <item>lambda</item>
+      <item>latin-1-codec</item>
+      <item>lcm</item>
+      <item>least-fixnum</item>
+      <item>length</item>
+      <item>let*-values</item>
+      <item>let*</item>
+      <item>let-syntax</item>
+      <item>let-values</item>
+      <item>let</item>
+      <item>letrec*</item>
+      <item>letrec-syntax</item>
+      <item>letrec</item>
+      <item>lexical-violation?</item>
+      <item>list-&gt;string</item>
+      <item>list-&gt;vector</item>
+      <item>list-ref</item>
+      <item>list-sort</item>
+      <item>list-tail</item>
+      <item>list</item>
+      <item>list?</item>
+      <item>load</item>
+      <item>log</item>
+      <item>lookahead-char</item>
+      <item>lookahead-u8</item>
+      <item>map</item>
+      <item>magnitude</item>
+      <item>make-assertion-violation</item>
+      <item>make-bytevector</item>
+      <item>make-custom-binary-input-port</item>
+      <item>make-custom-binary-input/output-port</item>
+      <item>make-custom-binary-output-port</item>
+      <item>make-custom-textual-input-port</item>
+      <item>make-custom-textual-input/output-port</item>
+      <item>make-custom-textual-output-port</item>
+      <item>make-enumeration</item>
+      <item>make-eq-hashtable</item>
+      <item>make-eqv-hashtable</item>
+      <item>make-error</item>
+      <item>make-hashtable</item>
+      <item>make-i/o-decoding-error</item>
+      <item>make-i/o-encoding-error</item>
+      <item>make-i/o-error</item>
+      <item>make-i/o-file-already-exists-error</item>
+      <item>make-i/o-file-does-not-exist-error</item>
+      <item>make-i/o-file-is-read-only-error</item>
+      <item>make-i/o-file-protection-error</item>
+      <item>make-i/o-filename-error</item>
+      <item>make-i/o-invalid-position-error</item>
+      <item>make-i/o-port-error</item>
+      <item>make-i/o-read-error</item>
+      <item>make-i/o-write-error</item>
+      <item>make-implementation-restriction-violation</item>
+      <item>make-irritants-condition</item>
+      <item>make-lexical-violation</item>
+      <item>make-message-condition</item>
+      <item>make-no-infinities-violation</item>
+      <item>make-no-nans-violation</item>
+      <item>make-non-continuable-violation</item>
+      <item>make-polar</item>
+      <item>make-record-constructor-descriptor</item>
+      <item>make-record-type-descriptor</item>
+      <item>make-rectangular</item>
+      <item>make-serious-condition</item>
+      <item>make-string</item>
+      <item>make-syntax-violation</item>
+      <item>make-transcoder</item>
+      <item>make-undefined-violation</item>
+      <item>make-variable-transformer</item>
+      <item>make-vector</item>
+      <item>make-violation</item>
+      <item>make-warning</item>
+      <item>make-who-condition</item>
+      <item>max</item>
+      <item>member</item>
+      <item>memp</item>
+      <item>memq</item>
+      <item>memv</item>
+      <item>message-condition?</item>
+      <item>min</item>
+      <item>mod0</item>
+      <item>mod</item>
+      <item>modulo</item>
+      <item>nan?</item>
+      <item>native-endianness</item>
+      <item>native-eol-style</item>
+      <item>native-transcoder</item>
+      <item>negative?</item>
+      <item>newline</item>
+      <item>no-infinities-violation?</item>
+      <item>no-nans-violation?</item>
+      <item>non-continuable-violation?</item>
+      <item>not</item>
+      <item>null-environment</item>
+      <item>null?</item>
+      <item>number->string</item>
+      <item>number?</item>
+      <item>numerator</item>
+      <item>odd?</item>
+      <item>open-bytevector-input-port</item>
+      <item>open-bytevector-output-port</item>
+      <item>open-file-input-port</item>
+      <item>open-file-input/output-port</item>
+      <item>open-file-output-port</item>
+      <item>open-input-file</item>
+      <item>open-output-file</item>
+      <item>open-string-input-port</item>
+      <item>open-string-output-port</item>
+      <item>or</item>
+      <item>output-port-buffer-mode</item>
+      <item>output-port?</item>
+      <item>pair?</item>
+      <item>partition</item>
+      <item>peek-char</item>
+      <item>port-eof?</item>
+      <item>port-has-port-position?</item>
+      <item>port-has-set-port-position!?</item>
+      <item>port-position</item>
+      <item>port-transcoder</item>
+      <item>port?</item>
+      <item>positive?</item>
+      <item>procedure?</item>
+      <item>put-bytevector</item>
+      <item>put-char</item>
+      <item>put-datum</item>
+      <item>put-string</item>
+      <item>put-u8</item>
+      <item>quasiquote</item>
+      <item>quasisyntax</item>
+      <item>quote</item>
+      <item>quotient</item>
+      <item>raise-continuable</item>
+      <item>raise</item>
+      <item>rational-valued?</item>
+      <item>rational?</item>
+      <item>rationalize</item>
+      <item>read-char</item>
+      <item>read</item>
+      <item>real-&gt;flonum</item>
+      <item>real-part</item>
+      <item>real-valued?</item>
+      <item>real?</item>
+      <item>record-accessor</item>
+      <item>record-constructor-descriptor</item>
+      <item>record-constructor</item>
+      <item>record-field-mutable?</item>
+      <item>record-mutator</item>
+      <item>record-predicate</item>
+      <item>record-rtd</item>
+      <item>record-type-descriptor</item>
+      <item>record-type-descriptor?</item>
+      <item>record-type-field-names</item>
+      <item>record-type-generative?</item>
+      <item>record-type-name</item>
+      <item>record-type-opaque?</item>
+      <item>record-type-parent</item>
+      <item>record-type-sealed?</item>
+      <item>record-type-uid</item>
+      <item>record?</item>
+      <item>remainder</item>
+      <item>remove</item>
+      <item>remp</item>
+      <item>remq</item>
+      <item>remv</item>
+      <item>reverse</item>
+      <item>round</item>
+      <item>scheme-report-environment</item>
+      <item>serious-condition?</item>
+      <item>set!</item>
+      <item>set-car!</item>
+      <item>set-cdr!</item>
+      <item>set-port-position!</item>
+      <item>simple-conditions</item>
+      <item>sin</item>
+      <item>sint-list-&gt;bytevector</item>
+      <item>sqrt</item>
+      <item>standard-error-port</item>
+      <item>standard-input-port</item>
+      <item>standard-output-port</item>
+      <item>string&gt;=?</item>
+      <item>string&gt;?</item>
+      <item>string&lt;=?</item>
+      <item>string&lt;?</item>
+      <item>string-&gt;bytevector</item>
+      <item>string-&gt;list</item>
+      <item>string-&gt;number</item>
+      <item>string-&gt;symbol</item>
+      <item>string-&gt;utf16</item>
+      <item>string-&gt;utf32</item>
+      <item>string-&gt;utf8</item>
+      <item>string-append</item>
+      <item>string-ci&gt;=?</item>
+      <item>string-ci&gt;?</item>
+      <item>string-ci&lt;=?</item>
+      <item>string-ci&lt;?</item>
+      <item>string-ci-hash</item>
+      <item>string-ci=?</item>
+      <item>string-copy</item>
+      <item>string-downcase</item>
+      <item>string-fill!</item>
+      <item>string-foldcase</item>
+      <item>string-hash</item>
+      <item>string-length</item>
+      <item>string-normalize-nfc</item>
+      <item>string-normalize-nfd</item>
+      <item>string-normalize-nfkc</item>
+      <item>string-normalize-nfkd</item>
+      <item>string-ref</item>
+      <item>string-set!</item>
+      <item>string-titlecase</item>
+      <item>string-upcase</item>
+      <item>string</item>
+      <item>string=?</item>
+      <item>string?</item>
+      <item>struct</item>
+      <item>substring</item>
+      <item>symbol-&gt;string</item>
+      <item>symbol-hash</item>
+      <item>symbol=?</item>
+      <item>symbol?</item>
+      <item>syntax-&gt;datum</item>
+      <item>syntax-case</item>
+      <item>syntax-rules</item>
+      <item>syntax-violation-form</item>
+      <item>syntax-violation-subform</item>
+      <item>syntax-violation</item>
+      <item>syntax-violation?</item>
+      <item>syntax</item>
+      <item>tan</item>
+      <item>textual-port?</item>
+      <item>transcoded-port</item>
+      <item>transcoder-codec</item>
+      <item>transcoder-eol-style</item>
+      <item>transcoder-error-handling-mode</item>
+      <item>transcript-off</item>
+      <item>transcript-on</item>
+      <item>truncate</item>
+      <item>u8-list-&gt;bytevector</item>
+      <item>uint-list-&gt;bytevector</item>
+      <item>undefined-violation?</item>
+      <item>unquote-splicing</item>
+      <item>unquote</item>
+      <item>unsyntax-splicing</item>
+      <item>unsyntax</item>
+      <item>utf-16-codec</item>
+      <item>utf-8-codec</item>
+      <item>utf16-&gt;string</item>
+      <item>utf32-&gt;string</item>
+      <item>utf8-&gt;string</item>
+      <item>values</item>
+      <item>vector-&gt;list</item>
+      <item>vector-&gt;listlist->vector</item>
+      <item>vector-fill!</item>
+      <item>vector-length</item>
+      <item>vector-ref</item>
+      <item>vector-set!</item>
+      <item>vector-sort!</item>
+      <item>vector-sort</item>
+      <item>vector</item>
+      <item>vector?</item>
+      <item>violation?</item>
+      <item>warning?</item>
+      <item>while</item>
+      <item>who-condition?</item>
+      <item>with-exception-handler</item>
+      <item>with-input-from-file</item>
+      <item>with-output-to-file</item>
+      <item>with-syntax</item>
+      <item>write-char</item>
+      <item>write</item>
+      <item>zero?</item>
+    </list>
+    <contexts>
+
+
+      <context name="Default" attribute="Normal" lineEndContext="#stay">
+        <DetectSpaces/>
+
+        <!-- "#lang x" line -->
+        <RegExpr attribute="Comment" String="^#lang.*" context="#stay" column="0"/>
+        <DetectChar attribute="Comment" context="hash" char="#" lookAhead="1"/>
+        <DetectChar attribute="Comment" context="semicolon" char=";" lookAhead="1"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <Detect2Chars attribute="String" context="Template" char="&amp;" char1="{"/>
+        <AnyChar attribute="Brackets" context="#stay" String="(){}[]"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Definition" context="function_decl" String="defines"/>
+        <keyword attribute="Operator" context="#stay" String="operators"/>
+        <RegExpr attribute="Normal" context="#stay" String="&symbol;"/>
+        <!-- s, f, d, l are extensions of Kawa -->
+        <RegExpr attribute="Float" context="#stay" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>
+        <RegExpr attribute="Decimal" context="#stay" String="[0-9]++"/>
+      </context>
+
+
+      <context name="Template" attribute="String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="String" context="#pop" char="}"/>
+        <DetectChar attribute="String" context="Template" char="{"/>
+        <DetectChar attribute="Char" context="TemplateTemplate" char="&amp;" lookAhead="1"/>
+      </context>
+      <context name="TemplateTemplate" attribute="String" lineEndContext="#pop">
+        <Detect2Chars attribute="Operator" context="#stay" char="&amp;" char1="|" firstNonSpace="1"/>
+        <Detect2Chars attribute="Operator" context="#pop!NotNewlineTemplate" char="&amp;" char1="-"/>
+        <Detect2Chars attribute="Extension" context="#pop!FormatTemplate" char="&amp;" char1="~"/>
+        <StringDetect attribute="Comment" context="#pop!MultiLineComment" String="&amp;#|" beginRegion="comment"/>
+        <RegExpr attribute="Char" context="#pop!EndCharTemplate" String="(&amp;(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*))" lookAhead="1"/>
+        <DetectChar attribute="String" context="#pop" char="&amp;"/>
+      </context>
+      <context name="FormatTemplate" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Extension" context="#pop" String="({["/>
+        <AnyChar attribute="Extension" context="FormatTemplate" String=")}]"/>
+        <RegExpr attribute="Extension" context="#pop" String="[^(){}\[\]]+"/>
+      </context>
+      <context name="NotNewlineTemplate" attribute="String" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>
+      </context>
+      <context name="EndCharTemplate" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Char" context="#pop" String="%1;" dynamic="1"/>
+        <StringDetect attribute="Error" context="#pop" String="%1" dynamic="1"/>
+      </context>
+
+
+      <context name="semicolon" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop!comment">
+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*BEGIN\b.*" beginRegion="region"/>
+        <RegExpr attribute="Region Marker" context="#pop" String=";+\s*END\b.*" endRegion="region"/>
+      </context>
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="hash" attribute="Normal" lineEndContext="#stay">
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="t"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="T"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="f"/>
+        <Detect2Chars attribute="Decimal" context="#pop" char="#" char1="F"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num16" char="#" char1="x"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num8" char="#" char1="o"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num2" char="#" char1="b"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="e"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="i"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="d"/>
+        <Detect2Chars attribute="Char" context="#pop!Char" char="#" char1="\"/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumComment" char="#" char1=";"/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileCommentOrExtension" char="#" char1="!" lookAhead="1"/>
+
+        <!-- Kawa extension -->
+        <Detect2Chars attribute="Operator" context="#pop!Regex" char="#" char1="/"/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XML" char="#" char1="&lt;" lookAhead="1"/>
+
+        <DetectChar attribute="Normal" context="#pop" char="#"/>
+      </context>
+
+
+      <context name="XML" attribute="XML Tag" lineEndContext="#pop">
+        <StringDetect attribute="XML Tag" context="#pop!XMLProc" String="#&lt;?"/>
+        <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="#&lt;!--"/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="#&lt;![CDATA["/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr1" String="#&lt;("/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLTagExpr2" String="#&lt;{"/>
+        <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="#&lt;[^\s>]++"/>
+        <Detect2Chars attribute="Error" context="#pop" char="#" char1="&lt;"/>
+      </context>
+
+      <context name="XMLTagExpr1" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="XML Tag" context="#pop!XMLTag" char=")"/>
+        <IncludeRules context="Default"/>
+      </context>
+      <context name="XMLTagExpr2" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="XML Tag" context="#pop!XMLTag" char="}"/>
+        <IncludeRules context="Default"/>
+      </context>
+
+      <context name="XMLTag" attribute="XML Attribute" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars attribute="XML Tag" context="#pop" char="/" char1=">"/>
+        <DetectChar attribute="XML Tag" context="#pop!XMLInnerTag" char=">"/>
+        <RegExpr attribute="XML Attribute" context="XMLAttribute" String="[^\s=/>]++\s*"/>
+      </context>
+      <context name="XMLInnerTag" attribute="XML Tag" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="XML String" context="XMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="XML Tag" context="XMLFindXML" char="&lt;" lookAhead="1"/>
+      </context>
+      <context name="XMLFindXML" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLProc" char="&lt;" char1="?"/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr1" char="&lt;" char1="("/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLTagExpr2" char="&lt;" char1="{"/>
+        <StringDetect attribute="XML Comment" context="#pop!XMLComment" String="&lt;!--"/>
+        <StringDetect attribute="XML Tag" context="#pop!XMLCDATA" String="&lt;![CDATA["/>
+        <Detect2Chars attribute="XML Tag" context="#pop!XMLCloseTag" char="&lt;" char1="/" lookAhead="1"/>
+        <RegExpr attribute="XML Tag" context="#pop!XMLTag" String="&lt;[^\s>]++"/>
+        <DetectChar attribute="XML Error" context="#pop" char="&lt;"/>
+      </context>
+      <context name="XMLCloseTag" attribute="String" lineEndContext="#pop#pop">
+        <RegExpr attribute="XML Tag" context="#pop#pop" String="&lt;/[^\s>]*>"/>
+        <Detect2Chars attribute="XML Error" context="#pop#pop" char="&lt;" char1="/"/>
+      </context>
+
+      <context name="XMLAttribute" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="XML Attribute" context="XMLAttributeValue" char="="/>
+      </context>
+      <context name="XMLAttributeValue" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="XML String" context="XMLDQ" char="&quot;"/>
+        <DetectChar attribute="XML String" context="XMLSQ" char="'"/>
+      </context>
+      <context name="XMLDQ" attribute="XML String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="XML String" context="#pop#pop#pop" char="&quot;"/>
+        <IncludeRules context="XMLStringEscape"/>
+      </context>
+      <context name="XMLSQ" attribute="XML String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="XML String" context="#pop#pop#pop" char="'"/>
+        <IncludeRules context="XMLStringEscape"/>
+      </context>
+      <context name="XMLStringEscape" attribute="XML String" lineEndContext="#stay">
+        <DetectChar attribute="XML String" context="XMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="XML Error" context="#stay" char="&lt;"/>
+      </context>
+      <context name="XMLEscape" attribute="XML String" lineEndContext="#stay">
+        <RegExpr attribute="XML Entity" context="#pop" String="&amp;(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>
+        <DetectChar attribute="XML Error" context="#pop" char="&amp;"/>
+      </context>
+      <context name="XMLProc" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="XMLProcAttrs">
+        <RegExpr attribute="XML Tag" context="XMLProcAttrs" String="[^\s?]+"/>
+      </context>
+      <context name="XMLProcAttrs" attribute="XML Attribute" lineEndContext="#stay">
+        <Detect2Chars attribute="XML Tag" context="#pop#pop" char="?" char1=">"/>
+      </context>
+
+      <context name="XMLComment" attribute="XML Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <Detect2Chars attribute="XML Comment" context="XMLCommentCheck" char="-" char1="-" lookAhead="1"/>
+      </context>
+      <context name="XMLCommentCheck" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="XML Tag" context="#pop#pop" String="-->"/>
+        <Detect2Chars attribute="XML Error" context="#pop" char="-" char1="-"/>
+      </context>
+
+      <context name="XMLCDATA" attribute="XML CDATA" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <StringDetect attribute="XML Tag" context="#pop" String="]]>"/>
+      </context>
+
+
+      <context name="Regex" attribute="Extension" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Extension" context="RegexEnd" String="&regex;"/>
+      </context>
+      <context name="RegexEnd" attribute="Extension" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Operator" context="RegexModifier" char="/"/>
+      </context>
+      <context name="RegexModifier" attribute="Extension" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
+        <AnyChar attribute="Extension" context="#stay" String="ism"/>
+      </context>
+
+
+      <context name="Num2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit2">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit2" String="+-"/>
+      </context>
+      <context name="Digit2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Decimal" context="#stay" String="01"/>
+      </context>
+
+      <context name="Num8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit8">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit8" String="+-"/>
+      </context>
+      <context name="Digit8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Decimal" context="#stay" String="01234567"/>
+      </context>
+
+      <context name="Num10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit10">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit10" String="+-"/>
+      </context>
+      <context name="Digit10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <!-- s, f, d, l are extensions of Kawa -->
+        <RegExpr attribute="Float" context="#pop" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>
+        <RegExpr attribute="Decimal" context="#pop" String="[0-9]++"/>
+      </context>
+
+      <context name="Num16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit16">
+        <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Function" context="#pop!Digit16" String="+-"/>
+      </context>
+      <context name="Digit16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Decimal" context="#pop" String="[0-9a-fA-F]+"/>
+      </context>
+
+      <context name="NumPrefix" attribute="Decimal" lineEndContext="#pop">
+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="e"/>
+        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="i"/>
+      </context>
+
+
+      <context name="Char" attribute="Char" lineEndContext="#pop">
+        <DetectChar attribute="Char" context="HexChar" char="x"/>
+        <keyword attribute="Char" context="#pop" String="characters" insensitive="1"/>
+        <RegExpr attribute="Char" context="#pop" String=".(?!\w)"/>
+        <RegExpr attribute="Error" context="#pop" String="\w+|."/>
+      </context>
+      <context name="HexChar" attribute="Char" lineEndContext="#pop#pop">
+        <RegExpr attribute="Char" context="#pop#pop" String="[0-9a-fA-F]+"/>
+      </context>
+
+
+      <context name="MultiLineGuileCommentOrExtension" attribute="Comment" lineEndContext="#stay">
+        <RegExpr attribute="Extension" context="#pop" String="#!\w+"/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineGuileComment" char="#" char1="!" beginRegion="comment"/>
+      </context>
+
+      <context name="MultiLineGuileComment" attribute="Comment" lineEndContext="#stay" fallthroughContext="comment">
+        <RegExpr attribute="Comment" context="#pop" String="^!#\s*$" endRegion="comment" column="0"/>
+      </context>
+
+      <context name="MultiLineComment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop" char="|" char1="#" endRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="#" char1="|" beginRegion="comment"/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+
+      <context name="DatumComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent" char="(" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket" char="[" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBrace" char="{" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentString" char="&quot;"/>
+
+        <DetectChar attribute="Comment" context="#pop!DatumCommentHash" char="#"/>
+
+        <RegExpr attribute="Comment" context="#pop!DatumCommentExpr" String="[^{}\[\]()\s]+"/>
+      </context>
+      <context name="DatumCommentHash" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentRegex" char="/"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXML" char="&lt;"/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentTemplate" char="&amp;" char1="{"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="DatumCommentTemplate" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="#pop" char="}"/>
+        <DetectChar attribute="Comment" context="DatumCommentTemplate" char="{"/>
+        <DetectChar attribute="Comment" context="DatumCommentTemplateTemplate" char="&amp;"/>
+      </context>
+      <context name="DatumCommentTemplateTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>
+        <Detect2Chars attribute="Comment" context="#pop!MultiLineComment" char="#" char1="|"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentFormatTemplate" char="~"/>
+        <RegExpr attribute="Comment" context="#pop" String="&amp;(?:#(?:[0-9]+|x[0-9a-fA-F]+)|[_a-zA-Z][-:_a-zA-Z0-9]*);?"/>
+      </context>
+      <context name="DatumCommentFormatTemplate" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Comment" context="#pop" String="({["/>
+        <AnyChar attribute="Comment" context="DatumCommentFormatTemplate" String=")}]"/>
+        <RegExpr attribute="Comment" context="#pop" String="[^(){}\[\]]+"/>
+      </context>
+
+      <context name="DatumCommentRegex" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Comment" context="DatumCommentRegexEnd" String="&regex;"/>
+      </context>
+      <context name="DatumCommentRegexEnd" attribute="Comment" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Comment" context="DatumCommentRegexModifier" char="/"/>
+      </context>
+      <context name="DatumCommentRegexModifier" attribute="Comment" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop">
+        <AnyChar attribute="Comment" context="#stay" String="ism"/>
+      </context>
+
+      <context name="DatumCommentXML" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLProc" char="?"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="("/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="{"/>
+        <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="!--"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="![CDATA["/>
+        <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="[^\s>]++\s*"/>
+      </context>
+
+      <context name="DatumCommentXMLProc" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="?" char1=">"/>
+      </context>
+      <context name="DatumCommentXMLCDATA" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="#pop" String="]]>"/>
+      </context>
+      <context name="DatumCommentXMLComment" attribute="Comment" lineEndContext="#stay">
+        <StringDetect attribute="Comment" context="#pop" String="-->"/>
+      </context>
+      <context name="DatumCommentXMLTagExpr1" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char=")"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentXMLTagExpr2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLTag" char="}"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+
+      <context name="DatumCommentXMLTag" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars attribute="Comment" context="#pop" char="/" char1=">"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentXMLInnerTag" char=">"/>
+        <RegExpr attribute="Comment" context="DatumCommentXMLAttribute" String="[^\s=/>]++\s*"/>
+      </context>
+      <context name="DatumCommentXMLInnerTag" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLFindXML" char="&lt;" lookAhead="1"/>
+      </context>
+      <context name="DatumCommentXMLFindXML" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLProc" char="&lt;" char1="?"/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr1" char="&lt;" char1="("/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLTagExpr2" char="&lt;" char1="{"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLComment" String="&lt;!--"/>
+        <StringDetect attribute="Comment" context="#pop!DatumCommentXMLCDATA" String="&lt;![CDATA["/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentXMLCloseTag" char="&lt;" char1="/" lookAhead="1"/>
+        <RegExpr attribute="Comment" context="#pop!DatumCommentXMLTag" String="&lt;[^\s>]++"/>
+        <DetectChar attribute="Comment" context="#pop" char="&lt;"/>
+      </context>
+      <context name="DatumCommentXMLCloseTag" attribute="Comment" lineEndContext="#pop#pop">
+        <RegExpr attribute="Comment" context="#pop#pop" String="&lt;/[^\s>]*>"/>
+        <Detect2Chars attribute="XML Error" context="#pop#pop" char="&lt;" char1="/"/>
+      </context>
+
+      <context name="DatumCommentXMLAttribute" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLAttributeValue" char="="/>
+      </context>
+      <context name="DatumCommentXMLAttributeValue" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLDQ" char="&quot;"/>
+        <DetectChar attribute="Comment" context="DatumCommentXMLSQ" char="'"/>
+      </context>
+      <context name="DatumCommentXMLDQ" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="#pop#pop#pop" char="&quot;"/>
+        <IncludeRules context="DatumCommentXMLStringEscape"/>
+      </context>
+      <context name="DatumCommentXMLSQ" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="#pop#pop#pop" char="'"/>
+        <IncludeRules context="DatumCommentXMLStringEscape"/>
+      </context>
+      <context name="DatumCommentXMLStringEscape" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="DatumCommentXMLEscape" char="&amp;" lookAhead="1"/>
+        <DetectChar attribute="XML Error" context="#stay" char="&lt;"/>
+      </context>
+
+      <context name="DatumCommentXMLEscape" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentParent2" char="&amp;" char1="("/>
+        <Detect2Chars attribute="Comment" context="#pop!DatumCommentBrace2" char="&amp;" char1="{"/>
+        <RegExpr attribute="Comment" context="#pop" String="&amp;(?:lt|gt|amp|quot|apos|#[0-9]+|x[0-9a-fA-F]+);"/>
+        <DetectChar attribute="XML Error" context="#pop" char="&amp;"/>
+      </context>
+
+      <context name="DatumCommentExpr" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar attribute="Comment" context="#pop!DatumCommentParent2" char="("/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBrace2" char="{"/>
+        <DetectChar attribute="Comment" context="#pop!DatumCommentBracket2" char="["/>
+      </context>
+
+      <context name="DatumCommentString" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="&quot;"/>
+        <RegExpr attribute="Comment" context="#stay" String="(?:[^\\&quot;]++|\\.)++"/>
+      </context>
+
+      <context name="DatumCommentParent" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char=")" endRegion="comment"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentParent2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char=")"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBracket" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="]" endRegion="comment"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBracket2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="]"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBrace" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="}" endRegion="comment"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+      <context name="DatumCommentBrace2" attribute="Comment" lineEndContext="#stay">
+        <DetectChar attribute="Comment" context="#pop" char="}"/>
+        <IncludeRules context="DatumCommentInExpr"/>
+      </context>
+
+      <context name="DatumCommentInExpr" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <DetectChar attribute="Comment" context="DatumCommentParent2" char="("/>
+        <DetectChar attribute="Comment" context="DatumCommentBrace2" char="{"/>
+        <DetectChar attribute="Comment" context="DatumCommentBracket2" char="["/>
+        <DetectChar attribute="Comment" context="DatumCommentString" char="&quot;"/>
+        <DetectChar attribute="Comment" context="DatumCommentHash" char="#"/>
+      </context>
+
+
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+        <DetectChar attribute="Char" context="EscapeString" char="\"/>
+      </context>
+      <context name="EscapeString" attribute="Char" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar attribute="Char" context="#pop" String="abfnrtv&quot;\"/>
+        <AnyChar attribute="Char" context="MultiLineString" String="&tab; "/>
+        <RegExpr attribute="Char" context="#pop" String="[xXu][0-9a-fA-F]+;|\\[0-7]{3}|(?:[MC]-|\^)?."/>
+      </context>
+      <context name="MultiLineString" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+      </context>
+
+      <context name="function_decl" attribute="Function" lineEndContext="#stay">
+        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-!$%&quot;*/:&lt;=>?~_^+.@]*\s*"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal"      defStyleNum="dsNormal"/>
+      <itemData name="Keyword"     defStyleNum="dsKeyword" spellChecking="0"/>
+      <itemData name="Definition"  defStyleNum="dsExtension" spellChecking="0"/>
+      <itemData name="Operator"    defStyleNum="dsOperator" spellChecking="0"/>
+      <itemData name="Function"    defStyleNum="dsFunction" spellChecking="0"/>
+      <itemData name="Base Prefix" defStyleNum="dsSpecialChar" spellChecking="0"/>
+      <itemData name="Decimal"     defStyleNum="dsDecVal" spellChecking="0"/>
+      <itemData name="Float"       defStyleNum="dsFloat" spellChecking="0"/>
+      <itemData name="Char"        defStyleNum="dsChar" spellChecking="0"/>
+      <itemData name="String"      defStyleNum="dsString"/>
+      <itemData name="Comment"     defStyleNum="dsComment"/>
+      <itemData name="Error"       defStyleNum="dsError" spellChecking="0"/>
+      <itemData name="Extension"   defStyleNum="dsExtension" spellChecking="0"/>
+      <itemData name="Region Marker" defStyleNum="dsRegionMarker"/>
+      <itemData name="XML Tag"     defStyleNum="dsString" spellChecking="0"/>
+      <itemData name="XML Comment" defStyleNum="dsComment"/>
+      <itemData name="XML CDATA"   defStyleNum="dsString"/>
+      <itemData name="XML Attribute" defStyleNum="dsOthers" spellChecking="0"/>
+      <itemData name="XML String"  defStyleNum="dsString"/>
+      <itemData name="XML Error"   defStyleNum="dsError" spellChecking="0"/>
+      <itemData name="XML Entity"  defStyleNum="dsDecVal" spellChecking="0"/>
+      <itemData name="Brackets" defStyleNum="dsOperator" spellChecking="0"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <keywords casesensitive="1" weakDeliminator="-+*?!&lt;&gt;=/:.,\&amp;" additionalDeliminator="&quot;;#"/>
+    <comments>
+      <comment name="singleLine" start=";;"/>
+      <comment name="multiLine" start="#|" end="|#" region="comment"/>
+    </comments>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/raku.xml b/xml/raku.xml
--- a/xml/raku.xml
+++ b/xml/raku.xml
@@ -1,1755 +1,2070 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-  <!--
-  identifier:
-    Alphabetic characters include characters with the Unicode General Category value Letter (L), and the underscore _.
-    Alphanumeric characters additionally include characters with the Unicode General Category value Number, Decimal Digit (Nd).
-  -->
-  <!-- Large values -->
-  <!ENTITY _rangealphabetic "A-Za-z\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\x{2c1}\x{2C6}-\x{2D1}\x{2E0}-\x{2EE}\x{370}-\x{588}\x{5d0}-\x{17dc}\x{1820}-\x{1aa7}\x{1b05}-\x{2139}\x{2c00}-\x{31ff}\x{3400}\x{4db5}\x{4db5}\x{4e00}-\x{ac00}\x{d7a3}-\x{d7fb}\x{f900}-\x{FD3D}\x{FF64}\x{100fa}\x{10000}-\x{100fa}\x{10280}-\x{20000}\x{2a6d6}-\x{2fa1d}">
-  <!ENTITY rangealphabetic "_&_rangealphabetic;">
-  <!ENTITY rangenumeric "0-9">
-  <!ENTITY alphabetic "[&rangealphabetic;]">
-  <!ENTITY numeric "[&rangenumeric;]">
-  <!ENTITY alnum "[&rangealphabetic;&rangenumeric;]">
-  <!ENTITY ident "(?:&alphabetic;(?:&alnum;+|[-']&alphabetic;)*)">
-
-  <!ENTITY prefixdollarvarname "(?:[&rangealphabetic;0-9/!]|\(\))">
-  <!ENTITY dollarvarname "(?:&ident;|[0-9]+|[/!]|\(\))">
-  <!ENTITY twigils "*?!.&lt;^:=~">
-
-  <!ENTITY podfmt "BCEIKLMNPRTUVXZ">
-  <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">
-  <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">
-  <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">
-  <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">
-
-  <!ENTITY quotingform_q "(?:q?(?::?[xsahfcb]|:?ww?|:(?:v|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)|)(?::[xsahfcbv]|ww?|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)*)">
-  <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>｣\]}a-zA-Z0-9]|$))">
-  <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">
-
-  <!ENTITY int10 "(?:[0-9]+(?:_[0-9]+)*)">
-  <!ENTITY intN "(?:[0-9a-zA-Z]+(?:_[0-9a-zA-Z]+)*)">
-
-  <!-- <!ENTITY operators "(?:\b(?:X[*~]|Z=|xx=)|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\)|\+[&amp;+&lt;=>^|]?|~[&amp;&lt;>^|~]?|\.(?::&lt;[^>]+>|\.\.?\^?|[=?^*+.])?|\^(?:fff?\b|\.\.)?\^?|(?:[?…]|f?ff)\^|\[[*+]\]|=(?:==?|=>>?|>|~=)?|&lt;(?:&lt;==|=[=>]?)?|\*\*=?|\?[?|]?|!(?:[=]|eqv\b)?|&#37;&#37;?|&amp;&amp;?|//?|\|\|?|>=?|-[-=]?|::|[−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…])"> -->
-  <!-- <!ENTITY hyperoperators "(?:[«»]|&lt;&lt;|&gt;&gt;)"> -->
-  <!ENTITY safesymboloperators "−∈∉∋∌∘∩∪≅≠≤≥≼≽⊂⊃⊄⊅⊆⊇⊈⊉⊍⊎⊖×÷∖*…?.+-/=!~&amp;|^&#37;">
-  <!ENTITY unsafesymboloperators "&lt;>«»">
-  <!ENTITY symboloperators "&safesymboloperators;&unsafesymboloperators;">
-  <!ENTITY bracehyperoperator "(?:\[[^\s]+\]|\([^\s]+\))">
-  <!ENTITY prefixoperator "R?(?:[XZ]|xx)?">
-  <!ENTITY extrasymboloperators "(?:\^fff?\b\^?|\bf?ff\^|\((?:[&lt;>][+=]|[-&amp;+.&lt;>|^]|cont|elem)\))">
-  <!ENTITY hyperoperators1 "[«»]&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;&lt;>]+|&bracehyperoperator;)[«»]">
-  <!ENTITY hyperoperators2 "(?:&lt;&lt;|&gt;&gt;)&prefixoperator;(?:&amp;&ident;|[&safesymboloperators;«»]+|&bracehyperoperator;)(?:&lt;&lt;|&gt;&gt;)">
-  <!ENTITY hyperoperators "&hyperoperators1;|&hyperoperators2;">
-  <!ENTITY startstringasoperator "&prefixoperator;&lt;[&symboloperators;]*(?=\s|$)">
-  <!ENTITY funcoperator "\[\[\&amp;&ident;\]\]">
-  <!ENTITY reductionoperator "\[&prefixoperator;[&symboloperators;]+\]">
-  <!ENTITY innerbraceoperator "[&symboloperators;'&quot;]+">
-  <!ENTITY operators "&prefixoperator;(?:(?:[&safesymboloperators;>]|&extrasymboloperators;)[&symboloperators;]*|\(&innerbraceoperator;\)|\[&innerbraceoperator;\]|&lt;[&safesymboloperators;'&quot;]+>)">
-
-  <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->
-  <!ENTITY regadverb "(?!\()\s*(?=[^\w\s])">
-]>
-<language name="Raku" version="8" kateversion="5.53" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
-  <highlighting>
-
-    <list name="pod">
-      <item>begin</item>
-      <item>end</item>
-      <item>finish</item>
-      <item>for</item>
-      <include>podtypename</include>
-    </list>
-
-    <list name="podblocktypename">
-      <item>pod</item>
-      <include>podtypename</include>
-    </list>
-
-    <list name="podvalue">
-      <item>True</item>
-      <item>False</item>
-    </list>
-
-    <list name="podtypename">
-      <item>head1</item>
-      <item>head2</item>
-      <item>head3</item>
-      <item>head4</item>
-      <item>head5</item>
-      <item>head6</item>
-      <item>item</item>
-      <item>item1</item>
-      <item>item2</item>
-      <item>item3</item>
-      <item>item4</item>
-      <item>item5</item>
-      <item>item6</item>
-      <item>para</item>
-      <item>code</item>
-      <item>defn</item>
-      <item>comment</item>
-      <item>table</item>
-      <item>input</item>
-      <item>output</item>
-    </list>
-
-    <list name="quoting">
-      <item>exec</item>
-      <item>words</item>
-      <item>quotewords</item>
-      <item>scalar</item>
-      <item>array</item>
-      <item>hash</item>
-      <item>function</item>
-      <item>closure</item>
-      <item>backslash</item>
-      <item>heredoc</item>
-      <item>val</item>
-    </list>
-
-    <list name="declareRoutine">
-      <item>macro</item>
-      <item>sub</item>
-      <item>submethod</item>
-      <item>method</item>
-      <item>multi</item>
-      <item>proto</item>
-      <item>only</item>
-      <item>category</item>
-    </list>
-
-    <list name="regexKeyword">
-      <item>rule</item>
-      <item>token</item>
-      <item>regex</item>
-    </list>
-
-    <list name="value">
-      <include>podvalue</include>
-      <item>self</item>
-    </list>
-
-    <list name="varStorage">
-      <item>let</item>
-      <item>my</item>
-      <item>our</item>
-      <item>state</item>
-      <item>temp</item>
-      <item>has</item>
-      <item>constant</item>
-    </list>
-
-    <list name="controlFlow">
-      <!-- conditional -->
-      <item>if</item>
-      <item>else</item>
-      <item>elsif</item>
-      <item>unless</item>
-      <!-- repeat -->
-      <item>for</item>
-      <item>loop</item>
-      <item>repeat</item>
-      <item>while</item>
-      <item>until</item>
-      <item>gather</item>
-      <item>given</item>
-      <!-- control flow -->
-      <item>take</item>
-      <item>do</item>
-      <item>when</item>
-      <item>next</item>
-      <item>last</item>
-      <item>redo</item>
-      <item>return</item>
-      <item>contend</item>
-      <item>maybe</item>
-      <item>defer</item>
-      <item>default</item>
-      <item>exit</item>
-      <item>make</item>
-      <item>continue</item>
-      <item>break</item>
-      <item>goto</item>
-      <item>leave</item>
-      <item>async</item>
-      <item>lift</item>
-      <!-- exception -->
-      <item>die</item>
-      <item>fail</item>
-      <item>try</item>
-      <item>warn</item>
-    </list>
-
-    <list name="keyword">
-      <!-- include -->
-      <item>no</item>
-      <item>use</item>
-      <item>require</item>
-      <!-- typeConstraint -->
-      <item>is</item>
-      <item>as</item>
-      <item>but</item>
-      <item>trusts</item>
-      <item>of</item>
-      <item>returns</item>
-      <item>handles</item>
-      <item>where</item>
-      <item>augment</item>
-      <item>supersede</item>
-      <!-- module -->
-      <item>module</item>
-      <item>class</item>
-      <item>role</item>
-      <item>package</item>
-      <item>enum</item>
-      <item>grammar</item>
-      <item>slang</item>
-      <item>subset</item>
-      <!-- closure trait -->
-      <item>BEGIN</item>
-      <item>CHECK</item>
-      <item>INIT</item>
-      <item>START</item>
-      <item>FIRST</item>
-      <item>ENTER</item>
-      <item>LEAVE</item>
-      <item>KEEP</item>
-      <item>UNDO</item>
-      <item>NEXT</item>
-      <item>LAST</item>
-      <item>PRE</item>
-      <item>POST</item>
-      <item>END</item>
-      <item>CATCH</item>
-      <item>CONTROL</item>
-      <item>TEMP</item>
-    </list>
-
-    <list name="property">
-      <item>prec</item>
-      <item>irs</item>
-      <item>ofs</item>
-      <item>ors</item>
-      <item>export</item>
-      <item>deep</item>
-      <item>binary</item>
-      <item>unary</item>
-      <item>reparsed</item>
-      <item>rw</item>
-      <item>parsed</item>
-      <item>cached</item>
-      <item>readonly</item>
-      <item>defequiv</item>
-      <item>will</item>
-      <item>ref</item>
-      <item>copy</item>
-      <item>inline</item>
-      <item>tighter</item>
-      <item>looser</item>
-      <item>equiv</item>
-      <item>assoc</item>
-      <item>required</item>
-    </list>
-
-    <list name="isProperty">
-      <include>property</include>
-      <item>signature</item>
-      <item>context</item>
-      <item>also</item>
-      <item>shape</item>
-    </list>
-
-    <list name="Number">
-      <item>NaN</item>
-      <item>Inf</item>
-    </list>
-
-    <list name="type">
-      <item>Object</item>
-      <item>Any</item>
-      <item>Junction</item>
-      <item>Whatever</item>
-      <item>Capture</item>
-      <item>Match</item>
-      <item>Signature</item>
-      <item>Proxy</item>
-      <item>Matcher</item>
-      <item>Package</item>
-      <item>Module</item>
-      <item>Class</item>
-      <item>Grammar</item>
-      <item>Scalar</item>
-      <item>Array</item>
-      <item>Hash</item>
-      <item>KeyHash</item>
-      <item>KeySet</item>
-      <item>KeyBag</item>
-      <item>Pair</item>
-      <item>List</item>
-      <item>Seq</item>
-      <item>Range</item>
-      <item>Set</item>
-      <item>Bag</item>
-      <item>Mapping</item>
-      <item>Void</item>
-      <item>Undef</item>
-      <item>Failure</item>
-      <item>Exception</item>
-      <item>Code</item>
-      <item>Block</item>
-      <item>Routine</item>
-      <item>Sub</item>
-      <item>Macro</item>
-      <item>Method</item>
-      <item>Submethod</item>
-      <item>Regex</item>
-      <item>Str</item>
-      <item>Blob</item>
-      <item>Char</item>
-      <item>Byte</item>
-      <item>Codepoint</item>
-      <item>Grapheme</item>
-      <item>StrPos</item>
-      <item>StrLen</item>
-      <item>Version</item>
-      <item>Num</item>
-      <item>Complex</item>
-      <item>num</item>
-      <item>complex</item>
-      <item>Bit</item>
-      <item>bit</item>
-      <item>bool</item>
-      <item>True</item>
-      <item>False</item>
-      <item>Increasing</item>
-      <item>Decreasing</item>
-      <item>Ordered</item>
-      <item>Callable</item>
-      <item>AnyChar</item>
-      <item>Positional</item>
-      <item>Associative</item>
-      <item>Ordering</item>
-      <item>KeyExtractor</item>
-      <item>Comparator</item>
-      <item>OrderingPair</item>
-      <item>IO</item>
-      <item>KitchenSink</item>
-      <item>Role</item>
-      <item>Int</item>
-      <item>int</item>
-      <item>int1</item>
-      <item>int2</item>
-      <item>int4</item>
-      <item>int8</item>
-      <item>int16</item>
-      <item>int32</item>
-      <item>int64</item>
-      <item>Rat</item>
-      <item>rat</item>
-      <item>rat1</item>
-      <item>rat2</item>
-      <item>rat4</item>
-      <item>rat8</item>
-      <item>rat16</item>
-      <item>rat32</item>
-      <item>rat64</item>
-      <item>Buf</item>
-      <item>buf</item>
-      <item>buf1</item>
-      <item>buf2</item>
-      <item>buf4</item>
-      <item>buf8</item>
-      <item>buf16</item>
-      <item>buf32</item>
-      <item>buf64</item>
-      <item>UInt</item>
-      <item>uint</item>
-      <item>uint1</item>
-      <item>uint2</item>
-      <item>uint4</item>
-      <item>uint8</item>
-      <item>uint16</item>
-      <item>uint32</item>
-      <item>uint64</item>
-      <item>Abstraction</item>
-      <item>utf8</item>
-      <item>utf16</item>
-      <item>utf32</item>
-    </list>
-
-    <list name="operator">
-      <item>X</item>
-      <item>gcd</item>
-      <item>ge</item>
-      <item>gt</item>
-      <item>lcm</item>
-      <item>le</item>
-      <item>leg</item>
-      <item>let</item>
-      <item>lt</item>
-      <item>map</item>
-      <item>max</item>
-      <item>min</item>
-      <item>minmax</item>
-      <item>mod</item>
-      <item>ne</item>
-      <item>not</item>
-      <item>notandthen</item>
-      <item>o</item>
-      <item>or</item>
-      <item>orelse</item>
-      <item>print</item>
-      <item>push</item>
-      <item>say</item>
-      <item>so</item>
-      <item>substr</item>
-      <item>temp</item>
-      <item>unicmp</item>
-      <item>x</item>
-      <item>xor</item>
-      <item>xx</item>
-      <item>Xeqv</item>
-      <item>Z</item>
-      <item>and</item>
-      <item>andthen</item>
-      <item>any</item>
-      <item>but</item>
-      <item>cmp</item>
-      <item>coll</item>
-      <item>die</item>
-      <item>div</item>
-      <item>does</item>
-      <item>eq</item>
-      <item>eqv</item>
-      <item>ff</item>
-      <item>fff</item>
-    </list>
-
-    <list name="unicodeGeneralCategories">
-      <item>L</item>  <item>Letter</item>
-      <item>LC</item> <item>Cased_Letter</item>
-      <item>Lu</item> <item>Uppercase_Letter</item>
-      <item>Ll</item> <item>Lowercase_Letter</item>
-      <item>Lt</item> <item>Titlecase_Letter</item>
-      <item>Lm</item> <item>Modifier_Letter</item>
-      <item>Lo</item> <item>Other_Letter</item>
-      <item>M</item>  <item>Mark</item>
-      <item>Mn</item> <item>Nonspacing_Mark</item>
-      <item>Mc</item> <item>Spacing_Mark</item>
-      <item>Me</item> <item>Enclosing_Mark</item>
-      <item>N</item>  <item>Number</item>
-      <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>
-      <item>Nl</item> <item>Letter_Number</item>
-      <item>No</item> <item>Other_Number</item>
-      <item>P</item>  <item>Punctuation</item> <item>punct</item>
-      <item>Pc</item> <item>Connector_Punctuation</item>
-      <item>Pd</item> <item>Dash_Punctuation</item>
-      <item>Ps</item> <item>Open_Punctuation</item>
-      <item>Pe</item> <item>Close_Punctuation</item>
-      <item>Pi</item> <item>Initial_Punctuation</item>
-      <item>Pf</item> <item>Final_Punctuation</item>
-      <item>Po</item> <item>Other_Punctuation</item>
-      <item>S</item>  <item>Symbol</item>
-      <item>Sm</item> <item>Math_Symbol</item>
-      <item>Sc</item> <item>Currency_Symbol</item>
-      <item>Sk</item> <item>Modifier_Symbol</item>
-      <item>So</item> <item>Other_Symbol</item>
-      <item>Z</item>  <item>Separator</item>
-      <item>Zs</item> <item>Space_Separator</item>
-      <item>Zl</item> <item>Line_Separator</item>
-      <item>Zp</item> <item>Paragraph_Separator</item>
-      <item>C</item>  <item>Other</item>
-      <item>Cc</item> <item>Control</item> <item>cntrl</item>
-      <item>Cf</item> <item>Format</item>
-      <item>Cs</item> <item>Surrogate</item>
-      <item>Co</item> <item>Private_Use</item>
-      <item>Cn</item> <item>Unassigned</item>
-    </list>
-
-    <list name="assertion">
-      <item>before</item>
-      <item>after</item>
-    </list>
-
-    <contexts>
-
-      <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthrough="1" fallthroughContext="#pop!base">
-        <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>
-      </context>
-
-      <context name="base" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar attribute="Comment" context="StartComment" char="#"/>
-        <!-- <DetectChar attribute="Unspace" context="#stay" char="\"/> -->
-        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
-        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
-        <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
-        <RegExpr String="(?:s|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Operator"/>
-        <RegExpr String="(?:rx|m)&regadverb;" context="Regex" attribute="Operator"/>
-        <IncludeRules context="find_Variable"/>
-        <DetectChar attribute="Pod" context="StartPod" char="=" firstNonSpace="1"/>
-        <RegExpr String="»\.|&lt;&lt;\.|&hyperoperators;|&startstringasoperator;|&funcoperator;|&reductionoperator;|&operators;" context="MaybeRegex" attribute="Operator"/>
-        <DetectChar char="(" context="SubExpression(" attribute="Operator" beginRegion="block"/>
-        <DetectChar char="[" context="SubExpression[" attribute="Operator" beginRegion="block"/>
-        <AnyChar String=",;" context="#stay" attribute="Separator Symbol"/>
-        <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
-        <Detect2Chars attribute="String Delimiter" context="qq_String&lt;&lt;" char="&lt;" char1="&lt;"/>
-        <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
-        <DetectChar attribute="String Delimiter" context="Q_String｢" char="｢"/>
-        <RegExpr String="Q(\s++(?=['(_]|$)|\s*+(?=[^()>｣\]}'&rangealphabetic;&rangenumeric;]|$))" context="Q_String" attribute="String"/>
-        <DetectChar char=":" context="MaybeAttribute" attribute="Operator"/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <RegExpr attribute="Operator" context="q_QuotingForm" String="q(?=&quotingform_q;&quotingform_q_assert;)"/>
-        <keyword String="operator" context="#stay" attribute="Operator"/>
-        <keyword String="varStorage" context="#stay" attribute="Variable Storage"/>
-        <keyword String="type" context="#stay" attribute="Data Type"/>
-        <keyword String="controlFlow" context="#stay" attribute="Control Flow"/>
-        <WordDetect String="is" context="Is" attribute="Keyword"/>
-        <keyword String="keyword" context="#stay" attribute="Keyword"/>
-        <keyword String="declareRoutine" context="#stay" attribute="Declare Routine"/>
-        <keyword String="property" context="#stay" attribute="Property"/>
-        <keyword String="regexKeyword" context="RegexKeyword" attribute="Keyword"/>
-        <keyword String="value" context="#stay" attribute="Keyword Value"/>
-        <keyword String="Number" context="#stay" attribute="Float"/>
-        <RegExpr String="[A-Z](?:[a-z]+[a-zA-Z0-9]*)+" context="#stay" attribute="Data Type"/>
-        <RegExpr String="&ident;" context="#stay" attribute="Normal Text"/>
-      </context>
-
-      <context name="Is" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <keyword String="isProperty" context="#pop" attribute="Property"/>
-      </context>
-
-      <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="Operator" endRegion="block"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="base"/>
-        <DetectChar char=")" context="#pop" attribute="Operator" endRegion="block"/>
-      </context>
-
-      <context name="SubExpression[" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="base"/>
-        <DetectChar char="]" context="#pop" attribute="Operator" endRegion="block"/>
-      </context>
-
-      <context name="find_Variable" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr String="[%&amp;](?=[?*]&alphabetic;)|(?:\$[&twigils;]|::\?)(?=&alphabetic;)" context="Twigil" attribute="Variable"/>
-        <RegExpr String="[$@]\(\)|[%@]?\$/|\$!|\$[0-9]+|[\\@%&amp;$]&ident;" context="#stay" attribute="Variable"/>
-      </context>
-
-      <context name="MaybeRegex" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <DetectChar char="/" context="#pop!Regex" attribute="Operator" lookAhead="1"/>
-      </context>
-
-      <context name="Twigil" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
-        <RegExpr String="&ident;" context="#pop" attribute="Variable"/>
-      </context>
-
-      <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#pop">
-        <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Operator" beginRegion="regex"/>
-      </context>
-      <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <!-- Regex -->
-
-      <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <IncludeRules context="find_RegexClosure"/>
-        <RegExpr String="([^\w\s])" context="Pattern" attribute="Operator" beginRegion="regex"/>
-      </context>
-
-      <context name="find_RegexClosure" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>
-        <DetectChar char="{" context="Pattern{" attribute="Operator" beginRegion="regex"/>
-        <DetectChar char="(" context="Pattern(" attribute="Operator" beginRegion="regex"/>
-        <DetectChar char="[" context="Pattern[" attribute="Operator" beginRegion="regex"/>
-        <DetectChar char="&lt;" context="Pattern&lt;" attribute="Operator" beginRegion="regex"/>
-        <DetectSpaces/>
-      </context>
-
-      <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <Detect2Chars char="P" char1="5" context="RegexPerl5" attribute="Pattern Modifier"/>
-        <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>
-        <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>
-      </context>
-
-      <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!IsRegexPerl5">
-        <DetectSpaces/>
-      </context>
-
-      <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">
-        <IncludeRules context="find_pattern##Perl"/>
-      </context>
-
-      <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="Pattern" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop#pop" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar attribute="Operator" context="SubPattern" char="("/>
-        <DetectChar char="\" context="PatternMetaChar" attribute="Pattern Character Class"/>
-        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
-        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
-        <DetectChar attribute="Pattern Modifier" context="PatternModifier" char=":" lookAhead="1"/>
-        <DetectChar char="{" context="Interpolation" attribute="Operator" beginRegion="block"/>
-        <Detect2Chars attribute="Operator" context="RecursivePattern" char="&lt;" char1="("/>
-        <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="?"/>
-        <Detect2Chars attribute="Operator" context="PatternAssertion" char="&lt;" char1="!"/>
-        <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="&lt;"/>
-        <Detect2Chars attribute="Operator" context="#stay" char=">" char1=">"/>
-        <DetectChar attribute="Pattern Meta Character" context="RegexClass" char="&lt;"/>
-        <AnyChar attribute="Pattern Quantifier" context="#stay" String="?*+%"/>
-        <Detect2Chars attribute="Pattern Quantifier" context="#stay" char="." char1="."/>
-        <AnyChar attribute="Operator" context="#stay" String="[]«»~"/>
-        <DetectChar attribute="Pattern Special Character" context="#stay" char="."/>
-        <Detect2Chars attribute="Variable" context="PatternVariable" char="$" char1="&lt;"/>
-        <AnyChar attribute="Pattern Control Flow" context="#stay" String="&amp;|^$"/>
-        <DetectChar attribute="Comment" context="StartComment" char="#"/>
-        <IncludeRules context="find_Variable"/>
-        <RegExpr    String="[&rangealphabetic;&rangenumeric;\s]+" context="#stay" attribute="Pattern"/>
-      </context>
-
-      <context name="SubPattern" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="Operator"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="RecursivePattern" attribute="Variable" lineEndContext="#stay">
-        <Detect2Chars attribute="Operator" context="#pop" char=")" char1=">"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <RegExpr context="#pop" attribute="Pattern Modifier" String=":\w+"/>
-        <DetectChar attribute="Pattern Control Flow" context="#pop" char=":"/>
-      </context>
-
-      <context name="PatternVariable" attribute="Variable" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <RegExpr String="&ident;>?" context="#pop" attribute="Variable"/>
-      </context>
-
-      <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!RegexClass">
-        <DetectChar attribute="Operator" context="#pop" char=">"/>
-        <DetectChar attribute="Operator" context="PatternAssertionCond" char="{"/>
-        <keyword attribute="Keyword" String="assertion" context="SubPatternAssertion"/>
-      </context>
-      <context name="SubPatternAssertion" attribute="Pattern" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop#pop" attribute="Operator"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="PatternAssertionCond" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars attribute="Operator" context="#pop#pop" char="}" char1=">"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="PatternMetaChar" attribute="Pattern Meta Character" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!CharError">
-        <AnyChar attribute="Pattern Character Class" context="#pop" String="nthvsdwNTHVSDW"/>
-        <RegExpr String="[^&rangealphabetic;&rangenumeric;]" context="#pop" attribute="Pattern Meta Character"/>
-      </context>
-
-
-      <!-- Pattern Character Classes -->
-
-      <context name="RegexClass" attribute="Pattern Meta Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <AnyChar    attribute="Operator" context="#stay" String="-!+()"/>
-        <DetectChar attribute="Pattern Meta Character" context="RegexClassRange" char="["/>
-        <DetectChar attribute="Pattern Unicode Property" context="RegexClassName" char=":"/>
-        <DetectChar attribute="Pattern Meta Character" context="#pop" char=">"/>
-        <DetectChar attribute="String Delimiter" context="q_RawString" char="'"/>
-        <DetectChar attribute="String Delimiter" context="qq_RawString" char="&quot;"/>
-        <DetectChar attribute="String Delimiter" context="Q_String｢" char="｢"/>
-        <DetectChar attribute="String Delimiter" context="q_String&lt;" char="&lt;"/>
-        <DetectChar attribute="String Delimiter" context="qq_String«" char="«"/>
-        <RegExpr attribute="String" context="#stay" String="[^-!+()?:&lt;>'&quot;｢«]+"/>
-      </context>
-
-      <context name="RegexClassName" attribute="Pattern Unicode Property" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <RegExpr String="\w+" context="#pop" attribute="Pattern Unicode Property"/>
-        <!-- auto-completion only -->
-        <keyword attribute="Pattern Unicode Property" context="#pop" String="unicodeGeneralCategories"/>
-      </context>
-
-      <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="\" context="RegexClassRangeMetaChar" attribute="Pattern Character Class"/>
-        <Detect2Chars char="." char1="." context="#stay" attribute="Pattern Quantifier"/>
-        <DetectChar attribute="Pattern Meta Character" context="#pop" char="]"/>
-      </context>
-
-      <context name="RegexClassRangeMetaChar" attribute="Pattern Meta Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces/>
-        <IncludeRules context="find_SpecialChar"/>
-        <IncludeRules context="PatternMetaChar"/>
-      </context>
-
-
-      <!-- Regex Substitution -->
-
-      <context name="RegexSubstitution" attribute="Operator" lineEndContext="#stay">
-        <IncludeRules context="find_RegexClosure"/>
-        <RegExpr String="([^\w\s])" context="RegexSubstitutionPattern" attribute="Operator" beginRegion="regex"/>
-      </context>
-
-      <context name="RegexSubstitutionPattern" attribute="Pattern" lineEndContext="#stay">
-        <RegExpr String="(%1)" dynamic="1" context="RegexSubstitutionString" attribute="Operator" endRegion="regex"/>
-        <IncludeRules context="find_Pattern"/>
-      </context>
-
-      <context name="RegexSubstitutionString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop#pop#pop" attribute="Operator"/>
-      </context>
-
-
-      <!-- Number -->
-
-      <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!CharErrorIfNoSep">
-        <RegExpr String="&int10;(?:\.&int10;(?:[eE][+-]?&int10;)?|[eE][+-]?&int10;)i?|\.&int10;(?:[eE][+-]?&int10;)?i?" context="CheckNumberError" attribute="Float"/>
-        <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>
-        <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>
-        <RegExpr String="&int10;i?" context="CheckNumberError" attribute="Decimal"/>
-        <DetectChar char="." context="#pop" attribute="Operator"/>
-      </context>
-
-      <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
-        <RegExpr String="[a-fA-F0-9]+(?:_[a-fA-F0-9]+)*i?" context="#pop!CheckNumberError" attribute="Hex"/>
-      </context>
-
-      <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
-        <RegExpr String="[0-7]+(?:_[0-7]+)*i?" context="#pop!CheckNumberError" attribute="Octal"/>
-      </context>
-
-      <context name="BaseNumber" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop!CharErrorIfNoSep">
-        <DetectChar char="&gt;" context="#pop#pop#pop" attribute="Error"/>
-        <RegExpr String="&intN;\.&intN;|\.&intN;" context="#pop#pop!BaseNumberClose" attribute="Float"/>
-        <RegExpr String="&intN;" context="#pop#pop!BaseNumberClose" attribute="Decimal"/>
-      </context>
-      <context name="BaseNumberClose" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop!CharErrorIfNoSep">
-        <DetectChar char="&gt;" context="#pop#pop" attribute="Operator"/>
-        <IncludeRules context="CheckNumberError"/>
-      </context>
-
-      <context name="CheckNumberError" attribute="Octal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>
-      </context>
-
-
-      <!-- Attribute or Key -->
-
-      <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <Int context="MaybeAttribute2" attribute="Decimal"/>
-        <DetectChar char="!" context="#pop" attribute="Operator"/>
-        <RegExpr String="&ident;" context="#pop" attribute="Attribute"/>
-      </context>
-
-      <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar char="&lt;" context="BaseNumber" attribute="Operator"/>
-      </context>
-
-
-      <!-- Pod -->
-
-      <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop">
-        <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>
-        <WordDetect String="for"   context="PodFor" attribute="Pod Typename"/>
-        <keyword    String="pod"   context="PodTypenameValue" attribute="Pod Typename"/>
-        <RegExpr    String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>
-        <RegExpr    String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>
-      </context>
-
-      <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>
-      </context>
-
-      <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>
-        <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>
-      </context>
-
-      <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>
-      </context>
-
-
-      <!-- Pod formatting -->
-
-      <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">
-        <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>
-        <Detect2Chars char="B" char1="«"    attribute="Pod Bold" context="#pop!PodFormatB2"/>
-        <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>
-        <Detect2Chars char="I" char1="«"    attribute="Pod Italic" context="#pop!PodFormatI2"/>
-        <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
-        <Detect2Chars char="L" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
-        <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>
-        <Detect2Chars char="N" char1="«"    attribute="Pod Note" context="#pop!PodFormatN2"/>
-        <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
-        <Detect2Chars char="P" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
-        <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>
-        <Detect2Chars char="Z" char1="«"    attribute="Pod Comment" context="#pop!PodFormatZ2"/>
-        <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>
-        <Detect2Chars char="U" char1="«"    attribute="Pod Underline" context="#pop!PodFormatU2"/>
-        <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="C" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>
-        <Detect2Chars char="E" char1="«"    attribute="Pod Unicode" context="#pop!PodFormatE2"/>
-        <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="K" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="R" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="T" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-        <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>
-        <Detect2Chars char="V" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatV2"/>
-        <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>
-        <Detect2Chars char="X" char1="«"    attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>
-        <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
-        <Detect2Chars char="M" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
-      </context>
-
-      <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatB1">
-        <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>
-      </context>
-      <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>
-        <DetectChar char=">" attribute="Pod Bold" context="#pop"/>
-      </context>
-      <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>
-        <DetectChar char="»" attribute="Pod Bold" context="#pop"/>
-      </context>
-      <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>
-      </context>
-
-      <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatE1">
-        <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>
-      </context>
-      <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>
-        <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>
-      </context>
-      <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>
-        <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>
-      </context>
-      <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>
-      </context>
-
-      <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatI1">
-        <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>
-      </context>
-      <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>
-        <DetectChar char=">" attribute="Pod Italic" context="#pop"/>
-      </context>
-      <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>
-        <DetectChar char="»" attribute="Pod Italic" context="#pop"/>
-      </context>
-      <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>
-      </context>
-
-      <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatL1">
-        <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>
-      </context>
-      <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>
-        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
-        <DetectChar char=">" attribute="Pod Link" context="#pop"/>
-      </context>
-      <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>
-        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
-        <DetectChar char="»" attribute="Pod Link" context="#pop"/>
-      </context>
-      <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
-        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>
-      </context>
-
-      <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatN1">
-        <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>
-      </context>
-      <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>
-        <DetectChar char=">" attribute="Pod Note" context="#pop"/>
-      </context>
-      <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>
-        <DetectChar char="»" attribute="Pod Note" context="#pop"/>
-      </context>
-      <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>
-      </context>
-
-      <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatU1">
-        <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>
-      </context>
-      <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>
-        <DetectChar char=">" attribute="Pod Underline" context="#pop"/>
-      </context>
-      <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>
-        <DetectChar char="»" attribute="Pod Underline" context="#pop"/>
-      </context>
-      <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>
-      </context>
-
-      <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatV1">
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>
-      </context>
-      <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>
-        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>
-        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-
-      <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatVT1">
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>
-      </context>
-      <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>
-        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>
-        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-      <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
-      </context>
-
-      <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatZ1">
-        <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>
-      </context>
-      <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>
-        <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>
-        <DetectChar char=">" attribute="Pod Comment" context="#pop"/>
-      </context>
-      <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>
-        <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>
-        <DetectChar char="»" attribute="Pod Comment" context="#pop"/>
-      </context>
-      <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>
-      </context>
-
-      <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!PodFormatX1">
-        <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>
-      </context>
-      <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>
-        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
-        <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>
-      </context>
-      <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>
-        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
-        <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>
-        <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>
-      </context>
-      <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodFormat">
-        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
-        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>
-        <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>
-      </context>
-
-      <!-- Pod =begin -->
-
-      <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>
-        <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>
-        <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>
-        <!-- auto-completion only -->
-        <keyword String="podblocktypename" context="#stay" attribute="Pod Typename Value"/>
-      </context>
-
-      <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
-        <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>
-      </context>
-
-      <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodCode">
-        <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
-      </context>
-      <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>
-
-      <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>
-      </context>
-      <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
-      </context>
-
-
-      <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>
-      </context>
-
-      <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodComment">
-        <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
-      </context>
-      <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>
-
-      <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>
-      </context>
-      <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
-      </context>
-
-
-      <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">
-        <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
-        <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>
-      </context>
-
-      <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthrough="1" fallthroughContext="PodInnerBlockFormat">
-        <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
-        <DetectSpaces/>
-        <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
-        <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>
-      </context>
-
-      <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">
-        <IncludeRules context="PodFormat"/>
-      </context>
-
-      <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <DetectSpaces attribute="Normal Text"/>
-        <DetectChar char="=" context="#stay" attribute="Pod"/>
-        <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>
-      </context>
-      <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">
-        <DetectSpaces attribute="Normal Text"/>
-        <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
-      </context>
-
-      <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
-        <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>
-      </context>
-
-      <!-- Pod configuration for =begin -->
-
-      <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>
-
-      <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthrough="1" fallthroughContext="PodBlockConfigError">
-        <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>
-        <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>
-        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodBlockConfigError">
-        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthrough="1" fallthroughContext="#pop!PodBlockConfigError">
-        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop">
-        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
-        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
-        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
-      </context>
-
-
-      <!-- Pod =for -->
-
-      <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthrough="1" fallthroughContext="#pop#pop!Error">
-        <DetectSpaces attribute="Normal Text"/>
-        <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>
-      </context>
-
-      <!-- Pod configuration for =for -->
-
-      <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>
-
-      <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthrough="1" fallthroughContext="PodConfigError">
-        <DetectSpaces/>
-        <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>
-      </context>
-
-      <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
-        <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>
-        <Int context="PodConfigKeyIntName" attribute="Decimal"/>
-        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthrough="1" fallthroughContext="#pop!PodConfigError">
-        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthrough="1" fallthroughContext="#pop#pop!PodConfigError">
-        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
-      </context>
-
-      <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
-        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
-        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
-      </context>
-
-      <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">
-        <DetectSpaces/>
-        <keyword String="podvalue" context="#stay" attribute="Data Type"/>
-        <DetectIdentifier/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>
-        <DetectChar char="'" context="PodSQString" attribute="String"/>
-        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
-      </context>
-
-      <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">
-        <DetectSpaces/>
-        <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>
-        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
-        <keyword String="podvalue" context="#stay" attribute="Data Type"/>
-        <DetectIdentifier/>
-        <DetectChar char="'" context="PodSQString" attribute="String"/>
-        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>
-      </context>
-
-      <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
-        <keyword String="podvalue" context="#stay" attribute="Data Type"/>
-        <DetectIdentifier/>
-        <DetectChar char="'" context="PodSQString" attribute="String"/>
-        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
-        <AnyChar String="0123456789." context="Number" lookAhead="1"/>
-        <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>
-      </context>
-
-
-      <!-- Pod String -->
-
-      <context name="PodSQString" attribute="String" lineEndContext="#stay">
-        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
-        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
-        <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="PodQString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>
-        <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="find_SpecialChar" attribute="String Special Character" lineEndContext="#stay">
-        <Detect2Chars char="c" char1="[" context="UnicodeCodepoint" attribute="String Special Character"/>
-        <DetectChar char="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
-        <DetectChar char="x" context="HexaString" attribute="String Special Character"/>
-        <DetectChar char="o" context="OctalString" attribute="String Special Character"/>
-      </context>
-
-      <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop">
-        <IncludeRules context="find_SpecialChar"/>
-        <RegExpr String="." context="#pop" attribute="String"/>
-      </context>
-
-      <context name="UnicodeCodepoint" attribute="String Special Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectIdentifier/>
-        <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>
-        <DetectChar char="," context="#stay" attribute="Separator Symbol"/>
-      </context>
-
-      <context name="UnicodeCodepointDecimal" attribute="String Special Character" lineEndContext="#pop#pop">
-        <!-- 0 to 1114111 -->
-        <RegExpr String="0*(?:1(?:0\d{5}|1(?:O\d{4}|(?:1[0-3]\d{3}|4(?:0\d\d|1(?:0\d|1[01]))))))|\d{1,6}|0+" context="UnicodeCodepointDecimalCheck" attribute="String Special Character"/>
-        <RegExpr String="[^&quot;]" context="#pop" attribute="Error"/>
-      </context>
-      <context name="UnicodeCodepointDecimalCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
-        <AnyChar String="0123456789" context="#pop#pop#pop" attribute="Error"/>
-      </context>
-
-      <context name="HexaString" attribute="String Special Character" lineEndContext="#pop#pop">
-        <DetectChar char="[" context="HexaStringBracket" attribute="String Special Character"/>
-        <!-- 0 to 0x10FFFF -->
-        <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringCheck" attribute="String Special Character"/>
-        <RegExpr String="[^&quot;]" context="#pop#pop" attribute="Error"/>
-      </context>
-      <context name="HexaStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
-        <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop#pop" attribute="Error"/>
-      </context>
-      <context name="HexaStringBracket" attribute="String Special Character" lineEndContext="#stay">
-        <DetectSpaces/>
-        <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
-        <!-- 0 to 0x10FFFF -->
-        <RegExpr String="0*(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5})|0+" context="HexaStringBracketCheck" attribute="String Special Character"/>
-      </context>
-      <context name="HexaStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
-        <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
-        <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
-      </context>
-
-      <context name="OctalString" attribute="String Special Character" lineEndContext="#pop#pop">
-        <DetectChar char="[" context="OctalStringBracket" attribute="String Special Character"/>
-        <!-- 0 to 0o4177777 -->
-        <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringCheck" attribute="String Special Character"/>
-        <RegExpr String="[^&quot;]" context="#stay" attribute="Error"/>
-      </context>
-      <context name="OctalStringCheck" attribute="Error" lineEndContext="#pop#pop#pop" fallthrough="1" fallthroughContext="#pop#pop#pop">
-        <AnyChar String="01234567" context="#pop#pop#pop" attribute="Error"/>
-      </context>
-      <context name="OctalStringBracket" attribute="String Special Character" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop#pop#pop" attribute="Error"/>
-        <!-- 0 to 0o4177777 -->
-        <RegExpr String="0*(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}|0+" context="OctalStringBracketCheck" attribute="String Special Character"/>
-      </context>
-      <context name="OctalStringBracketCheck" attribute="String Special Character" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop#pop#pop">
-        <DetectChar char="]" context="#pop#pop#pop#pop" attribute="String Special Character"/>
-        <DetectChar char="," context="#pop" attribute="Separator Symbol"/>
-        <RegExpr String="[^]&quot;]" context="#stay" attribute="Error"/>
-      </context>
-
-
-      <!-- Q String -->
-
-      <context name="Q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop">
-        <DetectSpaces attribute="String"/>
-        <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>
-        <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>
-        <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>
-        <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>
-        <DetectChar char="｢" context="#pop!Q_String｢" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="([^()>｣\]}'&_rangealphabetic;&rangenumeric;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>
-      </context>
-
-      <context name="Q_String(" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>
-        <RegExpr String="[^()]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String[" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>
-        <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String{" attribute="String" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>
-        <RegExpr String="[^{}]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String｢" attribute="String" lineEndContext="#stay">
-        <DetectChar char="｣" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="｢" context="Q_String｢" attribute="String Delimiter"/>
-        <RegExpr String="[^｢｣]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="Q_StringAny" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
-        <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!q_String">
-        <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>
-      </context>
-
-      <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop!qq_String">
-        <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
-        <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>
-        <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>
-        <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>
-      </context>
-
-      <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="#pop!q_QuotingForm2">
-        <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>
-        <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>
-      </context>
-      <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="q_String">
-        <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>
-        <keyword String="quoting" context="#stay" attribute="Operator"/>
-        <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>
-        <!-- :closure as qq -->
-        <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>
-        <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>
-      </context>
-
-      <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthrough="1" fallthroughContext="qq_String">
-        <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>
-        <keyword String="quoting" context="#stay" attribute="Operator"/>
-        <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>
-        <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>
-      </context>
-
-
-      <!-- q and qq Heredoc -->
-
-      <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>
-      </context>
-      <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">
-        <DetectSpaces/>
-        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
-        <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>
-      </context>
-      <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">
-        <DetectSpaces/>
-        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-
-      <!-- q String -->
-
-      <context name="q_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectSpaces/>
-        <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>
-        <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>
-        <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>
-      </context>
-
-      <context name="q_String(" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_String[" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_String{" attribute="String" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_String&lt;" attribute="String" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_StringAny" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
-        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <context name="q_RawString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
-        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
-        <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
-        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
-      </context>
-
-      <!-- qq String -->
-
-      <context name="qq_String" attribute="String" lineEndContext="#stay" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectSpaces/>
-        <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>
-        <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>
-        <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>
-        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>
-      </context>
-
-      <context name="qq_String(" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String[" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String{" attribute="String" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">
-        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String«" attribute="String" lineEndContext="#stay">
-        <DetectChar char="»" context="#pop" attribute="String Delimiter"/>
-        <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">
-        <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>
-        <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_StringAny" attribute="String" lineEndContext="#stay">
-        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
-        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="qq_RawString" attribute="String" lineEndContext="#stay">
-        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
-        <IncludeRules context="find_qq_StringCommon"/>
-        <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>
-      </context>
-
-      <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">
-        <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>
-        <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>
-        <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>
-        <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>
-        <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>
-      </context>
-
-      <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">
-        <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>
-        <Detect2Chars char="\" char1="x" context="HexaString" attribute="String Special Character"/>
-        <StringDetect String="\c[" context="UnicodeCodepoint" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="c" context="UnicodeCodepointDecimal" attribute="String Special Character"/>
-        <Detect2Chars char="\" char1="o" context="OctalString" attribute="String Special Character"/>
-        <RegExpr String="\\.?" context="#pop" attribute="String Special Character"/>
-      </context>
-
-      <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">
-        <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>
-        <DetectChar char="&amp;" context="#pop" attribute="String"/>
-      </context>
-
-      <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">
-        <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>
-        <DetectChar char="$" context="#pop" attribute="String"/>
-      </context>
-
-      <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">
-        <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>
-        <AnyChar String="@%" context="#pop" attribute="String"/>
-      </context>
-
-      <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">
-        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
-        <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>
-      </context>
-
-      <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop#pop">
-        <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>
-        <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>
-      </context>
-
-      <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>
-        <IncludeRules context="base"/>
-      </context>
-
-      <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">
-        <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>
-        <DetectChar char="." context="#pop#pop#pop" attribute="String"/>
-      </context>
-
-      <context name="FunctionParameters" attribute="String" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" attribute="Function"/>
-        <DetectChar char="(" context="FunctionParameters" attribute="Function"/>
-        <IncludeRules context="base"/>
-      </context>
-
-
-      <!-- Comment -->
-
-      <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthrough="1" fallthroughContext="SingleLineComment">
-        <DetectChar attribute="Comment" context="MultilineComment" char="`"/>
-        <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>
-      </context>
-
-      <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthrough="1" fallthroughContext="#pop!SingleLineComment">
-        <!-- TODO a new rule is needed to find the corresponding closures -->
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>
-        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>
-        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>
-        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>
-        <!-- etc -->
-      </context>
-
-      <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">
-        <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>
-        <IncludeRules context="SingleLineComment"/>
-      </context>
-      <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>
-        <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>
-      </context>
-
-      <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>
-        <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>
-      </context>
-
-      <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>
-      </context>
-      <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">
-        <IncludeRules context="SingleLineComment"/>
-        <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>
-        <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>
-      </context>
-
-      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">
-        <DetectSpaces/>
-        <IncludeRules context="##Comments"/>
-        <DetectIdentifier/>
-      </context>
-
-
-      <!-- Error -->
-
-      <context name="Error" attribute="Error" lineEndContext="#pop"/>
-
-      <context name="CharErrorIfNoSep" attribute="Error" lineEndContext="#pop">
-        <RegExpr String="[^;)]" context="#pop" attribute="Error"/>
-      </context>
-
-      <context name="CharError" attribute="Error" lineEndContext="#pop">
-        <RegExpr String="." context="#pop" attribute="Error"/>
-      </context>
-
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text"               defStyleNum="dsNormal"/>
-      <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Keyword Value"             defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Variable"                  defStyleNum="dsVariable" spellChecking="false"/>
-      <itemData name="Twigil"                    defStyleNum="dsAttribute" spellChecking="false"/>
-      <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Variable Storage"          defStyleNum="dsKeyword" spellChecking="false" bold="1"/>
-      <itemData name="Property"                  defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>
-      <itemData name="Declare Routine"           defStyleNum="dsBuiltIn" spellChecking="false"/>
-      <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>
-      <itemData name="Operator"                  defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Separator Symbol"          defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>
-      <itemData name="Attribute"                 defStyleNum="dsAttribute" spellChecking="false"/>
-      <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>
-      <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>
-      <itemData name="String"                    defStyleNum="dsString"/>
-      <itemData name="String Delimiter"          defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="String (interpolated)"     defStyleNum="dsString"/>
-      <itemData name="String Special Character"  defStyleNum="dsChar"/>
-      <itemData name="Pattern"                   defStyleNum="dsOthers" spellChecking="false"/>
-      <itemData name="Pattern Meta Character"    defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Pattern Unicode Property"  defStyleNum="dsBaseN" spellChecking="false"/>
-      <itemData name="Pattern Character"         defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Pattern Modifier"          defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Pattern Quantifier"        defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Pattern Control Flow"      defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>
+<!DOCTYPE language
+[
+  <!--
+  identifier:
+    Alphabetic characters include characters with the Unicode General Category value Letter (L), and the underscore _.
+    Alphanumeric characters additionally include characters with the Unicode General Category value Number, Decimal Digit (Nd).
+  -->
+  <!-- Large values -->
+  <!ENTITY rangealnum "_\p{L}\p{N}">
+  <!ENTITY _alnum "_\p{L}\p{N}">
+  <!ENTITY alnum "[&_alnum;]">
+  <!ENTITY _ident "&alnum;*+(?:[-']&alnum;*+)*+">
+  <!ENTITY ident "(?:[_\p{L}]&_ident;)">
+  <!ENTITY datatype "(?:[_\p{Lu}\p{Lt}]&_ident;)">
+
+  <!-- 0 to 0x10FFFF -->
+  <!ENTITY unicode_hex_point "(?:0*+(?:10[0-9a-fA-F]{4}|[0-9a-fA-F]{1,5}+)|0++)">
+  <!-- 0 to 1114111 -->
+  <!ENTITY unicode_dec_point "(?:0*+(?:1(?:0[0-9]{5}|1(?:0[0-9]{4}|(?:1[0-3][0-9]{3}|4(?:0[0-9]{2}|1(?:0[0-9]|1[01]))))))|[0-9]{1,6}+|0++)">
+  <!-- 0 to 0o4177777 -->
+  <!ENTITY unicode_oct_point "(?:0*+(?:[0-3][0-7]{6}|4[01]|[0-7])[0-7]{0,5}+|0++)">
+
+  <!ENTITY prefixdollarvarname "(?:[_\p{L}0-9/!]|\(\))">
+  <!ENTITY dollarvarname "(?:&ident;|[0-9]+|[/!]|\(\))">
+  <!ENTITY twigils "*?!.^:=~">
+
+  <!ENTITY twigil_variable "[&#37;&amp;](?=[?*][_\p{L}])|[$@](?=[&twigils;][_\p{L}])">
+  <!ENTITY variable "[&#37;@]?\$/|\$!|\$[0-9]+|[\\@&#37;&amp;$]&ident;">
+
+  <!ENTITY podfmt "BCEIKLMNPRTUVXZ">
+  <!ENTITY allnopodfmt "(?:[^&podfmt;]+|[&podfmt;](?![&lt;«]))+">
+  <!ENTITY allnopodfmt1 "(?:[^&podfmt;&lt;>]+|[&podfmt;](&lt;(?:&lt;*(?=&lt;))|(?![&lt;«])))+">
+  <!ENTITY allnopodfmt2 "(?:[^&podfmt;«»]+|[&podfmt;](?![&lt;«]))+">
+  <!ENTITY allnopodfmt3 "(?:[^&podfmt;&lt;>]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+">
+
+  <!ENTITY quotingform_q "(?:q?(?::?[xsahfcb]|:?ww?|:(?:v|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)|)(?::[xsahfcbv]|ww?|exec|words|quotewords|scalar|array|hash|function|closure|backslash|to|heredoc)*)">
+  <!ENTITY quotingform_q_assert "(?:\s+(?=\()|\s*(?=[^()>｣\]}a-zA-Z0-9]|$))">
+  <!ENTITY quotingconstruct "q&quotingform_q;&quotingform_q_assert;">
+
+  <!ENTITY int10 "(?:[0-9]++(?:_[0-9]++)*+)">
+  <!ENTITY exp "(?:[eE][+-]?&int10;)">
+  <!ENTITY intN "(?:[0-9a-zA-Z]++(?:_[0-9a-zA-Z]++)*+)">
+
+  <!-- https://docs.raku.org/language/operators -->
+
+  <!--
+    42.&f;
+      ~~ access
+    expr.&?BLOCK
+        ~ access
+         ~~~~~~~~ variable
+  -->
+  <!ENTITY method_ops "\.([=^?+*:]|&amp;(?![?][_\p{L}]))?">
+
+  <!ENTITY postfix_ops "⚛?(\+\+|\-\-)">
+
+  <!ENTITY prefix_unary_ops "(\+\+⚛?|\-\-⚛?|//|[+~?]\^|[-+~|?!^⚛]|\b(not|so)\b)">
+
+  <!ENTITY _infix_simple_ops "\*\*|&#37;&#37;|[+~][&amp;&lt;>|^]|\?[&amp;^|]|=>|==>|&lt;==|::?=|//|\^\^|\([-+&amp;.|]\)|\^?…\^?|\^?\.\.\.\^?|[-+*/&#37;~∘&amp;∩⊍|∪⊎^⊖=]|\b(div|mod|gcd|lcm|xx?|min|max|minmax|andthen|notandthen|orelse|o)\b">
+  <!ENTITY _infix_chaining_ops "\((elem|cont|[=&lt;>]=|[&lt;>])\)|\.\.[\^]?|\^\.\.\^?|&lt;=>|===|=:=|=~=|~~|[=&lt;>]=|[⩵≠≤≥⩶∈∉≡≢∋∌⊂⊄⊆⊈⊃⊅⊇⊉]|&lt;(?!&lt;)|>(?!>)|&amp;&amp;|\|\||\b(eq|ne|gt|ge|lt|le|before|after|eqv|and|or|xor)\b">
+  <!-- "does" is an operator, but also a trait (separate treatment) -->
+  <!ENTITY _infix_structural "\b(but|cmp|coll|unicmp|leg)\b">
+  <!ENTITY _infix_other_ops "\^fff?\b|\bfff?\^|\bfff?\b|!!|\?\?">
+  <!ENTITY _infix_ops1 "(\b[RXZS]+)?((&_infix_simple_ops;)=?|⚛[-+]?=|\\(?=\s|$)|&_infix_structural;)">
+  <!ENTITY _infix_ops2 "\b[RXZS]+does">
+  <!ENTITY _infix_ops3 "((\b[RXZS]|!)[RXZS!]*+)?(&_infix_chaining_ops;|=)|[XZ]+">
+  <!ENTITY _infix_ops "&_infix_ops1;|&_infix_ops2;|&_infix_ops3;">
+  <!ENTITY infix_ops "(&_infix_ops;|&_infix_other_ops;|->)">
+
+  <!ENTITY list_ops "!!!|\?\?\?|\.\.\.">
+
+  <!-- <!ENTITY regadverb "(?!\()\s*(?::\w+\s*)*(?=[^\w\s])"> -->
+  <!ENTITY regadverb "(?!\()\s*(?=[^\p{L}\p{N}\s])">
+]>
+<language name="Raku" version="10" kateversion="5.62" section="Scripts" extensions="*.raku;*.rakumod;*.rakudoc;*.rakutest;*.pl6;*.PL6;*.p6;*.pm6;*.pod6" priority="6" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+  <highlighting>
+
+    <!-- https://docs.raku.org/routines -->
+
+    <list name="pod">
+      <item>begin</item>
+      <item>end</item>
+      <item>finish</item>
+      <item>for</item>
+      <include>podtypename</include>
+    </list>
+
+    <list name="podblocktypename">
+      <item>pod</item>
+      <include>podtypename</include>
+    </list>
+
+    <list name="pod values">
+      <item>True</item>
+      <item>False</item>
+    </list>
+
+    <list name="podtypename">
+      <item>head1</item>
+      <item>head2</item>
+      <item>head3</item>
+      <item>head4</item>
+      <item>head5</item>
+      <item>head6</item>
+      <item>item</item>
+      <item>item1</item>
+      <item>item2</item>
+      <item>item3</item>
+      <item>item4</item>
+      <item>item5</item>
+      <item>item6</item>
+      <item>para</item>
+      <item>code</item>
+      <item>defn</item>
+      <item>comment</item>
+      <item>table</item>
+      <item>input</item>
+      <item>output</item>
+    </list>
+
+    <list name="quoting">
+      <item>exec</item>
+      <item>words</item>
+      <item>quotewords</item>
+      <item>scalar</item>
+      <item>array</item>
+      <item>hash</item>
+      <item>function</item>
+      <item>closure</item>
+      <item>backslash</item>
+      <item>heredoc</item>
+      <item>val</item>
+    </list>
+
+    <list name="declare routine">
+      <item>macro</item>
+      <item>sub</item>
+      <item>submethod</item>
+      <item>method</item>
+      <item>multi</item>
+      <item>proto</item>
+      <item>only</item>
+      <item>category</item>
+    </list>
+
+    <!-- https://docs.raku.org/syntax/token -->
+    <list name="regex keywords">
+      <item>rule</item>
+      <item>token</item>
+      <item>regex</item>
+    </list>
+
+    <list name="values">
+      <include>pod values</include>
+      <item>self</item>
+    </list>
+
+    <list name="variable storages">
+      <item>my</item>
+      <item>our</item>
+      <item>has</item>
+      <item>state</item>
+      <item>anon</item>
+      <item>augment</item>
+      <item>supersede</item>
+      <item>let</item>
+      <item>temp</item>
+      <item>constant</item>
+    </list>
+
+    <!-- https://docs.raku.org/language/control -->
+    <list name="control flow">
+      <!-- conditional -->
+      <item>if</item>
+      <item>else</item>
+      <item>elsif</item>
+      <item>unless</item>
+      <item>when</item>
+      <item>with</item>
+      <item>orwith</item>
+      <item>without</item>
+      <item>given</item>
+      <item>default</item>
+      <!-- repeat -->
+      <item>for</item>
+      <item>loop</item>
+      <item>repeat</item>
+      <item>while</item>
+      <item>until</item>
+      <!-- control flow -->
+      <item>once</item>
+      <item>take</item>
+      <item>next</item>
+      <item>last</item>
+      <item>redo</item>
+      <item>return</item>
+      <item>return-rw</item>
+      <item>exit</item>
+      <item>goto</item>
+      <!-- exception -->
+      <item>die</item>
+      <item>fail</item>
+      <item>try</item>
+      <item>warn</item>
+      <!-- concurrency -->
+      <item>react</item>
+      <item>gather</item>
+      <item>proceed</item>
+      <item>succeed</item>
+      <item>whenever</item>
+      <item>supply</item>
+      <!-- asynchronous -->
+      <item>async</item>
+      <item>await</item>
+      <item>start</item>
+      <!-- phasers -->
+      <item>BEGIN</item>
+      <item>CHECK</item>
+      <item>QUIT</item>
+      <item>CLOSE</item>
+      <item>INIT</item>
+      <item>FIRST</item>
+      <item>ENTER</item>
+      <item>LEAVE</item>
+      <item>KEEP</item>
+      <item>UNDO</item>
+      <item>NEXT</item>
+      <item>LAST</item>
+      <item>END</item>
+      <item>CATCH</item>
+      <item>CONTROL</item>
+    </list>
+
+    <list name="keywords">
+      <item>do</item>
+      <item>no</item>
+      <item>use</item>
+      <item>require</item>
+      <!-- typeConstraint -->
+      <item>as</item>
+      <item>does</item>
+      <item>handles</item>
+      <item>is</item>
+      <item>of</item>
+      <item>trusts</item>
+      <item>where</item>
+      <!-- module -->
+      <item>module</item>
+      <item>class</item>
+      <item>role</item>
+      <item>package</item>
+      <item>enum</item>
+      <item>grammar</item>
+      <item>slang</item>
+      <item>subset</item>
+      <!-- phasers -->
+      <item>PRE</item>
+      <item>POST</item>
+      <item>COMPOSE</item>
+      <item>DOC</item>
+    </list>
+
+    <list name="properties">
+      <item>DEPRECATED</item>
+      <item>assoc</item>
+      <item>binary</item>
+      <item>built</item>
+      <item>cached</item>
+      <item>copy</item>
+      <item>deep</item>
+      <item>default</item>
+      <item>defequiv</item>
+      <item>dynamic</item>
+      <item>equiv</item>
+      <item>export</item>
+      <item>hidden-from-backtrace</item>
+      <item>inline</item>
+      <item>irs</item>
+      <item>looser</item>
+      <item>ofs</item>
+      <item>ors</item>
+      <item>parsed</item>
+      <item>prec</item>
+      <item>pure</item>
+      <item>raw</item>
+      <item>readonly</item>
+      <item>ref</item>
+      <item>reparsed</item>
+      <item>required</item>
+      <item>rw</item>
+      <item>test-assertion</item>
+      <item>tighter</item>
+      <item>unary</item>
+      <item>will</item>
+    </list>
+
+    <list name="number">
+      <item>NaN</item>
+      <item>Inf</item>
+    </list>
+
+    <list name="types">
+      <item>Any</item>
+      <item>Array</item>
+      <item>Associative</item>
+      <item>Bag</item>
+      <item>Blob</item>
+      <item>Block</item>
+      <item>Bool</item>
+      <item>Buf</item>
+      <item>Callable</item>
+      <item>Capture</item>
+      <item>Char</item>
+      <item>Class</item>
+      <item>Code</item>
+      <item>Complex</item>
+      <item>Cool</item>
+      <item>Exception</item>
+      <item>Failure</item>
+      <item>False</item>
+      <item>Grammar</item>
+      <item>Hash</item>
+      <item>IO</item>
+      <item>Int</item>
+      <item>Junction</item>
+      <item>List</item>
+      <item>Macro</item>
+      <item>Match</item>
+      <item>Method</item>
+      <item>Mu</item>
+      <item>Num</item>
+      <item>Numeric</item>
+      <item>Order</item>
+      <item>Pair</item>
+      <item>Positional</item>
+      <item>Proxy</item>
+      <item>Range</item>
+      <item>Rat</item>
+      <item>Rational</item>
+      <item>Real</item>
+      <item>Regex</item>
+      <item>Routine</item>
+      <item>Scalar</item>
+      <item>Seq</item>
+      <item>Set</item>
+      <item>Signature</item>
+      <item>Str</item>
+      <item>Sub</item>
+      <item>Submethod</item>
+      <item>True</item>
+      <item>UInt</item>
+      <item>Version</item>
+      <item>Whatever</item>
+      <item>buf8</item>
+      <item>buf16</item>
+      <item>buf32</item>
+      <item>buf64</item>
+      <item>int</item>
+      <item>int8</item>
+      <item>int16</item>
+      <item>int32</item>
+      <item>int64</item>
+      <item>num</item>
+      <item>uint</item>
+      <item>uint8</item>
+      <item>uint16</item>
+      <item>uint32</item>
+      <item>uint64</item>
+      <item>utf8</item>
+      <item>utf16</item>
+      <item>utf32</item>
+    </list>
+
+    <list name="function operators">
+      <item>print</item>
+      <item>push</item>
+      <item>say</item>
+      <item>map</item>
+      <item>substr</item>
+      <item>die</item>
+      <item>any</item>
+    </list>
+
+    <list name="operators">
+      <item>X</item>
+      <item>gcd</item>
+      <item>ge</item>
+      <item>gt</item>
+      <item>lcm</item>
+      <item>le</item>
+      <item>leg</item>
+      <item>lt</item>
+      <item>max</item>
+      <item>min</item>
+      <item>minmax</item>
+      <item>mod</item>
+      <item>ne</item>
+      <item>not</item>
+      <item>notandthen</item>
+      <item>o</item>
+      <item>or</item>
+      <item>orelse</item>
+      <item>so</item>
+      <item>unicmp</item>
+      <item>x</item>
+      <item>xor</item>
+      <item>xx</item>
+      <item>Z</item>
+      <item>and</item>
+      <item>andthen</item>
+      <item>but</item>
+      <item>cmp</item>
+      <item>coll</item>
+      <item>div</item>
+      <item>does</item>
+      <item>eq</item>
+      <item>eqv</item>
+      <item>ff</item>
+      <item>fff</item>
+    </list>
+
+    <list name="unicode general categories">
+      <item>L</item>  <item>Letter</item>
+      <item>LC</item> <item>Cased_Letter</item>
+      <item>Lu</item> <item>Uppercase_Letter</item>
+      <item>Ll</item> <item>Lowercase_Letter</item>
+      <item>Lt</item> <item>Titlecase_Letter</item>
+      <item>Lm</item> <item>Modifier_Letter</item>
+      <item>Lo</item> <item>Other_Letter</item>
+      <item>M</item>  <item>Mark</item>
+      <item>Mn</item> <item>Nonspacing_Mark</item>
+      <item>Mc</item> <item>Spacing_Mark</item>
+      <item>Me</item> <item>Enclosing_Mark</item>
+      <item>N</item>  <item>Number</item>
+      <item>Nd</item> <item>Decimal_Number</item> <item>digit</item>
+      <item>Nl</item> <item>Letter_Number</item>
+      <item>No</item> <item>Other_Number</item>
+      <item>P</item>  <item>Punctuation</item> <item>punct</item>
+      <item>Pc</item> <item>Connector_Punctuation</item>
+      <item>Pd</item> <item>Dash_Punctuation</item>
+      <item>Ps</item> <item>Open_Punctuation</item>
+      <item>Pe</item> <item>Close_Punctuation</item>
+      <item>Pi</item> <item>Initial_Punctuation</item>
+      <item>Pf</item> <item>Final_Punctuation</item>
+      <item>Po</item> <item>Other_Punctuation</item>
+      <item>S</item>  <item>Symbol</item>
+      <item>Sm</item> <item>Math_Symbol</item>
+      <item>Sc</item> <item>Currency_Symbol</item>
+      <item>Sk</item> <item>Modifier_Symbol</item>
+      <item>So</item> <item>Other_Symbol</item>
+      <item>Z</item>  <item>Separator</item>
+      <item>Zs</item> <item>Space_Separator</item>
+      <item>Zl</item> <item>Line_Separator</item>
+      <item>Zp</item> <item>Paragraph_Separator</item>
+      <item>C</item>  <item>Other</item>
+      <item>Cc</item> <item>Control</item> <item>cntrl</item>
+      <item>Cf</item> <item>Format</item>
+      <item>Cs</item> <item>Surrogate</item>
+      <item>Co</item> <item>Private_Use</item>
+      <item>Cn</item> <item>Unassigned</item>
+    </list>
+
+    <list name="assertion">
+      <item>before</item>
+      <item>after</item>
+    </list>
+
+    <contexts>
+
+      <context name="Shebang" attribute="Comment" lineEndContext="#pop!base" fallthroughContext="#pop!base">
+        <RegExpr attribute="Keyword" context="#pop!base" String="^#!\/.*" column="0"/>
+      </context>
+
+      <context name="base" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectSpaces/>
+        <AnyChar String="{(" attribute="Symbol" beginRegion="block"/>
+        <AnyChar String="])" context="postfix_op" attribute="Symbol" endRegion="block"/>
+        <AnyChar String=",;" attribute="Separator Symbol"/>
+        <DetectChar char="}" endRegion="block" attribute="Symbol"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
+        <IncludeRules context="find_boxed_op"/>
+        <RegExpr String="&prefix_unary_ops;(\s*&prefix_unary_ops;)*+|&list_ops;" context="postfix_hyper_op" attribute="Operator"/>
+      </context>
+
+      <context name="find_boxed_op" attribute="Normal Text" lineEndContext="#pop">
+        <DetectChar char="[" context="boxed_op" attribute="Symbol" beginRegion="block"/>
+        <RegExpr String="(\b[RXZS]+)?(?=\\?\[)" context="start_boxed_op" attribute="Operator"/>
+      </context>
+      <context name="start_boxed_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!boxed_op">
+        <DetectChar char="[" context="#pop!boxed_op" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="\" context="boxed_op"/>
+      </context>
+
+      <context name="boxed_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!boxed_op2">
+        <RegExpr String="&lt;(?![\]&lt;])" context="boxed_op_string" attribute="String Delimiter" beginRegion="block"/>
+      </context>
+      <context name="boxed_op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectChar char="]" context="#pop" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="boxed_op_elem"/>
+      </context>
+      <!-- [<...>] -->
+      <context name="boxed_op_string" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="q_String&lt;_common"/>
+      </context>
+
+      <context name="boxed_op_elem_before" attribute="Normal Text" lineEndContext="#pop">
+        <IncludeRules context="find_boxed_op"/>
+        <RegExpr String="(\b[RXZS]+)?(&lt;&lt;|>>|«|»)" context="hyper_op_dispatch" lookAhead="1"/>
+        <RegExpr String="[\\&amp;]&ident;" attribute="Variable"/>
+      </context>
+      <context name="boxed_op_elem" attribute="Normal Text" lineEndContext="#pop">
+        <IncludeRules context="boxed_op_elem_before"/>
+        <RegExpr String="\bdoes\b|&infix_ops;" attribute="Operator"/>
+        <IncludeRules context="boxed_op_elem_after"/>
+      </context>
+      <context name="boxed_op_elem_after" attribute="Normal Text" lineEndContext="#pop">
+        <RegExpr String="&ident;"/>
+      </context>
+
+      <context name="postfix_hyper_op" attribute="Normal Text" lineEndContext="#pop!term" fallthroughContext="#pop!term">
+        <StringDetect String="&lt;&lt;" context="#pop!term" attribute="Hyper Operator"/>
+        <StringDetect String="«" context="#pop!term" attribute="Hyper Operator"/>
+      </context>
+
+      <context name="postfix_op" attribute="Normal Text" lineEndContext="#pop!infix_op" fallthroughContext="#pop!infix_op">
+        <StringDetect String="[" context="#pop" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="!" context="#pop" attribute="Member Operator"/>
+        <StringDetect String="&lt;&lt;" context="#pop" attribute="Hyper Operator"/>
+        <StringDetect String="«" context="#pop" attribute="Hyper Operator"/>
+        <StringDetect String="&lt;" context="#pop!q_String&lt;_term" attribute="String Delimiter"/>
+        <RegExpr String="&postfix_ops;" attribute="Operator"/>
+      </context>
+
+      <context name="infix_op" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <WordDetect String="does" context="#pop" attribute="Keyword"/>
+        <IncludeRules context="infix_regular_op"/>
+      </context>
+      <context name="infix_regular_op" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <RegExpr String="&infix_ops;(\s*&prefix_unary_ops;)*+" context="#pop!infix_postfix_hyper_op" attribute="Operator"/>
+        <RegExpr String="&method_ops;" context="#pop" attribute="Member Operator"/>
+        <RegExpr String="(\b[RXZS]+)?(&lt;&lt;|>>|«|»)" context="#pop!hyper_op_dispatch" lookAhead="1"/>
+      </context>
+
+      <!-- if infix operator is followed by hyper operator, then it is a postfix operator -->
+      <context name="infix_postfix_hyper_op" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <IncludeRules context="postfix_hyper_op"/>
+      </context>
+
+      <context name="hyper_op_dispatch" attribute="Normal Text" lineEndContext="#pop">
+        <AnyChar String="RXZS" attribute="Operator"/>
+        <StringDetect String="&lt;&lt;" context="#pop!hyper_op1" attribute="Hyper Operator"/>
+        <StringDetect String=">>" context="#pop!hyper_op1" attribute="Hyper Operator"/>
+        <AnyChar String="«»" context="#pop!hyper_op2" attribute="Hyper Operator"/>
+      </context>
+      <context name="hyper_op1" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String="&lt;&lt;" context="#pop" attribute="Hyper Operator"/>
+        <StringDetect String=">>" context="#pop" attribute="Hyper Operator"/>
+        <IncludeRules context="boxed_op_elem_before"/>
+        <!-- ignore > after infix operator -->
+        <RegExpr String="(\b[RXZS]+)?([+~][&amp;>|^]?|[-=])=?|\bdoes\b|&infix_ops;" attribute="Operator"/>
+        <IncludeRules context="boxed_op_elem_after"/>
+      </context>
+      <context name="hyper_op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <AnyChar String="«»" context="#pop" attribute="Hyper Operator"/>
+        <IncludeRules context="boxed_op_elem"/>
+      </context>
+
+      <context name="term" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <AnyChar String="{([])},;" context="#pop" lookAhead="1"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <DetectChar char="&quot;" context="qq_RawString_term" attribute="String Delimiter"/>
+        <DetectChar char="'" context="q_RawString_term" attribute="String Delimiter"/>
+        <DetectChar char="«" context="qq_String«_term" attribute="String Delimiter"/>
+        <StringDetect String="&lt;&lt;" context="qq_String&lt;&lt;_term" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="q_String&lt;_term" attribute="String Delimiter"/>
+        <DetectChar char="｢" context="Q_String｢_term" attribute="String Delimiter"/>
+        <DetectChar char="/" context="Pattern/" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char=":" context="MaybeAttribute" attribute="Separator Symbol"/>
+
+        <RegExpr String="\b(?:s|S|tr|TR)&regadverb;" context="RegexSubstitution" attribute="Pattern Delimiter"/>
+        <RegExpr String="\b(?:rx|m)&regadverb;" context="Regex" attribute="Pattern Delimiter"/>
+
+        <RegExpr String="&twigil_variable;" context="Twigil_term" attribute="Variable"/>
+        <!-- '*' -> Whatever variable: (* + *)(1, 2) == 3 -->
+        <RegExpr String="&variable;|\$(&lt;&ident;>)+|[$@](\(\))?|[*]" context="#pop!postfix_op" attribute="Variable"/>
+
+        <RegExpr String="\bQ(\s++(?=['(_]|$)|\s*+(?=[^()>｣\]}'&rangealnum;]|$))" context="Q_String" attribute="String"/>
+
+        <RegExpr String="\.?\p{N}" context="Number" lookAhead="1" minimal="1"/>
+
+        <RegExpr attribute="Operator" context="q_QuotingForm" String="\bq(?=&quotingform_q;&quotingform_q_assert;)"/>
+
+        <IncludeRules context="infix_regular_op"/>
+
+        <RegExpr String="(?&lt;=[.])(unless|when|with|without|given|default|for|loop|repeat|while|until|once|next|last|redo|goto|proceed|succeed|start|proceed|succeed)\b" context="#pop" attribute="Normal Text"/>
+
+        <keyword String="control flow" context="#pop" attribute="Control Flow"/>
+        <keyword String="variable storages" context="#stay" attribute="Variable Storage"/>
+        <WordDetect String="is" context="Is" attribute="Keyword"/>
+        <keyword String="keywords" context="#pop" attribute="Keyword"/>
+        <keyword String="function operators" context="#pop" attribute="Function"/>
+        <keyword String="declare routine" context="#stay" attribute="Declare Routine"/>
+        <keyword String="regex keywords" context="RegexKeyword" attribute="Keyword"/>
+        <keyword String="values" context="#pop!postfix_op" attribute="Keyword Value"/>
+        <keyword String="number" context="#pop!postfix_op" attribute="Float"/>
+        <RegExpr String="\b(u?int(8|16|32|64)?|utf(8|16|32)|buf(8|16|32|64)|num|&datatype;)\b" context="#pop" attribute="Data Type"/>
+        <!-- <RegExpr String="&ident;\s*+(?=\()" context="#pop" attribute="Function"/> -->
+        <RegExpr String="!?&ident;" context="#pop" attribute="Normal Text"/>
+
+        <DetectChar char="\"/>
+
+        <RegExpr String="." context="#pop" attribute="Normal Text"/>
+      </context>
+
+
+      <context name="Is" attribute="Normal Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!postfix_op">
+        <DetectSpaces/>
+        <keyword String="properties" context="#pop#pop!postfix_op" attribute="Property"/>
+      </context>
+
+      <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char="}" context="#pop" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="SubExpression(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="#pop" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="Twigil" attribute="Variable" lineEndContext="#pop">
+        <AnyChar String="&twigils;" attribute="Twigil"/>
+        <RegExpr String="&ident;" context="#pop#pop" attribute="Variable"/>
+      </context>
+
+      <context name="Twigil_term" attribute="Variable" lineEndContext="#pop">
+        <AnyChar String="&twigils;" attribute="Twigil"/>
+        <RegExpr String="&ident;" context="#pop#pop!postfix_op" attribute="Variable"/>
+      </context>
+
+      <context name="RegexKeyword" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar char="{" context="#pop!RegexKeyword-Pattern{" attribute="Symbol" beginRegion="regex"/>
+        <DetectChar char="(" context="SubExpression(" attribute="Normal Text"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <RegExpr String="&ident;"/>
+      </context>
+      <context name="RegexKeyword-Pattern{" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="Symbol" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+
+      <!-- Regex Substitution -->
+
+      <context name="RegexSubstitution" attribute="Pattern Delimiter" lineEndContext="#stay">
+        <DetectChar char="/" context="PatternSubstitution/" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <IncludeRules context="find_RegexClosure"/>
+        <RegExpr String="([^\w\s])" context="PatternSubstitution" attribute="Pattern Delimiter" beginRegion="regex"/>
+      </context>
+
+      <context name="PatternSubstitution/" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="/" context="SubstitutionString/" attribute="Pattern Delimiter" endRegion="regex" beginRegion="substitution"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="PatternSubstitution" attribute="Pattern" lineEndContext="#stay">
+        <RegExpr String="(%1)" dynamic="1" context="SubstitutionString" attribute="Pattern Delimiter" endRegion="regex" beginRegion="substitution"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="SubstitutionString/" attribute="String" lineEndContext="#stay">
+        <StringDetect String="/" context="#pop#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="substitution"/>
+        <StringDetect String="\/" attribute="String Special Character"/>
+        <RegExpr String="([^/\\]++|\\[^/])++" attribute="String"/>
+      </context>
+
+      <context name="SubstitutionString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="substitution"/>
+        <StringDetect String="\%1" dynamic="1" attribute="String Special Character"/>
+        <RegExpr String="([^%1\\]++|\\[^%1])++" dynamic="1" attribute="String"/>
+      </context>
+
+
+      <!-- Regex -->
+
+      <context name="Regex" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar char="/" context="Pattern/" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <IncludeRules context="find_RegexClosure"/>
+        <RegExpr String="([^\w\s])" context="Pattern" attribute="Pattern Delimiter" beginRegion="regex"/>
+      </context>
+
+      <context name="find_RegexClosure" attribute="Pattern Delimiter" lineEndContext="#stay">
+        <DetectChar char=":" context="RegexModifier" attribute="Pattern Modifier"/>
+        <StringDetect String="[[" context="Pattern[[" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <StringDetect String="{{" context="Pattern{{" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <StringDetect String="&lt;&lt;" context="Pattern&lt;&lt;" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="[" context="Pattern[" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="{" context="Pattern{" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="&lt;" context="Pattern&lt;" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="(" context="Pattern(" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <!-- some pairs are missing: https://github.com/Raku/roast/blob/aa4994a7f6b3f6b450a9d231bebd5fba172439b0/S02-literals/quoting-unicode.t#L49-L65 -->
+        <DetectSpaces/>
+      </context>
+
+      <context name="RegexModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String="P5" context="RegexPerl5" attribute="Pattern Modifier"/>
+        <StringDetect String="Perl5" context="RegexPerl5" attribute="Pattern Modifier"/>
+        <DetectIdentifier context="RegexModifierCall" attribute="Pattern Modifier"/>
+      </context>
+
+      <!-- ':' adverb '(' expr ')' '('...')'
+                                    ^ pattern delimiter
+      -->
+      <context name="RegexModifierCall" attribute="Pattern Modifier" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar char="(" context="RegexModifier(" attribute="Symbol" beginRegion="block"/>
+      </context>
+      <context name="RegexModifier(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="RegexModifierPattern(" attribute="Symbol" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+      <context name="RegexModifierPattern(" attribute="Pattern Delimiter" lineEndContext="#stay" fallthroughContext="#pop#pop#pop#pop">
+        <DetectSpaces/>
+        <StringDetect String="((" context="#pop#pop#pop#pop!Pattern((" attribute="Pattern Delimiter" beginRegion="regex"/>
+        <DetectChar char="(" context="#pop#pop#pop#pop!Pattern(" attribute="Pattern Delimiter" beginRegion="regex"/>
+      </context>
+
+      <context name="RegexPerl5" attribute="Pattern Modifier" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop!IsRegexPerl5">
+        <DetectSpaces/>
+      </context>
+
+      <context name="IsRegexPerl5" attribute="Pattern" lineEndContext="#stay">
+        <IncludeRules context="find_pattern##Perl"/>
+      </context>
+
+      <context name="Pattern/" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="/" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern{" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern{{" attribute="Pattern" lineEndContext="#stay">
+        <StringDetect String="}}" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern[" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="]" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+      <context name="PatternSub[" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="Symbol" endRegion="regex"/>
+        <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern[[" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="[" context="PatternSub[" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="]]" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern(" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char=")" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+      <context name="PatternSub(" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="Symbol" endRegion="regex"/>
+        <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern((" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="(" context="PatternSub(" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="))" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern&lt;" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern&lt;&lt;" attribute="Pattern" lineEndContext="#stay">
+        <StringDetect String=">>" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="Pattern" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop#pop!postfix_op" attribute="Pattern Delimiter" endRegion="regex"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <context name="find_Pattern" attribute="Pattern" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="." context="#stay" attribute="Pattern Special Character"/>
+        <DetectChar char="&quot;" attribute="String Delimiter" context="qq_RawString"/>
+        <DetectChar char="'" attribute="String Delimiter" context="q_RawString"/>
+        <DetectChar char="\" context="PatternMetaChar" lookAhead="1"/>
+        <DetectChar char=":" context="PatternModifier" attribute="Pattern Modifier"/>
+        <DetectChar char="#" context="StartComment" attribute="Comment"/>
+        <DetectChar char="{" context="Interpolation" attribute="Symbol" beginRegion="block"/>
+        <StringDetect String="&lt;&lt;" attribute="Operator"/>
+        <StringDetect String=">>" attribute="Operator"/>
+        <StringDetect String="&lt;(" context="PatternCaptureMarker" attribute="Pattern Meta Character"/>
+        <DetectChar char="&lt;" context="RegexClass" attribute="Pattern Meta Character"/>
+        <StringDetect String="**" context="PatternRangeQuantifier" attribute="Pattern Quantifier"/>
+        <AnyChar String="?*+" context="PatternAfterQuantifier" attribute="Pattern Quantifier"/>
+        <AnyChar String="([" attribute="Symbol" beginRegion="block"/>
+        <AnyChar String=")]" attribute="Symbol" endRegion="block"/>
+        <StringDetect String="$(" context="PatternVariable(" attribute="Pattern Meta Character" beginRegion="block"/>
+        <StringDetect String="@(" context="PatternVariable(" attribute="Pattern Meta Character" beginRegion="block"/>
+        <AnyChar String="«»~" attribute="Operator"/>
+        <RegExpr String="&twigil_variable;" context="Twigil" attribute="Variable"/>
+        <RegExpr String="&variable;|@" attribute="Variable"/>
+        <RegExpr String="\$&lt;&ident;>?" attribute="Pattern Named Capture"/>
+        <AnyChar String="&amp;|^$" attribute="Pattern Control Flow"/>
+        <RegExpr String="[&_alnum;\s]+" attribute="Pattern"/>
+        <AnyChar String=">)]" attribute="Error"/>
+      </context>
+
+      <context name="PatternVariable(" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="#pop" attribute="Pattern Meta Character" endRegion="block"/>
+        <IncludeRules context="base"/>
+      </context>
+
+
+      <!-- Pattern :... -->
+
+      <context name="PatternModifier" attribute="Pattern Modifier" lineEndContext="#pop" fallthroughContext="#pop">
+        <DetectIdentifier context="#pop" attribute="Pattern Modifier"/>
+      </context>
+
+
+      <!-- Pattern \... -->
+
+      <context name="PatternMetaChar" attribute="Pattern" lineEndContext="#pop">
+        <RegExpr String="\\[bdefhnrstvwBDEFHNRSTVW]|\\[xX](&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|\\[cC](&unicode_dec_point;(?![0-9])|\[[0-9a-zA-Z\s]+\])|[oO](&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="Pattern Character Class"/>
+        <RegExpr String="\\[^\p{L}\p{N}]" context="#pop" attribute="Pattern Character"/>
+
+        <StringDetect String="\x[" context="PatternMetaCharX" attribute="Pattern Character Class" insensitive="1"/>
+        <StringDetect String="\c[" context="PatternMetaCharC" attribute="Pattern Character Class" insensitive="1"/>
+        <StringDetect String="\o[" context="PatternMetaCharO" attribute="Pattern Character Class" insensitive="1"/>
+
+        <!-- error or incomplete -->
+        <RegExpr String="\\[xX]&unicode_hex_point;|\\[oO]&unicode_oct_point;|\\[cC]&unicode_dec_point;" context="PatternMetaCharError" attribute="Pattern Character Class"/>
+        <RegExpr String="\\[xXcCoO]?" context="#pop" attribute="Error"/>
+      </context>
+
+      <context name="PatternMetaCharError" attribute="Pattern" fallthroughContext="#pop#pop">
+        <RegExpr String=",?\s+\]?|&alnum;*(\s*,)?\s*\]?" context="#pop#pop" attribute="Error"/>
+      </context>
+
+      <context name="X[]" attribute="Pattern">
+        <RegExpr String="\s*\b&unicode_hex_point;\s*"/>
+      </context>
+
+      <context name="O[]" attribute="Pattern">
+        <RegExpr String="\s*\b&unicode_oct_point;\s*"/>
+      </context>
+
+      <context name="C[]" attribute="Pattern">
+        <RegExpr String="\s*(\b[0-9a-zA-Z-]+\s*)+"/>
+      </context>
+
+      <context name="PatternMetaCharMultipleCommon" attribute="Pattern">
+        <DetectChar char="]" context="#pop#pop" attribute="Pattern Character Class"/>
+        <DetectChar char="," attribute="Separator Symbol"/>
+      </context>
+
+      <context name="PatternMetaCharX" attribute="Pattern Character Class">
+        <IncludeRules context="PatternMetaCharMultipleCommon"/>
+        <IncludeRules context="X[]"/>
+        <RegExpr String="[^0-9a-fA-F\],\s]+|[0-9a-fA-F]+|." attribute="Error"/>
+      </context>
+
+      <context name="PatternMetaCharO" attribute="Pattern Character Class">
+        <IncludeRules context="PatternMetaCharMultipleCommon"/>
+        <IncludeRules context="O[]"/>
+        <RegExpr String="[^0-7\],\s]+|[0-7]+|." attribute="Error"/>
+      </context>
+
+      <context name="PatternMetaCharC" attribute="Pattern Character Class">
+        <IncludeRules context="PatternMetaCharMultipleCommon"/>
+        <IncludeRules context="C[]"/>
+        <RegExpr String="[^0-9a-zA-Z\],\s-]+|[0-9a-zA-Z]+|." attribute="Error"/>
+      </context>
+
+
+      <!-- Pattern Capture Markers: <(...)> -->
+
+      <context name="PatternCaptureMarker" attribute="Pattern">
+        <StringDetect String=")>" context="#pop" attribute="Pattern Meta Character"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+
+      <!-- Pattern Character Classes : <...> -->
+
+      <context name="RegexClass" attribute="Pattern Unicode Property" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="Pattern Meta Character"/>
+        <AnyChar String=".:" attribute="Pattern Meta Character"/>
+        <AnyChar String="|+-" attribute="Pattern Quantifier"/>
+        <AnyChar String="!?" attribute="Pattern Control Flow" context="PatternAssertion"/>
+        <DetectIdentifier attribute="Pattern Unicode Property"/>
+        <DetectChar char="[" context="RegexClassRange" attribute="Pattern Bracket"/>
+        <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
+        <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
+        <DetectChar char="{" context="Interpolation" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="(" context="SubExpression(" attribute="Symbol" beginRegion="block"/>
+        <DetectChar char="\" context="PatternMetaChar" lookAhead="1"/>
+      </context>
+
+      <!-- after <? or <! -->
+      <context name="PatternAssertion" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="PatternAssertionCond">
+        <DetectChar char=">" attribute="Pattern Meta Character" context="#pop#pop"/>
+        <WordDetect String="after" attribute="Pattern Meta Character" context="PatternAssertionCond"/>
+        <WordDetect String="before" attribute="Pattern Meta Character" context="PatternAssertionCond"/>
+      </context>
+      <context name="PatternAssertionCond" attribute="Pattern" lineEndContext="#stay">
+        <DetectChar char=">" attribute="Pattern Meta Character" context="#pop#pop#pop"/>
+        <IncludeRules context="find_Pattern"/>
+      </context>
+
+      <!-- Pattern <[...]> -->
+      <context name="RegexClassRange" attribute="Pattern Character" lineEndContext="#stay">
+        <DetectIdentifier/>
+        <DetectSpaces/>
+        <StringDetect String="]" context="#pop" attribute="Pattern Bracket"/>
+        <StringDetect String="\" context="PatternMetaChar" lookAhead="1"/>
+        <StringDetect String=".." attribute="Pattern Quantifier"/>
+      </context>
+
+
+      <context name="PatternAfterQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="PatternModifierQuantifier">
+        <StringDetect String=":" context="PatternModifierQuantifier" attribute="Pattern Modifier"/>
+        <DetectSpaces context="PatternModifierQuantifier"/>
+      </context>
+      <context name="PatternModifierQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <StringDetect String="%%" context="#pop#pop" attribute="Pattern Quantifier"/>
+        <StringDetect String="%" context="#pop#pop" attribute="Pattern Quantifier"/>
+      </context>
+
+
+      <!-- General quantifier: ** min..max -->
+
+      <context name="PatternRangeQuantifier" attribute="Pattern" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <Int context="#pop!PatternRangeQuantifierRng" attribute="Pattern"/>
+        <DetectChar char="^" context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <AnyChar String=":!?" attribute="Pattern Quantifier"/>
+      </context>
+
+      <context name="PatternRangeQuantifierRng" attribute="Pattern" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String="..^" context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <StringDetect String=".." context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <StringDetect String="^..^" context="PatternRangeQuantifierInt" attribute="Operator"/>
+        <StringDetect String="^.." context="PatternRangeQuantifierInt" attribute="Operator"/>
+      </context>
+
+      <context name="PatternRangeQuantifierInt" attribute="Pattern" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <Int context="#pop#pop" attribute="Pattern"/>
+      </context>
+
+
+      <!-- Number -->
+
+      <context name="Number" attribute="Decimal" lineEndContext="#stay" fallthroughContext="#pop#pop!postfix_op">
+        <RegExpr String="&int10;(?:\.&int10;&exp;?|&exp;)|\.&int10;&exp;?" context="NumberSuffix" attribute="Float"/>
+        <Detect2Chars char="0" char1="x" context="HexNumber" attribute="Hex"/>
+        <Detect2Chars char="0" char1="o" context="OctalNumber" attribute="Octal"/>
+        <RegExpr String="\p{N}++(?:_\p{N}++)*+" context="NumberSuffix" attribute="Decimal"/>
+      </context>
+
+      <context name="HexNumber" attribute="Hex" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="NumberCheckError">
+        <RegExpr String="[a-fA-F0-9]++(?:_[a-fA-F0-9]++)*+" context="#pop!NumberSuffix" attribute="Hex"/>
+      </context>
+
+      <context name="OctalNumber" attribute="Octal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="NumberCheckError">
+        <RegExpr String="[0-7]++(?:_[0-7]++)*+" context="#pop!NumberSuffix" attribute="Octal"/>
+      </context>
+
+      <context name="NumberSuffix" attribute="Decimal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="#pop#pop#pop!postfix_op">
+        <DetectChar char="i" context="#pop!NumberCheckError" attribute="Number Suffix"/>
+        <IncludeRules context="NumberCheckError"/>
+      </context>
+      <context name="NumberCheckError" attribute="Decimal" lineEndContext="#pop#pop#pop!postfix_op" fallthroughContext="#pop#pop#pop!postfix_op">
+        <RegExpr String="&alnum;+" context="#pop#pop#pop!postfix_op" attribute="Error"/>
+      </context>
+
+
+      <!-- Attribute or Key -->
+
+      <!--
+        :11a
+        :!false
+        :attr
+      -->
+      <context name="MaybeAttribute" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect String=":?" context="#pop" attribute="Separator Symbol"/>
+        <DetectChar char=":" attribute="Separator Symbol"/>
+        <DetectChar char="!" context="#pop" attribute="Operator"/>
+        <Int context="MaybeAttribute2" attribute="Decimal"/>
+        <RegExpr String="&datatype;" context="#pop" attribute="Data Type"/>
+        <RegExpr String="\\?&ident;" context="#pop#pop!postfix_op" attribute="Attribute"/>
+      </context>
+
+      <context name="MaybeAttribute2" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop#pop!postfix_op">
+        <DetectChar char="&lt;" context="NumberWithRadix" attribute="String Delimiter"/>
+      </context>
+
+
+      <!-- ':base<NNN>' -->
+
+      <context name="NumberWithRadix" attribute="Decimal" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop!postfix_op">
+        <DetectChar char="&gt;" context="#pop#pop#pop#pop!postfix_op" attribute="Error"/>
+        <DetectSpaces context="#pop#pop#pop#pop!postfix_op" attribute="Error"/>
+        <RegExpr String="&intN;\.&intN;|\.&intN;" context="NumberWithRadixClose" attribute="Float"/>
+        <RegExpr String="&intN;" context="NumberWithRadixClose" attribute="Decimal"/>
+      </context>
+      <context name="NumberWithRadixClose" attribute="Decimal"
+               lineEndContext="#pop#pop#pop#pop#pop!postfix_op"
+               fallthroughContext="#pop#pop#pop#pop#pop!postfix_op">
+        <DetectChar char="&gt;" context="NumberWithRadixSuffix" attribute="String Delimiter"/>
+        <RegExpr String=" +|&alnum;+" context="#pop#pop#pop#pop#pop!postfix_op" attribute="Error"/>
+      </context>
+      <context name="NumberWithRadixSuffix" attribute="Decimal"
+               lineEndContext="#pop#pop#pop#pop#pop#pop!postfix_op"
+               fallthroughContext="#pop#pop#pop#pop#pop#pop!postfix_op">
+        <WordDetect String="i" context="#pop#pop#pop#pop#pop#pop!postfix_op" attribute="Number Suffix"/>
+      </context>
+
+
+      <!-- Pod -->
+
+      <context name="StartPod" attribute="Pod Typename" lineEndContext="#pop" fallthroughContext="#pop">
+        <WordDetect String="begin" context="PodBegin" attribute="Pod Block"/>
+        <WordDetect String="for"   context="PodFor" attribute="Pod Typename"/>
+        <keyword    String="pod"   context="PodTypenameValue" attribute="Pod Typename"/>
+        <RegExpr    String="[_A-Z][-_A-Z0-9]*\b" context="PodTypenameValue" attribute="Pod Typename"/>
+        <RegExpr    String="&ident;" context="PodTypenameValue" attribute="Pod Unknown"/>
+      </context>
+
+      <context name="PodTypenameValue" attribute="Pod Typename Value" lineEndContext="PodTypenameValueNextLine" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Typename Value" context="#stay" String="&allnopodfmt;"/>
+      </context>
+
+      <context name="PodTypenameValueNextLine" attribute="Pod Typename Value" lineEndContext="#stay" lineEmptyContext="#pop#pop#pop" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="PodTypenameValueOrEmpty"/>
+        <DetectChar attribute="Pod" context="#pop#pop#pop" char="=" lookAhead="true"/>
+      </context>
+
+      <context name="PodTypenameValueOrEmpty" attribute="Pod Typename Value" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Pod" context="#pop#pop#pop#pop" char="=" lookAhead="true"/>
+      </context>
+
+
+      <!-- Pod formatting -->
+
+      <context name="PodFormat" attribute="Pod Typename Value" lineEndContext="#stay">
+        <Detect2Chars char="B" char1="&lt;" attribute="Pod Bold" context="#pop!PodFormatB"/>
+        <Detect2Chars char="B" char1="«"    attribute="Pod Bold" context="#pop!PodFormatB2"/>
+        <Detect2Chars char="I" char1="&lt;" attribute="Pod Italic" context="#pop!PodFormatI"/>
+        <Detect2Chars char="I" char1="«"    attribute="Pod Italic" context="#pop!PodFormatI2"/>
+        <Detect2Chars char="L" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
+        <Detect2Chars char="L" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
+        <Detect2Chars char="N" char1="&lt;" attribute="Pod Note" context="#pop!PodFormatN"/>
+        <Detect2Chars char="N" char1="«"    attribute="Pod Note" context="#pop!PodFormatN2"/>
+        <Detect2Chars char="P" char1="&lt;" attribute="Pod Link" context="#pop!PodFormatL"/>
+        <Detect2Chars char="P" char1="«"    attribute="Pod Link" context="#pop!PodFormatL2"/>
+        <Detect2Chars char="Z" char1="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ"/>
+        <Detect2Chars char="Z" char1="«"    attribute="Pod Comment" context="#pop!PodFormatZ2"/>
+        <Detect2Chars char="U" char1="&lt;" attribute="Pod Underline" context="#pop!PodFormatU"/>
+        <Detect2Chars char="U" char1="«"    attribute="Pod Underline" context="#pop!PodFormatU2"/>
+        <Detect2Chars char="C" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="C" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="E" char1="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE"/>
+        <Detect2Chars char="E" char1="«"    attribute="Pod Unicode" context="#pop!PodFormatE2"/>
+        <Detect2Chars char="K" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="K" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="R" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="R" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="T" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="T" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+        <Detect2Chars char="V" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV"/>
+        <Detect2Chars char="V" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatV2"/>
+        <Detect2Chars char="X" char1="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX"/>
+        <Detect2Chars char="X" char1="«"    attribute="Pod Indexed Terms" context="#pop!PodFormatX2"/>
+        <Detect2Chars char="M" char1="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT"/>
+        <Detect2Chars char="M" char1="«"    attribute="Pod Verbatim" context="#pop!PodFormatVT2"/>
+      </context>
+
+      <context name="PodFormatB" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="#pop!PodFormatB1">
+        <DetectChar char="&lt;" attribute="Pod Bold" context="#pop!PodFormatB3"/>
+      </context>
+      <context name="PodFormatB1" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Bold" context="PodFormatB1"/>
+        <DetectChar char=">" attribute="Pod Bold" context="#pop"/>
+      </context>
+      <context name="PodFormatB2" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Bold" context="PodFormatB2"/>
+        <DetectChar char="»" attribute="Pod Bold" context="#pop"/>
+      </context>
+      <context name="PodFormatB3" attribute="Pod Bold" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Bold" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Bold" context="PodFormatB3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Bold" context="#pop"/>
+      </context>
+
+      <context name="PodFormatE" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="#pop!PodFormatE1">
+        <DetectChar char="&lt;" attribute="Pod Unicode" context="#pop!PodFormatE3"/>
+      </context>
+      <context name="PodFormatE1" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Unicode" context="PodFormatE1"/>
+        <DetectChar char=">" attribute="Pod Unicode" context="#pop"/>
+      </context>
+      <context name="PodFormatE2" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Unicode" context="PodFormatE2"/>
+        <DetectChar char="»" attribute="Pod Unicode" context="#pop"/>
+      </context>
+      <context name="PodFormatE3" attribute="Pod Unicode" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Unicode" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Unicode" context="PodFormatE3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Unicode" context="#pop"/>
+      </context>
+
+      <context name="PodFormatI" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="#pop!PodFormatI1">
+        <DetectChar char="&lt;" attribute="Pod Italic" context="#pop!PodFormatI3"/>
+      </context>
+      <context name="PodFormatI1" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Italic" context="PodFormatI1"/>
+        <DetectChar char=">" attribute="Pod Italic" context="#pop"/>
+      </context>
+      <context name="PodFormatI2" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Italic" context="PodFormatI2"/>
+        <DetectChar char="»" attribute="Pod Italic" context="#pop"/>
+      </context>
+      <context name="PodFormatI3" attribute="Pod Italic" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Italic" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Italic" context="PodFormatI3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Italic" context="#pop"/>
+      </context>
+
+      <context name="PodFormatL" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="#pop!PodFormatL1">
+        <DetectChar char="&lt;" attribute="Pod Link" context="#pop!PodFormatL3"/>
+      </context>
+      <context name="PodFormatL1" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«]))+"/>
+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+        <DetectChar char=">" attribute="Pod Link" context="#pop"/>
+      </context>
+      <context name="PodFormatL2" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|]+|[&podfmt;](?![&lt;«]))+"/>
+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+        <DetectChar char="»" attribute="Pod Link" context="#pop"/>
+      </context>
+      <context name="PodFormatL3" attribute="Pod Link" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
+        <DetectChar char="|" attribute="Pod Operator" context="#stay"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Link" context="#pop"/>
+      </context>
+
+      <context name="PodFormatN" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="#pop!PodFormatN1">
+        <DetectChar char="&lt;" attribute="Pod Note" context="#pop!PodFormatN3"/>
+      </context>
+      <context name="PodFormatN1" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Note" context="PodFormatN1"/>
+        <DetectChar char=">" attribute="Pod Note" context="#pop"/>
+      </context>
+      <context name="PodFormatN2" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Note" context="PodFormatN2"/>
+        <DetectChar char="»" attribute="Pod Note" context="#pop"/>
+      </context>
+      <context name="PodFormatN3" attribute="Pod Note" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Note" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Note" context="PodFormatN3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Note" context="#pop"/>
+      </context>
+
+      <context name="PodFormatU" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="#pop!PodFormatU1">
+        <DetectChar char="&lt;" attribute="Pod Underline" context="#pop!PodFormatU3"/>
+      </context>
+      <context name="PodFormatU1" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Underline" context="PodFormatU1"/>
+        <DetectChar char=">" attribute="Pod Underline" context="#pop"/>
+      </context>
+      <context name="PodFormatU2" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Underline" context="PodFormatU2"/>
+        <DetectChar char="»" attribute="Pod Underline" context="#pop"/>
+      </context>
+      <context name="PodFormatU3" attribute="Pod Underline" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Underline" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Underline" context="PodFormatU3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Underline" context="#pop"/>
+      </context>
+
+      <context name="PodFormatV" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="#pop!PodFormatV1">
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatV3"/>
+      </context>
+      <context name="PodFormatV1" attribute="Pod Verbatim" lineEndContext="#stay">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatV1"/>
+        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatV2" attribute="Pod Verbatim" lineEndContext="#stay">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatV2"/>
+        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatV3" attribute="Pod Verbatim" lineEndContext="#stay">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatV3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+
+      <context name="PodFormatVT" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="#pop!PodFormatVT1">
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="#pop!PodFormatVT3"/>
+      </context>
+      <context name="PodFormatVT1" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Verbatim" context="PodFormatVT1"/>
+        <DetectChar char=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatVT2" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Verbatim" context="PodFormatVT2"/>
+        <DetectChar char="»" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+      <context name="PodFormatVT3" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Verbatim" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Verbatim" context="PodFormatVT3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Verbatim" context="#pop"/>
+      </context>
+
+      <context name="PodFormatZ" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="#pop!PodFormatZ1">
+        <DetectChar char="&lt;" attribute="Pod Comment" context="#pop!PodFormatZ3"/>
+      </context>
+      <context name="PodFormatZ1" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt1;"/>
+        <DetectChar char="&lt;" attribute="Pod Comment" context="PodFormatZ1"/>
+        <DetectChar char=">" attribute="Pod Comment" context="#pop"/>
+      </context>
+      <context name="PodFormatZ2" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt2;"/>
+        <DetectChar char="«" attribute="Pod Comment" context="PodFormatZ2"/>
+        <DetectChar char="»" attribute="Pod Comment" context="#pop"/>
+      </context>
+      <context name="PodFormatZ3" attribute="Pod Comment" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Comment" context="#stay" String="&allnopodfmt3;"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Comment" context="PodFormatZ3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Comment" context="#pop"/>
+      </context>
+
+      <context name="PodFormatX" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="#pop!PodFormatX1">
+        <DetectChar char="&lt;" attribute="Pod Indexed Terms" context="#pop!PodFormatX3"/>
+      </context>
+      <context name="PodFormatX1" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«]))+"/>
+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+        <DetectChar char=">" attribute="Pod Indexed Terms" context="#pop"/>
+      </context>
+      <context name="PodFormatX2" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;«»|;,]+|[&podfmt;](?![&lt;«]))+"/>
+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+        <DetectChar char="«" attribute="Pod Indexed Terms" context="PodFormatX2"/>
+        <DetectChar char="»" attribute="Pod Indexed Terms" context="#pop"/>
+      </context>
+      <context name="PodFormatX3" attribute="Pod Indexed Terms" lineEndContext="#stay" fallthroughContext="PodFormat">
+        <RegExpr attribute="Pod Link" context="#stay" String="(?:[^&podfmt;&lt;>|;,]+|[&podfmt;](?![&lt;«])|>(?!>)|&lt;(?!&lt;))+"/>
+        <AnyChar String="|;," attribute="Pod Operator" context="#stay"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Pod Indexed Terms" context="PodFormatX3"/>
+        <Detect2Chars char=">" char1=">" attribute="Pod Indexed Terms" context="#pop"/>
+      </context>
+
+      <!-- Pod =begin -->
+
+      <context name="PodBegin" attribute="Pod Typename Value" lineEndContext="#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <WordDetect String="code" context="PodBeginCode" attribute="Pod Typename Value" beginRegion="pod"/>
+        <WordDetect String="comment" context="PodBeginComment" attribute="Pod Typename Value" beginRegion="pod"/>
+        <RegExpr String="(&ident;)" context="PodBeginTypename" attribute="Pod Typename Value" beginRegion="pod"/>
+      </context>
+
+      <context name="PodBeginCode" attribute="Error" lineEndContext="PodInnerCode">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
+        <DetectChar char="=" context="PodEndCode" attribute="Pod" firstNonSpace="1"/>
+      </context>
+
+      <context name="PodInnerCode" attribute="Pod Verbatim" lineEndContext="#stay" fallthroughContext="PodCode">
+        <RegExpr String="^\s*=end\s+code\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+      </context>
+      <context name="PodCode" attribute="Pod Verbatim" lineEndContext="#pop"/>
+
+      <context name="PodEndCode" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <StringDetect String="end" context="PodEndCodeName" attribute="Pod Block" endRegion="pod"/>
+      </context>
+      <context name="PodEndCodeName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <StringDetect String="code" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+      </context>
+
+
+      <context name="PodBeginComment" attribute="Error" lineEndContext="PodInnerComment">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="=" context="PodEndComment" attribute="Pod" firstNonSpace="1"/>
+      </context>
+
+      <context name="PodInnerComment" attribute="Comment" lineEndContext="#stay" fallthroughContext="PodComment">
+        <RegExpr String="^\s*=end\s+comment\s*$" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+      </context>
+      <context name="PodComment" attribute="Comment" lineEndContext="#pop"/>
+
+      <context name="PodEndComment" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <StringDetect String="end" context="PodEndCommentName" attribute="Pod Block" endRegion="pod"/>
+      </context>
+      <context name="PodEndCommentName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <StringDetect String="comment" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+      </context>
+
+
+      <context name="PodBeginTypename" attribute="Error" lineEndContext="PodInnerBlock">
+        <RegExpr String="^\s*=end\s+%1\b" dynamic="1" context="PodEnd" attribute="Pod" column="0" lookAhead="1"/>
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char=":" context="PodBlockConfigKey" attribute="Pod Operator"/>
+        <DetectChar char="=" context="PodEndError" attribute="Pod" firstNonSpace="1"/>
+      </context>
+
+      <context name="PodInnerBlock" attribute="Pod Paragraph" lineEndContext="#stay" fallthroughContext="PodInnerBlockFormat">
+        <RegExpr String="^\s*=end\b" context="#pop" attribute="Pod" column="0" lookAhead="1"/>
+        <DetectSpaces/>
+        <DetectChar char="=" context="StartPod" attribute="Pod" firstNonSpace="1"/>
+        <RegExpr attribute="Pod Paragraph" context="#stay" String="&allnopodfmt;"/>
+      </context>
+
+      <context name="PodInnerBlockFormat" attribute="Pod Paragraph" lineEndContext="#stay">
+        <IncludeRules context="PodFormat"/>
+      </context>
+
+      <context name="PodEnd" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <DetectChar char="=" context="#stay" attribute="Pod"/>
+        <StringDetect String="end" context="PodEndName" attribute="Pod Block" endRegion="pod"/>
+      </context>
+      <context name="PodEndName" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop#pop">
+        <DetectSpaces attribute="Normal Text"/>
+        <RegExpr String="&ident;" context="#pop#pop#pop#pop!Error" attribute="Pod Typename Value"/>
+      </context>
+
+      <context name="PodEndError" attribute="Pod Paragraph" lineEndContext="#pop#pop#pop">
+        <StringDetect String="end" attribute="Pod Block" context="#pop#pop#pop!Error" endRegion="pod"/>
+      </context>
+
+      <!-- Pod configuration for =begin -->
+
+      <context name="PodBlockConfigError" attribute="Error" lineEndContext="#pop#pop!PodInnerBlock"/>
+
+      <context name="PodBlockConfigKey" attribute="Pod Key" lineEndContext="#pop!PodInnerBlock" fallthroughContext="PodBlockConfigError">
+        <DetectChar char="!" context="#pop!PodBlockConfigKeyName" attribute="Pod Operator"/>
+        <Int context="PodBlockConfigKeyIntName" attribute="Decimal"/>
+        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodBlockConfigKeyName" attribute="Pod Key" lineEndContext="#pop!PodTypenameValue" fallthroughContext="PodBlockConfigError">
+        <DetectIdentifier context="PodBlockConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodBlockConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop!PodBlockConfigError" fallthroughContext="#pop!PodBlockConfigError">
+        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodBlockConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop" fallthroughContext="#pop">
+        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
+        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
+        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
+      </context>
+
+
+      <!-- Pod =for -->
+
+      <context name="PodFor" attribute="Pod Typename" lineEndContext="#pop#pop!Error" fallthroughContext="#pop#pop!Error">
+        <DetectSpaces attribute="Normal Text"/>
+        <keyword String="podtypename" context="#pop!PodConfig" attribute="Pod Typename"/>
+      </context>
+
+      <!-- Pod configuration for =for -->
+
+      <context name="PodConfigError" attribute="Error" lineEndContext="#pop#pop!PodTypenameValue"/>
+
+      <context name="PodConfig" attribute="Normal Text" lineEndContext="#pop!PodTypenameValue" fallthroughContext="PodConfigError">
+        <DetectSpaces/>
+        <DetectChar char=":" context="PodConfigKey" attribute="Pod Operator"/>
+      </context>
+
+      <context name="PodConfigKey" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthroughContext="#pop!PodConfigError">
+        <DetectChar char="!" context="#pop!PodConfigKeyName" attribute="Pod Operator"/>
+        <Int context="PodConfigKeyIntName" attribute="Decimal"/>
+        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodConfigKeyName" attribute="Pod Key" lineEndContext="#pop#pop!PodTypenameValue" fallthroughContext="#pop!PodConfigError">
+        <DetectIdentifier context="PodConfigParam" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodConfigKeyIntName" attribute="Pod Key" lineEndContext="#pop#pop#pop!PodConfigError" fallthroughContext="#pop#pop!PodConfigError">
+        <DetectIdentifier context="#pop#pop" attribute="Pod Key"/>
+      </context>
+
+      <context name="PodConfigParam" attribute="Pod Key" lineEndContext="#pop#pop#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar char="&lt;" context="PodParamSequence" attribute="Pod Operator"/>
+        <DetectChar char="{" context="PodParamHash" attribute="Pod Operator"/>
+        <AnyChar String="([" context="PodParamList" attribute="Pod Operator"/>
+      </context>
+
+      <context name="find_PodNumber" attribute="Pod Config" lineEndContext="#stay">
+        <RegExpr String="\.?\p{N}" context="PodNumber" lookAhead="1" minimal="1"/>
+      </context>
+
+      <context name="PodParamSequence" attribute="Pod Config" lineEndContext="#stay">
+        <DetectSpaces/>
+        <keyword String="pod values" context="#stay" attribute="Data Type"/>
+        <DetectIdentifier/>
+        <IncludeRules context="find_PodNumber"/>
+        <DetectChar char=">" context="#pop#pop#pop" attribute="Pod Operator"/>
+        <DetectChar char="'" context="PodSQString" attribute="String"/>
+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+      </context>
+
+      <context name="PodParamHash" attribute="Pod Config" lineEndContext="#stay">
+        <DetectSpaces/>
+        <Detect2Chars char="=" char1=">" context="#stay" attribute="Pod Operator"/>
+        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
+        <keyword String="pod values" context="#stay" attribute="Data Type"/>
+        <DetectIdentifier/>
+        <DetectChar char="'" context="PodSQString" attribute="String"/>
+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+        <IncludeRules context="find_PodNumber"/>
+        <DetectChar char="}" context="#pop#pop#pop" attribute="Pod Operator"/>
+      </context>
+
+      <context name="PodParamList" attribute="Pod Config" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar char="," context="#stay" attribute="Pod Operator"/>
+        <keyword String="pod values" context="#stay" attribute="Data Type"/>
+        <DetectIdentifier/>
+        <DetectChar char="'" context="PodSQString" attribute="String"/>
+        <DetectChar char="&quot;" context="PodQString" attribute="String"/>
+        <IncludeRules context="find_PodNumber"/>
+        <AnyChar String="])" context="#pop#pop#pop" attribute="Pod Operator"/>
+      </context>
+
+
+      <!-- Pod Number (same as Number with different context pop) -->
+
+      <context name="PodNumber" attribute="Decimal" lineEndContext="#stay" fallthroughContext="#pop">
+        <RegExpr String="&int10;(?:\.&int10;&exp;?|&exp;)|\.&int10;&exp;?" context="PodNumberSuffix" attribute="Float"/>
+        <Detect2Chars char="0" char1="x" context="HexPodNumber" attribute="Hex"/>
+        <Detect2Chars char="0" char1="o" context="OctalPodNumber" attribute="Octal"/>
+        <RegExpr String="\p{N}++(?:_\p{N}++)*+" context="PodNumberSuffix" attribute="Decimal"/>
+      </context>
+
+      <context name="HexPodNumber" attribute="Hex" lineEndContext="#pop#pop" fallthroughContext="PodNumberCheckError">
+        <RegExpr String="[a-fA-F0-9]++(?:_[a-fA-F0-9]++)*+" context="#pop!PodNumberSuffix" attribute="Hex"/>
+      </context>
+
+      <context name="OctalPodNumber" attribute="Octal" lineEndContext="#pop#pop" fallthroughContext="PodNumberCheckError">
+        <RegExpr String="[0-7]++(?:_[0-7]++)*+" context="#pop!PodNumberSuffix" attribute="Octal"/>
+      </context>
+
+      <context name="PodNumberSuffix" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar char="i" context="#pop!PodNumberCheckError" attribute="Number Suffix"/>
+        <IncludeRules context="PodNumberCheckError"/>
+      </context>
+      <context name="PodNumberCheckError" attribute="Decimal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <RegExpr String="&alnum;+" context="#pop#pop" attribute="Error"/>
+      </context>
+
+
+      <!-- Pod String -->
+
+      <context name="PodSQString" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
+        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
+        <RegExpr String="(?:[^\\']*|\\[^']|\\$)*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="PodQString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="\" context="SpecialChar" attribute="String Special Character"/>
+        <RegExpr String="(?:[^&quot;\\]*|\\$)*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="SpecialCharPre" attribute="String Special Character" lineEndContext="#pop">
+        <RegExpr String="[abefnrtv]|x(&unicode_hex_point;(?![0-9a-fA-F])|\[\s*&unicode_hex_point;\s*\])|c(&unicode_dec_point;(?![0-9])|\[[a-zA-Z\s]+\])|o(&unicode_oct_point;(?![0-7])|\[\s*&unicode_oct_point;\s*\])" context="#pop" attribute="String Special Character"/>
+      </context>
+      <context name="SpecialChar" attribute="String Special Character" lineEndContext="#pop" fallthroughContext="#pop">
+        <IncludeRules context="SpecialCharPre"/>
+        <RegExpr String="[^xco]" context="#pop" attribute="String"/>
+        <IncludeRules context="SpecialCharPost"/>
+      </context>
+      <context name="SpecialCharPost" attribute="String Special Character" lineEndContext="#pop">
+        <StringDetect String="x[" context="SpecialCharX" attribute="String Special Character"/>
+        <StringDetect String="c[" context="SpecialCharC" attribute="String Special Character"/>
+        <StringDetect String="o[" context="SpecialCharO" attribute="String Special Character"/>
+
+        <RegExpr String="x&unicode_hex_point;|c&unicode_dec_point;|o&unicode_oct_point;" context="SpecialCharError" attribute="String Special Character"/>
+
+        <AnyChar String="xco" context="#pop" attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharError" attribute="String Special Character" fallthroughContext="#pop#pop">
+        <AnyChar String="0123456789abcdefABCDEF" context="#pop#pop" attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharPreCommon" attribute="String Special Character">
+        <DetectChar char="]" context="#pop#pop" attribute="String Special Character"/>
+        <DetectChar char="," attribute="Separator Symbol"/>
+        <DetectChar char="&quot;" context="#pop#pop#pop" attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharX" attribute="String Special Character">
+        <IncludeRules context="SpecialCharPreCommon"/>
+        <IncludeRules context="X[]"/>
+        <RegExpr String="[^0-9a-fA-F\],\s&quot;]+|[0-9a-fA-F]+|." attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharO" attribute="String Special Character">
+        <IncludeRules context="SpecialCharPreCommon"/>
+        <IncludeRules context="O[]"/>
+        <RegExpr String="[^0-7\],\s&quot;]+|[0-7]+|." attribute="Error"/>
+      </context>
+
+      <context name="SpecialCharC" attribute="String Special Character">
+        <IncludeRules context="SpecialCharPreCommon"/>
+        <IncludeRules context="C[]"/>
+        <RegExpr String="[^0-9a-zA-Z\],\s&quot;]+|[0-9a-zA-Z]+|." attribute="Error"/>
+      </context>
+
+
+      <!-- Q String -->
+
+      <context name="Q_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces attribute="String"/>
+        <DetectChar char=":" context="#pop!Q_StringModifier" attribute="Operator"/>
+        <DetectChar char="(" context="#pop!Q_String(" attribute="String Delimiter"/>
+        <DetectChar char="[" context="#pop!Q_String[" attribute="String Delimiter"/>
+        <DetectChar char="{" context="#pop!Q_String{" attribute="String Delimiter"/>
+        <DetectChar char="｢" context="#pop!Q_String｢" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="#pop!Q_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="([^()>｣\]}'&rangealnum;])" context="#pop!Q_StringAny" attribute="String Delimiter"/>
+      </context>
+
+      <context name="Q_String(" attribute="String" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="(" context="Q_String(" attribute="String Delimiter"/>
+        <RegExpr String="[^()]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String[" attribute="String" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="[" context="Q_String[" attribute="String Delimiter"/>
+        <RegExpr String="[^\[\]]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String{" attribute="String" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="{" context="Q_String{" attribute="String Delimiter"/>
+        <RegExpr String="[^{}]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String｢" attribute="String" lineEndContext="#stay">
+        <DetectChar char="｣" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="Q_String｢_common"/>
+      </context>
+      <context name="Q_String｢_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="｣" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="Q_String｢_common"/>
+      </context>
+      <context name="Q_String｢_common" attribute="String" lineEndContext="#stay">
+        <DetectChar char="｢" context="Q_String｢" attribute="String Delimiter"/>
+        <RegExpr String="[^｢｣]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_String&lt;" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="Q_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="[^&lt;>]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="Q_StringAny" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+        <RegExpr String="[^%1]*" dynamic="1" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="q_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop#pop!q_String">
+        <DetectChar char=":" context="#pop#pop!q_QuotingForm2" attribute="Operator"/>
+      </context>
+
+      <context name="qq_Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop#pop!qq_String">
+        <DetectChar char=":" context="#pop!qq_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="Q_StringModifier" attribute="Operator" lineEndContext="#stay" fallthroughContext="#pop!q_QuotingForm2">
+        <DetectChar char="q" context="#pop!q_QuotingForm" attribute="Operator"/>
+        <DetectChar char="'" context="q_Q_StringModifier" attribute="Operator"/>
+        <DetectChar char="&quot;" context="qq_Q_StringModifier" attribute="Operator"/>
+      </context>
+
+      <context name="q_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthroughContext="#pop!q_QuotingForm2">
+        <DetectChar char="q" context="#pop!qq_QuotingForm" attribute="Operator"/>
+        <DetectChar char=":" context="#pop!q_QuotingForm2" attribute="Operator"/>
+      </context>
+      <context name="q_QuotingForm2" attribute="Operator" lineEndContext="#pop" fallthroughContext="q_String">
+        <WordDetect String="heredoc" context="q_Heredoc" attribute="Operator"/>
+        <keyword String="quoting" context="#stay" attribute="Operator"/>
+        <AnyChar String="wvx:sahfb" context="#stay" attribute="Operator"/>
+        <!-- :closure as qq -->
+        <DetectChar char="c" context="#pop!qq_QuotingForm" attribute="Operator"/>
+        <Detect2Chars char="t" char1="o" context="q_Heredoc" attribute="Operator"/>
+      </context>
+
+      <context name="qq_QuotingForm" attribute="Operator" lineEndContext="#pop" fallthroughContext="qq_String">
+        <WordDetect String="heredoc" context="qq_Heredoc" attribute="Operator"/>
+        <keyword String="quoting" context="#stay" attribute="Operator"/>
+        <AnyChar String="wvx:sahfcb" context="#stay" attribute="Operator"/>
+        <Detect2Chars char="t" char1="o" context="qq_Heredoc" attribute="Operator"/>
+      </context>
+
+
+      <!-- q and qq Heredoc -->
+
+      <context name="q_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <RegExpr String="/([^/]+)/" context="q_HeredocTerminator" attribute="String Delimiter"/>
+      </context>
+      <context name="q_HeredocTerminator" attribute="String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
+        <RegExpr String="(?:[^\\]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="qq_Heredoc" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <RegExpr String="/([^/]+)/" context="qq_HeredocTerminator" attribute="String Delimiter"/>
+      </context>
+      <context name="qq_HeredocTerminator" attribute="String" lineEndContext="#stay">
+        <DetectSpaces/>
+        <StringDetect String="%1" dynamic="1" context="#pop#pop#pop" attribute="String Delimiter" firstNonSpace="1"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+
+      <!-- q String -->
+
+      <context name="q_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar char="(" context="#pop#pop!q_String(" attribute="String Delimiter"/>
+        <DetectChar char="[" context="#pop#pop!q_String[" attribute="String Delimiter"/>
+        <DetectChar char="{" context="#pop#pop!q_String{" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="#pop#pop!q_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!q_StringAny" attribute="String Delimiter"/>
+      </context>
+
+      <context name="q_String(" attribute="String" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="(" context="q_String(" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="(" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1=")" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^()\\]*|\\(?![()\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_String[" attribute="String" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="[" context="q_String[" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="[" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="]" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^\[\]\\]*|\\(?![\[\]\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_String{" attribute="String" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="{" context="q_String{" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="{" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="}" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^{}\\]*|\\(?![{}\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_String&lt;" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="q_String&lt;_common"/>
+      </context>
+      <context name="q_String&lt;_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="q_String&lt;_common"/>
+      </context>
+      <context name="q_String&lt;_common" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&lt;" context="q_String&lt;" attribute="String Delimiter"/>
+        <Detect2Chars char="\" char1="&lt;" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1=">" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^&lt;>\\]*|\\(?![&lt;>\\]|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_StringAny" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^\\%1]*|\\(?![\\%1]|&quotingconstruct;|$))*" dynamic="1" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <context name="q_RawString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="'" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="q_RawString_common"/>
+      </context>
+      <context name="q_RawString_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="'" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="q_RawString_common"/>
+      </context>
+      <context name="q_RawString_common" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char="\" char1="\" context="#stay" attribute="String Special Character"/>
+        <Detect2Chars char="\" char1="'" context="#stay" attribute="String Special Character"/>
+        <RegExpr String="(?:[^\\']*|\\(?![\\']|&quotingconstruct;|$))*" context="#stay" attribute="String"/>
+        <Detect2Chars char="\" char1="q" context="q_QuotingForm" attribute="Operator"/>
+      </context>
+
+      <!-- qq String -->
+
+      <context name="qq_String" attribute="String" lineEndContext="#stay" fallthroughContext="#pop#pop">
+        <DetectSpaces/>
+        <DetectChar char="(" context="#pop#pop!qq_String(" attribute="String Delimiter"/>
+        <DetectChar char="[" context="#pop#pop!qq_String[" attribute="String Delimiter"/>
+        <DetectChar char="{" context="#pop#pop!qq_String{" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="#pop#pop!qq_String&lt;" attribute="String Delimiter"/>
+        <RegExpr String="([^a-zA-Z0-9])" context="#pop#pop!qq_StringAny" attribute="String Delimiter"/>
+      </context>
+
+      <context name="qq_String(" attribute="String" lineEndContext="#stay">
+        <DetectChar char=")" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="(" context="qq_String(" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^()\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String[" attribute="String" lineEndContext="#stay">
+        <DetectChar char="]" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="[" context="qq_String[" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^\[\]\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String{" attribute="String" lineEndContext="#stay">
+        <DetectChar char="}" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="{" context="qq_String{" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^{}\\$@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String&lt;" attribute="String" lineEndContext="#stay">
+        <DetectChar char=">" context="#pop" attribute="String Delimiter"/>
+        <DetectChar char="&lt;" context="qq_String&lt;" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^&lt;>\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String«" attribute="String" lineEndContext="#stay">
+        <DetectChar char="»" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String«_common"/>
+      </context>
+      <context name="qq_String«_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="»" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String«_common"/>
+      </context>
+      <context name="qq_String«_common" attribute="String" lineEndContext="#stay">
+        <DetectChar char="«" context="qq_String«" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^«»\\${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_String&lt;&lt;" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char=">" char1=">" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String&lt;&lt;_common"/>
+      </context>
+      <context name="qq_String&lt;&lt;_term" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char=">" char1=">" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="qq_String&lt;&lt;_common"/>
+      </context>
+      <context name="qq_String&lt;&lt;_common" attribute="String" lineEndContext="#stay">
+        <Detect2Chars char="&lt;" char1="&lt;" context="qq_String&lt;&lt;" attribute="String Delimiter"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="([^&lt;>\\${@&amp;]*|&lt;(?!&lt;)|>(?!>))" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_StringAny" attribute="String" lineEndContext="#stay">
+        <DetectChar char="1" dynamic="1" context="#pop" attribute="String Delimiter"/>
+        <StringDetect String="\%1" dynamic="1" context="#stay" attribute="String Special Character"/>
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^%1\\${@&amp;]*" dynamic="1" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="qq_RawString" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" context="#pop" attribute="String Delimiter"/>
+        <IncludeRules context="qq_RawString_common"/>
+      </context>
+      <context name="qq_RawString_term" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" context="#pop!postfix_op" attribute="String Delimiter"/>
+        <IncludeRules context="qq_RawString_common"/>
+      </context>
+      <context name="qq_RawString_common" attribute="String" lineEndContext="#stay">
+        <IncludeRules context="find_qq_StringCommon"/>
+        <RegExpr String="[^\\&quot;${@&amp;]*" context="#stay" attribute="String"/>
+      </context>
+
+      <context name="find_qq_StringCommon" attribute="String" lineEndContext="#stay">
+        <DetectChar char="\" context="qq_StringEscape" attribute="Operator" lookAhead="1"/>
+        <DetectChar char="{" context="qq_Interpolation" attribute="String (interpolated)"/>
+        <DetectChar char="$" context="qq_StringMaybeVar$" attribute="String" lookAhead="1"/>
+        <AnyChar String="@%" context="qq_StringMaybeVar" attribute="String" lookAhead="1"/>
+        <DetectChar char="&amp;" context="qq_StringSigil" attribute="String" lookAhead="1"/>
+      </context>
+
+      <context name="qq_StringEscape" attribute="String Special Character" lineEndContext="#pop">
+        <Detect2Chars char="\" char1="q" context="#pop!q_QuotingForm" attribute="Operator"/>
+        <DetectChar char="\" context="#pop!qq_StringSpecialChar" attribute="String Special Character"/>
+      </context>
+      <context name="qq_StringSpecialChar" attribute="String Special Character" lineEndContext="#pop">
+        <IncludeRules context="SpecialCharPre"/>
+        <RegExpr String="[^xco]" context="#pop" attribute="String Special Character"/>
+        <IncludeRules context="SpecialCharPost"/>
+      </context>
+
+      <context name="qq_Interpolation" attribute="String (interpolated)" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char="}" context="#pop" attribute="String (interpolated)"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="qq_StringSigil" attribute="Function" lineEndContext="#stay">
+        <RegExpr String="&amp;&ident;\(" context="#pop!FunctionParameters" attribute="Function"/>
+        <DetectChar char="&amp;" context="#pop" attribute="String"/>
+      </context>
+
+      <context name="qq_StringMaybeVar$" attribute="String" lineEndContext="#stay">
+        <RegExpr String="\$(?=[&twigils;]?&prefixdollarvarname;)" context="qq_InterpolationVar" attribute="Variable"/>
+        <DetectChar char="$" context="#pop" attribute="String"/>
+      </context>
+
+      <context name="qq_StringMaybeVar" attribute="String" lineEndContext="#stay">
+        <RegExpr String="@\(\)|[%@]\$/|[@%]&ident;" context="qq_Interpolation1" attribute="Variable"/>
+        <AnyChar String="@%" context="#pop" attribute="String"/>
+      </context>
+
+      <context name="qq_InterpolationVar" attribute="String" lineEndContext="#stay">
+        <AnyChar String="&twigils;" context="#stay" attribute="Twigil"/>
+        <RegExpr String="&dollarvarname;" context="#pop!qq_Interpolation1" attribute="Variable"/>
+      </context>
+
+      <context name="qq_Interpolation1" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar char="[" context="qq_InterpolationIndex" attribute="Function"/>
+        <DetectChar char="." context="qq_InterpolationFunction" attribute="Function" lookAhead="1"/>
+      </context>
+
+      <context name="qq_InterpolationIndex" attribute="String" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char="]" context="#pop#pop#pop" attribute="Function"/>
+        <IncludeRules context="base"/>
+      </context>
+
+      <context name="qq_InterpolationFunction" attribute="String" lineEndContext="#stay">
+        <RegExpr String="(?:\.&ident;)*\.&ident;\(" context="#pop#pop#pop!FunctionParameters" attribute="Function"/>
+        <DetectChar char="." context="#pop#pop#pop" attribute="String"/>
+      </context>
+
+      <context name="FunctionParameters" attribute="String" lineEndContext="#stay" fallthroughContext="term">
+        <DetectChar char=")" context="#pop" attribute="Function"/>
+        <DetectChar char="(" context="FunctionParameters" attribute="Function"/>
+        <IncludeRules context="base"/>
+      </context>
+
+
+      <!-- Comment -->
+
+      <context name="StartComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="SingleLineComment">
+        <DetectChar attribute="Comment" context="MultilineComment" char="`"/>
+        <AnyChar attribute="Pod Operator" context="MultilineComment" String="=|"/>
+      </context>
+
+      <context name="MultilineComment" attribute="Comment" lineEndContext="#pop#pop" fallthroughContext="#pop!SingleLineComment">
+        <!-- TODO a new rule is needed to find the corresponding closures -->
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment(((" String="(((" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment[[[" String="[[[" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment{{{" String="{{{" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment«««" String="«««" beginRegion="comment"/>
+        <StringDetect attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;&lt;" String="&lt;&lt;&lt;" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment((" char="(" char1="(" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment[[" char="[" char1="[" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment{{" char="{" char1="{" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment««" char="«" char1="«" beginRegion="comment"/>
+        <Detect2Chars attribute="Comment" context="#pop#pop!MultilineComment&lt;&lt;" char="&lt;" char1="&lt;" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment(" char="(" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment[" char="[" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment{" char="{" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment«" char="«" beginRegion="comment"/>
+        <DetectChar attribute="Comment" context="#pop#pop!MultilineComment&lt;" char="&lt;" beginRegion="comment"/>
+        <!-- etc -->
+      </context>
+
+      <context name="MultilineComment(((" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String=")))" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="(((" attribute="Comment" context="MultilineComment(((" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment[[[" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String="]]]" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="[[[" attribute="Comment" context="MultilineComment[[[" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment{{{" attribute="Comment" lineEndContext="#stay">
+        <StringDetect String="}}}" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="{{{" attribute="Comment" context="MultilineComment{{{" beginRegion="comment"/>
+        <IncludeRules context="SingleLineComment"/>
+      </context>
+      <context name="MultilineComment«««" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String="»»»" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="«««" attribute="Comment" context="MultilineComment«««" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment&lt;&lt;&lt;" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <StringDetect String=">>>" attribute="Comment" context="#pop" endRegion="comment"/>
+        <StringDetect String="&lt;&lt;&lt;" attribute="Comment" context="MultilineComment&lt;&lt;&lt;" beginRegion="comment"/>
+      </context>
+
+      <context name="MultilineComment((" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char=")" char1=")" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="(" char1="(" attribute="Comment" context="MultilineComment((" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment[[" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char="]" char1="]" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="[" char1="[" attribute="Comment" context="MultilineComment[[" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment{{" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char="}" char1="}" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="{" char1="{" attribute="Comment" context="MultilineComment{{" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment««" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char="»" char1="»" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="«" char1="«" attribute="Comment" context="MultilineComment««" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment&lt;&lt;" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <Detect2Chars char=">" char1=">" attribute="Comment" context="#pop" endRegion="comment"/>
+        <Detect2Chars char="&lt;" char1="&lt;" attribute="Comment" context="MultilineComment&lt;&lt;" beginRegion="comment"/>
+      </context>
+
+      <context name="MultilineComment(" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char=")" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="(" attribute="Comment" context="MultilineComment(" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment[" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char="]" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="[" attribute="Comment" context="MultilineComment[" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment{" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char="}" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="{" attribute="Comment" context="MultilineComment{" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment«" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char="»" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="«" attribute="Comment" context="MultilineComment«" beginRegion="comment"/>
+      </context>
+      <context name="MultilineComment&lt;" attribute="Comment" lineEndContext="#stay">
+        <IncludeRules context="SingleLineComment"/>
+        <DetectChar char=">" attribute="Comment" context="#pop" endRegion="comment"/>
+        <DetectChar char="&lt;" attribute="Comment" context="MultilineComment&lt;" beginRegion="comment"/>
+      </context>
+
+      <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+
+      <!-- Error -->
+
+      <context name="Error" attribute="Error" lineEndContext="#pop"/>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"               defStyleNum="dsNormal"/>
+      <itemData name="Keyword"                   defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Keyword Value"             defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Variable"                  defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Twigil"                    defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Control Flow"              defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Variable Storage"          defStyleNum="dsKeyword" spellChecking="false" bold="1"/>
+      <itemData name="Property"                  defStyleNum="dsBuiltIn" spellChecking="false" italic="1"/>
+      <itemData name="Declare Routine"           defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Function"                  defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Symbol"                    defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Operator"                  defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Member Operator"           defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Hyper Operator"            defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Separator Symbol"          defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Data Type"                 defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Attribute"                 defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Number Suffix"             defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="Decimal"                   defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="Octal"                     defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Hex"                       defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Float"                     defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="String"                    defStyleNum="dsString"/>
+      <itemData name="String Delimiter"          defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="String (interpolated)"     defStyleNum="dsString"/>
+      <itemData name="String Special Character"  defStyleNum="dsChar"/>
+      <itemData name="Pattern"                   defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Pattern Delimiter"         defStyleNum="dsVerbatimString" spellChecking="false"/>
+      <itemData name="Pattern Bracket"           defStyleNum="dsExtension" spellChecking="false"/>
+      <itemData name="Pattern Meta Character"    defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="Pattern Character Class"   defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Pattern Unicode Property"  defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Pattern Character"         defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="Pattern Modifier"          defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Pattern Quantifier"        defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Pattern Control Flow"      defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Pattern Special Character" defStyleNum="dsBuiltIn" spellChecking="false"/>
+      <itemData name="Pattern Named Capture"     defStyleNum="dsAnnotation" spellChecking="false"/>
       <itemData name="Comment"                   defStyleNum="dsComment"/>
       <itemData name="Error"                     defStyleNum="dsError" spellChecking="false"/>
       <itemData name="Pod"                       defStyleNum="dsDocumentation" spellChecking="false"/>
diff --git a/xml/raku.xml.patch b/xml/raku.xml.patch
new file mode 100644
--- /dev/null
+++ b/xml/raku.xml.patch
@@ -0,0 +1,21 @@
+--- raku.xml	2023-12-02 17:57:32.000000000 -0800
++++ raku.new	2023-12-02 17:57:07.000000000 -0800
+@@ -8,7 +8,8 @@
+   -->
+   <!-- Large values -->
+   <!ENTITY rangealnum "_\p{L}\p{N}">
+-  <!ENTITY alnum "[_\p{L}\p{N}]">
++  <!ENTITY _alnum "_\p{L}\p{N}">
++  <!ENTITY alnum "[&_alnum;]">
+   <!ENTITY _ident "&alnum;*+(?:[-']&alnum;*+)*+">
+   <!ENTITY ident "(?:[_\p{L}]&_ident;)">
+   <!ENTITY datatype "(?:[_\p{Lu}\p{Lt}]&_ident;)">
+@@ -828,7 +829,7 @@
+         <RegExpr String="&variable;|@" attribute="Variable"/>
+         <RegExpr String="\$&lt;&ident;>?" attribute="Pattern Named Capture"/>
+         <AnyChar String="&amp;|^$" attribute="Pattern Control Flow"/>
+-        <RegExpr String="[&alnum;\s]+" attribute="Pattern"/>
++        <RegExpr String="[&_alnum;\s]+" attribute="Pattern"/>
+         <AnyChar String=">)]" attribute="Error"/>
+       </context>
+ 
diff --git a/xml/rdoc.xml b/xml/rdoc.xml
new file mode 100644
--- /dev/null
+++ b/xml/rdoc.xml
@@ -0,0 +1,390 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="R documentation" version="4" section="Markup" kateversion="5.0"
+          extensions="*.Rd" author="Aaron Puchert" license="MIT" >
+<highlighting>
+    <list name="PreprocessorOptions">
+        <item>unix</item>
+        <item>windows</item>
+    </list>
+    <list name="Formats">
+        <item>example</item>
+        <item>html</item>
+        <item>latex</item>
+        <item>text</item>
+        <item>TRUE</item>
+        <item>FALSE</item>
+    </list>
+
+    <list name="TopLevel-ExpectName">
+        <item>\docType</item>
+        <item>\encoding</item>
+        <item>\keyword</item>
+        <item>\name</item>
+    </list>
+    <list name="TopLevel-ExpectLatex">
+        <item>\author</item>
+        <item>\concept</item>
+        <item>\description</item>
+        <item>\details</item>
+        <item>\format</item>
+        <item>\note</item>
+        <item>\references</item>
+        <item>\seealso</item>
+        <item>\source</item>
+        <item>\title</item>
+    </list>
+    <list name="TopLevel-ExpectNameLatex">
+        <item>\section</item>
+    </list>
+    <list name="TopLevel-ExpectMacroLatex">
+        <item>\newcommand</item>
+        <item>\renewcommand</item>
+    </list>
+    <list name="TopLevel-ExpectR">
+        <item>\examples</item>
+        <item>\usage</item>
+    </list>
+    <list name="TopLevel-ExpectVerbatim">
+        <item>\alias</item>
+        <item>\Rdversion</item>
+        <item>\synopsis</item>
+        <item>\RdOpts</item>
+    </list>
+    <list name="TopLevel-ExpectItem2List">
+        <item>\arguments</item>
+        <item>\value</item>
+    </list>
+
+    <!-- For now we highlight these as macros.
+    <list name="Latex-Markup">
+        <item>\cr</item>
+        <item>\dots</item>
+        <item>\ldots</item>
+        <item>\R</item>
+        <item>\tab</item>
+    </list>
+    -->
+    <list name="Latex-ExpectLatex">
+        <item>\acronym</item>
+        <item>\bold</item>
+        <item>\cite</item>
+        <item>\command</item>
+        <item>\dfn</item>
+        <item>\dQuote</item>
+        <item>\emph</item>
+        <item>\file</item>
+        <item>\linkS4class</item>
+        <item>\pkg</item>
+        <item>\sQuote</item>
+        <item>\strong</item>
+        <item>\var</item>
+    </list>
+    <list name="Latex-ExpectNameLatex">
+        <item>\enc</item>
+        <item>\method</item>
+        <item>\S3method</item>
+        <item>\S4method</item>
+    </list>
+    <list name="Latex-ExpectNameLatex-Section">
+        <item>\subsection</item>
+    </list>
+    <list name="Latex-ExpectMacroLatex">
+        <item>\newcommand</item>
+        <item>\renewcommand</item>
+    </list>
+    <list name="Latex-ExpectItemList">
+        <item>\enumerate</item>
+        <item>\itemize</item>
+    </list>
+    <list name="ItemList-Item">
+        <item>\item</item>
+    </list>
+    <list name="Latex-ExpectItem2List">
+        <item>\describe</item>
+    </list>
+    <list name="Latex-ExpectIf">
+        <item>\if</item>
+        <item>\ifelse</item>
+    </list>
+    <list name="Latex-ExpectRLike">
+        <item>\code</item>
+    </list>
+    <list name="Latex-ExpectVerbatim">
+        <item>\email</item>
+        <item>\env</item>
+        <item>\kbd</item>
+        <item>\option</item>
+        <item>\out</item>
+        <item>\preformatted</item>
+        <item>\samp</item>
+        <item>\url</item>
+        <item>\verb</item>
+        <item>\deqn</item>
+        <item>\eqn</item>
+    </list>
+    <list name="Latex-ExpectVerbatimLatex">
+        <item>\tabular</item>
+        <item>\href</item>
+        <item>\figure</item>
+    </list>
+    <list name="Latex-ExpectOptionName">
+        <item>\link</item>
+    </list>
+    <list name="Latex-ExpectOptionR">
+        <item>\Sexpr</item>
+    </list>
+
+    <list name="R-ExpectRLike">
+        <item>\dontrun</item>
+        <item>\special</item>
+        <item>\v</item>
+        <item>\var</item>
+    </list>
+    <list name="R-ExpectNameLatex">
+        <item>\method</item>
+        <item>\S3method</item>
+        <item>\S4method</item>
+    </list>
+    <list name="R-ExpectOptionName">
+        <item>\l</item>
+        <item>\link</item>
+    </list>
+    <list name="R-ExpectR">
+        <item>\dontshow</item>
+        <item>\donttest</item>
+        <item>\testonly</item>
+    </list>
+
+    <contexts>
+        <context name="TopLevel" attribute="NormalText" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+
+            <keyword String="TopLevel-ExpectName" attribute="Section" context="ExpectName"/>
+            <keyword String="TopLevel-ExpectLatex" attribute="Section" context="ExpectLatex"/>
+            <keyword String="TopLevel-ExpectNameLatex" attribute="Section" context="ExpectNameLatex"/>
+            <keyword String="TopLevel-ExpectMacroLatex" attribute="Markup" context="ExpectMacroLatex"/>
+            <keyword String="TopLevel-ExpectR" attribute="Section" context="ExpectR"/>
+            <keyword String="TopLevel-ExpectVerbatim" attribute="Section" context="ExpectVerbatim"/>
+            <keyword String="TopLevel-ExpectItem2List" attribute="Section" context="ExpectItem2List"/>
+        </context>
+
+        <!-- Common rules: only included in other contexts -->
+        <context name="Common" attribute="NormalText" lineEndContext="#stay">
+            <DetectSpaces/>
+            <DetectChar char="%" attribute="Comment" context="Comment"/>
+
+            <Detect2Chars char="\" char1="\" attribute="Escape"/>
+            <Detect2Chars char="\" char1="%" attribute="Escape"/>
+            <Detect2Chars char="\" char1="{" attribute="Escape"/>
+            <Detect2Chars char="\" char1="}" attribute="Escape"/>
+
+            <StringDetect String="#ifdef" firstNonSpace="true" attribute="Preprocessor"
+                            context="PreprocessorCondition" beginRegion="Preprocessor"/>
+            <StringDetect String="#ifndef" firstNonSpace="true" attribute="Preprocessor"
+                            context="PreprocessorCondition" beginRegion="Preprocessor"/>
+            <StringDetect String="#endif" firstNonSpace="true" attribute="Preprocessor"
+                            context="Comment" endRegion="Preprocessor"/>
+        </context>
+
+        <!-- Contexts where we expect certain arguments -->
+        <context name="ExpectName" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!Name" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectLatex" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!Latex" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectItemList" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!ItemList" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectItem2List" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!Item2List" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectNameLatex" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!NameLatex" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectMacroLatex" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!MacroLatex" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectLatexLatex" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!LatexLatex" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectR" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!R" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectRLike" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!RLike" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectVerbatim" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!Verbatim" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectVerbatimLatex" attribute="NormalText" lineEndContext="#stay">
+            <DetectChar char="{" attribute="Brace" context="#pop!VerbatimLatex" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectOptionName" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="#pop!Name" beginRegion="Brace"/>
+            <DetectChar char="[" attribute="Brace" context="#pop!OptionName" beginRegion="Bracket"/>
+            <RegExpr String="[^{[]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectOptionR" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="#pop!R" beginRegion="Brace"/>
+            <DetectChar char="[" attribute="Brace" context="#pop!OptionR" beginRegion="Bracket"/>
+            <RegExpr String="[^{[]*" attribute="Error" context="#pop"/>
+        </context>
+        <context name="ExpectIf" attribute="NormalText" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="#pop!If" beginRegion="Brace"/>
+            <RegExpr String="[^{]*" attribute="Error" context="#pop"/>
+        </context>
+
+        <!-- The actual arguments -->
+        <context name="Latex" attribute="NormalText" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="Latex" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>
+
+            <keyword String="Latex-ExpectLatex" attribute="Markup" context="ExpectLatex"/>
+            <keyword String="Latex-ExpectNameLatex" attribute="Markup" context="ExpectNameLatex"/>
+            <keyword String="Latex-ExpectNameLatex-Section" attribute="Section" context="ExpectNameLatex"/>
+            <keyword String="Latex-ExpectMacroLatex" attribute="Markup" context="ExpectMacroLatex"/>
+            <keyword String="Latex-ExpectItemList" attribute="Markup" context="ExpectItemList"/>
+            <keyword String="Latex-ExpectItem2List" attribute="Markup" context="ExpectItem2List"/>
+            <keyword String="Latex-ExpectIf" attribute="Markup" context="ExpectIf"/>
+            <keyword String="Latex-ExpectRLike" attribute="Markup" context="ExpectRLike"/>
+            <keyword String="Latex-ExpectVerbatim" attribute="Markup" context="ExpectVerbatim"/>
+            <keyword String="Latex-ExpectVerbatimLatex" attribute="Markup" context="ExpectVerbatimLatex"/>
+            <keyword String="Latex-ExpectOptionName" attribute="Markup" context="ExpectOptionName"/>
+            <keyword String="Latex-ExpectOptionR" attribute="Markup" context="ExpectOptionR"/>
+
+            <RegExpr String="\\[A-Za-z][A-Za-z0-9]*" attribute="UserDefinedMacro"/>
+            <RegExpr String="#[1-9]" attribute="UserDefinedMacroArgument"/>
+        </context>
+        <context name="ItemList" attribute="NormalText" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="Item2List" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>
+            <keyword String="ItemList-Item" attribute="Markup"/>
+            <IncludeRules context="Latex"/>
+        </context>
+        <context name="Item2List" attribute="NormalText" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <keyword String="ItemList-Item" attribute="Markup" context="ExpectLatexLatex"/>
+            <IncludeRules context="Latex"/>
+        </context>
+        <context name="Name" attribute="ItemName" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <RegExpr String="\\[A-Za-z][A-Za-z0-9]*" attribute="UserDefinedMacro"/>
+            <RegExpr String="#[1-9]" attribute="UserDefinedMacroArgument"/>
+            <DetectChar char="{" attribute="Brace" context="Name" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>
+        </context>
+        <context name="NameLatex" attribute="ItemName" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <RegExpr String="\\[A-Za-z][A-Za-z0-9]*" attribute="UserDefinedMacro"/>
+            <RegExpr String="#[1-9]" attribute="UserDefinedMacroArgument"/>
+            <DetectChar char="{" attribute="Brace" context="Latex" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>
+        </context>
+        <context name="MacroLatex" attribute="UserDefinedMacro" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>
+        </context>
+        <context name="LatexLatex" attribute="ItemName" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>
+            <IncludeRules context="Latex"/>
+        </context>
+        <context name="R" attribute="RSource" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="R" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>
+            <keyword String="R-ExpectR" attribute="Markup" context="ExpectR"/>
+            <keyword String="R-ExpectRLike" attribute="Markup" context="ExpectRLike"/>
+            <keyword String="R-ExpectNameLatex" attribute="Markup" context="ExpectNameLatex"/>
+            <keyword String="R-ExpectOptionName" attribute="Markup" context="ExpectOptionName"/>
+            <IncludeRules context="level0##R Script"/>
+        </context>
+        <context name="RLike" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="RLike" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>
+            <keyword String="R-ExpectRLike" attribute="Markup" context="ExpectRLike"/>
+            <keyword String="R-ExpectNameLatex" attribute="Markup" context="ExpectNameLatex"/>
+            <keyword String="R-ExpectOptionName" attribute="Markup" context="ExpectOptionName"/>
+        </context>
+        <context name="Verbatim" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>
+        </context>
+        <context name="VerbatimLatex" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>
+            <DetectChar char="}" attribute="Brace" context="#pop!ExpectLatex" endRegion="Brace"/>
+        </context>
+        <context name="OptionName" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>
+            <DetectChar char="]" attribute="Brace" context="#pop!ExpectName" endRegion="Bracket"/>
+            <DetectChar char="}" attribute="Error" context="#pop!ExpectName" endRegion="Bracket"/>
+        </context>
+        <context name="OptionR" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <DetectChar char="{" attribute="Brace" context="Verbatim" beginRegion="Brace"/>
+            <DetectChar char="]" attribute="Brace" context="#pop!ExpectR" endRegion="Bracket"/>
+            <DetectChar char="}" attribute="Error" context="#pop!ExpectR" endRegion="Bracket"/>
+        </context>
+        <context name="If" attribute="Verbatim" lineEndContext="#stay">
+            <IncludeRules context="Common"/>
+            <keyword String="Formats" attribute="Builtin"/>
+            <DetectChar char="}" attribute="Brace" context="#pop" endRegion="Brace"/>
+        </context>
+
+        <context name="Comment" attribute="Comment" lineEndContext="#pop">
+            <DetectSpaces />
+            <IncludeRules context="##Comments"/>
+        </context>
+
+        <context name="PreprocessorCondition" attribute="Preprocessor" lineEndContext="#pop">
+            <keyword String="PreprocessorOptions" attribute="Builtin"/>
+        </context>
+    </contexts>
+
+    <itemDatas>
+        <itemData name="NormalText" defStyleNum="dsNormal"/>
+        <itemData name="RSource" defStyleNum="dsNormal" spellChecking="false"/>
+        <itemData name="Brace" defStyleNum="dsOperator" spellChecking="false"/>
+        <itemData name="Section" defStyleNum="dsControlFlow" spellChecking="false"/>
+        <itemData name="Markup" defStyleNum="dsKeyword" spellChecking="false"/>
+        <itemData name="UserDefinedMacro" defStyleNum="dsFunction" spellChecking="false"/>
+        <itemData name="UserDefinedMacroArgument" defStyleNum="dsVariable" spellChecking="false"/>
+        <itemData name="ItemName" defStyleNum="dsSpecialString" spellChecking="false"/>
+        <itemData name="Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>
+        <itemData name="Preprocessor" defStyleNum="dsPreprocessor" spellChecking="false"/>
+        <itemData name="Builtin" defStyleNum="dsBuiltIn" spellChecking="false"/>
+        <itemData name="Verbatim" defStyleNum="dsVerbatimString" spellChecking="false"/>
+        <itemData name="Comment" defStyleNum="dsComment"/>
+        <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+    </itemDatas>
+</highlighting>
+<general>
+    <keywords weakDeliminator="\" wordWrapDeliminator=",{}[]"/>
+    <comments>
+        <comment name="singleLine" start="%"/>
+    </comments>
+</general>
+</language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/relaxng.xml b/xml/relaxng.xml
--- a/xml/relaxng.xml
+++ b/xml/relaxng.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY qname    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&qname;);">
diff --git a/xml/relaxngcompact.xml b/xml/relaxngcompact.xml
--- a/xml/relaxngcompact.xml
+++ b/xml/relaxngcompact.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="RelaxNG-Compact" version="3" kateversion="5.0" section="Markup" extensions="*.rnc" casesensitive="1" author="Rintze Zelle" license="LGPL">
   <highlighting>
     <list name="Keywords">
diff --git a/xml/rest.xml b/xml/rest.xml
--- a/xml/rest.xml
+++ b/xml/rest.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
         <!ENTITY inlinestart "(?:^|(?&lt;=[-\s&apos;&quot;\(\[{&lt;/:‘“’«¡¿‐‑‒–— ]))">
         <!ENTITY inlineend "(?=[-\s’”»‐‑‒–— &apos;&quot;\)\]}&gt;/:\.,;!\?\\]|$)">
@@ -14,7 +14,7 @@
   Copyright 2010 Matt Williams (matt@milliams.com)
   Copyright 2014 Matthew Woehlke (mw_triad@users.sourceforge.net)
   -->
-<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="9" kateversion="5.0" casesensitive="1">
+<language name="reStructuredText" extensions="*.rst" section="Markup" mimetype="text/x-rst" version="10" kateversion="5.0" casesensitive="1">
 
   <highlighting>
 
@@ -44,7 +44,7 @@
         <RegExpr attribute="SubstitutionReference" context="#stay" String="&inlinestart;\|[^\s].*\|&inlineend;" minimal="true"/>
         <RegExpr attribute="InlineInternalTarget" context="#stay" String="&inlinestart;_`[^\s].*`&inlineend;" minimal="true"/>
         <RegExpr attribute="FootnoteReference" context="#stay" String="&inlinestart;\[[&SimpleReferenceNameChars;]+\]_&inlineend;" minimal="true"/>
-        <RegExpr attribute="HyperlinkReference" context="#stay" String="&inlinestart;(`[^\s].*`|\w+)_&inlineend;" minimal="true"/>
+        <RegExpr attribute="HyperlinkReference" context="#stay" String="&inlinestart;(`[^\s].*`|\w+)_{1,2}&inlineend;" minimal="true"/>
         <RegExpr attribute="InterpretedText" context="TrailingRole" String="&inlinestart;`[^\s].*`(?=:([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:)" minimal="true"/>
         <RegExpr attribute="Role" String=":([\w\-_\.\+]+)(:[\w\-_\.\+]+)*:(?=`)" context="Role"/>
         <RegExpr attribute="DefaultRole" context="#stay" String="&inlinestart;`[^\s].*`&inlineend;" minimal="true"/>
diff --git a/xml/rhtml.xml b/xml/rhtml.xml
--- a/xml/rhtml.xml
+++ b/xml/rhtml.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
@@ -44,7 +44,7 @@
 -->
 	
 <!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
-<language name="Ruby/Rails/RHTML" version="14" kateversion="5.63" section="Markup" extensions="*.rhtml;*.RHTML;*.html.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+">
+<language name="Ruby/Rails/RHTML" version="17" kateversion="5.79" section="Markup" extensions="*.rhtml;*.RHTML;*.erb" mimetype="" author="Richard Dale rdale@foton.es" license="LGPLv2+" priority="1">
 	
 	<highlighting>
 	
@@ -171,7 +171,6 @@
 			<item>readlines</item>
 			<item>require</item>
 			<item>scan</item>
-			<item>select</item>
 			<item>set_trace_func</item>
 			<item>sleep</item>
 			<item>split</item>
@@ -373,14 +372,12 @@
 				<StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
 				<IncludeRules context="##Comments" />
 				<DetectIdentifier/>
-				<RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
 			</context>
 			
 			<context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
 				<DetectSpaces/>
 				<DetectIdentifier/>
 				<StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
-				<StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
 			</context>
 			
 			<context name="PI" attribute="Normal Text" lineEndContext="#stay">
@@ -420,71 +417,57 @@
 				<IncludeRules context="FindPEntityRefs" />
 			</context>
 			
-			<context name="El Open" attribute="Normal Text" lineEndContext="#stay">
+			<context name="El Open" attribute="Error" lineEndContext="#stay">
 				<IncludeRules context="find-rubysource" />
 				
 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" />
 				<DetectChar attribute="Element" context="#pop" char="&gt;" />
 				<IncludeRules context="FindAttributes" />
-				<RegExpr attribute="Error" context="#stay" String="\S" />
+				<DetectSpaces attribute="Normal Text"/>
 			</context>
 			
-			<context name="El Close" attribute="Normal Text" lineEndContext="#stay">
+			<context name="El Close" attribute="Error" lineEndContext="#stay">
 				<IncludeRules context="find-rubysource" />
 				
 				<DetectChar attribute="Element" context="#pop" char="&gt;" />
-				<RegExpr attribute="Error" context="#stay" String="\S" />
-			</context>
-			
-			<context name="El Close 2" attribute="Normal Text" lineEndContext="#stay">
-				<IncludeRules context="find-rubysource" />
-				
-				<DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" />
-				<RegExpr attribute="Error" context="#stay" String="\S" />
-			</context>
-			
-			<context name="El Close 3" attribute="Normal Text" lineEndContext="#stay">
-				<IncludeRules context="find-rubysource" />
-				
-				<DetectChar attribute="Element" context="#pop#pop#pop#pop" char="&gt;" />
-				<RegExpr attribute="Error" context="#stay" String="\S" />
+				<DetectSpaces attribute="Normal Text"/>
 			</context>
 			
-			<context name="CSS" attribute="Normal Text" lineEndContext="#stay">
+			<context name="CSS" attribute="Error" lineEndContext="#stay">
 				<IncludeRules context="find-rubysource" />
 				
 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="style" />
 				<DetectChar attribute="Element" context="CSS content" char="&gt;" />
 				<IncludeRules context="FindAttributes" />
-				<RegExpr attribute="Error" context="#stay" String="\S" />
+				<DetectSpaces attribute="Normal Text"/>
 			</context>
 			
 			<context name="CSS content" attribute="Normal Text" lineEndContext="#stay">
 				<IncludeRules context="find-rubysource" />
 				
-				<WordDetect attribute="Element" context="El Close 2" String="&lt;/style" insensitive="true" endRegion="style" />
+				<WordDetect attribute="Element" context="#pop#pop!El Close" String="&lt;/style" insensitive="true" endRegion="style" />
 				<IncludeRules context="##CSS" includeAttrib="true"/>
 			</context>
 			
-			<context name="JS" attribute="Normal Text" lineEndContext="#stay">
+			<context name="JS" attribute="Error" lineEndContext="#stay">
 				<IncludeRules context="find-rubysource" />
 				
 				<Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="script" />
 				<DetectChar attribute="Element" context="JS content" char="&gt;" />
 				<IncludeRules context="FindAttributes" />
-				<RegExpr attribute="Error" context="#stay" String="\S" />
+				<DetectSpaces attribute="Normal Text"/>
 			</context>
 			
 			<context name="JS content" attribute="Normal Text" lineEndContext="#stay">
 				<IncludeRules context="find-rubysource" />
 				
-				<WordDetect attribute="Element" context="El Close 2" String="&lt;/script" insensitive="true" endRegion="script" />
+				<WordDetect attribute="Element" context="#pop#pop!El Close" String="&lt;/script" insensitive="true" endRegion="script" />
 				<RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true" />
 				<IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
 			</context>
 			
 			<context name="JS comment close" attribute="Comment" lineEndContext="#pop">
-				<RegExpr attribute="Element" context="El Close 3" String="&lt;/script\b" insensitive="true" endRegion="script" />
+				<RegExpr attribute="Element" context="#pop#pop#pop!El Close" String="&lt;/script\b" insensitive="true" endRegion="script" />
 				<IncludeRules context="##Comments" />
 			</context>
 			
diff --git a/xml/rmarkdown.xml b/xml/rmarkdown.xml
new file mode 100644
--- /dev/null
+++ b/xml/rmarkdown.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language
+[
+<!-- Replicated from "markdown.xml": -->
+<!ENTITY rulerregex "\s*(?:(?:\*\s*){3,}|(?:_\s*){3,}|(?:\-\s*){3,})\s*$">
+<!ENTITY indentedcodeblock "(?:\s{4}|\t).*$">
+<!ENTITY listbullet "[\*\+\-]">
+<!ENTITY emptyline "^\s*$">
+<!ENTITY checkbox "\[[ x]\](?=\s)">
+]>
+<!--
+  Kate highlighting module for R Markdown
+  (c) 2014 Dirk Sarpe (dsarpe@posteo.de)
+
+  depends on:
+    Kate highlighting module for Markdown
+    Kate highlighting module for R script
+    Kate highlighting module for LaTeX
+    Kate highlighting module for YAML
+-->
+
+<language name="R Markdown"
+section="Markup"
+extensions="*.rmd;*.Rmd;*.RMD"
+mimetype="text/x-r-markdown"
+version="11"
+kateversion="6.22"
+casesensitive="true"
+author="Dirk Sarpe (dsarpe@posteo.de)"
+license="GPL">
+
+  <highlighting>
+    <contexts>
+
+      <context name="Start Document" attribute="Markdown" lineEndContext="Normal Text" lineEmptyContext="Normal Text" fallthroughContext="Normal Text">
+        <RegExpr String="^---$" column="0" attribute="Markdown" context="YAMLhead" beginRegion="YAMLhead block"/>
+      </context>
+
+      <context name="Normal Text" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="find-code-block">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="Overwrite Markdown Normal Text"/>
+        <IncludeRules context="Normal Text##Markdown" includeAttrib="true"/>
+      </context>
+      <context name="find-code-block" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="find-code-block##Markdown" includeAttrib="true"/>
+      </context>
+
+      <context name="Common" attribute="Markdown" lineEndContext="#stay">
+        <RegExpr String="```+\{r.*\}" firstNonSpace="true" attribute="Structure"
+                 context="R block" beginRegion="R block"/>
+        <RegExpr String="`r\b" attribute="Structure"
+                 context="R inline"/>
+        <Detect2Chars char="$" char1="$" attribute="MathMode"
+                      context="LaTeX equation block" beginRegion="LaTeX equation block"/>
+        <DetectChar char="$" attribute="MathMode"
+                    context="LaTeX inline equation"/>
+        <Detect2Chars char="\" char1="$" attribute="Backslash Escape" context="#stay"/>
+      </context>
+
+      <context name="R block" attribute="Markdown" lineEndContext="#stay">
+        <RegExpr String="```+(?=\s*$)" firstNonSpace="true" attribute="Structure" context="#pop"
+                 endRegion="R block"/>
+        <IncludeRules context="##R Script" includeAttrib="true"/>
+      </context>
+
+      <context name="R inline" attribute="Markdown" lineEndContext="#stay">
+        <DetectChar char="`" attribute="Structure" context="#pop"/>
+        <IncludeRules context="##R Script" includeAttrib="true"/>
+      </context>
+
+      <context name="LaTeX equation block" attribute="MathMode"
+               lineEndContext="#stay">
+        <Detect2Chars char="$" char1="$" attribute="MathMode"
+                      context="#pop" endRegion="LaTeX equation block"/>
+        <IncludeRules context="MathModeDisplay##LaTeX" includeAttrib="true"/>
+      </context>
+
+      <context name="LaTeX inline equation" attribute="MathMode"
+               lineEndContext="#stay">
+        <DetectChar char="$" attribute="MathMode" context="#pop"/>
+        <IncludeRules context="MathMode##LaTeX" includeAttrib="true"/>
+      </context>
+
+      <context name="YAMLhead" attribute="Document Headers"
+               lineEndContext="#stay" fallthroughContext="Lvl0Text##YAML">
+        <RegExpr String="^---$" column="0" attribute="Markdown" context="#pop"
+                 endRegion="YAMLhead block"/>
+        <IncludeRules context="##YAML" includeAttrib="true"/>
+      </context>
+
+      <!-- Markdown -->
+      <!-- These contexts are replicated from "markdown.xml" to add the features of R Markdown. -->
+
+      <context name="Overwrite Markdown Normal Text" attribute="Markdown" lineEndContext="#stay">
+        <!-- Blockquotes -->
+        <DetectChar attribute="Blockquote" context="blockquote" char="&gt;" firstNonSpace="true"/>
+        <!-- Lists: avoid highlighting code blocks incorrectly, capturing indentation -->
+        <RegExpr attribute="List" context="list" String="^(\s*)&listbullet;(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist" String="^(\s*)\d\.(\s+)" column="0"/>
+        <RegExpr attribute="Number List" context="numlist2" String="^(\s*)\d\d+\.(\s+)" column="0"/>
+      </context>
+
+      <context name="list" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">
+        <!-- Find indented code blocks, blockquotes and horizontal rules -->
+        <RegExpr attribute="List: Code" String="^%1%2\s&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s+&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s+&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <!-- Text with the same indentation captured corresponds to the item list -->
+        <RegExpr context="content-list" String="^%1%2\s" column="0" lookAhead="true" dynamic="true"/>
+        <!-- Finish when the text has a lower indentation than the list -->
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+        <!-- Highlight checkbox at the start of the item (task list) -->
+        <RegExpr attribute="List: Checkbox" context="content-list" String="\s*&checkbox;"/>
+      </context>
+      <!-- 1. numlist (one digit) -->
+      <context name="numlist" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">
+        <RegExpr attribute="List: Code" String="^%1%2\s{2}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{2,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{2,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <RegExpr context="content-list" String="^%1%2\s{2}" column="0" lookAhead="true" dynamic="true"/>
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+      <!-- 10. numlist (two or more digits) -->
+      <context name="numlist2" attribute="Markdown" lineEndContext="#stay" fallthroughContext="content-list">
+        <RegExpr attribute="List: Code" String="^%1%2\s{3}&indentedcodeblock;" column="0" dynamic="true"/>
+        <RegExpr attribute="Blockquote" context="blockquote-list" String="^%1%2\s{3,}&gt;" column="0" dynamic="true"/>
+        <RegExpr attribute="List: Horizontal Rule" String="^%1%2\s{3,}&rulerregex;" column="0" dynamic="true"/>
+        <RegExpr String="&emptyline;" column="0"/>
+        <RegExpr context="content-list" String="^%1%2\s{3}" column="0" lookAhead="true" dynamic="true"/>
+        <RegExpr context="#pop" String="^\s*\S" column="0" lookAhead="true"/>
+      </context>
+
+      <context name="content-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="content-list##Markdown" includeAttrib="true"/>
+      </context>
+
+      <context name="blockquote" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="blockquote##Markdown" includeAttrib="true"/>
+      </context>
+      <context name="blockquote-list" attribute="Markdown" lineEndContext="#stay" lineEmptyContext="#pop">
+        <IncludeRules context="Common"/>
+        <IncludeRules context="blockquote-list##Markdown" includeAttrib="true"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Markdown" defStyleNum="dsNormal"/>
+      <itemData name="Structure" defStyleNum="dsRegionMarker"/>
+      <itemData name="MathMode" defStyleNum="dsRegionMarker" color="#00A000"/>
+      <itemData name="Document Headers" defStyleNum="dsOthers"/>
+
+      <itemData name="Blockquote" defStyleNum="dsAttribute" spellChecking="false"/>
+      <itemData name="List" defStyleNum="dsSpecialString" bold="1" spellChecking="false"/>
+      <itemData name="Number List" defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="List: Horizontal Rule" defStyleNum="dsNormal" bold="true" spellChecking="false"/>
+      <itemData name="List: Code" defStyleNum="dsInformation"/>
+      <itemData name="List: Checkbox" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Backslash Escape" defStyleNum="dsSpecialChar" spellChecking="false"/>
+    </itemDatas>
+
+  </highlighting>
+
+  <general>
+    <keywords additionalDeliminator="`"/>
+    <comments>
+      <comment name="multiLine" start="&lt;!--" end="--&gt;"/>
+    </comments>
+  </general>
+
+</language>
diff --git a/xml/roff.xml b/xml/roff.xml
--- a/xml/roff.xml
+++ b/xml/roff.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!ENTITY roffidc "[^]\s]">
   <!ENTITY roffid  "(?:&roffidc;|\(&roffidc;{2}|\[&roffidc;+\])">
@@ -15,7 +15,7 @@
   <!ENTITY escape2 "\\[gkmMVYz]&roffid;">
   <!ENTITY escape3 "\\O([0-4]|\[5[lrci][^]]\])">
 ]>
-<language name="Roff" section="Markup" version="8" kateversion="5.0" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
+<language name="Roff" section="Markup" version="9" kateversion="5.0" extensions="" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="GPL">
 
   <highlighting>
 
@@ -83,6 +83,7 @@
       <context name="Comment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <IncludeRules context="##Comments"/>
+        <DetectIdentifier />
       </context>
 
       <!-- error -->
@@ -92,7 +93,6 @@
       <context name="Directive" attribute="Identifier" lineEndContext="#pop">
         <Float attribute="Number" context="#stay"/>
         <Int attribute="Number" context="#stay"/>
-        <Detect2Chars attribute="Comment" context="Comment" char="\" char1="&quot;"/>
         <IncludeRules context="DetectOthers"/>
       </context>
 
@@ -154,9 +154,8 @@
 
       <!-- .ds directive -->
       <context name="dsDirective" attribute="Identifier" lineEndContext="#pop">
-        <Int attribute="Number" context="#stay"/>
         <Float attribute="Number" context="#stay"/>
-        <Detect2Chars attribute="Comment" context="Comment" char="\" char1="&quot;"/>
+        <Int attribute="Number" context="#stay"/>
         <DetectChar attribute="String" context="dsString" char="&quot;"/>
         <IncludeRules context="DetectOthers"/>
       </context>
diff --git a/xml/rtf.xml b/xml/rtf.xml
new file mode 100644
--- /dev/null
+++ b/xml/rtf.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [ <!ENTITY number "([-]?\d+)"> ] >
+<language name="Rich Text Format" version="4" kateversion="2.4" section="Markup" extensions="*.rtf" mimetype="text/rtf;application/rtf" author="Lukas Sommer" license="LGPL version 2.1, or version 3 or later versions approved by the membership of KDE e.V.; or any other license appoved by the emembership of KDE e.V.">
+
+  <highlighting>
+    
+    <contexts>
+
+      <context attribute="Text" lineEndContext="#stay" name="context_normal">
+        <DetectChar char="{" attribute="Braces" beginRegion="true" />
+        <DetectChar char="}" attribute="Braces" endRegion="true" />
+        <DetectChar char="\" lookAhead="true" context="context_process_backslash" />
+      </context>
+
+      <context lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" attribute="Numeric parameter" name="context_process_backslash">
+        <Detect2Chars char="\" char1="|" attribute="Control words" />
+        <Detect2Chars char="\" char1="~" attribute="Character" />
+        <Detect2Chars char="\" char1="-" attribute="Character" />
+        <Detect2Chars char="\" char1="_" attribute="Character" />
+        <Detect2Chars char="\" char1=":" attribute="Control words" />
+        <Detect2Chars char="\" char1="*" attribute="Control words" />
+        <Detect2Chars char="\" char1="\" attribute="Character" />
+        <Detect2Chars char="\" char1="{" attribute="Character" />
+        <Detect2Chars char="\" char1="}" attribute="Character" />
+        <RegExpr String="\\u&number;|\\'[01-9a-f]{2}" attribute="Character"/>
+        <RegExpr String="\\[a-zA-Z]+" attribute="Control words" context="context_functionparameter" />
+        <DetectChar char="\" attribute="Error" />
+      </context>
+
+      <context attribute="Control words" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop" name="context_functionparameter">
+        <RegExpr String="[-]?\d+" attribute="Numeric parameter" context="#pop#pop" />
+        <DetectChar char="-" attribute="Error" />
+      </context>
+
+    </contexts>
+    
+    <itemDatas>
+      <itemData name="Text" defStyleNum="dsString"/>
+      <itemData name="Character" defStyleNum="dsChar"/>
+      <itemData name="Braces" defStyleNum="dsKeyword"/>
+      <itemData name="Control words" defStyleNum="dsFunction"/>
+      <itemData name="Numeric parameter" defStyleNum="dsDecVal"/>
+      <itemData name="Error" defStyleNum="dsError"/>
+    </itemDatas>
+    
+  </highlighting>
+  
+</language>
diff --git a/xml/ruby.xml b/xml/ruby.xml
--- a/xml/ruby.xml
+++ b/xml/ruby.xml
@@ -1,912 +1,1429 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-
-<!--
-  Ruby syntax highlighting definition for Kate.
-
-  Copyright (C) 2004  by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)
-  Copyright (C) 2004  by Stefan Lang (langstefan@gmx.at)
-  Copyright (C) 2008  by Robin Pedersen (robinpeder@gmail.com)
-  Copyright (C) 2011  by Miquel Sabaté (mikisabate@gmail.com)
-
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Library General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Library General Public License for more details.
-
-  You should have received a copy of the GNU Library General Public
-  License along with this library; if not, write to the
-  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-  Boston, MA  02110-1301, USA.
--->
-
-<!--
-    TODO: Division after gdl contexts is interpreted as regexp
--->
-
-<!-- Hold the "language" opening tag on a single line, as mentioned in "language.dtd". -->
-<language name="Ruby" section="Scripts"
-	  version="16" kateversion="5.0"
-	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile"
-	  mimetype="application/x-ruby"
-	  style="ruby" indenter="ruby"
-	  author="Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi), Robin Pedersen (robinpeder@gmail.com), Miquel Sabaté (mikisabate@gmail.com)" license="LGPLv2+">
-
-	<highlighting>
-
-		<list name="keywords">
-			<item>BEGIN</item>
-			<item>END</item>
-			<item>and</item>
-			<item>begin</item>
-			<item>break</item>
-			<item>case</item>
-			<item>defined?</item>
-			<item>do</item>
-			<item>else</item>
-			<item>elsif</item>
-			<item>end</item>
-			<item>ensure</item>
-			<item>for</item>
-			<item>if</item>
-			<item>in</item>
-			<item>next</item>
-			<item>not</item>
-			<item>or</item>
-			<item>redo</item>
-			<item>rescue</item>
-			<item>retry</item>
-			<item>return</item>
-			<item>then</item>
-			<item>unless</item>
-			<item>until</item>
-			<item>when</item>
-			<item>yield</item>
-		</list>
-
-		<list name="access-control">
-			<item>private_class_method</item>
-			<item>private</item>
-			<item>protected</item>
-			<item>public_class_method</item>
-			<item>public</item>
-		</list>
-
-		<list name="attribute-definitions">
-			<item>attr_reader</item>
-			<item>attr_writer</item>
-			<item>attr_accessor</item>
-		</list>
-
-		<list name="definitions">
-			<item>alias</item>
-			<item>module</item>
-			<item>class</item>
-			<item>def</item>
-			<item>undef</item>
-		</list>
-
-		<list name="pseudo-variables">
-			<item>self</item>
-			<item>super</item>
-			<item>nil</item>
-			<item>false</item>
-			<item>true</item>
-			<item>caller</item>
-			<item>__FILE__</item>
-			<item>__LINE__</item>
-		</list>
-
-		<list name="default-globals">
-			<item>$stdout</item>
-			<item>$defout</item>
-			<item>$stderr</item>
-			<item>$deferr</item>
-			<item>$stdin</item>
-		</list>
-
-		<!-- Kernel module methods.
-			NOTE: Methods ending in ? or !
-				are included below as regexes.
-		-->
-		<list name="kernel-methods">
-			<!-- backquote ` -->
-			<item>abort</item>
-			<item>at_exit</item>
-			<item>autoload</item>
-			<item>autoload?</item>
-			<item>binding</item>
-			<item>block_given?</item>
-			<item>callcc</item>
-			<item>caller</item>
-			<item>catch</item>
-			<item>chomp</item>
-			<item>chomp!</item>
-			<item>chop</item>
-			<item>chop!</item>
-			<item>eval</item>
-			<item>exec</item>
-			<item>exit</item>
-			<item>exit!</item>
-			<item>fail</item>
-			<item>fork</item>
-			<item>format</item>
-			<item>getc</item>
-			<item>gets</item>
-			<item>global_variables</item>
-			<item>gsub</item>
-			<item>gsub!</item>
-			<item>iterator?</item>
-			<item>lambda</item>
-			<item>load</item>
-			<item>local_variables</item>
-			<item>loop</item>
-			<item>method_missing</item>
-			<item>open</item>
-			<item>p</item>
-			<item>print</item>
-			<item>printf</item>
-			<item>proc</item>
-			<item>putc</item>
-			<item>puts</item>
-			<item>raise</item>
-			<item>rand</item>
-			<item>readline</item>
-			<item>readlines</item>
-			<item>require</item>
-			<item>require_relative</item>
-			<item>scan</item>
-			<item>select</item>
-			<item>set_trace_func</item>
-			<item>sleep</item>
-			<item>split</item>
-			<item>sprintf</item>
-			<item>srand</item>
-			<item>sub</item>
-			<item>sub!</item>
-			<item>syscall</item>
-			<item>system</item>
-			<item>test</item>
-			<item>throw</item>
-			<item>trace_var</item>
-			<item>trap</item>
-			<item>untrace_var</item>
-			<item>warn</item>
-		</list>
-
-		<list name="mixin-methods">
-			<item>extend</item>
-			<item>include</item>
-			<item>prepend</item>
-		</list>
-
-		<contexts>
-			<context name="Normal" attribute="Normal Text" lineEndContext="#stay">
-				<!-- ruby ignores newline after \ -->
-				<LineContinue attribute="Normal Text" context="Line Continue"/>
-
-				<!-- __END__ token on own line. -->
-				<RegExpr attribute="Keyword" String="^__END__$" context="DATA" column="0"/>
-
-				<!-- "shebang" line -->
-				<RegExpr attribute="Keyword" String="^#!\/.*" context="#stay" column="0"/>
-
-				<!-- "def" - "end" blocks -->
-				<!-- check for statement modifiers with regexes -->
-				<DetectChar attribute="Operator" char="{" context="Find closing block brace" beginRegion="def block"/>
-				<DetectChar attribute="Delimiter" char="}" context="check_div_1" endRegion="def block"/>
-				<RegExpr attribute="Keyword" String="[=([]\s*(if|unless|while|until)\b|(while|until)\b(?!.*\bdo\b)|\;\s*(while|until)\b(?!.*\bdo\b)|\;\s*(if|unless)\b" context="#stay" beginRegion="def block"/>
-				<RegExpr attribute="Keyword" String="(if|unless)\b" context="#stay" beginRegion="def block" firstNonSpace="true"/>
-				<WordDetect attribute="Keyword" String="class" context="no_heredoc" beginRegion="def block"/>
-				<WordDetect attribute="Keyword" String="module" context="#stay" beginRegion="def block"/>
-				<WordDetect attribute="Keyword" String="begin" context="#stay" beginRegion="def block"/>
-				<RegExpr attribute="Keyword" String="\bfor\b(?!.*\bdo\b)" context="#stay" beginRegion="def block"/>
-				<WordDetect attribute="Keyword" String="case" context="#stay" beginRegion="def block"/>
-				<WordDetect attribute="Keyword" String="do" context="#stay" beginRegion="def block"/>
-				<WordDetect attribute="Keyword" String="def" context="#stay" beginRegion="def block"/>
-				<WordDetect attribute="Keyword" String="end" context="#stay" endRegion="def block"/>
-				<!-- elsif/else close the current block and start a new one -->
-				<RegExpr attribute="Keyword" String="\b(else|elsif|rescue|ensure)\b" context="#stay" endRegion="def block" beginRegion="def block"/>
-
-				<StringDetect attribute="Operator" String="..." context="#stay"/>
-				<Detect2Chars attribute="Operator" char="." char1="." context="#stay"/>
-
-				<!-- marks a message (being sent, not defined) -->
-				<RegExpr attribute="Message" String="\.[_a-z][_a-zA-Z0-9]*(\?|\!|\b)" context="check_div_2"/>
-
-				<!-- Check for "ASCII code operator". e.g.: ?a -->
-				<RegExpr attribute="Dec" String="\s\?(\\M\-)?(\\C\-)?\\?\S" context="check_div_1"/>
-
-				<keyword attribute="Keyword" String="keywords" context="#stay"/>
-				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="check_div_2"/>
-				<keyword attribute="Access Control" String="access-control" context="check_div_2"/>
-				<keyword attribute="Definition" String="definitions"  context="#stay" />
-				<keyword attribute="Pseudo variable" String="pseudo-variables"  context="check_div_1"/>
-				<keyword attribute="Default globals" String="default-globals" context="check_div_2"/>
-				<keyword attribute="Kernel methods" String="kernel-methods" context="check_div_2"/>
-				<keyword attribute="Module mixin methods" String="mixin-methods" context="check_div_2"/>
-
-				<!-- (global) vars starting with $
-						Match them before $_.
-				-->
-				<RegExpr attribute="Global Variable" String="\$[a-zA-Z_0-9]+|\$\-[a-zA-Z_]\b" context="check_div_1"/>
-				<!-- special-character globals -->
-				<RegExpr attribute="Default globals" String="\$[\d_*`+@;,.~=\!\$:?'/\\\-\&amp;&quot;&gt;&lt;]" context="check_div_1"/>
-				<RegExpr attribute="Global Constant" String="\b[_A-Z]+[A-Z_0-9]+\b" context="check_div_2"/>
-				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
-				<RegExpr attribute="Constant" String="\b[A-Z]+_*([0-9]|[a-z])[_a-zA-Z0-9]*\b" context="check_div_2"/>
-
-				<!-- Numeric values. Note that we have to allow underscores between two digits (thus the creepy regular expressions). -->
-				<RegExpr attribute="Hex" String="\b\-?0[xX]([0-9a-fA-F]|_[0-9a-fA-F])+" context="check_div_1"/>
-				<RegExpr attribute="Bin" String="\b\-?0[bB]([01]|_[01])+" context="check_div_1"/>
-				<RegExpr attribute="Octal" String="\b\-?0[1-7]([0-7]|_[0-7])*" context="check_div_1"/>
-				<RegExpr attribute="Float" String="\b\-?[0-9]([0-9]|_[0-9])*\.[0-9]([0-9]|_[0-9])*([eE]\-?[1-9]([0-9]|_[0-9])*(\.[0-9]*)?)?" context="check_div_1"/>
-				<RegExpr attribute="Dec" String="\b\-?[1-9]([0-9]|_[0-9])*\b" context="check_div_1"/>
-				<Int attribute="Dec" context="check_div_1"/>
-				<HlCChar attribute="Char" context="check_div_1"/>
-
-				<!-- Check for =begin before assignment operator. -->
-				<RegExpr attribute="Blockcomment" String="^=begin(?:\s|$)" context="Embedded documentation" beginRegion="comment block" column="0"/>
-
-				<!-- recognize the beginning of a HEREDOC
-					This uses new features in Kate 2.3 and later
-
-					There is no other chance of keeping heredoc apart from the
-					push operator '<<' than requiring to put space between the operator
-					and the string.
-				-->
-				<RegExpr attribute="Operator" context="find_indented_heredoc" String="\s*&lt;&lt;[-~](?=\w+|[&quot;'`])" beginRegion="HereDocument" />
-				<RegExpr attribute="Operator" context="find_heredoc" String="\s*&lt;&lt;(?=\w+|[&quot;'`])" beginRegion="HereDocument" />
-
-				<DetectChar attribute="Operator" char="." context="#stay"/>
-				<Detect2Chars attribute="Operator" char="&amp;" char1="&amp;" context="#stay"/>
-				<Detect2Chars attribute="Operator" char="|" char1="|" context="#stay"/>
-				<!-- \s! is regexp hack -->
-				<RegExpr attribute="Operator" String="\s[\?\:\%]\s|[|&amp;&lt;&gt;\^\+*~\-=]+|\s!|/=\s" context="#stay"/>
-				<Detect2Chars attribute="Operator" char="%" char1="=" context="#stay"/>
-				<Detect2Chars attribute="Operator" char=":" char1=":" context="Member Access"/>
-
-				<RegExpr attribute="Symbol" String=":(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?|:\[\]=?" context="check_div_1"/>
-
-				<!-- Do not send to "check_div_1" context!:
-				     after detecting these rules (": ") there can be a regular expression (see bug: #361875) -->
-				<RegExpr attribute="Symbol" String="(@{1,2}|\$)?[a-zA-Z_][a-zA-Z0-9_]*[=?!]?: |\[\]=?: " context="#stay"/>
-
-				<DetectChar attribute="String" char="&quot;" context="Quoted String"/>
-				<DetectChar attribute="Raw String" char="'" context="Apostrophed String"/>
-				<DetectChar attribute="Command" char="`" context="Command String"/>
-
-				<Detect2Chars attribute="Normal Text" char="?" char1="#" context="#stay"/>
-
-				<RegExpr attribute="Comment" String="^#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
-				<RegExpr attribute="Comment" String="^#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
-				<DetectChar attribute="Comment" char="#" context="General Comment"/>
-
-				<DetectChar attribute="Delimiter" char="["  context="#stay"/>
-				<DetectChar attribute="Delimiter" char="]"  context="check_div_1"/>
-
-				<RegExpr attribute="Instance Variable" String="@[a-zA-Z_0-9]+" context="check_div_1"/>
-				<RegExpr attribute="Class Variable" String="@@[a-zA-Z_0-9]+" context="check_div_1"/>
-
-				<!-- handle the different regular expression formats -->
-				<DetectChar attribute="Regular Expression" char="/" context="RegEx 1"/>
-
-				<!-- recognize the beginning of a general delimited input format -->
-				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
-				<RegExpr attribute="GDL input" context="find_gdl_input" String="\s*[%](?=[QqxwW]?[^\s])" beginRegion="GdlInput" />
-
-				<DetectChar attribute="Normal Text" char=")" context="check_div_1"/>
-				<DetectIdentifier attribute="Normal Text" context="check_div_2"/>
-
-			</context>
-
-			<!-- In the following contexts, a slash character ('/') is a division operator -->
-			<!-- Everywhere else, it's a regular expression delimiter -->
-
-			<!-- A slash is always a division operator, even if preceeded by whitespace -->
-			<context name="check_div_1" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
-				<DetectSpaces attribute="Normal Text" context="#stay"/>
-				<AnyChar attribute="Operator" String="/%" context="#pop"/>
-			</context>
-
-			<!-- Same as check_div_1, but with double pop to exit the surrounding context -->
-			<context name="check_div_1_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
-				<DetectSpaces attribute="Normal Text" context="#stay"/>
-				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
-			</context>
-
-			<!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->
-			<context name="check_div_2" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
-				<AnyChar attribute="Operator" String="/%" context="#pop"/>
-				<DetectSpaces attribute="Normal Text" context="check_div_2_internal"/>
-			</context>
-
-			<!-- Internal context used by check_div_2 -->
-			<context name="check_div_2_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
-<!-- 				<DetectChar attribute="Operator" char="%" context="#pop#pop"/> -->
-				<RegExpr attribute="Operator" String="[/%](?=\s)" context="#pop#pop"/>
-			</context>
-
-			<!-- Same as check_div_2, but with double pop to exit the surrounding context -->
-			<context name="check_div_2_pop" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
-				<AnyChar attribute="Operator" String="/%" context="#pop#pop"/>
-				<DetectSpaces attribute="Normal Text" context="check_div_2_pop_internal"/>
-			</context>
-
-			<!-- Internal context used by check_div_2_pop -->
-			<context name="check_div_2_pop_internal" attribute="Normal Text" fallthrough="true" fallthroughContext="#pop#pop#pop" lineEndContext="#pop#pop#pop">
-				<DetectChar attribute="Operator" char="%" context="#pop#pop#pop"/>
-				<RegExpr attribute="Operator" String="/(?=\s)" context="#pop#pop#pop"/>
-			</context>
-
-			<context name="Line Continue" attribute="Normal Text" lineEndContext="#pop">
-				<RegExpr attribute="Keyword" String="(while|until)\b(?!.*\bdo\b)|(if|unless)\b" context="#stay" firstNonSpace="true"/>
-				<IncludeRules context="Normal"/>
-			</context>
-
-			<context name="Find closing block brace" attribute="Normal Text" lineEndContext="#stay">
-				<DetectChar attribute="Operator" char="}" context="check_div_1_pop" endRegion="def block"/>
-				<IncludeRules context="Normal"/>
-			</context>
-
-			<context name="Quoted String" attribute="String" lineEndContext="#stay">
-				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
-				<Detect2Chars attribute="String" char="\" char1="&quot;" context="#stay"/>
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
-				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-				<DetectChar char="&quot;" attribute="String" context="check_div_1_pop"/>
-			</context>
-
-			<context name="Apostrophed String" attribute="Raw String" lineEndContext="#stay">
-				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
-				<Detect2Chars attribute="String" char="\" char1="'" context="#stay"/>
-				<DetectChar char="'" attribute="Raw String" context="check_div_1_pop"/>
-			</context>
-
-			<context name="Command String" attribute="Command" lineEndContext="#stay">
-				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
-				<Detect2Chars attribute="String" char="\" char1="`" context="#stay"/>
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
-				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-				<DetectChar char="`" attribute="Command" context="check_div_1_pop"/>
-			</context>
-
-			<context name="Embedded documentation" attribute="Blockcomment" lineEndContext="#stay">
-				<RegExpr attribute="Comment" String="^=end(?:\s.*|$)" context="#pop" endRegion="comment block" column="0"/>
-				<DetectSpaces />
-				<IncludeRules context="##Comments" />
-			</context>
-
-			<context name="RegEx 1" attribute="Regular Expression" lineEndContext="#stay">
-				<Detect2Chars attribute="Regular Expression" char="\" char1="/" context="#stay"/>
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
-				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-				<RegExpr attribute="Regular Expression" String="/[uiomxn]*" context="check_div_1_pop"/>
-			</context>
-
-			<!-- Substitutions can be nested -->
-			<context name="Subst" attribute="Normal Text" lineEndContext="#stay">
-				<DetectChar attribute="Substitution" char="}" context="#pop"/>
-				<!-- Highlight substitution as code. -->
-				<IncludeRules context="Normal"/>
-			</context>
-
-			<context name="Short Subst" attribute="Substitution" lineEndContext="#pop">
-				<!-- Check for e.g.: "#@var#@@xy" -->
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="#stay"/>
-				<RegExpr attribute="Substitution" String="\w(?!\w)" context="#pop"/>
-			</context>
-
-			<!-- This handles access of nested module classes and class methods -->
-			<context name="Member Access" attribute="Member" lineEndContext="#pop">
-				<!-- marks a message (being sent, not defined) -->
-				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?(?=[^\w\d\.\:])" context="check_div_2_pop"/>
-				<RegExpr attribute="Message" String="\.?[_a-z]\w*(\?|\!)?" context="#stay"/>
-				<RegExpr attribute="Constant" String="[A-Z]+_*(\d|[a-z])\w*(?=[^\w\d\.\:])" context="check_div_2_pop"/>
-				<RegExpr attribute="Constant" String="[A-Z]+_*([0-9]|[a-z])\w*" context="#stay"/>
-				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*(?=[^\w\d\.\:])" context="check_div_2_pop"/>
-				<RegExpr attribute="Constant Value" String="[_A-Z][_A-Z0-9]*" context="#stay"/>
-				<Detect2Chars attribute="Operator" char=":" char1=":" context="#stay"/>
-				<DetectChar attribute="Member" char="." context="#stay"/>
-
-				<AnyChar attribute="Operator" String="=+-*/%|&amp;[]{}~" context="#pop"/>
-				<DetectChar attribute="Comment" char="#" context="#pop"/>
-				<AnyChar attribute="Normal Text" String="()\" context="#pop"/>
-				<RegExpr attribute="Member" String="\W" context="#pop"/>
-			</context>
-
-			<context name="General Comment" attribute="Comment" lineEndContext="#pop">
-				<DetectSpaces />
-				<IncludeRules context="##Comments" />
-			</context>
-
-			<!-- HEREDOC support
-				The contexts below support both normal and indented heredocs
-			 -->
-			<!-- here we markup the heredoc markers -->
-			<context name="find_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-				<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'" />
-				<RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
-			</context>
-			<context name="find_indented_heredoc" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-				<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'" />
-				<RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)" />
-			</context>
-			<!-- these are the real heredoc contexts -->
-			<context name="indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
-				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
-				<IncludeRules context="heredoc_rules" />
-			</context>
-			<context name="apostrophed_indented_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
-				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
-			</context>
-
-			<context name="normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
-				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
-				<IncludeRules context="heredoc_rules" />
-			</context>
-			<context name="apostrophed_normal_heredoc" attribute="Here Document" lineEndContext="#stay" dynamic="true">
-				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
-			</context>
-
-			<!-- rules for heredoc types -->
-			<context name="heredoc_rules" attribute="Normal Text" lineEndContext="#stay">
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
-				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-			</context>
-
-			<!-- avoid highlighting heredoc markers, for example, in singleton class definition (see bug: #358273) -->
-			<context name="no_heredoc" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-				<DetectSpaces />
-				<Detect2Chars attribute="Operator" char="&lt;" char1="&lt;" context="#pop"/>
-				<!-- comments -->
-				<RegExpr attribute="Comment" String="^#\s*BEGIN.*$"  context="#stay" beginRegion="marker" column="0"/>
-				<RegExpr attribute="Comment" String="^#\s*END.*$"  context="#stay" endRegion="marker" column="0"/>
-				<DetectChar attribute="Comment" char="#" context="General Comment"/>
-			</context>
-
-			<!-- General delimited input support
-				The contexts below handle the various gdl formats
-			 -->
-			<context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">
-
-				<!-- handle token arrays -->
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="w" char1="(" />
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="w" char1="{" />
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="w" char1="[" />
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="w" char1="&lt;" />
-				<!-- then we handle the 'any char' format -->
-				<RegExpr attribute="GDL input" context="gdl_token_array_5" String="w([^\s\w])" />
-
-				<!-- handle token arrays -->
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_1" char="W" char1="(" />
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_2" char="W" char1="{" />
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_3" char="W" char1="[" />
-				<Detect2Chars attribute="GDL input" context="gdl_token_array_4" char="W" char1="&lt;" />
-				<!-- then we handle the 'any char' format -->
-				<RegExpr attribute="GDL input" context="gdl_token_array_5" String="W([^\s\w])" />
-
-				<!-- handle apostrophed strings -->
-				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_1" char="q" char1="(" />
-				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_2" char="q" char1="{" />
-				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_3" char="q" char1="[" />
-				<Detect2Chars attribute="GDL input" context="gdl_apostrophed_4" char="q" char1="&lt;" />
-				<!-- then we handle the 'any char' format -->
-				<RegExpr attribute="GDL input" context="gdl_apostrophed_5" String="q([^\s\w])" />
-
-				<!-- handle shell commands -->
-				<Detect2Chars attribute="GDL input" context="gdl_shell_command_1" char="x" char1="(" />
-				<Detect2Chars attribute="GDL input" context="gdl_shell_command_2" char="x" char1="{" />
-				<Detect2Chars attribute="GDL input" context="gdl_shell_command_3" char="x" char1="[" />
-				<Detect2Chars attribute="GDL input" context="gdl_shell_command_4" char="x" char1="&lt;" />
-				<!-- then we handle the 'any char' format -->
-				<RegExpr attribute="GDL input" context="gdl_shell_command_5" String="x([^\s\w])" />
-
-				<!-- handle regular expressions -->
-				<Detect2Chars attribute="GDL input" context="gdl_regexpr_1" char="r" char1="(" />
-				<Detect2Chars attribute="GDL input" context="gdl_regexpr_2" char="r" char1="{" />
-				<Detect2Chars attribute="GDL input" context="gdl_regexpr_3" char="r" char1="[" />
-				<Detect2Chars attribute="GDL input" context="gdl_regexpr_4" char="r" char1="&lt;" />
-				<!-- then we handle the 'any char' format -->
-				<RegExpr attribute="GDL input" context="gdl_regexpr_5" String="r([^\s\w])" />
-
-				<!-- handle double-quoted strings -->
-				<!--
-					  be careful to make this the last GDL ruleset, because the rule for
-					  the short form %?foo? will otherwise catch any of the other formats
-				-->
-				<Detect2Chars attribute="GDL input" context="gdl_dq_string_1" char="Q" char1="(" />
-				<Detect2Chars attribute="GDL input" context="gdl_dq_string_2" char="Q" char1="{" />
-				<Detect2Chars attribute="GDL input" context="gdl_dq_string_3" char="Q" char1="[" />
-				<Detect2Chars attribute="GDL input" context="gdl_dq_string_4" char="Q" char1="&lt;" />
-				<DetectChar attribute="GDL input" context="gdl_dq_string_1" char="(" />
-				<DetectChar attribute="GDL input" context="gdl_dq_string_2" char="{" />
-				<DetectChar attribute="GDL input" context="gdl_dq_string_3" char="[" />
-				<DetectChar attribute="GDL input" context="gdl_dq_string_4" char="&lt;" />
-				<!-- then we handle the 'any char' format -->
-				<RegExpr attribute="GDL input" context="gdl_dq_string_5" String="Q?([^\s\w])" />
-
-			</context>
-			<!-- double-quoted string specific contexts follow -->
-			<context name="gdl_dq_string_1" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="dq_string_rules" />
-				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
-				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_dq_string_1_nested" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="dq_string_rules" />
-				<DetectChar attribute="String" context="gdl_dq_string_1_nested" char="(" />
-				<DetectChar attribute="String" context="#pop" char=")" />
-			</context>
-			<!-- note that here substitution should win over nesting -->
-			<context name="gdl_dq_string_2" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="dq_string_rules" />
-				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
-				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
-				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
-			</context>
-			<context name="gdl_dq_string_2_nested" attribute="String" lineEndContext="#stay" >
-				<DetectChar attribute="String" context="gdl_dq_string_2_nested" char="{" />
-				<DetectChar attribute="String" context="#pop" char="}" />
-				<IncludeRules context="dq_string_rules" />
-			</context>
-
-			<context name="gdl_dq_string_3" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="dq_string_rules" />
-				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
-				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_dq_string_3_nested" attribute="String" lineEndContext="#stay" >
-				<DetectChar attribute="String" context="gdl_dq_string_3_nested" char="[" />
-				<DetectChar attribute="String" context="#pop" char="]" />
-				<IncludeRules context="dq_string_rules" />
-			</context>
-
-			<context name="gdl_dq_string_4" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="dq_string_rules" />
-				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
-				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_dq_string_4_nested" attribute="String" lineEndContext="#stay" >
-				<DetectChar attribute="String" context="gdl_dq_string_4_nested" char="&lt;" />
-				<DetectChar attribute="String" context="#pop" char="&gt;" />
-				<IncludeRules context="dq_string_rules" />
-			</context>
-
-			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
-				delimiter character
-			 -->
-			<context name="gdl_dq_string_5" attribute="String" lineEndContext="#stay" dynamic="true">
-				<IncludeRules context="dq_string_rules" />
-				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true" />
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
-			</context>
-			<!-- rules to be included in all dq_string contexts -->
-			<context name="dq_string_rules" attribute="String" lineEndContext="#stay" >
-				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
-				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-			</context>
-
-			<!-- token array specific contexts -->
-
-			<context name="gdl_token_array_1" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<Detect2Chars attribute="String" char="\" char1=")" context="#stay"/>
-				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_token_array_1_nested" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<DetectChar attribute="String" context="gdl_token_array_1_nested" char="(" />
-				<DetectChar attribute="String" context="#pop" char=")" />
-			</context>
-
-			<context name="gdl_token_array_2" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<Detect2Chars attribute="String" char="\" char1="}" context="#stay"/>
-				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
-				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
-			</context>
-			<context name="gdl_token_array_2_nested" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<DetectChar attribute="String" context="gdl_token_array_2_nested" char="{" />
-				<DetectChar attribute="String" context="#pop" char="}" />
-			</context>
-
-			<context name="gdl_token_array_3" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<Detect2Chars attribute="String" char="\" char1="]" context="#stay"/>
-				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_token_array_3_nested" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<DetectChar attribute="String" context="gdl_token_array_3_nested" char="[" />
-				<DetectChar attribute="String" context="#pop" char="]" />
-			</context>
-
-			<context name="gdl_token_array_4" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<Detect2Chars attribute="String" char="\" char1="&gt;" context="#stay"/>
-				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_token_array_4_nested" attribute="String" lineEndContext="#stay" >
-				<IncludeRules context="token_array_rules" />
-				<DetectChar attribute="String" context="gdl_token_array_4_nested" char="&lt;" />
-				<DetectChar attribute="String" context="#pop" char="&gt;" />
-			</context>
-
-			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
-				delimiter character
-			 -->
-			<context name="gdl_token_array_5" attribute="String" lineEndContext="#stay" dynamic="true">
-				<IncludeRules context="token_array_rules" />
-				<StringDetect attribute="String" String="\%1" context="#stay" dynamic="true"/>
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
-			</context>
-
-			<!-- rules to be included in all token_array contexts -->
-			<context name="token_array_rules" attribute="String" lineEndContext="#stay" >
-				<Detect2Chars attribute="String" char="\" char1="\" context="#stay"/>
-			</context>
-
-			<!-- apostrophed string specific contexts -->
-
-			<context name="gdl_apostrophed_1" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<Detect2Chars attribute="Raw String" char="\" char1=")" context="#stay"/>
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_apostrophed_1_nested" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_1_nested" char="(" />
-				<DetectChar attribute="Raw String" context="#pop" char=")" />
-			</context>
-
-			<context name="gdl_apostrophed_2" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<Detect2Chars attribute="Raw String" char="\" char1="}" context="#stay"/>
-				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
-			</context>
-			<context name="gdl_apostrophed_2_nested" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_2_nested" char="{" />
-				<DetectChar attribute="Raw String" context="#pop" char="}" />
-			</context>
-
-			<context name="gdl_apostrophed_3" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<Detect2Chars attribute="Raw String" char="\" char1="]" context="#stay"/>
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_apostrophed_3_nested" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_3_nested" char="[" />
-				<DetectChar attribute="Raw String" context="#pop" char="]" />
-			</context>
-
-			<context name="gdl_apostrophed_4" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<Detect2Chars attribute="Raw String" char="\" char1="&gt;" context="#stay"/>
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_apostrophed_4_nested" attribute="Raw String" lineEndContext="#stay" >
-				<IncludeRules context="apostrophed_rules" />
-				<DetectChar attribute="Raw String" context="gdl_apostrophed_4_nested" char="&lt;" />
-				<DetectChar attribute="Raw String" context="#pop" char="&gt;" />
-			</context>
-
-			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
-				delimiter character
-			 -->
-			<context name="gdl_apostrophed_5" attribute="Raw String" lineEndContext="#stay" dynamic="true">
-				<IncludeRules context="apostrophed_rules" />
-				<StringDetect attribute="Raw String" String="\%1" context="#stay" dynamic="true"/>
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
-			</context>
-
-			<!-- rules to be included in all apostrophed contexts -->
-			<context name="apostrophed_rules" attribute="Raw String" lineEndContext="#stay" >
-				<Detect2Chars attribute="Raw String" char="\" char1="\" context="#stay"/>
-			</context>
-
-			<!-- shell command specific contexts -->
-
-			<context name="gdl_shell_command_1" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<Detect2Chars attribute="Command" char="\" char1=")" context="#stay"/>
-				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char=")" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_shell_command_1_nested" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<DetectChar attribute="Command" context="gdl_shell_command_1_nested" char="(" />
-				<DetectChar attribute="Command" context="#pop" char=")" />
-			</context>
-
-			<context name="gdl_shell_command_2" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<Detect2Chars attribute="Command" char="\" char1="}" context="#stay"/>
-				<DetectChar attribute="GDL input" context="#pop#pop" char="}" endRegion="GdlInput" />
-				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
-			</context>
-			<context name="gdl_shell_command_2_nested" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<DetectChar attribute="Command" context="gdl_shell_command_2_nested" char="{" />
-				<DetectChar attribute="Command" context="#pop" char="}" />
-			</context>
-
-			<context name="gdl_shell_command_3" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<Detect2Chars attribute="Command" char="\" char1="]" context="#stay"/>
-				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="]" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_shell_command_3_nested" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<DetectChar attribute="Command" context="gdl_shell_command_3_nested" char="[" />
-				<DetectChar attribute="Command" context="#pop" char="]" />
-			</context>
-
-			<context name="gdl_shell_command_4" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<Detect2Chars attribute="Command" char="\" char1="&gt;" context="#stay"/>
-				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
-				<DetectChar attribute="GDL input" context="#pop#pop" char="&gt;" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_shell_command_4_nested" attribute="Command" lineEndContext="#stay" >
-				<IncludeRules context="shell_command_rules" />
-				<DetectChar attribute="Command" context="gdl_shell_command_4_nested" char="&lt;" />
-				<DetectChar attribute="Command" context="#pop" char="&gt;" />
-			</context>
-
-			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
-				delimiter character
-			 -->
-			<context name="gdl_shell_command_5" attribute="Command" lineEndContext="#stay" dynamic="true">
-				<IncludeRules context="shell_command_rules" />
-				<StringDetect attribute="Command" String="\%1" context="#stay" dynamic="true" />
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1" dynamic="true" endRegion="GdlInput" />
-			</context>
-
-			<!-- rules to be included in all shell_command contexts -->
-			<context name="shell_command_rules" attribute="Command" lineEndContext="#stay" >
-				<Detect2Chars attribute="Command" char="\" char1="\" context="#stay"/>
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
-				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-			</context>
-
-			<!-- regular expression specific contexts -->
-
-			<context name="gdl_regexpr_1" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<Detect2Chars attribute="Regular Expression" char="\" char1=")" context="#stay"/>
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\)[uiomxn]*" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_regexpr_1_nested" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_1_nested" char="(" />
-				<DetectChar attribute="Regular Expression" context="#pop" char=")" />
-			</context>
-
-			<context name="gdl_regexpr_2" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<Detect2Chars attribute="Regular Expression" char="\" char1="}" context="#stay"/>
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\}[uiomxn]*" endRegion="GdlInput" />
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
-			</context>
-			<context name="gdl_regexpr_2_nested" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_2_nested" char="{" />
-				<DetectChar attribute="Regular Expression" context="#pop" char="}" />
-			</context>
-
-			<context name="gdl_regexpr_3" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<Detect2Chars attribute="Regular Expression" char="\" char1="]" context="#stay"/>
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\][uiomxn]*" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_regexpr_3_nested" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_3_nested" char="[" />
-				<DetectChar attribute="Regular Expression" context="#pop" char="]" />
-			</context>
-
-			<context name="gdl_regexpr_4" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<Detect2Chars attribute="Regular Expression" char="\" char1="&gt;" context="#stay"/>
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
-				<RegExpr attribute="GDL input" context="#pop#pop" String="&gt;[uiomxn]*" endRegion="GdlInput" />
-			</context>
-			<context name="gdl_regexpr_4_nested" attribute="Regular Expression" lineEndContext="#stay" >
-				<IncludeRules context="regexpr_rules" />
-				<DetectChar attribute="Regular Expression" context="gdl_regexpr_4_nested" char="&lt;" />
-				<DetectChar attribute="Regular Expression" context="#pop" char="&gt;" />
-			</context>
-
-			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
-				delimiter character
-			 -->
-			<context name="gdl_regexpr_5" attribute="Regular Expression" lineEndContext="#stay" dynamic="true">
-				<IncludeRules context="regexpr_rules" />
-				<StringDetect attribute="Regular Expression" String="\%1" context="#stay" dynamic="true" />
-				<RegExpr attribute="GDL input" context="#pop#pop" String="\s*%1[uiomxn]*" dynamic="true" endRegion="GdlInput" />
-			</context>
-
-			<!-- rules to be included in all regexpr contexts -->
-			<context name="regexpr_rules" attribute="Regular Expression" lineEndContext="#stay" >
-				<Detect2Chars attribute="Regular Expression" char="\" char1="\" context="#stay"/>
-				<RegExpr attribute="Substitution" String="#@{1,2}" context="Short Subst"/>
-				<Detect2Chars attribute="Substitution" char="#" char1="{" context="Subst"/>
-			</context>
-
-			<!-- END of General delimited input support -->
-
-			<!-- handle data in script -->
-			<context name="DATA" attribute="Data" lineEndContext="#stay"/>
-		</contexts>
-
-		<itemDatas>
-			<itemData name="Normal Text" defStyleNum="dsNormal"/>
-
-			<itemData name="Keyword" defStyleNum="dsControlFlow"/>
-			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
-			<itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->
-			<itemData name="Definition" defStyleNum="dsKeyword"/>
-			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
-
-			<itemData name="Dec" defStyleNum="dsDecVal"/>
-			<itemData name="Float" defStyleNum="dsFloat"/>
-			<itemData name="Char" defStyleNum="dsChar"/>
-			<itemData name="Octal" defStyleNum="dsBaseN"/>
-			<itemData name="Hex" defStyleNum="dsBaseN"/>
-			<itemData name="Bin" defStyleNum="dsBaseN"/>
-
-			<itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->
-			<itemData name="String" defStyleNum="dsString"/>
-			<itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->
-			<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->
-			<itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->
-			<itemData name="Regular Expression" defStyleNum="dsSpecialString"/> <!-- #4A5704 -->
-			<itemData name="Substitution"	defStyleNum="dsSpecialChar"/>
-			<itemData name="Data" defStyleNum="dsNormal"/>
-			<!-- short for 'general delimited input' -->
-			<itemData name="GDL input" defStyleNum="dsOthers" />
-
-			<itemData name="Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->
-			<itemData name="Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->
-			<itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->
-			<itemData name="Constant" defStyleNum="dsDataType"/>
-			<itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->
-			<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
-			<itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
-			<itemData name="Member" defStyleNum="dsNormal"/>
-			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
-			<itemData name="Class Variable" defStyleNum="dsOthers"/>
-
-			<itemData name="Comment" defStyleNum="dsComment"/>
-			<itemData name="Blockcomment" defStyleNum="dsComment"/>
-
-			<itemData name="Here Document" defStyleNum="dsDocumentation"/>
-
-			<itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
-			<itemData name="Operator" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
+<!DOCTYPE language[
+		<!ENTITY dec "[0-9](_?[0-9]++)*+">
+		<!ENTITY percent_lit "[QqxwWiIsr]?[^\s[:alnum:]]">
+
+		<!ENTITY ident "[_[:alpha:]]\w*+">
+		<!ENTITY global_constant "(?!^__END__$)(\b_+\d[_\d]*\b|\b(_[_\d]*)?[[:upper:]][_\d[:upper:]]*\b)">
+		<!ENTITY constant "\b[[:upper:]][_\d[:upper:]]*[[:lower:]]\w*">
+		<!ENTITY no_param "abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|__FILE__|for|fork|format|getc|gets|global_variables|if|in|include|lambda|__LINE__|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield|autoload|chomp|chop|exit|gsub|sub">
+		<!-- ignore keyword, constant, class name and symbol (e.g. sym:).
+				Constants can be preceded by ? or !, but this doesn't work with <keyword>
+		-->
+		<!ENTITY is_constant "((_[_\d]*)?[[:upper:]]\w*+|_+\d[_\d]*+\b)([^?!]|$)">
+		<!ENTITY ident_not_kw "\b((?!(abort|alias|and|at_exit|attr_accessor|attr_reader|attr_writer|begin|binding|break|callcc|caller|case|catch|class|def|do|else|elsif|end|ensure|eval|exec|extend|fail|false|for|fork|format|getc|gets|global_variables|if|in|include|lambda|load|local_variables|loop|method_missing|module|next|nil|not|open|or|p|prepend|print|printf|private|private_class_method|proc|protected|public|public_class_method|putc|puts|raise|rand|readline|readlines|redo|refine|require|require_relative|rescue|retry|return|scan|select|self|set_trace_func|sleep|split|sprintf|srand|super|syscall|system|test|then|throw|trace_var|trap|true|undef|unless|until|untrace_var|using|warn|when|while|yield)([^?!\w]|$)|\bautoload([^!\w]|$)|(block_given\?|defined\?|iterator\?)|(chomp|chop|exit|gsub|sub)([^?\w]|$)|&is_constant;)|(?&lt;=[!?])(?=[[:lower:]]))&ident;(?!:)[?!]?">
+		<!ENTITY msg "\b(?!&is_constant;)&ident;[?!]?">
+
+		<!ENTITY special_escape "[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u\{[0-9a-fA-F]{0,6}\}|u[0-9a-fA-F]{4}|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\([^0-7xucCM]|[0-7]{1,3}|x[0-9a-fA-F]{1,2}|$)|[ -BD-LN-\[\]-bd-tv-~])">
+		<!ENTITY escape "\\([^0-7xucCM]|&special_escape;|$)">
+		<!ENTITY partial_escape "[ux][0-9a-fA-F]*|u(\{[0-9a-fA-F]{0,6})?|(c(\\M-)?|C-|M-(\\c|\\C-)?)(\\[xucCM]?)?|c(\\M?)?|C|M(-(\\c?|\\(C-?)?)?)?">
+
+		<!-- https://docs.ruby-lang.org/en/master/globals_rdoc.html -->
+		<!-- $= $, $; are deprecated -->
+		<!ENTITY global_var "\$([!@~&amp;`'+/\\&lt;>._*$?:&quot;=,;]|[0-9]+|-\w|[[:alpha:]]\w*)">
+		<!ENTITY named_global_var "\$((?!(stdin|stdout|stderr|_|LOAD_PATH|LOADED_FEATURES|FILENAME|DEBUG|VERBOSE)\b)[[:alpha:]]\w*|[0-9]+|-(?![ailpFIvWwdx])\w)">
+
+		<!-- without ? : % / < = -->
+		<!ENTITY safe_op "(?:[-+*~^|&amp;]+|===?|&lt;(=>?|(?!&lt;))|[!>]=?|\.\.\.?)">
+		<!ENTITY op1 "&safe_op;++|([?:/&#37;]|&lt;&lt;)&safe_op;*+">
+		<!-- /= %= <<= -->
+		<!-- / spaces -->
+		<!-- % which is not gld -->
+		<!-- << which is not heredoc -->
+		<!-- / or % not preceded with [ -->
+		<!-- nospace / -->
+		<!-- nospace % -->
+		<!-- nospace << -->
+		<!ENTITY op2 "&safe_op;++|[?:](?=\s|$)|([/&#37;]|&lt;&lt;)(?=[\s=]|$)|&#37;(?!&percent_lit;)|&lt;&lt;(?=\s|$|[^-~\w'&quot;`]|[-~][^\w'&quot;`])|(?&lt;![\[\s])([/&#37;]|&lt;&lt;)&safe_op;*+">
+
+		<!ENTITY sym_op "\[\]=?|[-+~]@?|![=~@]?|[/&#37;|^&amp;]|&lt;(=>?)?|>=?|=~|===?|\*\*?">
+		<!ENTITY symbol "&ident;[=?!]?:(?!:)|\[\]=?:">
+]>
+
+<!--
+  Ruby syntax highlighting definition for Kate.
+
+  Copyright (C) 2004  by Sebastian Vuorinen (sebastian dot vuorinen at helsinki dot fi)
+  Copyright (C) 2004  by Stefan Lang (langstefan@gmx.at)
+  Copyright (C) 2008  by Robin Pedersen (robinpeder@gmail.com)
+  Copyright (C) 2011  by Miquel Sabaté (mikisabate@gmail.com)
+  Copyright (C) 2024  by Jonathan Poelen (jonathan.poelen@gmail.com)
+
+  This library is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Library General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+  Library General Public License for more details.
+
+  You should have received a copy of the GNU Library General Public
+  License along with this library; if not, write to the
+  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+  Boston, MA  02110-1301, USA.
+-->
+
+<!--
+https://docs.ruby-lang.org/en/master/syntax_rdoc.html
+
+Ruby syntax has various ambiguous and context-dependent elements
+
+- regex (/patt/), percent literal (%_abc_) and heredoc (<<x) begin with operators.
+    puts %q+1+
+         ~ percent literal
+    puts a %q+1+
+           ~ operator
+  Note that regexes and oercent literal are indecisive because they depend on whether
+  the element on the left is a function or a variable. Therefore we assume a regex.
+    foo /a # (without space after /) operator or regex ?
+- 'do' creates a block (begin/endRegion), but is optional with 'for', 'until' and 'while'.
+    for x in a
+      puts x
+    end
+
+    for x in a do
+      puts x
+    end
+- 'if', 'unless', 'until' and 'while' when preceded by a value are modifiers
+  without closure (not a block region).
+    a += 1 while a < 10
+- '?' which is a function suffix, a literal char or a ternary operator
+    foo??a?1: 2
+    ~~~~ func
+        ~~ char
+          ~ ~ ternary operator
+
+For consistent highlighting and regions, the syntax is split into 3 parts:
+- function call (first element of an expression)
+- operator
+- value
+
+Each token fits into one of its categories and is followed by 1 or more of its
+categories. For example, 'and' is an operator followed by a function call,
+operator or value in order of priority.
+So '/' in 'and /' corresponds to a regex.
+
+Notes:
+- 'do' is a value that creates a block, except in the condition of 'for', 'until' and 'while'.
+- 'if', 'unless', 'until' and 'while' are modifiers only in the value category.
+-->
+
+<!--
+		NOTE This syntax should be synchronized with Haml, for which a ',' and ' |' at
+		the end of a line correspond to a <LineContinue>.
+-->
+
+<language name="Ruby" alternativeNames="RB;JRuby" section="Scripts"
+	  version="21" kateversion="5.79"
+	  extensions="*.rb;*.rjs;*.rxml;*.xml.erb;*.js.erb;*.rake;Rakefile;Gemfile;*.gemspec;Vagrantfile"
+	  mimetype="application/x-ruby"
+	  style="ruby" indenter="ruby"
+	  author="Stefan Lang (langstefan@gmx.at), Sebastian Vuorinen (sebastian.vuorinen@helsinki.fi), Robin Pedersen (robinpeder@gmail.com), Miquel Sabaté (mikisabate@gmail.com), Jonathan Poelen (jonathan.poelen@gmail.com)"
+	  license="LGPLv2+">
+
+	<highlighting>
+
+		<list name="keyword">
+			<item>class</item>
+			<item>def</item>
+			<item>end</item>
+			<item>ensure</item>
+			<item>when</item>
+			<include>keyword-begin-end-cond</include>
+			<include>keyword-block-cond</include>
+			<include>keyword-block-then-value</include>
+			<include>keyword-block</include>
+			<include>keyword-loop</include>
+			<include>keyword-then-stmt</include>
+			<include>keyword-then-value</include>
+		</list>
+
+		<list name="keyword-then-value">
+			<item>break</item>
+			<item>defined?</item>
+			<item>in</item>
+			<item>next</item>
+			<item>redo</item>
+			<item>retry</item>
+			<item>return</item>
+			<item>yield</item>
+		</list>
+
+		<list name="keyword-then-stmt">
+			<item>and</item>
+			<item>not</item>
+			<item>or</item>
+			<item>then</item>
+			<item>BEGIN</item>
+			<item>END</item>
+		</list>
+
+		<list name="keyword-block">
+			<item>begin</item>
+			<item>do</item>
+		</list>
+
+		<list name="keyword-block-then-value">
+			<item>case</item>
+			<item>module</item>
+		</list>
+
+		<!-- keyword with optional 'then' -->
+		<list name="keyword-block-cond">
+			<item>if</item>
+			<item>unless</item>
+		</list>
+
+		<list name="keyword-begin-end-cond">
+			<item>else</item>
+			<item>elsif</item>
+			<item>rescue</item>
+		</list>
+
+		<!-- keyword with optional 'do' -->
+		<list name="keyword-loop">
+			<item>for</item>
+			<item>until</item>
+			<item>while</item>
+		</list>
+
+		<list name="keyword-modifiers">
+			<item>if</item>
+			<item>unless</item>
+			<item>until</item>
+			<item>while</item>
+			<item>rescue</item>
+		</list>
+
+		<list name="access-control">
+			<item>private_class_method</item>
+			<item>private</item>
+			<item>protected</item>
+			<item>public_class_method</item>
+			<item>public</item>
+		</list>
+
+		<list name="attribute-definitions">
+			<item>attr_reader</item>
+			<item>attr_writer</item>
+			<item>attr_accessor</item>
+		</list>
+
+		<list name="definitions">
+			<item>alias</item>
+			<item>module</item>
+			<item>class</item>
+			<item>def</item>
+			<item>undef</item>
+		</list>
+
+		<list name="pseudo-variables">
+			<item>self</item>
+			<item>super</item>
+			<item>nil</item>
+			<item>false</item>
+			<item>true</item>
+			<item>caller</item>
+			<item>__FILE__</item>
+			<item>__LINE__</item>
+		</list>
+
+		<list name="default-globals">
+			<item>$stdout</item>
+			<item>$stderr</item>
+			<item>$stdin</item>
+		</list>
+
+		<!-- Kernel module methods.
+			NOTE: Methods ending in ? or !
+				are included below as regexes.
+		-->
+		<list name="kernel-methods">
+			<!-- backquote ` -->
+			<item>abort</item>
+			<item>at_exit</item>
+			<item>autoload</item>
+			<item>autoload?</item>
+			<item>binding</item>
+			<item>block_given?</item>
+			<item>callcc</item>
+			<item>caller</item>
+			<item>catch</item>
+			<item>chomp</item>
+			<item>chomp!</item>
+			<item>chop</item>
+			<item>chop!</item>
+			<item>eval</item>
+			<item>exec</item>
+			<item>exit</item>
+			<item>exit!</item>
+			<item>fail</item>
+			<item>fork</item>
+			<item>format</item>
+			<item>getc</item>
+			<item>gets</item>
+			<item>global_variables</item>
+			<item>gsub</item>
+			<item>gsub!</item>
+			<item>iterator?</item>
+			<item>lambda</item>
+			<item>load</item>
+			<item>local_variables</item>
+			<item>loop</item>
+			<item>method_missing</item>
+			<item>open</item>
+			<item>p</item>
+			<item>print</item>
+			<item>printf</item>
+			<item>proc</item>
+			<item>putc</item>
+			<item>puts</item>
+			<item>raise</item>
+			<item>rand</item>
+			<item>readline</item>
+			<item>readlines</item>
+			<item>require</item>
+			<item>require_relative</item>
+			<item>scan</item>
+			<item>select</item>
+			<item>set_trace_func</item>
+			<item>sleep</item>
+			<item>split</item>
+			<item>sprintf</item>
+			<item>srand</item>
+			<item>sub</item>
+			<item>sub!</item>
+			<item>syscall</item>
+			<item>system</item>
+			<item>test</item>
+			<item>throw</item>
+			<item>trace_var</item>
+			<item>trap</item>
+			<item>untrace_var</item>
+			<item>warn</item>
+		</list>
+
+		<list name="mixin-methods">
+			<item>extend</item>
+			<item>include</item>
+			<item>prepend</item>
+			<item>refine</item>
+			<item>using</item>
+		</list>
+
+		<contexts>
+			<context name="Normal" attribute="Normal Text" fallthroughContext="Ruby">
+				<!-- "shebang" line -->
+				<StringDetect attribute="Keyword" String="#!/" context="Shebang" column="0"/>
+			</context>
+
+			<context name="Shebang" attribute="Keyword" lineEndContext="#pop">
+			</context>
+
+			<context name="Ruby" attribute="Normal Text" fallthroughContext="Expr">
+				<DetectSpaces attribute="Normal Text"/>
+
+				<AnyChar attribute="Normal Text" String=";("/>
+				<DetectChar attribute="Normal Text" char=")" context="Op1ThenExpr"/>
+
+				<DetectChar attribute="Delimiter" char="]" context="Op1ThenExpr"/>
+
+				<DetectChar attribute="Operator" char="{" beginRegion="brace"/>
+				<DetectChar attribute="Operator" char="}" context="Op1ThenExpr" endRegion="brace"/>
+
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+
+				<DetectChar char="@" context="AtVarMsgParamOrOp2" lookAhead="1"/>
+				<DetectChar char="$" context="VarMsgParamOrOp2" lookAhead="1"/>
+
+				<HlCChar attribute="Char"/>
+				<DetectChar attribute="String" char='"' context="DQuote"/>
+				<DetectChar attribute="Raw String" char="'" context="SQuote"/>
+				<DetectChar attribute="Command" char="`" context="Command String"/>
+				<DetectChar  lookAhead="1" char="." context="MsgParamOrOp2"/>
+
+				<RegExpr attribute="Normal Text" String="&ident_not_kw;" context="MsgParamOrOp2"/>
+
+				<!-- Detects key symbol in a hash
+						 Unfortunately in the absence of a space before ':',
+						 the syntax is ambiguous with a function call containing a symbol.
+
+						 hash:    {sym:foo}
+						 function: foo:sym  <- 'foo:' is considered as a symbol
+				-->
+				<RegExpr attribute="Symbol" String="&symbol;" context="MsgParamOrOp2"/>
+
+				<DetectChar attribute="Delimiter" char="[" context="MsgParamOrOp2"/>
+
+				<keyword attribute="Keyword" String="keyword-block" beginRegion="def block"/>
+				<keyword attribute="Keyword" String="keyword-loop" context="Loop" beginRegion="def block"/>
+				<keyword attribute="Keyword" String="keyword-block-then-value" context="MsgParamOrOp2" beginRegion="def block"/>
+				<keyword attribute="Keyword" String="keyword-begin-end-cond" context="Cond" endRegion="def block" beginRegion="def block"/>
+				<keyword attribute="Keyword" String="keyword-then-stmt"/>
+				<keyword attribute="Keyword" String="keyword-then-value" context="MsgParamOrOp2"/>
+				<keyword attribute="Keyword" String="keyword-block-cond" context="Cond" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="end" context="MsgParamOrOp2" endRegion="def block"/>
+				<WordDetect attribute="Keyword" String="class" context="Op1ThenExpr" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="def" context="DefFn" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="when" context="Cond"/>
+				<WordDetect attribute="Keyword" String="ensure" endRegion="def block" beginRegion="def block"/>
+				<WordDetect attribute="Definition" String="alias" context="Alias"/>
+				<WordDetect attribute="Definition" String="undef" context="Alias"/>
+
+				<keyword attribute="Attribute Definition" String="attribute-definitions"  context="Op2ThenExpr"/>
+				<keyword attribute="Access Control" String="access-control" context="Op2ThenExpr"/>
+				<keyword attribute="Definition" String="definitions" context="Expr"/>
+				<keyword attribute="Pseudo variable" String="pseudo-variables" context="Op1ThenExpr"/>
+				<keyword attribute="Kernel methods" String="kernel-methods" context="Op2ThenExpr"/>
+				<keyword attribute="Module mixin methods" String="mixin-methods" context="Op2ThenExpr"/>
+
+				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
+				<RegExpr attribute="Constant" String="&constant;" context="MsgParamOrOp2"/>
+				<RegExpr attribute="Global Constant" String="&global_constant;" context="MsgParamOrOp2"/>
+
+				<!-- __END__ token on own line. -->
+				<RegExpr attribute="Keyword" String="^__END__$" context="DATA" column="0"/>
+
+				<DetectIdentifier attribute="Normal Text" context="SuffixFunctionMsgParamOrOp2"/>
+
+				<!-- Check for =begin before assignment operator. -->
+				<WordDetect attribute="Blockcomment" String="=begin" context="Embedded documentation" beginRegion="comment block" column="0"/>
+
+				<!-- ruby ignores newline after \ -->
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="SuffixFunctionMsgParamOrOp2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!MsgParamOrOp2">
+				<AnyChar attribute="Normal Text" String="!?" context="#pop!MsgParamOrOp2"/>
+			</context>
+
+
+			<!-- until 'do' or end of line -->
+			<context name="Loop" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="LoopExpr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="{" context="LoopFindBrace" beginRegion="brace"/>
+				<DetectChar attribute="Operator" char="}" context="#pop" lookAhead="1"/>
+				<WordDetect attribute="Keyword" String="do" context="#pop"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+			<context name="LoopFindBrace" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="LoopExpr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="{" context="LoopFindBrace" beginRegion="brace"/>
+				<DetectChar attribute="Operator" char="}" context="#pop!Op1ThenLoopExpr" endRegion="brace"/>
+				<WordDetect attribute="Keyword" String="do" context="#pop" lookAhead="1"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+			<context name="LoopExpr" attribute="Normal Text" lineEndContext="#pop">
+				<WordDetect attribute="Keyword" String="do" context="#pop" lookAhead="1"/>
+				<IncludeRules context="Expr"/>
+			</context>
+
+			<!-- until 'then' or end of line -->
+			<context name="Cond" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="CondExpr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="{" context="CondFindBrace" beginRegion="brace"/>
+				<DetectChar attribute="Operator" char="}" context="#pop" lookAhead="1"/>
+				<WordDetect attribute="Keyword" String="then" context="#pop"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+			<context name="CondFindBrace" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="CondExpr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="{" context="CondFindBrace" beginRegion="brace"/>
+				<DetectChar attribute="Operator" char="}" context="#pop!Op1ThenCondExpr" endRegion="brace"/>
+				<WordDetect attribute="Keyword" String="then" context="#pop" lookAhead="1"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+			<context name="CondExpr" attribute="Normal Text" lineEndContext="#pop">
+				<WordDetect attribute="Keyword" String="then" context="#pop" lookAhead="1"/>
+				<IncludeRules context="Expr"/>
+			</context>
+
+			<!-- after function call
+				Assume that
+						foo /a is a regex but not foo /=a
+						foo %+ is a percent literal
+						foo <<a is a heredoc
+				(This is not true when foo is a variable...)
+			-->
+			<context name="MsgParamOrOp2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Expr">
+				<DetectSpaces attribute="Normal Text"/>
+				<RegExpr attribute="Operator" String="&op2;" context="#pop!Expr"/>
+				<DetectChar attribute="Member" char="." context="MemberAccessCall"/>
+				<StringDetect attribute="Operator" String="::" context="MemberAccessCall"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="MsgFnName" attribute="Normal Text" lineEndContext="#pop#pop#pop" fallthroughContext="#pop!FnParent">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Member" char="." context="MemberAccess"/>
+				<StringDetect attribute="Operator" String="::" context="MemberAccess"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="Expr" attribute="Normal Text" lineEndContext="#pop">
+				<DetectSpaces attribute="Normal Text"/>
+
+				<StringDetect attribute="Operator" String=".." context="Dot2Op"/>
+				<DetectChar attribute="Member" char="." context="MemberAccess"/>
+
+				<DetectChar attribute="Operator" char="=" context="#pop"/>
+
+				<!-- pop to parent for interpolation -->
+				<AnyChar String="{}" context="#pop" lookAhead="1"/>
+
+				<AnyChar attribute="Normal Text" String=";(" context="#pop"/>
+				<DetectChar attribute="Normal Text" char=","/>
+				<DetectChar attribute="Normal Text" char=")" context="Op1"/>
+
+				<DetectChar attribute="Comment" char="#" context="#pop!General Comment"/>
+
+				<DetectChar char="@" context="AtVar" lookAhead="1"/>
+				<DetectChar char="$" context="Var" lookAhead="1"/>
+
+				<DetectChar attribute="Delimiter" char="]" context="Op1"/>
+
+				<HlCChar attribute="Char" context="Op1"/>
+				<DetectChar attribute="String" char='"' context="DQuote"/>
+				<DetectChar attribute="Raw String" char="'" context="SQuote"/>
+				<DetectChar attribute="Command" char="`" context="Command String"/>
+
+				<DetectChar attribute="Regular Expression" char="/" context="RegEx"/>
+				<!-- Check for "ASCII code operator". e.g.: ?a -->
+				<DetectChar char="?" context="MaybeCharLiteral" lookAhead="1"/>
+
+				<AnyChar context="Number" String="0123456789" lookAhead="1"/>
+
+				<RegExpr attribute="Normal Text" String="&ident_not_kw;" context="Op2"/>
+
+				<RegExpr attribute="Symbol" String="&symbol;" context="#pop!MsgParamOrOp2"/>
+
+				<DetectChar attribute="Delimiter" char="[" context="#pop!MsgParamOrOp2"/>
+
+				<StringDetect attribute="Operator" String="::" context="MemberAccess"/>
+
+				<LineContinue attribute="Normal Text"/>
+
+				<keyword attribute="Attribute Definition" String="attribute-definitions" context="Op2"/>
+				<keyword attribute="Access Control" String="access-control" context="Op2"/>
+				<keyword attribute="Pseudo variable" String="pseudo-variables" context="Op1"/>
+				<keyword attribute="Kernel methods" String="kernel-methods" context="Op2"/>
+				<keyword attribute="Module mixin methods" String="mixin-methods" context="Op2"/>
+
+				<keyword attribute="Keyword" String="keyword-modifiers"/>
+
+				<keyword attribute="Keyword" String="keyword-block" beginRegion="def block" context="#pop"/>
+				<keyword attribute="Keyword" String="keyword-loop" context="#pop!Loop" beginRegion="def block"/>
+				<keyword attribute="Keyword" String="keyword-block-then-value" context="#pop!MsgParamOrOp2" beginRegion="def block"/>
+				<keyword attribute="Keyword" String="keyword-begin-end-cond" context="#pop!Cond" endRegion="def block" beginRegion="def block"/>
+				<keyword attribute="Keyword" String="keyword-then-stmt" context="#pop"/>
+				<keyword attribute="Keyword" String="keyword-then-value" context="#pop!MsgParamOrOp2"/>
+				<WordDetect attribute="Keyword" String="end" context="#pop!MsgParamOrOp2" endRegion="def block"/>
+				<WordDetect attribute="Keyword" String="class" context="Op1" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="def" context="#pop!DefFn" beginRegion="def block"/>
+				<WordDetect attribute="Keyword" String="when" context="#pop!Cond"/>
+				<WordDetect attribute="Keyword" String="ensure" context="#pop" endRegion="def block" beginRegion="def block"/>
+				<WordDetect attribute="Definition" String="alias" context="Alias"/>
+				<WordDetect attribute="Definition" String="undef" context="Alias"/>
+
+				<keyword attribute="Definition" String="definitions"/>
+
+				<!-- Generally a module or class name like "File", "MyModule_1", .. -->
+				<RegExpr attribute="Constant" String="&constant;" context="ExprSubClass"/>
+				<RegExpr attribute="Global Constant" String="&global_constant;" context="ExprSubClass"/>
+
+				<RegExpr attribute="Symbol" String=":((@@?|\$)&ident;|&ident;([?]|!(?!=)|=(?![=>~]))?|&sym_op;|(?=['&quot;])|&global_var;)" context="Op1"/>
+
+				<!-- recognize the beginning of a general delimited input format -->
+				<!-- this moves to the next context to separate out the exact nature of the GDL input -->
+				<RegExpr attribute="GDL input" context="find_gdl_input" String="%(?=&percent_lit;)" beginRegion="GdlInput"/>
+
+				<!-- recognize the beginning of a HEREDOC -->
+				<RegExpr attribute="Operator" context="Heredoc" String="&lt;&lt;(?=[-~]?(\w+|'\w+'|&quot;\w+&quot;|`\w+`))" beginRegion="HereDocument"/>
+
+				<!-- should not happen in valid syntax -->
+				<RegExpr attribute="Operator" String="([/%?:]|&lt;&lt;?)&safe_op;*|&safe_op;+"/>
+				<DetectIdentifier attribute="Normal Text" context="SuffixFunction"/>
+			</context>
+
+			<!-- alias / +
+			           ~ never regex
+			     same for undef
+			-->
+			<context name="Alias" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+				<DetectSpaces attribute="Normal Text"/>
+				<AnyChar attribute="Operator" String="-+*~^|&amp;=&lt;>!%/"/>
+				<DetectChar char="$" context="Var" lookAhead="1"/>
+				<DetectChar attribute="String" char='"' context="AliasDQuote"/>
+				<DetectChar attribute="Raw String" char="'" context="AliasSQuote"/>
+				<DetectChar attribute="Normal Text" char=","/>
+				<LineContinue attribute="Normal Text"/>
+				<RegExpr attribute="Symbol" String=":(&ident;[=?!]?|&sym_op;)"/>
+				<RegExpr attribute="Normal Text" String="\b(?!(&no_param;)([^?!\w]|$))&ident;"/>
+			</context>
+			<context name="AliasDQuote" attribute="String">
+				<DetectChar char='"' attribute="String" context="AliasCheckSym"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+			<context name="AliasSQuote" attribute="Raw String">
+				<Detect2Chars attribute="String" char="\" char1="\"/>
+				<Detect2Chars attribute="String" char="\" char1="'"/>
+				<DetectChar char="'" attribute="Raw String" context="AliasCheckSym"/>
+			</context>
+			<context name="AliasCheckSym" attribute="Raw String" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop">
+				<DetectChar char=":" attribute="Symbol" context="#pop#pop"/>
+			</context>
+
+			<context name="Dot2Op" attribute="Operator" lineEndContext="#pop#pop" fallthroughContext="#pop">
+				<!-- triple dot -->
+				<DetectChar attribute="Operator" char="." context="#pop"/>
+			</context>
+
+			<context name="SuffixFunction" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Op2">
+				<AnyChar attribute="Normal Text" String="!?" context="#pop!Op2"/>
+			</context>
+
+			<!-- A slash is always a division operator, even if preceeded by whitespace -->
+			<context name="Op1" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="=" context="#pop#pop"/>
+				<RegExpr attribute="Operator" String="&op1;" context="#pop"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="Op1ThenExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Expr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="=" context="#pop"/>
+				<RegExpr attribute="Operator" String="&op1;" context="#pop!Expr"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="Op1ThenLoopExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!LoopExpr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="=" context="#pop"/>
+				<RegExpr attribute="Operator" String="&op1;" context="#pop!LoopExpr"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="Op1ThenCondExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!CondExpr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="=" context="#pop"/>
+				<RegExpr attribute="Operator" String="&op1;" context="#pop!CondExpr"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<!-- A slash is division operator if it's the first character, or if preceeded and followed by whitespace -->
+			<context name="Op2" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="=" context="#pop#pop"/>
+				<RegExpr attribute="Operator" String="&op2;" context="#pop"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="Op2ThenExpr" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop!Expr">
+				<DetectSpaces attribute="Normal Text"/>
+				<DetectChar attribute="Operator" char="=" context="#pop"/>
+				<RegExpr attribute="Operator" String="&op2;" context="#pop!Expr"/>
+				<LineContinue attribute="Normal Text"/>
+			</context>
+
+			<context name="Var" attribute="Normal Text" lineEndContext="#pop#pop">
+				<!-- (global) vars starting with $ -->
+				<RegExpr attribute="Global Variable" String="&named_global_var;" context="#pop!Op1"/>
+				<!-- special-character globals and other predefined variables -->
+				<RegExpr attribute="Default globals" String="&global_var;" context="#pop!Op1"/>
+				<DetectChar attribute="Error" char="$" context="#pop!Op1"/>
+			</context>
+
+			<context name="VarMsgParamOrOp2" attribute="Normal Text" lineEndContext="#pop">
+				<!-- (global) vars starting with $ -->
+				<RegExpr attribute="Global Variable" String="&named_global_var;" context="#pop!MsgParamOrOp2"/>
+				<!-- special-character globals and other predefined variables -->
+				<RegExpr attribute="Default globals" String="&global_var;" context="#pop!MsgParamOrOp2"/>
+				<DetectChar attribute="Error" char="$" context="#pop!MsgParamOrOp2"/>
+			</context>
+
+			<context name="AtVar" attribute="Normal Text" lineEndContext="#pop#pop">
+				<RegExpr attribute="Instance Variable" String="@&ident;" context="#pop!Op1"/>
+				<RegExpr attribute="Class Variable" String="@@&ident;" context="#pop!Op1"/>
+				<DetectChar attribute="Error" char="@" context="#pop!Op1"/>
+			</context>
+
+			<context name="AtVarMsgParamOrOp2" attribute="Normal Text" lineEndContext="#pop">
+				<RegExpr attribute="Instance Variable" String="@&ident;" context="#pop!MsgParamOrOp2"/>
+				<RegExpr attribute="Class Variable" String="@@&ident;" context="#pop!MsgParamOrOp2"/>
+				<DetectChar attribute="Error" char="@" context="#pop!MsgParamOrOp2"/>
+			</context>
+
+			<!-- def foo() block-statement
+			         ~~~ any ident (including keyword)
+
+			     def Abc::foo() block-statement
+			         ~~~  ~~~ ident (no keyword)
+			-->
+			<context name="DefFn" attribute="Normal Text" fallthroughContext="FnName">
+				<DetectSpaces attribute="Normal Text"/>
+				<LineContinue attribute="Normal Text"/>
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+			</context>
+			<context name="FnName" attribute="Normal Text" fallthroughContext="FnParent">
+				<RegExpr attribute="Normal Text" String="&ident_not_kw;" context="MsgFnName"/>
+
+				<keyword attribute="Attribute Definition" String="attribute-definitions" context="FnParent" weakDeliminator=":"/>
+				<keyword attribute="Access Control" String="access-control" context="FnParent" weakDeliminator=":"/>
+				<keyword attribute="Definition" String="definitions" context="FnParent" weakDeliminator=":"/>
+				<keyword attribute="Pseudo variable" String="pseudo-variables" context="FnParent" weakDeliminator=":"/>
+				<keyword attribute="Kernel methods" String="kernel-methods" context="FnParent" weakDeliminator=":"/>
+				<keyword attribute="Module mixin methods" String="mixin-methods" context="FnParent" weakDeliminator=":"/>
+				<keyword attribute="Keyword" String="keyword" context="FnParent" weakDeliminator=":"/>
+
+				<RegExpr attribute="Operator" String="[-+~]@?|![~@]?|[/%^]|\*\*?|\|\||&amp;&amp;|&lt;(=>?)?|>=?|===?|\*\*?" context="FnParent"/>
+				<RegExpr attribute="Constant" String="&constant;" context="MsgFnName"/>
+				<RegExpr attribute="Global Constant" String="&global_constant;" context="MsgFnName"/>
+
+				<StringDetect attribute="Symbol" String="[]=" context="FnParent"/>
+				<StringDetect attribute="Symbol" String="[]" context="FnParent"/>
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+			</context>
+			<context name="FnParent" attribute="Normal Text" fallthroughContext="#pop#pop#pop">
+				<DetectChar attribute="Normal Text" char="(" context="DefFnParams"/>
+				<DetectSpaces attribute="Normal Text"/>
+				<LineContinue attribute="Normal Text"/>
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+			</context>
+			<context name="DefFnParams" attribute="Normal Text" fallthroughContext="#pop#pop#pop#pop">
+				<DetectChar attribute="Normal Text" char=")" context="#pop#pop#pop#pop"/>
+				<DetectChar attribute="Comment" char="#" context="General Comment"/>
+				<RegExpr attribute="Normal Text" String="([\s,]+|\b(?!(&no_param;)\b|[[:upper:]])&ident;(?=$|[^?!]))++"/>
+				<RegExpr attribute="Constant" String="&constant;"/>
+				<RegExpr attribute="Global Constant" String="&global_constant;"/>
+				<keyword attribute="Attribute Definition" String="attribute-definitions"/>
+				<keyword attribute="Access Control" String="access-control"/>
+				<keyword attribute="Kernel methods" String="kernel-methods"/>
+				<keyword attribute="Module mixin methods" String="mixin-methods"/>
+			</context>
+
+
+			<!-- Numeric values. Note that we have to allow underscores between two digits. -->
+			<context name="Number" attribute="Normal Text" lineEndContext="#pop#pop" fallthroughContext="NumberError">
+				<RegExpr attribute="Dec" String="\b(0[dD]&dec;|(0(\b|(?=[ri]))|[1-9](_?[0-9]++)*+)(?![eE]|[.][0-9]))" context="NumberSuffix"/>
+				<RegExpr attribute="Float" String="\b([1-9](_?[0-9]++)*+|0)(\.&dec;([eE][-+]?&dec;)?|[eE][-+]?&dec;)" context="NumberSuffix"/>
+				<RegExpr attribute="Hex" String="\b0[xX][0-9a-fA-F](_?[0-9a-fA-F]++)*+" context="NumberSuffix"/>
+				<RegExpr attribute="Bin" String="\b0[bB][01](_?[01]++)*+" context="NumberSuffix"/>
+				<RegExpr attribute="Octal" String="\b0[oO]?[0-7](_?[0-7]++)*+" context="NumberSuffix"/>
+				<DetectChar char="0" attribute="Dec" context="NumberError"/>
+			</context>
+
+			<context name="NumberSuffix" attribute="Number Suffix" lineEndContext="#pop#pop" fallthroughContext="#pop!NumberError">
+				<StringDetect attribute="Number Suffix" String="ri" context="#pop!NumberError"/>
+				<AnyChar attribute="Number Suffix" String="ri" context="#pop!NumberError"/>
+			</context>
+
+			<context name="NumberError" attribute="Error" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop!Op1">
+				<DetectIdentifier/>
+				<AnyChar String="0123456789"/>
+			</context>
+
+			<context name="Find closing brace" attribute="Normal Text" fallthroughContext="Expr">
+				<DetectChar attribute="Operator" char="}" context="#pop!Op1ThenExpr" endRegion="brace"/>
+				<IncludeRules context="Ruby"/>
+			</context>
+
+			<!-- "..." -->
+			<context name="DQuote" attribute="String">
+				<DetectChar char='"' attribute="String" context="CheckSym"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<!-- "...": -->
+			<context name="CheckSym" attribute="Raw String" lineEndContext="#pop#pop!Op1" fallthroughContext="#pop#pop!Op1">
+				<DetectChar char=":" attribute="Symbol" context="#pop#pop#pop"/>
+			</context>
+
+			<!-- \ in "..." -->
+			<context name="DQuoteSpecial" attribute="String">
+				<DetectChar char="\" context="DQuoteEscape" lookAhead="1"/>
+				<DetectChar char="#" context="DQuoteSubstitution" lookAhead="1"/>
+			</context>
+			<context name="DQuoteEscape" attribute="String">
+				<RegExpr attribute="String Char" String="&escape;" context="#pop"/>
+				<RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop"/>
+			</context>
+			<context name="DQuoteSubstitution" attribute="String">
+				<StringDetect attribute="Substitution" String="#{" context="#pop!Subst"/>
+				<RegExpr attribute="Substitution" String="#@@?\w+|#&global_var;" context="#pop"/>
+				<DetectChar char="#" context="#pop"/>
+			</context>
+
+			<!-- '...' -->
+			<context name="SQuote" attribute="Raw String">
+				<Detect2Chars attribute="String" char="\" char1="\"/>
+				<Detect2Chars attribute="String" char="\" char1="'"/>
+				<DetectChar char="'" attribute="Raw String" context="CheckSym"/>
+			</context>
+
+			<!-- `...` -->
+			<context name="Command String" attribute="Command">
+				<DetectChar char="`" attribute="Command" context="#pop!Op1"/>
+				<Detect2Chars attribute="String" char="\" char1="\"/>
+				<Detect2Chars attribute="String" char="\" char1="`"/>
+				<DetectChar char="#" context="DQuoteSubstitution" lookAhead="1"/>
+			</context>
+
+			<!-- ?x -->
+			<context name="MaybeCharLiteral" attribute="String" lineEndContext="#pop" fallthroughContext="#pop!Op1">
+				<RegExpr attribute="Operator" String="\?(?=\s|$)" context="#pop"/>
+				<DetectChar attribute="Char Literal" char="?" context="CharLiteral"/>
+			</context>
+			<context name="CharLiteral" attribute="String">
+				<RegExpr attribute="Char" String="[^\\\s]" context="#pop#pop!Op1"/>
+				<RegExpr attribute="String Char" String="&escape;" context="#pop#pop!Op1"/>
+				<RegExpr attribute="Error" String="\\(&partial_escape;|)" context="#pop#pop!Op1"/>
+			</context>
+
+			<context name="Embedded documentation" attribute="Blockcomment">
+				<DetectSpaces/>
+				<IncludeRules context="##Comments"/>
+				<DetectIdentifier/>
+				<WordDetect attribute="Comment" String="=end" context="Embedded documentation End" endRegion="comment block" column="0"/>
+			</context>
+			<context name="Embedded documentation End" attribute="Comment" lineEndContext="#pop#pop">
+			</context>
+
+			<context name="RegEx" attribute="Regular Expression">
+				<DetectChar attribute="Regular Expression" context="RegExMode" char="/"/>
+				<IncludeRules context="RegExSpecial"/>
+			</context>
+			<!-- as DQuoteSpecial, but with \. and \p{...} -->
+			<context name="RegExSpecial" attribute="String Char">
+				<DetectChar char="#" context="DQuoteSubstitution" lookAhead="1"/>
+				<DetectChar char="\" context="RegExEscape" lookAhead="1"/>
+			</context>
+			<context name="RegExEscape" attribute="String">
+				<RegExpr attribute="String Char" String="\\([^0-7xucCMp]|&special_escape;|p\{[-[:alpha:]]*\}|$)" context="#pop"/>
+				<RegExpr attribute="Error" String="\\(&partial_escape;|p\{?|)" context="#pop"/>
+			</context>
+
+			<context name="RegExMode" attribute="String" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Op1">
+				<AnyChar attribute="Regular Expression" String="imxonues"/>
+			</context>
+
+			<!-- Substitutions can be nested -->
+			<context name="Subst" attribute="Normal Text" fallthroughContext="Expr">
+				<DetectChar attribute="Operator" char="{" context="Find closing brace" beginRegion="brace"/>
+				<DetectChar attribute="Substitution" char="}" context="#pop"/>
+				<!-- Highlight substitution as code. -->
+				<IncludeRules context="Ruby"/>
+			</context>
+
+			<!-- This handles access of nested module classes and class methods -->
+			<context name="MemberAccess" attribute="Member" fallthroughContext="#pop!Op1">
+				<DetectSpaces attribute="Normal Text"/>
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="&msg;" context="SubClass"/>
+				<RegExpr attribute="Constant" String="&constant;" context="SubClass"/>
+				<RegExpr attribute="Constant Value" String="&global_constant;" context="SubClass"/>
+				<RegExpr attribute="Operator" String="&sym_op;" context="#pop"/>
+			</context>
+			<context name="SubClass" attribute="Normal Text" fallthroughContext="#pop#pop!Op1" lineEndContext="#pop#pop">
+				<StringDetect attribute="Operator" String="::" context="#pop"/>
+			</context>
+
+			<context name="ExprSubClass" attribute="Normal Text" fallthroughContext="#pop!Op1" lineEndContext="#pop">
+				<StringDetect attribute="Operator" String="::" context="#pop!MemberAccess"/>
+			</context>
+
+			<context name="MemberAccessCall" attribute="Member" fallthroughContext="#pop">
+				<DetectSpaces attribute="Normal Text"/>
+				<!-- marks a message (being sent, not defined) -->
+				<RegExpr attribute="Message" String="&msg;" context="SubClassCall"/>
+				<RegExpr attribute="Constant" String="&constant;" context="SubClassCall"/>
+				<RegExpr attribute="Constant Value" String="&global_constant;" context="SubClassCall"/>
+				<RegExpr attribute="Operator" String="&sym_op;" context="#pop"/>
+			</context>
+			<context name="SubClassCall" attribute="Normal Text" fallthroughContext="#pop#pop" lineEndContext="#pop#pop">
+				<StringDetect attribute="Operator" String="::" context="#pop"/>
+			</context>
+
+			<context name="General Comment" attribute="Comment" lineEndContext="#pop">
+				<DetectSpaces/>
+				<IncludeRules context="##Comments"/>
+				<DetectIdentifier/>
+			</context>
+
+			<!-- HEREDOC support
+				The contexts below support both normal and indented heredocs
+			 -->
+			<!-- here we markup the heredoc markers -->
+			<context name="Heredoc" attribute="Normal Text">
+				<AnyChar attribute="Operator" String="-~" context="#pop!IndentedHeredoc"/>
+				<RegExpr attribute="Keyword" context="apostrophed_normal_heredoc" String="'(\w+)'"/>
+				<RegExpr attribute="Keyword" context="normal_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)"/>
+			</context>
+			<context name="IndentedHeredoc" attribute="Normal Text">
+				<RegExpr attribute="Keyword" context="apostrophed_indented_heredoc" String="'(\w+)'"/>
+				<RegExpr attribute="Keyword" context="indented_heredoc" String="(?|(\w+)|&quot;(\w+)&quot;|`(\w+)`)"/>
+			</context>
+			<!-- these are the real heredoc contexts -->
+			<context name="indented_heredoc" attribute="Here Document">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+			<context name="apostrophed_indented_heredoc" attribute="Here Document">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="%1$" dynamic="true" endRegion="HereDocument" firstNonSpace="true"/>
+			</context>
+
+			<context name="normal_heredoc" attribute="Here Document">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+			<context name="apostrophed_normal_heredoc" attribute="Here Document">
+				<RegExpr attribute="Keyword" context="#pop#pop" String="^%1$" dynamic="true" endRegion="HereDocument" column="0"/>
+			</context>
+
+			<!-- General delimited input support
+				The contexts below handle the various gdl formats
+			 -->
+			<context name="find_gdl_input" attribute="Normal Text" lineEndContext="#pop">
+				<!-- handle double-quoted strings -->
+				<DetectChar attribute="GDL input" context="%Q(" char="("/>
+				<DetectChar attribute="GDL input" context="%Q{" char="{"/>
+				<DetectChar attribute="GDL input" context="%Q[" char="["/>
+				<DetectChar attribute="GDL input" context="%Q&lt;" char="&lt;"/>
+				<StringDetect attribute="GDL input" context="%Q(" String="Q("/>
+				<StringDetect attribute="GDL input" context="%Q{" String="Q{"/>
+				<StringDetect attribute="GDL input" context="%Q[" String="Q["/>
+				<StringDetect attribute="GDL input" context="%Q&lt;" String="Q&lt;"/>
+
+				<!-- handle token arrays -->
+				<StringDetect attribute="GDL input" context="%Q(" String="W("/>
+				<StringDetect attribute="GDL input" context="%Q{" String="W{"/>
+				<StringDetect attribute="GDL input" context="%Q[" String="W["/>
+				<StringDetect attribute="GDL input" context="%Q&lt;" String="W&lt;"/>
+
+				<!-- handle token arrays -->
+				<StringDetect attribute="GDL input" context="%Q(" String="I("/>
+				<StringDetect attribute="GDL input" context="%Q{" String="I{"/>
+				<StringDetect attribute="GDL input" context="%Q[" String="I["/>
+				<StringDetect attribute="GDL input" context="%Q&lt;" String="I&lt;"/>
+
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="%Q_" String="[QWI]?([^[:alnum:]])"/>
+
+				<!-- handle token arrays -->
+				<StringDetect attribute="GDL input" context="%w(" String="w("/>
+				<StringDetect attribute="GDL input" context="%w{" String="w{"/>
+				<StringDetect attribute="GDL input" context="%w[" String="w["/>
+				<StringDetect attribute="GDL input" context="%w&lt;" String="w&lt;"/>
+
+				<!-- handle token arrays -->
+				<StringDetect attribute="GDL input" context="%w(" String="i("/>
+				<StringDetect attribute="GDL input" context="%w{" String="i{"/>
+				<StringDetect attribute="GDL input" context="%w[" String="i["/>
+				<StringDetect attribute="GDL input" context="%w&lt;" String="i&lt;"/>
+
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="%w_" String="[wi]([^[:alnum:]])"/>
+
+				<!-- handle apostrophed strings -->
+				<StringDetect attribute="GDL input" context="%q(" String="q("/>
+				<StringDetect attribute="GDL input" context="%q{" String="q{"/>
+				<StringDetect attribute="GDL input" context="%q[" String="q["/>
+				<StringDetect attribute="GDL input" context="%q&lt;" String="q&lt;"/>
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="%q_" String="q([^[:alnum:]])"/>
+
+				<!-- handle token arrays -->
+				<StringDetect attribute="GDL input" context="%s(" String="s("/>
+				<StringDetect attribute="GDL input" context="%s{" String="s{"/>
+				<StringDetect attribute="GDL input" context="%s[" String="s["/>
+				<StringDetect attribute="GDL input" context="%s&lt;" String="s&lt;"/>
+				<!-- then ie handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="%s_" String="s([^[:alnum:]])"/>
+
+				<!-- handle regular expressions -->
+				<StringDetect attribute="GDL input" context="%r(" String="r("/>
+				<StringDetect attribute="GDL input" context="%r{" String="r{"/>
+				<StringDetect attribute="GDL input" context="%r[" String="r["/>
+				<StringDetect attribute="GDL input" context="%r&lt;" String="r&lt;"/>
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="%r_" String="r([^[:alnum:]])"/>
+
+				<!-- handle shell commands -->
+				<StringDetect attribute="GDL input" context="%x(" String="x("/>
+				<StringDetect attribute="GDL input" context="%x{" String="x{"/>
+				<StringDetect attribute="GDL input" context="%x[" String="x["/>
+				<StringDetect attribute="GDL input" context="%x&lt;" String="x&lt;"/>
+				<!-- then we handle the 'any char' format -->
+				<RegExpr attribute="GDL input" context="%x_" String="x([^[:alnum:]])"/>
+			</context>
+
+
+			<!-- double-quoted string specific contexts follow -->
+
+			<context name="%Q(" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput" />
+				<IncludeRules context="%Q(_rule"/>
+			</context>
+			<context name="%Q(_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char=")"/>
+				<IncludeRules context="%Q(_rule"/>
+			</context>
+			<context name="%Q(_rule" attribute="String">
+				<DetectChar attribute="String" context="%Q(_nested" char="("/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<!-- note that here substitution should win over nesting -->
+			<context name="%Q{" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput" />
+				<IncludeRules context="%Q{_rule"/>
+			</context>
+			<context name="%Q{_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char="}"/>
+				<IncludeRules context="%Q{_rule"/>
+			</context>
+			<context name="%Q{_rule" attribute="String">
+				<DetectChar attribute="String" context="%Q{_nested" char="{"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<context name="%Q[" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput" />
+				<IncludeRules context="%Q[_rule"/>
+			</context>
+			<context name="%Q[_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char="]"/>
+				<IncludeRules context="%Q[_rule"/>
+			</context>
+			<context name="%Q[_rule" attribute="String">
+				<DetectChar attribute="String" context="%Q[_nested" char="["/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<context name="%Q&lt;" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput" />
+				<IncludeRules context="%Q&lt;_rule"/>
+			</context>
+			<context name="%Q&lt;_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char=">"/>
+				<IncludeRules context="%Q&lt;_rule"/>
+			</context>
+			<context name="%Q&lt;_rule" attribute="String">
+				<DetectChar attribute="String" context="%Q&lt;_nested" char="&lt;"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="%Q_" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="1" dynamic="true" endRegion="GdlInput" />
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+
+			<!-- token array specific contexts -->
+
+			<context name="%w(" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput"/>
+				<IncludeRules context="%w(_rule"/>
+			</context>
+			<context name="%w(_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char=")"/>
+				<IncludeRules context="%w(_rule"/>
+			</context>
+			<context name="%w(_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%w(_nested" char="("/>
+				<Detect2Chars attribute="String Char" char="\" char1=" "/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1=")"/>
+				<Detect2Chars attribute="String Char" char="\" char1="("/>
+			</context>
+
+			<context name="%w{" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput"/>
+				<IncludeRules context="%w{_rule"/>
+			</context>
+			<context name="%w{_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char="}"/>
+				<IncludeRules context="%w{_rule"/>
+			</context>
+			<context name="%w{_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%w{_nested" char="{"/>
+				<Detect2Chars attribute="String Char" char="\" char1=" "/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1="}"/>
+				<Detect2Chars attribute="String Char" char="\" char1="{"/>
+			</context>
+
+			<context name="%w[" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput"/>
+				<IncludeRules context="%w[_rule"/>
+			</context>
+			<context name="%w[_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char="]"/>
+				<IncludeRules context="%w[_rule"/>
+			</context>
+			<context name="%w[_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%w[_nested" char="["/>
+				<Detect2Chars attribute="String Char" char="\" char1=" "/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1="]"/>
+				<Detect2Chars attribute="String Char" char="\" char1="["/>
+			</context>
+
+			<context name="%w&lt;" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput"/>
+				<IncludeRules context="%w&lt;_rule"/>
+			</context>
+			<context name="%w&lt;_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char=">"/>
+				<IncludeRules context="%w&lt;_rule"/>
+			</context>
+			<context name="%w&lt;_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%w&lt;_nested" char="&lt;"/>
+				<Detect2Chars attribute="String Char" char="\" char1=" "/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1=">"/>
+				<Detect2Chars attribute="String Char" char="\" char1="&lt;"/>
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="%w_" attribute="Raw String">
+				<Detect2Chars attribute="String Char" char="\" char1=" "/>
+				<IncludeRules context="%q_"/>
+			</context>
+
+
+			<!-- apostrophed string specific contexts -->
+
+			<context name="%q(" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput"/>
+				<IncludeRules context="%q(_rule"/>
+			</context>
+			<context name="%q(_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char=")"/>
+				<IncludeRules context="%q(_rule"/>
+			</context>
+			<context name="%q(_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%q(_nested" char="("/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1=")"/>
+				<Detect2Chars attribute="String Char" char="\" char1="("/>
+			</context>
+
+			<context name="%q{" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput"/>
+				<IncludeRules context="%q{_rule"/>
+			</context>
+			<context name="%q{_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char="}"/>
+				<IncludeRules context="%q{_rule"/>
+			</context>
+			<context name="%q{_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%q{_nested" char="{"/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1="}"/>
+				<Detect2Chars attribute="String Char" char="\" char1="{"/>
+			</context>
+
+			<context name="%q[" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput"/>
+				<IncludeRules context="%q[_rule"/>
+			</context>
+			<context name="%q[_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char="]"/>
+				<IncludeRules context="%q[_rule"/>
+			</context>
+			<context name="%q[_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%q[_nested" char="["/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1="]"/>
+				<Detect2Chars attribute="String Char" char="\" char1="["/>
+			</context>
+
+			<context name="%q&lt;" attribute="Raw String">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput"/>
+				<IncludeRules context="%q&lt;_rule"/>
+			</context>
+			<context name="%q&lt;_nested" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="#pop" char=">"/>
+				<IncludeRules context="%q&lt;_rule"/>
+			</context>
+			<context name="%q&lt;_rule" attribute="Raw String">
+				<DetectChar attribute="Raw String" context="%q&lt;_nested" char="&lt;"/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1=">"/>
+				<Detect2Chars attribute="String Char" char="\" char1="&lt;"/>
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="%q_" attribute="Raw String">
+				<Detect2Chars attribute="Raw String" char="\" char1="\"/>
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="1" dynamic="true" endRegion="GdlInput" />
+				<StringDetect attribute="String Char" String="\%1" dynamic="true"/>
+			</context>
+
+
+			<!-- symbol string specific contexts -->
+
+			<context name="%s(" attribute="Symbol">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput"/>
+				<IncludeRules context="%s(_rule"/>
+			</context>
+			<context name="%s(_nested" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="#pop" char=")"/>
+				<IncludeRules context="%s(_rule"/>
+			</context>
+			<context name="%s(_rule" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="%s(_nested" char="("/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1=")"/>
+				<Detect2Chars attribute="String Char" char="\" char1="("/>
+			</context>
+
+			<context name="%s{" attribute="Symbol">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput"/>
+				<IncludeRules context="%s{_rule"/>
+			</context>
+			<context name="%s{_nested" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="#pop" char="}"/>
+				<IncludeRules context="%s{_rule"/>
+			</context>
+			<context name="%s{_rule" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="%s{_nested" char="{"/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1="}"/>
+				<Detect2Chars attribute="String Char" char="\" char1="{"/>
+			</context>
+
+			<context name="%s[" attribute="Symbol">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput"/>
+				<IncludeRules context="%s[_rule"/>
+			</context>
+			<context name="%s[_nested" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="#pop" char="]"/>
+				<IncludeRules context="%s[_rule"/>
+			</context>
+			<context name="%s[_rule" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="%s[_nested" char="["/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1="]"/>
+				<Detect2Chars attribute="String Char" char="\" char1="["/>
+			</context>
+
+			<context name="%s&lt;" attribute="Symbol">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput"/>
+				<IncludeRules context="%s&lt;_rule"/>
+			</context>
+			<context name="%s&lt;_nested" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="#pop" char=">"/>
+				<IncludeRules context="%s&lt;_rule"/>
+			</context>
+			<context name="%s&lt;_rule" attribute="Symbol">
+				<DetectChar attribute="Symbol" context="%s&lt;_nested" char="&lt;"/>
+				<Detect2Chars attribute="String Char" char="\" char1="\"/>
+				<Detect2Chars attribute="String Char" char="\" char1=">"/>
+				<Detect2Chars attribute="String Char" char="\" char1="&lt;"/>
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="%s_" attribute="Symbol">
+				<Detect2Chars attribute="Symbol" char="\" char1="\"/>
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="1" dynamic="true" endRegion="GdlInput" />
+				<StringDetect attribute="String Char" String="\%1" dynamic="true"/>
+			</context>
+
+
+			<!-- regular expression specific contexts -->
+
+			<context name="%r(" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop!RegExMode" char=")" endRegion="GdlInput" /> <IncludeRules context="%r(_rule"/>
+			</context>
+			<context name="%r(_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char=")"/>
+				<IncludeRules context="%r(_rule"/>
+			</context>
+			<context name="%r(_rule" attribute="String">
+				<DetectChar attribute="String" context="%r(_nested" char="("/>
+				<IncludeRules context="RegExSpecial"/>
+			</context>
+
+			<context name="%r{" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop!RegExMode" char="}" endRegion="GdlInput" />
+				<IncludeRules context="%r{_rule"/>
+			</context>
+			<context name="%r{_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char="}"/>
+				<IncludeRules context="%r{_rule"/>
+			</context>
+			<context name="%r{_rule" attribute="String">
+				<DetectChar attribute="String" context="%r{_nested" char="{"/>
+				<IncludeRules context="RegExSpecial"/>
+			</context>
+
+			<context name="%r[" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop!RegExMode" char="]" endRegion="GdlInput" />
+				<IncludeRules context="%r[_rule"/>
+			</context>
+			<context name="%r[_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char="]"/>
+				<IncludeRules context="%r[_rule"/>
+			</context>
+			<context name="%r[_rule" attribute="String">
+				<DetectChar attribute="String" context="%r[_nested" char="["/>
+				<IncludeRules context="RegExSpecial"/>
+			</context>
+
+			<context name="%r&lt;" attribute="String">
+				<DetectChar attribute="GDL input" context="#pop!RegExMode" char=">" endRegion="GdlInput" />
+				<IncludeRules context="%r&lt;_rule"/>
+			</context>
+			<context name="%r&lt;_nested" attribute="String">
+				<DetectChar attribute="String" context="#pop" char=">"/>
+				<IncludeRules context="%r&lt;_rule"/>
+			</context>
+			<context name="%r&lt;_rule" attribute="String">
+				<DetectChar attribute="String" context="%r&lt;_nested" char="&lt;"/>
+				<IncludeRules context="RegExSpecial"/>
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="%r_" attribute="Regular Expression">
+				<DetectChar attribute="GDL input" context="#pop!RegExMode" char="1" dynamic="true" endRegion="GdlInput" />
+				<StringDetect attribute="String Char" String="\%1" dynamic="true" />
+				<IncludeRules context="RegExSpecial"/>
+			</context>
+
+
+			<!-- shell command specific contexts -->
+
+			<context name="%x(" attribute="Command">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=")" endRegion="GdlInput" />
+				<IncludeRules context="%x(_rule"/>
+			</context>
+			<context name="%x(_nested" attribute="Command">
+				<DetectChar attribute="Command" context="#pop" char=")"/>
+				<IncludeRules context="%x(_rule"/>
+			</context>
+			<context name="%x(_rule" attribute="Command">
+				<DetectChar attribute="Command" context="%x(_nested" char="("/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<context name="%x{" attribute="Command">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="}" endRegion="GdlInput" />
+				<IncludeRules context="%x{_rule"/>
+			</context>
+			<context name="%x{_nested" attribute="Command">
+				<DetectChar attribute="Command" context="#pop" char="}"/>
+				<IncludeRules context="%x{_rule"/>
+			</context>
+			<context name="%x{_rule" attribute="Command">
+				<DetectChar attribute="Command" context="%x{_nested" char="{"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<context name="%x[" attribute="Command">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char="]" endRegion="GdlInput" />
+				<IncludeRules context="%x[_rule"/>
+			</context>
+			<context name="%x[_nested" attribute="Command">
+				<DetectChar attribute="Command" context="#pop" char="]"/>
+				<IncludeRules context="%x[_rule"/>
+			</context>
+			<context name="%x[_rule" attribute="Command">
+				<DetectChar attribute="Command" context="%x[_nested" char="["/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<context name="%x&lt;" attribute="Command">
+				<DetectChar attribute="GDL input" context="#pop#pop!Op1" char=">" endRegion="GdlInput" />
+				<IncludeRules context="%x&lt;_rule"/>
+			</context>
+			<context name="%x&lt;_nested" attribute="Command">
+				<DetectChar attribute="Command" context="#pop" char=">"/>
+				<IncludeRules context="%x&lt;_rule"/>
+			</context>
+			<context name="%x&lt;_rule" attribute="Command">
+				<DetectChar attribute="Command" context="%x&lt;_nested" char="&lt;"/>
+				<IncludeRules context="DQuoteSpecial"/>
+			</context>
+
+			<!-- this format doesn't allow nesting. it is terminated by the next occurrence of the
+				delimiter character
+			 -->
+			<context name="%x_" attribute="Command">
+				<IncludeRules context="%Q_"/>
+			</context>
+
+			<!-- END of General delimited input support -->
+
+			<!-- handle data in script -->
+			<context name="DATA" attribute="Data"/>
+		</contexts>
+
+		<itemDatas>
+			<itemData name="Normal Text" defStyleNum="dsNormal"/>
+
+			<itemData name="Keyword" defStyleNum="dsControlFlow"/>
+			<itemData name="Attribute Definition" defStyleNum="dsOthers"/>
+			<itemData name="Access Control" defStyleNum="dsAttribute" bold="1"/> <!-- #0000FF -->
+			<itemData name="Definition" defStyleNum="dsKeyword"/>
+			<itemData name="Pseudo variable" defStyleNum="dsDecVal"/>
+
+			<itemData name="Dec" defStyleNum="dsDecVal"/>
+			<itemData name="Float" defStyleNum="dsFloat"/>
+			<itemData name="Octal" defStyleNum="dsBaseN"/>
+			<itemData name="Hex" defStyleNum="dsBaseN"/>
+			<itemData name="Bin" defStyleNum="dsBaseN"/>
+			<itemData name="Number Suffix" defStyleNum="dsBuiltIn"/>
+
+			<itemData name="Symbol" defStyleNum="dsWarning" bold="0" underline="0"/> <!-- #D40000 -->
+			<itemData name="String" defStyleNum="dsString"/>
+			<itemData name="String Char" defStyleNum="dsSpecialChar" spellChecking="false"/>
+			<itemData name="Raw String" defStyleNum="dsVerbatimString" /> <!-- #DD4A4A -->
+			<itemData name="Char Literal" defStyleNum="dsSpecialChar" spellChecking="false"/>
+			<itemData name="Char" defStyleNum="dsChar"/>
+
+			<itemData name="Command" defStyleNum="dsInformation"/> <!-- #AA3000 -->
+			<itemData name="Message" defStyleNum="dsAttribute" bold="0"/> <!-- #4000A7 -->
+			<itemData name="Regular Expression" defStyleNum="dsSpecialString" spellChecking="false"/> <!-- #4A5704 -->
+			<itemData name="Substitution"	defStyleNum="dsSpecialChar"/>
+			<itemData name="Data" defStyleNum="dsNormal"/>
+			<!-- short for 'general delimited input' -->
+			<itemData name="GDL input" defStyleNum="dsOthers" />
+
+			<itemData name="Default globals" defStyleNum="dsVariable" bold="1"/> <!-- #C00000 -->
+			<itemData name="Global Variable" defStyleNum="dsVariable"/> <!-- #C00000 -->
+			<itemData name="Global Constant" defStyleNum="dsConstant" bold="1"/> <!-- #bb1188 -->
+			<itemData name="Constant" defStyleNum="dsDataType"/>
+			<itemData name="Constant Value" defStyleNum="dsConstant" bold="0"/> <!-- #bb1188 -->
+			<itemData name="Kernel methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
+			<itemData name="Module mixin methods" defStyleNum="dsFunction" bold="1"/> <!-- #CC0E86 -->
+			<itemData name="Member" defStyleNum="dsAttribute"/>
+			<itemData name="Instance Variable" defStyleNum="dsOthers"/>
+			<itemData name="Class Variable" defStyleNum="dsOthers"/>
+
+			<itemData name="Comment" defStyleNum="dsComment"/>
+			<itemData name="Blockcomment" defStyleNum="dsComment"/>
+
+			<itemData name="Here Document" defStyleNum="dsDocumentation"/>
+
+			<itemData name="Delimiter" defStyleNum="dsKeyword"/> <!-- #FF9FEC -->
+			<itemData name="Operator" defStyleNum="dsOperator" bold="1"/> <!-- #FF9FEC -->
+
+			<itemData name="Error" defStyleNum="dsError"/>
 		</itemDatas>
 	</highlighting>
 	<general>
diff --git a/xml/rust.xml b/xml/rust.xml
--- a/xml/rust.xml
+++ b/xml/rust.xml
@@ -26,7 +26,7 @@
     IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
     DEALINGS IN THE SOFTWARE.
 -->
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
 	<!ENTITY rustIdent "(?:[a-zA-Z_]|[^[:ascii:]])(?:\w|[^[:ascii:]])*">
 	<!ENTITY rustIntSuf "(?:[iu](?:8|16|32|64|128|size)?)?">
@@ -40,7 +40,7 @@
 	<!ENTITY scope2 "::(?=[^\s\:])"> <!-- Points after keyword or group { } -->
 
 ]>
-<language name="Rust" version="13" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" priority="15" license="MIT" author="The Rust Project Developers">
+<language name="Rust" alternativeNames="RS" version="16" kateversion="5.0" section="Sources" extensions="*.rs" mimetype="text/rust" indenter="cstyle" priority="16" license="MIT" author="The Rust Project Developers">
 <highlighting>
 	<list name="fn">
 		<item>fn</item>
@@ -373,6 +373,7 @@
 			<keyword String="fn" attribute="Keyword" context="Function"/>
 			<keyword String="type" attribute="Keyword" context="Type"/>
 			<keyword String="self" attribute="Self" context="#stay"/>
+			<RegExpr String="&scope1;|&scope2;" attribute="Scope"/>
 			<keyword String="keywords" attribute="Keyword" context="#stay"/>
 			<keyword String="controlflow" attribute="Control Flow" context="#stay"/>
 			<keyword String="types" attribute="Type" context="#stay"/>
@@ -386,7 +387,6 @@
 			<RegExpr String="\b0(?:b[01_]*[^01_]|o[0-7_]*[^0-7_]|x[0-9a-fA-F_]*[^0-9a-fA-F_])\w*&rustIntSuf;\b" attribute="Error" context="#stay"/>
 			<Detect2Chars char="#" char1="[" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
 			<StringDetect String="#![" attribute="Attribute" context="Attribute" beginRegion="Attribute"/>
-			<RegExpr String="&scope1;|&scope2;" attribute="Scope"/>
 			<RegExpr String="&rustIdent;!" attribute="Macro"/>
 			<RegExpr String="&apos;&rustIdent;(?!&apos;)" attribute="Lifetime"/>
 			<DetectChar char="{" attribute="Symbol" context="#stay" beginRegion="Brace" />
@@ -491,7 +491,7 @@
 </highlighting>
 <general>
 	<comments>
-		<comment name="singleLine" start="//" />
+		<comment name="singleLine" start="//" position="afterwhitespace" />
 		<comment name="multiLine" start="/*" end="*/" region="Comment"/>
 	</comments>
 	<keywords casesensitive="1" />
diff --git a/xml/sas.xml b/xml/sas.xml
new file mode 100644
--- /dev/null
+++ b/xml/sas.xml
@@ -0,0 +1,1370 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE language [
+    <!ENTITY identifier  "[A-Za-z_]\w*">
+    <!ENTITY datastep    "\bdata\b(?!\s*=)">
+    <!ENTITY proc_data   "\bproc\b|&datastep;">
+    <!ENTITY proc_py     "\bproc\s+python\b">
+    <!ENTITY proc_lua    "\bproc\s+lua\b">
+    <!ENTITY run_quit    "\b(?:run|quit)\s*;">
+    <!ENTITY option_name "\b&identifier;(?=\s*=)">
+    <!ENTITY submit      "\b(?:submit|interactive|i)\b[^;]*;">
+    <!ENTITY endsubmit   "\b(?:endsubmit|endinteractive)\s*;">
+]>
+<!--
+    SPDX-FileCopyrightText: 2026 Michael Walshe <michael.j.t.walshe@gmail.com>
+    SPDX-License-Identifier: MIT
+-->
+<!--
+    SAS syntax highlighting for Kate
+    Author: Michael Walshe
+    License: MIT
+
+    SAS syntax highlighting using VSCode or SAS products (Enterprise Guide, SAS Studio, DM, etc) relies on knowledge
+    of exact options & values required by every procedure/function/statement to correctly highlight only the valid
+    syntax. This is out of scope for this highlighter, which uses general heuristics (such as highlighting <option> = value
+    in options statements) combined with some common SAS keywords to cover most cases.
+ 
+    SAS Language elements implemented:
+        Comments
+            - Block comments        /* ... */
+            - Statement comments    * ... ;
+            - Macro comments        %* ... ;
+        Step boundaries
+            - DATA / RUN step regions (fold)
+            - Generic PROC step regions (fold)
+            - PROC SQL  — delegates to the SQL language definition
+            - PROC PYTHON / PROC LUA — delegates to the Python / Lua definitions
+                (SUBMIT / INTERACTIVE block triggers the embedded-language context)
+        Keywords
+            - Control flow          DO END ELSE IF SELECT THEN UNTIL WHEN WHILE ...
+            - General Statements    ARRAY ATTRIB BY FORMAT INFORMAT INPUT KEEP MERGE OUTPUT PUT RENAME RETAIN SET WHERE ...
+            - Functions             All SAS built in functions highlighted
+            - Proc options          Procedure options and settings highlighting
+            - Proc statements       Statements inside of procedures get first keyword highlighted
+            - System options        OBS NODATE MPRINT SYMBOLGEN ... active only inside the OPTIONS statement
+            - Dataset options       KEEP DROP RENAME WHERE OBS FIRSTOBS ... active only inside ( ) after a dataset name
+            - Mnemonic operators    AND OR NOT EQ NE GT LT GE LE IN BETWEEN LIKE CONTAINS ...
+            - Special/auto vars     _N_ _ERROR_ _ALL_ _NULL_  ...
+        Macro language
+            - %MACRO / %MEND, fold region + MacroDef colour
+            - %DO / %END, fold region
+            - %IF %THEN, other %keywords
+            - Macro variable refs  &name  &&name. etc
+            - User-defined macro calls  %name(...) 
+        Literals
+            - Double and single-quoted strings
+            - Date/datetime/time string suffixes  "..."d  "..."dt  "..."t
+                coloured as Number to distinguish them from plain strings
+            - Bitmask / namelit / hex suffixes    "..."b  "..."n  "..."x
+                coloured as String, matching SAS EG style highlighting
+            - Integer, floating-point, Hex numbers, scientific notation
+            - SAS format/informat tokens DATE9.  COMMA12.2  $CHAR20., ...
+        Operators
+            - + - * / ** = ^= ~= >= <= <> >< || =: >: <: ^=: ~=: >=: <=: ||
+        Inline data blocks
+            - CARDS / DATALINES / LINES — terminated by lone ;
+            - CARDS4 / DATALINES4 / LINES4 — terminated by ;;;;1
+            - PARMCARDS / PARMCARDS4
+-->
+<language
+    name="SAS" 
+    section="Scientific"
+    extensions="*.sas;*.SAS;*.Sas"
+    casesensitive="false"
+    author="Michael Walshe (michael.j.t.walshe@gmail.com)"
+    license="MIT"
+    version="1"
+    kateversion="5.79"
+>
+    <highlighting>
+        <!-- ====
+        	Keyword Lists
+        	 ==== -->
+        <!-- Data Step control-flow words -->
+        <list name="controls">
+            <item>BY</item>
+            <item>DO</item>
+            <item>ELSE</item>
+            <item>END</item>
+            <item>GOTO</item>
+            <item>IF</item>
+            <item>LINK</item>
+            <item>OTHERWISE</item>
+            <item>SELECT</item>
+            <item>THEN</item>
+            <item>TO</item>
+            <item>UNTIL</item>
+            <item>WHEN</item>
+            <item>WHILE</item>
+        </list>
+        <!-- Mnemonic / word operators -->
+        <list name="operators-word">
+            <item>AND</item>
+            <item>BETWEEN</item>
+            <item>CONTAINS</item>
+            <item>EQ</item>
+            <item>EQT</item>
+            <item>GE</item>
+            <item>GET</item>
+            <item>GT</item>
+            <item>IN</item>
+            <item>IS</item>
+            <item>LE</item>
+            <item>LET</item>
+            <item>LIKE</item>
+            <item>LT</item>
+            <item>NE</item>
+            <item>NET</item>
+            <item>NOT</item>
+            <item>OR</item>
+            <item>SAME</item>
+            <item>ALSO</item>
+        </list>
+        <!-- SAS automatic / special variables -->
+        <list name="constants">
+            <item>_ALL_</item>
+            <item>_BLANKPAGE_</item>
+            <item>_CHARACTER_</item>
+            <item>_ERROR_</item>
+            <item>_FILE_</item>
+            <item>_INFILE_</item>
+            <item>_IORC_</item>
+            <item>_MRG_</item>
+            <item>_NULL_</item>
+            <item>_NUMERIC_</item>
+            <item>_N_</item>
+            <item>_PAGE_</item>
+            <item>_TEMPORARY_</item>
+        </list>
+        <!-- Global SAS statements -->
+        <list name="keywords">
+            <item>AXIS</item>
+            <item>CAS</item>
+            <item>CASLIB</item>
+            <item>CATNAME</item>
+            <item>DECLARE</item>
+            <item>ENDRSUBMIT</item>
+            <item>ENDSAS</item>
+            <item>FILENAME</item>
+            <item>FOOTNOTE</item>
+            <item>GOPTIONS</item>
+            <item>KILLTASK</item>
+            <item>LEGEND</item>
+            <item>LIBNAME</item>
+            <item>LISTTASK</item>
+            <item>LOCK</item>
+            <item>MISSING</item>
+            <item>ODS</item>
+            <item>PAGE</item>
+            <item>PATTERN</item>
+            <item>PROCEDURE</item>
+            <item>RESETLINE</item>
+            <item>RGET</item>
+            <item>RSPT</item>
+            <item>RSUBMIT</item>
+            <item>SASFILE</item>
+            <item>SIGNOFF</item>
+            <item>SIGNON</item>
+            <item>SKIP</item>
+            <item>SYMBOL</item>
+            <item>SYSECHO</item>
+            <item>SYSTASK</item>
+            <item>TITLE</item>
+            <item>TRANTAB</item>
+            <item>WAITFOR</item>
+        </list>
+        <!-- DATA step statement keywords (active only inside a DATA step) -->
+        <list name="datastep-keywords">
+            <item>ABORT</item>
+            <item>ARRAY</item>
+            <item>ATTRIB</item>
+            <item>BY</item>
+            <item>CALL</item>
+            <item>CONTINUE</item>
+            <item>DELETE</item>
+            <item>DESCRIBE</item>
+            <item>DROP</item>
+            <item>ERROR</item>
+            <item>EXECUTE</item>
+            <item>FILE</item>
+            <item>FORMAT</item>
+            <item>INFILE</item>
+            <item>INFORMAT</item>
+            <item>INPUT</item>
+            <item>KEEP</item>
+            <item>LABEL</item>
+            <item>LEAVE</item>
+            <item>LENGTH</item>
+            <item>LIST</item>
+            <item>LOSTCARD</item>
+            <item>MERGE</item>
+            <item>MODIFY</item>
+            <item>OUTPUT</item>
+            <item>PUT</item>
+            <item>PUTLOG</item>
+            <item>REDIRECT</item>
+            <item>REMOVE</item>
+            <item>RENAME</item>
+            <item>REPLACE</item>
+            <item>RETAIN</item>
+            <item>RETURN</item>
+            <item>SET</item>
+            <item>STOP</item>
+            <item>UPDATE</item>
+            <item>WHERE</item>
+        </list>
+        <!-- Macro statements, excluding %macro/%mend/%do/%end for folding -->
+        <list name="macros">
+            <item>%ABORT</item>
+            <item>%COMPSTOR</item>
+            <item>%COPY</item>
+            <item>%DISPLAY</item>
+            <item>%DQLOAD</item>
+            <item>%DQPUTLOC</item>
+            <item>%DQUNLOAD</item>
+            <item>%ELSE</item>
+            <item>%GLOBAL</item>
+            <item>%GOTO</item>
+            <item>%IF</item>
+            <item>%INC</item>
+            <item>%INCLUDE</item>
+            <item>%INPUT</item>
+            <item>%LABEL</item>
+            <item>%LET</item>
+            <item>%LIST</item>
+            <item>%LOCAL</item>
+            <item>%PUT</item>
+            <item>%RETURN</item>
+            <item>%RUN</item>
+            <item>%SYMDEL</item>
+            <item>%SYSMACDELETE</item>
+            <item>%SYSMACEXEC</item>
+            <item>%SYSEXEC</item>
+            <item>%THEN</item>
+            <item>%TO</item>
+            <item>%TPLOT</item>
+            <item>%UNTIL</item>
+            <item>%WHILE</item>
+            <item>%WINDOW</item>
+        </list>
+        <!-- Dataset options used inside (...) after dataset names -->
+        <list name="dataset-options">
+            <item>ALTER</item>
+            <item>APPEND</item>
+            <item>BUFNO</item>
+            <item>BUFSIZE</item>
+            <item>CASLIB</item>
+            <item>CNTLLEV</item>
+            <item>COMPRESS</item>
+            <item>COPIES</item>
+            <item>DATALIMIT</item>
+            <item>DLDMGACTION</item>
+            <item>DROP</item>
+            <item>DUPLICATE</item>
+            <item>ENCODING</item>
+            <item>ENCRYPT</item>
+            <item>ENCRYPTKEY</item>
+            <item>EOC</item>
+            <item>EXTENDOBSCOUNTER</item>
+            <item>FILECLOSE</item>
+            <item>FIRSTOBS</item>
+            <item>GENMAX</item>
+            <item>GENNUM</item>
+            <item>IDXNAME</item>
+            <item>IDXWHERE</item>
+            <item>IN</item>
+            <item>INDEX</item>
+            <item>KEEP</item>
+            <item>LABEL</item>
+            <item>MEMTYPE</item>
+            <item>OBS</item>
+            <item>OBSBUF</item>
+            <item>ONDEMAND</item>
+            <item>ORDERBY</item>
+            <item>OUTREP</item>
+            <item>PARTITION</item>
+            <item>POINTOBS</item>
+            <item>PROMOTE</item>
+            <item>PW</item>
+            <item>PWREQ</item>
+            <item>READ</item>
+            <item>READTRANSFERSIZE</item>
+            <item>RENAME</item>
+            <item>REPEMPTY</item>
+            <item>REPLACE</item>
+            <item>REUSE</item>
+            <item>ROLE</item>
+            <item>RTS</item>
+            <item>SCRIPT</item>
+            <item>SGIO</item>
+            <item>SORTEDBY</item>
+            <item>SPILL</item>
+            <item>TAG</item>
+            <item>TEMPEXPRESS</item>
+            <item>TEMPNAMES</item>
+            <item>TOBSNO</item>
+            <item>TRANSCODE_FAIL</item>
+            <item>TRANTAB</item>
+            <item>TYPE</item>
+            <item>WHERE</item>
+            <item>WHEREUP</item>
+            <item>WRITE</item>
+            <item>WRITETRANSFERSIZE</item>
+        </list>
+        <!-- Built-in SAS functions -->
+        <list name="functions">
+            <item>ABS</item>
+            <item>ADDMATRIX</item>
+            <item>ADDR</item>
+            <item>ADDRLONG</item>
+            <item>ADDROW</item>
+            <item>ADD_TABLE_ATTR</item>
+            <item>AIRY</item>
+            <item>ALLCOMB</item>
+            <item>ALLCOMBI</item>
+            <item>ALLPERM</item>
+            <item>ANYALNUM</item>
+            <item>ANYALPHA</item>
+            <item>ANYCNTRL</item>
+            <item>ANYDIGIT</item>
+            <item>ANYFIRST</item>
+            <item>ANYGRAPH</item>
+            <item>ANYLOWER</item>
+            <item>ANYNAME</item>
+            <item>ANYPRINT</item>
+            <item>ANYPUNCT</item>
+            <item>ANYSPACE</item>
+            <item>ANYUPPER</item>
+            <item>ANYXDIGIT</item>
+            <item>ARCOS</item>
+            <item>ARCOSH</item>
+            <item>ARMCONV</item>
+            <item>ARMEND</item>
+            <item>ARMGTID</item>
+            <item>ARMINIT</item>
+            <item>ARMJOIN</item>
+            <item>ARMPROC</item>
+            <item>ARMSTOP</item>
+            <item>ARMSTRT</item>
+            <item>ARMUPDT</item>
+            <item>ARSIN</item>
+            <item>ARSINH</item>
+            <item>ARTANH</item>
+            <item>ASCEBC</item>
+            <item>ATAN</item>
+            <item>ATAN2</item>
+            <item>ATTRC</item>
+            <item>ATTRN</item>
+            <item>BAND</item>
+            <item>BETA</item>
+            <item>BETAINV</item>
+            <item>BLACKCLPRC</item>
+            <item>BLACKPTPRC</item>
+            <item>BLKSHCLPRC</item>
+            <item>BLKSHPTPRC</item>
+            <item>BLSHIFT</item>
+            <item>BNOT</item>
+            <item>BOR</item>
+            <item>BQUOTE</item>
+            <item>BRSHIFT</item>
+            <item>BXOR</item>
+            <item>BYTE</item>
+            <item>CAT</item>
+            <item>CATQ</item>
+            <item>CATS</item>
+            <item>CATT</item>
+            <item>CATX</item>
+            <item>CDF</item>
+            <item>CEIL</item>
+            <item>CEILZ</item>
+            <item>CEXIST</item>
+            <item>CHAR</item>
+            <item>CHOL</item>
+            <item>CHOOSEC</item>
+            <item>CHOOSEN</item>
+            <item>CINV</item>
+            <item>CLIBEXIST</item>
+            <item>CLOSE</item>
+            <item>CMISS</item>
+            <item>CMPRES</item>
+            <item>CNONCT</item>
+            <item>COALESCE</item>
+            <item>COALESCEC</item>
+            <item>COLLATE</item>
+            <item>COMB</item>
+            <item>COMPANION_NEXT</item>
+            <item>COMPARE</item>
+            <item>COMPBL</item>
+            <item>COMPCOST</item>
+            <item>COMPFUZZ</item>
+            <item>COMPGED</item>
+            <item>COMPLEV</item>
+            <item>COMPOUND</item>
+            <item>COMPRESS</item>
+            <item>COMPSTOR</item>
+            <item>CONSTANT</item>
+            <item>CONVX</item>
+            <item>CONVXP</item>
+            <item>COS</item>
+            <item>COSH</item>
+            <item>COT</item>
+            <item>COUNT</item>
+            <item>COUNTC</item>
+            <item>COUNTW</item>
+            <item>CSC</item>
+            <item>CSS</item>
+            <item>CUMIPMT</item>
+            <item>CUMPRINC</item>
+            <item>CUROBS</item>
+            <item>CV</item>
+            <item>DACCDB</item>
+            <item>DACCDBSL</item>
+            <item>DACCSL</item>
+            <item>DACCSYD</item>
+            <item>DACCTAB</item>
+            <item>DAIRY</item>
+            <item>DATATYP</item>
+            <item>DATDIF</item>
+            <item>DATE</item>
+            <item>DATEJUL</item>
+            <item>DATEPART</item>
+            <item>DATETIME</item>
+            <item>DAY</item>
+            <item>DCLOSE</item>
+            <item>DCREATE</item>
+            <item>DEFINE</item>
+            <item>DEPDB</item>
+            <item>DEPDBSL</item>
+            <item>DEPSL</item>
+            <item>DEPSYD</item>
+            <item>DEPTAB</item>
+            <item>DEQUOTE</item>
+            <item>DET</item>
+            <item>DEVIANCE</item>
+            <item>DHMS</item>
+            <item>DICTIONARY</item>
+            <item>DIF</item>
+            <item>DIGAMMA</item>
+            <item>DIM</item>
+            <item>DINFO</item>
+            <item>DISCARD</item>
+            <item>DIVIDE</item>
+            <item>DNUM</item>
+            <item>DOPEN</item>
+            <item>DOPTNAME</item>
+            <item>DOPTNUM</item>
+            <item>DOSUBL</item>
+            <item>DQCASE</item>
+            <item>DQGENDER</item>
+            <item>DQGENDERINFOGET</item>
+            <item>DQGENDERPARSED</item>
+            <item>DQIDENTIFY</item>
+            <item>DQLOCALEGUESS</item>
+            <item>DQLOCALEINFOGET</item>
+            <item>DQLOCALEINFOLIST</item>
+            <item>DQMATCH</item>
+            <item>DQMATCHINFOGET</item>
+            <item>DQMATCHPARSED</item>
+            <item>DQPARSE</item>
+            <item>DQPARSEINFOGET</item>
+            <item>DQPARSETOKENGET</item>
+            <item>DQPARSETOKENPUT</item>
+            <item>DQPATTERN</item>
+            <item>DQSCHEMEAPPLY</item>
+            <item>DQSRVARCHJOB</item>
+            <item>DQSRVCOPYLOG</item>
+            <item>DQSRVDELETELOG</item>
+            <item>DQSRVJOBSTATUS</item>
+            <item>DQSRVKILLJOB</item>
+            <item>DQSRVPROFJOBFILE</item>
+            <item>DQSRVPROFJOBREP</item>
+            <item>DQSRVUSER</item>
+            <item>DQSTANDARDIZE</item>
+            <item>DQTOKEN</item>
+            <item>DREAD</item>
+            <item>DROPNOTE</item>
+            <item>DSNAME</item>
+            <item>DSNCATLGD</item>
+            <item>DUR</item>
+            <item>DURP</item>
+            <item>DYNAMIC_ARRAY</item>
+            <item>EBCASC</item>
+            <item>EFFRATE</item>
+            <item>ELEMMULT</item>
+            <item>ENTRY_FIRST</item>
+            <item>ENTRY_NEXT</item>
+            <item>ENVLEN</item>
+            <item>ERF</item>
+            <item>ERFC</item>
+            <item>EUCLID</item>
+            <item>EVAL</item>
+            <item>EXECUTE</item>
+            <item>EXIST</item>
+            <item>EXISTS</item>
+            <item>EXP</item>
+            <item>EXPMATRIX</item>
+            <item>FACT</item>
+            <item>FAPPEND</item>
+            <item>FCLOSE</item>
+            <item>FCOL</item>
+            <item>FCOPY</item>
+            <item>FDELETE</item>
+            <item>FETCH</item>
+            <item>FETCHOBS</item>
+            <item>FEXIST</item>
+            <item>FGET</item>
+            <item>FILEATTR</item>
+            <item>FILEEXIST</item>
+            <item>FILENAME</item>
+            <item>FILEREF</item>
+            <item>FILLMATRIX</item>
+            <item>FINANCE</item>
+            <item>FIND</item>
+            <item>FINDC</item>
+            <item>FINDFILE</item>
+            <item>FINDTABLE</item>
+            <item>FINDW</item>
+            <item>FINFO</item>
+            <item>FINV</item>
+            <item>FIPNAME</item>
+            <item>FIPNAMEL</item>
+            <item>FIPSTATE</item>
+            <item>FIRST</item>
+            <item>FLOOR</item>
+            <item>FLOORZ</item>
+            <item>FMTINFO</item>
+            <item>FNONCT</item>
+            <item>FNOTE</item>
+            <item>FOPEN</item>
+            <item>FOPTNAME</item>
+            <item>FOPTNUM</item>
+            <item>FPOINT</item>
+            <item>FPOS</item>
+            <item>FPUT</item>
+            <item>FREAD</item>
+            <item>FREWIND</item>
+            <item>FRLEN</item>
+            <item>FSEP</item>
+            <item>FUZZ</item>
+            <item>FWRITE</item>
+            <item>GAMINV</item>
+            <item>GAMMA</item>
+            <item>GARKHCLPRC</item>
+            <item>GARKHPTPRC</item>
+            <item>GCD</item>
+            <item>GEODIST</item>
+            <item>GEOMEAN</item>
+            <item>GEOMEANZ</item>
+            <item>GETCASURL</item>
+            <item>GETDVI</item>
+            <item>GETJPI</item>
+            <item>GETLCASLIB</item>
+            <item>GETLOG</item>
+            <item>GETLSESSREF</item>
+            <item>GETLTAG</item>
+            <item>GETMSG</item>
+            <item>GETOPTION</item>
+            <item>GETQUOTA</item>
+            <item>GETSESSOPT</item>
+            <item>GETSYM</item>
+            <item>GETTERM</item>
+            <item>GETVARC</item>
+            <item>GETVARN</item>
+            <item>GITFN_CLONE</item>
+            <item>GITFN_COMMIT</item>
+            <item>GITFN_COMMITFREE</item>
+            <item>GITFN_COMMIT_GET</item>
+            <item>GITFN_COMMIT_LOG</item>
+            <item>GITFN_CO_BRANCH</item>
+            <item>GITFN_DEL_REPO</item>
+            <item>GITFN_DIFF</item>
+            <item>GITFN_DIFF_FREE</item>
+            <item>GITFN_DIFF_GET</item>
+            <item>GITFN_DIFF_IDX_F</item>
+            <item>GITFN_IDX_ADD</item>
+            <item>GITFN_IDX_REMOVE</item>
+            <item>GITFN_MRG_BRANCH</item>
+            <item>GITFN_NEW_BRANCH</item>
+            <item>GITFN_PULL</item>
+            <item>GITFN_PUSH</item>
+            <item>GITFN_RESET</item>
+            <item>GITFN_RESET_FILE</item>
+            <item>GITFN_STATUS</item>
+            <item>GITFN_STATUSFREE</item>
+            <item>GITFN_STATUS_GET</item>
+            <item>GITFN_VERSION</item>
+            <item>GRAYCODE</item>
+            <item>GRDSVC_ENABLE</item>
+            <item>GRDSVC_GETADDR</item>
+            <item>GRDSVC_GETINFO</item>
+            <item>GRDSVC_GETNAME</item>
+            <item>GRDSVC_NNODES</item>
+            <item>HARMEAN</item>
+            <item>HARMEANZ</item>
+            <item>HASHING</item>
+            <item>HASHING_FILE</item>
+            <item>HASHING_HMAC</item>
+            <item>HASHING_HMAC_FILE</item>
+            <item>HASHING_HMAC_INIT</item>
+            <item>HASHING_INIT</item>
+            <item>HASHING_PART</item>
+            <item>HASHING_TERM</item>
+            <item>HBOUND</item>
+            <item>HMS</item>
+            <item>HOLIDAY</item>
+            <item>HOLIDAYCK</item>
+            <item>HOLIDAYCOUNT</item>
+            <item>HOLIDAYNAME</item>
+            <item>HOLIDAYNX</item>
+            <item>HOLIDAYNY</item>
+            <item>HOLIDAYTEST</item>
+            <item>HOUR</item>
+            <item>HTMLDECODE</item>
+            <item>HTMLENCODE</item>
+            <item>IBESSEL</item>
+            <item>IDENTITY</item>
+            <item>IFC</item>
+            <item>IFN</item>
+            <item>INDEX</item>
+            <item>INDEXC</item>
+            <item>INDEXW</item>
+            <item>INPUT</item>
+            <item>INPUTC</item>
+            <item>INPUTN</item>
+            <item>INSERT_CATALOG</item>
+            <item>INSERT_DATASET</item>
+            <item>INSERT_FDB</item>
+            <item>INSERT_FILE</item>
+            <item>INSERT_HTML</item>
+            <item>INSERT_MDDB</item>
+            <item>INSERT_PACKAGE</item>
+            <item>INSERT_REF</item>
+            <item>INSERT_SQLVIEW</item>
+            <item>INSERT_VIEWER</item>
+            <item>INT</item>
+            <item>INTCINDEX</item>
+            <item>INTCK</item>
+            <item>INTCYCLE</item>
+            <item>INTFIT</item>
+            <item>INTFMT</item>
+            <item>INTGET</item>
+            <item>INTINDEX</item>
+            <item>INTNEST</item>
+            <item>INTNX</item>
+            <item>INTRR</item>
+            <item>INTSEAS</item>
+            <item>INTSHIFT</item>
+            <item>INTTEST</item>
+            <item>INTZ</item>
+            <item>INV</item>
+            <item>INVCDF</item>
+            <item>INVERSE</item>
+            <item>IORCMSG</item>
+            <item>IPMT</item>
+            <item>IQR</item>
+            <item>IRR</item>
+            <item>IS8601_CONVERT</item>
+            <item>ISARRAY</item>
+            <item>ISBLOB</item>
+            <item>ISDICTIONARY</item>
+            <item>ISDOUBLE</item>
+            <item>ISINTEGER</item>
+            <item>ISLIST</item>
+            <item>ISNULL</item>
+            <item>ISSTRING</item>
+            <item>ISTABLE</item>
+            <item>ISTYPE</item>
+            <item>JBESSEL</item>
+            <item>JSONPP</item>
+            <item>JULDATE</item>
+            <item>JULDATE7</item>
+            <item>KCOMPARE</item>
+            <item>KCOMPRESS</item>
+            <item>KCOUNT</item>
+            <item>KINDEX</item>
+            <item>KINDEXC</item>
+            <item>KLEFT</item>
+            <item>KLENGTH</item>
+            <item>KLOWCASE</item>
+            <item>KREVERSE</item>
+            <item>KRIGHT</item>
+            <item>KSCAN</item>
+            <item>KSUBSTR</item>
+            <item>KSUBSTRB</item>
+            <item>KTRANSLATE</item>
+            <item>KTRIM</item>
+            <item>KTRUNCATE</item>
+            <item>KUPCASE</item>
+            <item>KUPDATE</item>
+            <item>KUPDATEB</item>
+            <item>KURTOSIS</item>
+            <item>KVERIFY</item>
+            <item>LABEL</item>
+            <item>LAG</item>
+            <item>LARGEST</item>
+            <item>LBOUND</item>
+            <item>LCM</item>
+            <item>LCOMB</item>
+            <item>LEFT</item>
+            <item>LENGTH</item>
+            <item>LENGTHC</item>
+            <item>LENGTHM</item>
+            <item>LENGTHN</item>
+            <item>LEXCOMB</item>
+            <item>LEXCOMBI</item>
+            <item>LEXPERK</item>
+            <item>LEXPERM</item>
+            <item>LFACT</item>
+            <item>LGAMMA</item>
+            <item>LIBNAME</item>
+            <item>LIBREF</item>
+            <item>LIMMOMENT</item>
+            <item>LOG</item>
+            <item>LOG10</item>
+            <item>LOG1PX</item>
+            <item>LOG2</item>
+            <item>LOGBETA</item>
+            <item>LOGCDF</item>
+            <item>LOGISTIC</item>
+            <item>LOGPDF</item>
+            <item>LOGSDF</item>
+            <item>LOWCASE</item>
+            <item>LPERM</item>
+            <item>LPNORM</item>
+            <item>MAD</item>
+            <item>MARGRCLPRC</item>
+            <item>MARGRPTPRC</item>
+            <item>MAX</item>
+            <item>MD5</item>
+            <item>MDY</item>
+            <item>MEAN</item>
+            <item>MEDIAN</item>
+            <item>MIN</item>
+            <item>MINUTE</item>
+            <item>MISSING</item>
+            <item>MOD</item>
+            <item>MODEXIST</item>
+            <item>MODULE</item>
+            <item>MODULEC</item>
+            <item>MODULEN</item>
+            <item>MODZ</item>
+            <item>MONTH</item>
+            <item>MOPEN</item>
+            <item>MORT</item>
+            <item>MSPLINT</item>
+            <item>MULT</item>
+            <item>MVALID</item>
+            <item>N</item>
+            <item>NETPV</item>
+            <item>NEWTABLE</item>
+            <item>NLITERAL</item>
+            <item>NMISS</item>
+            <item>NODENAME</item>
+            <item>NOMRATE</item>
+            <item>NORMAL</item>
+            <item>NOTALNUM</item>
+            <item>NOTALPHA</item>
+            <item>NOTCNTRL</item>
+            <item>NOTDIGIT</item>
+            <item>NOTE</item>
+            <item>NOTFIRST</item>
+            <item>NOTGRAPH</item>
+            <item>NOTLOWER</item>
+            <item>NOTNAME</item>
+            <item>NOTPRINT</item>
+            <item>NOTPUNCT</item>
+            <item>NOTSPACE</item>
+            <item>NOTUPPER</item>
+            <item>NOTXDIGIT</item>
+            <item>NPV</item>
+            <item>NRBQUOTE</item>
+            <item>NRQUOTE</item>
+            <item>NRSTR</item>
+            <item>NVALID</item>
+            <item>NWKDOM</item>
+            <item>OPEN</item>
+            <item>ORDINAL</item>
+            <item>PACKAGE_BEGIN</item>
+            <item>PACKAGE_DESTROY</item>
+            <item>PACKAGE_END</item>
+            <item>PACKAGE_FIRST</item>
+            <item>PACKAGE_NEXT</item>
+            <item>PACKAGE_PUBLISH</item>
+            <item>PACKAGE_TERM</item>
+            <item>PATHNAME</item>
+            <item>PCTL</item>
+            <item>PDF</item>
+            <item>PEEK</item>
+            <item>PEEKC</item>
+            <item>PEEKCLONG</item>
+            <item>PEEKLONG</item>
+            <item>PERM</item>
+            <item>PMF</item>
+            <item>PMT</item>
+            <item>POINT</item>
+            <item>POISSON</item>
+            <item>POKE</item>
+            <item>POKELONG</item>
+            <item>POWER</item>
+            <item>PPMT</item>
+            <item>PRINTTABLE</item>
+            <item>PROBBETA</item>
+            <item>PROBBNML</item>
+            <item>PROBBNRM</item>
+            <item>PROBCHI</item>
+            <item>PROBF</item>
+            <item>PROBGAM</item>
+            <item>PROBHYPR</item>
+            <item>PROBIT</item>
+            <item>PROBMC</item>
+            <item>PROBMED</item>
+            <item>PROBNEGB</item>
+            <item>PROBNORM</item>
+            <item>PROBT</item>
+            <item>PROPCASE</item>
+            <item>PRXCHANGE</item>
+            <item>PRXDEBUG</item>
+            <item>PRXFREE</item>
+            <item>PRXMATCH</item>
+            <item>PRXNEXT</item>
+            <item>PRXPAREN</item>
+            <item>PRXPARSE</item>
+            <item>PRXPOSN</item>
+            <item>PRXSUBSTR</item>
+            <item>PTRLONGADD</item>
+            <item>PUT</item>
+            <item>PUTC</item>
+            <item>PUTLOG</item>
+            <item>PUTN</item>
+            <item>PUTSYM</item>
+            <item>PVP</item>
+            <item>QCMPRES</item>
+            <item>QLEFT</item>
+            <item>QLOWCASE</item>
+            <item>QSCAN</item>
+            <item>QSUBSTR</item>
+            <item>QSYSFUNC</item>
+            <item>QTR</item>
+            <item>QTRIM</item>
+            <item>QUANTILE</item>
+            <item>QUOTE</item>
+            <item>QUPCASE</item>
+            <item>RANBIN</item>
+            <item>RANCAU</item>
+            <item>RANCOMB</item>
+            <item>RAND</item>
+            <item>RANEXP</item>
+            <item>RANGAM</item>
+            <item>RANGE</item>
+            <item>RANK</item>
+            <item>RANNOR</item>
+            <item>RANPERK</item>
+            <item>RANPERM</item>
+            <item>RANPOI</item>
+            <item>RANTBL</item>
+            <item>RANTRI</item>
+            <item>RANUNI</item>
+            <item>READPATH</item>
+            <item>READ_ARRAY</item>
+            <item>RENAME</item>
+            <item>REPEAT</item>
+            <item>RESOLVE</item>
+            <item>RETRIEVE_CATALOG</item>
+            <item>RETRIEVE_DATASET</item>
+            <item>RETRIEVE_FDB</item>
+            <item>RETRIEVE_FILE</item>
+            <item>RETRIEVE_HTML</item>
+            <item>RETRIEVE_MDDB</item>
+            <item>RETRIEVE_NESTED</item>
+            <item>RETRIEVE_PACKAGE</item>
+            <item>RETRIEVE_REF</item>
+            <item>RETRIEVE_SQLVIEW</item>
+            <item>RETRIEVE_VIEWER</item>
+            <item>REVERSE</item>
+            <item>REWIND</item>
+            <item>RIGHT</item>
+            <item>RMS</item>
+            <item>ROUND</item>
+            <item>ROUNDE</item>
+            <item>ROUNDZ</item>
+            <item>RUN_MACRO</item>
+            <item>RUN_SASFILE</item>
+            <item>RXCHANGE</item>
+            <item>RXFREE</item>
+            <item>RXSUBSTR</item>
+            <item>SAVING</item>
+            <item>SAVINGS</item>
+            <item>SCAN</item>
+            <item>SCANQ</item>
+            <item>SDF</item>
+            <item>SEC</item>
+            <item>SECOND</item>
+            <item>SESSFOUND</item>
+            <item>SESSIONS</item>
+            <item>SET</item>
+            <item>SETNULL</item>
+            <item>SETTERM</item>
+            <item>SHA256</item>
+            <item>SHA256HEX</item>
+            <item>SHA256HMACHEX</item>
+            <item>SIGN</item>
+            <item>SIN</item>
+            <item>SINH</item>
+            <item>SKEWNESS</item>
+            <item>SLEEP</item>
+            <item>SMALLEST</item>
+            <item>SOAPWEB</item>
+            <item>SOAPWEBMETA</item>
+            <item>SOAPWIPSERVICE</item>
+            <item>SOAPWIPSRS</item>
+            <item>SOAPWS</item>
+            <item>SOAPWSMETA</item>
+            <item>SOFTMAX</item>
+            <item>SOLVE</item>
+            <item>SORT</item>
+            <item>SORTC</item>
+            <item>SORTN</item>
+            <item>SORT_REV</item>
+            <item>SOUNDEX</item>
+            <item>SPEDIS</item>
+            <item>SQRT</item>
+            <item>SQUANTILE</item>
+            <item>STD</item>
+            <item>STDERR</item>
+            <item>STDIZE</item>
+            <item>STFIPS</item>
+            <item>STNAME</item>
+            <item>STNAMEL</item>
+            <item>STR</item>
+            <item>STREAMINIT</item>
+            <item>STRIP</item>
+            <item>STRUCTINDEX</item>
+            <item>SUBPAD</item>
+            <item>SUBSTR</item>
+            <item>SUBSTRN</item>
+            <item>SUBTRACTMATRIX</item>
+            <item>SUM</item>
+            <item>SUMABS</item>
+            <item>SUPERQ</item>
+            <item>SYMEXIST</item>
+            <item>SYMGET</item>
+            <item>SYMGLOBL</item>
+            <item>SYMLOCAL</item>
+            <item>SYMPUT</item>
+            <item>SYMPUTX</item>
+            <item>SYSEVALF</item>
+            <item>SYSEXIST</item>
+            <item>SYSFUNC</item>
+            <item>SYSGET</item>
+            <item>SYSMSG</item>
+            <item>SYSPARM</item>
+            <item>SYSPROCESSID</item>
+            <item>SYSPROCESSNAME</item>
+            <item>SYSPROD</item>
+            <item>SYSRC</item>
+            <item>SYSTEM</item>
+            <item>TABCOLUMNS</item>
+            <item>TABTYPES</item>
+            <item>TAN</item>
+            <item>TANH</item>
+            <item>TERMIN</item>
+            <item>TERMOUT</item>
+            <item>TIME</item>
+            <item>TIMEPART</item>
+            <item>TIMEVALUE</item>
+            <item>TINV</item>
+            <item>TNONCT</item>
+            <item>TODAY</item>
+            <item>TRACEBACK</item>
+            <item>TRANSLATE</item>
+            <item>TRANSPOSE</item>
+            <item>TRANSTRN</item>
+            <item>TRANWRD</item>
+            <item>TRIGAMMA</item>
+            <item>TRIM</item>
+            <item>TRIMN</item>
+            <item>TRUNC</item>
+            <item>TSO</item>
+            <item>TTCLOSE</item>
+            <item>TTCONTRL</item>
+            <item>TTOPEN</item>
+            <item>TTREAD</item>
+            <item>TTWRITE</item>
+            <item>TYPEOF</item>
+            <item>TZID</item>
+            <item>TZONEID</item>
+            <item>TZONENAME</item>
+            <item>TZONEOFF</item>
+            <item>TZONES2U</item>
+            <item>TZONEU2S</item>
+            <item>UNIFORM</item>
+            <item>UNQUOTE</item>
+            <item>UPCASE</item>
+            <item>URLDECODE</item>
+            <item>URLENCODE</item>
+            <item>USS</item>
+            <item>UUIDGEN</item>
+            <item>VAR</item>
+            <item>VARFMT</item>
+            <item>VARINFMT</item>
+            <item>VARLABEL</item>
+            <item>VARLEN</item>
+            <item>VARNAME</item>
+            <item>VARNUM</item>
+            <item>VARRAY</item>
+            <item>VARRAYX</item>
+            <item>VARTYPE</item>
+            <item>VERIFY</item>
+            <item>VFORMAT</item>
+            <item>VFORMATD</item>
+            <item>VFORMATDX</item>
+            <item>VFORMATN</item>
+            <item>VFORMATNX</item>
+            <item>VFORMATW</item>
+            <item>VFORMATWX</item>
+            <item>VFORMATX</item>
+            <item>VINARRAY</item>
+            <item>VINARRAYX</item>
+            <item>VINFORMAT</item>
+            <item>VINFORMATD</item>
+            <item>VINFORMATDX</item>
+            <item>VINFORMATN</item>
+            <item>VINFORMATNX</item>
+            <item>VINFORMATW</item>
+            <item>VINFORMATWX</item>
+            <item>VINFORMATX</item>
+            <item>VLABEL</item>
+            <item>VLABELX</item>
+            <item>VLENGTH</item>
+            <item>VLENGTHX</item>
+            <item>VMS</item>
+            <item>VNAME</item>
+            <item>VNAMEX</item>
+            <item>VNEXT</item>
+            <item>VTYPE</item>
+            <item>VTYPEX</item>
+            <item>VVALUE</item>
+            <item>VVALUEX</item>
+            <item>WEEK</item>
+            <item>WEEKDAY</item>
+            <item>WHICHC</item>
+            <item>WHICHN</item>
+            <item>WRITE_ARRAY</item>
+            <item>WTO</item>
+            <item>YEAR</item>
+            <item>YIELDP</item>
+            <item>YRDIF</item>
+            <item>YYQ</item>
+            <item>ZEROMATRIX</item>
+            <item>ZIPCITY</item>
+            <item>ZIPCITYDISTANCE</item>
+            <item>ZIPFIPS</item>
+            <item>ZIPNAME</item>
+            <item>ZIPNAMEL</item>
+            <item>ZIPSTATE</item>
+        </list>
+        <contexts>
+            <!-- ====
+            	Init - default file-start for comments (ensure statement comment). Fall through to Normal
+            	 ==== -->
+            <context attribute="Normal Text" name="Init" lineEndContext="#stay" fallthroughContext="Normal">
+                <IncludeRules context="Statement"/>
+            </context>
+            <!-- ====
+            	General - highlighting context rules for e.g. macros,
+            	strings, numbers, without proc/data keywords, used via
+            	IncludeRule
+            	 ==== -->
+            <context attribute="Normal Text" name="General" lineEndContext="#stay">
+                <!-- Intra-statement comments, handle statement comments via Statement context -->
+                <Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment"/>
+                <Detect2Chars attribute="Comment" context="MacroComment" char="%" char1="*" beginRegion="Comment"/>
+                <DetectChar attribute="Normal Text" context="Statement" char=";"/>
+                <!-- %DO / %END folding -->
+                <WordDetect attribute="MacroKeyword" context="#stay" String="%do" insensitive="true" beginRegion="macrogroup"/>
+                <WordDetect attribute="MacroKeyword" context="#stay" String="%end" insensitive="true" endRegion="macrogroup"/>
+                <!-- %MACRO / %MEND folding -->
+                <WordDetect attribute="MacroDef" context="MacroName" String="%macro" insensitive="true" beginRegion="macrodef"/>
+                <WordDetect attribute="MacroDef" context="#stay" String="%mend" endRegion="macrodef"/>
+                <!-- Macro keywords (%IF %LET %PUT etc.) -->
+                <keyword attribute="MacroKeyword" context="#stay" String="macros"/>
+                <!-- Macro variable: &varname -->
+                <DetectChar attribute="MacroVariable" context="MacroVariable" char="&amp;"/>
+                <!-- Generic macro call: %name (user-defined macros or macro functions) -->
+                <DetectChar attribute="MacroName" context="MacroName" char="%"/>
+                <!-- OPTIONS statement -->
+                <WordDetect attribute="Keywords" context="OptionsStmt" String="options" insensitive="true"/>
+                <!-- Mnemonic operators -->
+                <keyword attribute="Operator" context="#stay" String="operators-word"/>
+                <!-- Automatic variables -->
+                <keyword attribute="Constants" context="#stay" String="constants"/>
+                <!-- Format specifications -->
+                <RegExpr attribute="Format" context="#stay" String="(?:\$?[A-Za-z_]|\$\d+)\w*\.(?![a-zA-Z])(?:\d+)?" insensitive="true"/>
+                <!-- Suffixed and regular strings -->
+                <RegExpr attribute="Number" context="#stay" insensitive="true" String="&quot;(?:[^&quot;]|&quot;&quot;)*&quot;(?:dt|[dtDT])(?!\w)"/>
+                <RegExpr attribute="String" context="#stay" insensitive="true" String="&quot;(?:[^&quot;]|&quot;&quot;)*&quot;[bnxBNX](?!\w)"/>
+                <DetectChar attribute="String" context="StringDouble" char="&quot;"/>
+                <RegExpr attribute="Number" context="#stay" insensitive="true" String="'(?:[^']|'')*'(?:dt|[dtDT])(?!\w)"/>
+                <RegExpr attribute="String" context="#stay" insensitive="true" String="'(?:[^']|'')*'[bnxBNX](?!\w)"/>
+                <DetectChar attribute="String" context="StringSingle" char="'"/>
+                <!-- Numbers -->
+                <RegExpr attribute="Number" context="#stay" insensitive="true" String="[0-9][0-9A-Fa-f]*[xX](?!\w)|(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?"/>
+                <!-- Symbolic operators, multi char and single char -->
+                <RegExpr attribute="Operator" context="#stay" String="\^=:|~=:|&gt;=:|&lt;=:|\*\*|\|\||\^=|~=|&gt;=|&lt;=|&lt;&gt;|&gt;&lt;|=:|&gt;:|&lt;:|=\*"/>
+                <AnyChar attribute="Operator" context="#stay" String="+-*/=&lt;&gt;^~|!#@"/>
+            </context>
+            <!-- Statement - used to ensure ; are respected for comments. Falls through to previous context -->
+            <context attribute="Normal Text" name="Statement" lineEndContext="#stay" fallthroughContext="#pop">
+                <DetectSpaces attribute="Normal Text" context="#stay"/>
+                <DetectChar attribute="Comment" context="StmtComment" char="*" beginRegion="Comment"/>
+                <Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment"/>
+                <Detect2Chars attribute="Comment" context="MacroComment" char="%" char1="*" beginRegion="Comment"/>
+            </context>
+            <!-- ====
+            	Main / Normal context
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+                <DetectSpaces context="#stay"/>
+                <!-- Proc-specific embedded-language contexts — tested before generic \bproc\b -->
+                <RegExpr attribute="Step" context="ProcSQL" String="\bproc\s+(?:sql|fedsql)\b" insensitive="true" beginRegion="datastep"/>
+                <RegExpr attribute="Step" context="ProcPython" String="&proc_py;" insensitive="true" beginRegion="datastep"/>
+                <RegExpr attribute="Step" context="ProcLua" String="&proc_lua;" insensitive="true" beginRegion="datastep"/>
+                <!-- Generic PROC <name> -->
+                <RegExpr attribute="Step" context="ProcHeader" String="\bproc\s+[a-zA-Z]\w*" insensitive="true" beginRegion="datastep"/>
+                <!-- DATA step — negative lookahead prevents firing on `data=` common option -->
+                <RegExpr attribute="Step" context="DataBody" String="&datastep;" insensitive="true" beginRegion="datastep"/>
+                <!-- RUN; or QUIT; at global scope -->
+                <RegExpr attribute="Step" context="Statement" String="\brun|quit\s*;" insensitive="true" endRegion="datastep"/>
+                <!-- SAS statement keywords -->
+                <keyword attribute="Keywords" context="#stay" String="keywords"/>
+                <IncludeRules context="General"/>
+            </context>
+            <!-- ====
+            	ProcHeader — proc option line (proc <name> <options> ;)
+            	Colours option names as SecKeyword:
+            	option=value  — lookahead on = to match only the name
+            	standalone option — DetectIdentifier
+            	On ; transitions to ProcBody
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="ProcHeader">
+                <!-- Semicolon ends the header line; dont consume and enter ProcBody -->
+                <DetectChar attribute="Normal Text" context="#pop!ProcBody" char=";" lookAhead="true"/>
+                <!-- option=value - colour option name as SecKeyword, push helper to color value depending on type -->
+                <RegExpr attribute="SecKeyword" context="OptValue" String="&option_name;" insensitive="true"/>
+                <!-- standalone boolean option -->
+                <DetectIdentifier attribute="SecKeyword" context="#stay"/>
+                <!-- Dataset options inside () -->
+                <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>
+                <IncludeRules context="General"/>
+            </context>
+            <!-- ====
+            	ProcBody — generic proc body, handles each statment by colouring first keyword using
+                helper context (which also exits context), then colouring dataset options, then regular rules
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="ProcBody">
+                <!-- After each semicolon, colour the next identifier as a proc keyword -->
+                <DetectChar attribute="Normal Text" context="ProcStmt" char=";"/>
+                <!-- Dataset options inside () -->
+                <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>
+                <!-- All regular Normal rules -->
+                <IncludeRules context="General"/>
+            </context>
+            <!-- ====
+            	ProcStmt — after ; inside a proc body.
+            	Exit when run/quit/new statement
+            	Skips whitespace/comments, colours the first identifier as SecKeyword, then pops back to ProcBody.
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="ProcStmt" fallthroughContext="#pop">
+                <DetectSpaces context="#stay"/>
+                <DetectChar attribute="Comment" context="StmtComment" char="*" beginRegion="Comment"/>
+                <Detect2Chars attribute="Comment" context="BlockComment" char="/" char1="*" beginRegion="Comment"/>
+                <Detect2Chars attribute="Comment" context="MacroComment" char="%" char1="*" beginRegion="Comment"/>
+                <!-- Exit on run or quit -->
+                <RegExpr attribute="Step" context="#pop#pop!Statement" String="&run_quit;" insensitive="true" endRegion="datastep"/>
+                <!-- Bail out if another step starts without RUN/QUIT, dont consume and handle with main context -->
+                <RegExpr attribute="Normal Text" context="#pop#pop" String="&proc_data;" firstNonSpace="true" insensitive="true" lookAhead="true"/>
+                <!-- Colour the first identifier as a proc sub-statement keyword, then re-enter ProcBody for remaining rules -->
+                <DetectIdentifier attribute="SecKeyword" context="#pop"/>
+            </context>
+            <!-- ====
+            	DataBody — DATA step body
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="DataBody">
+                <DetectSpaces context="#stay"/>
+                <!-- Exit on RUN; -->
+                <RegExpr attribute="Step" context="#pop!Statement" String="\brun\s*;" insensitive="true" endRegion="datastep"/>
+                <!-- Bail out if another step starts without RUN, dont consume and handle with main context -->
+                <RegExpr attribute="Normal Text" context="#pop" String="&proc_data;" insensitive="true" lookAhead="true"/>
+                <!-- Dataset options inside () -->
+                <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>
+                <!-- Control flow -->
+                <keyword attribute="Control" context="#stay" String="controls"/>
+                <!-- Built-in functions: lookahead for func( then classify in FuncCheck -->
+                <RegExpr attribute="Normal Text" context="FuncCheck" String="&identifier;\s*\(" insensitive="true" lookAhead="true"/>
+                <!-- Data-step statement keywords -->
+                <keyword attribute="Keywords" context="#stay" String="datastep-keywords"/>
+                <!-- Cards / Datalines / Parmcards -->
+                <RegExpr attribute="Keywords" context="Cards4" String="\b(?:cards4|lines4|datalines4|parmcards4)\b[^;]*;" insensitive="true" beginRegion="Cards"/>
+                <RegExpr attribute="Keywords" context="Cards" String="\b(?:cards|lines|datalines|parmcards)\b[^;]*;" insensitive="true" beginRegion="Cards"/>
+                <!-- DO / END folding -->
+                <WordDetect attribute="Control" context="#stay" String="do" insensitive="true" beginRegion="doblock"/>
+                <RegExpr attribute="Control" context="#stay" String="\bend(?=\s*;)" insensitive="true" endRegion="doblock"/>
+                <!-- All regular General rules -->
+                <IncludeRules context="General"/>
+            </context>
+            <!-- ====
+            	FuncCheck — classify word before ( as Function or Normal Text
+            	 ==== -->
+            <context attribute="Normal Text" name="FuncCheck" fallthroughContext="#pop">
+                <keyword attribute="Functions" context="#pop" String="functions"/>
+                <!-- If we dont match then consume identfiers to avoid popping back to same position and re-entering match  -->
+                <DetectIdentifier attribute="Normal Text" context="#pop"/>
+            </context>
+            <!-- ====
+            	DatasetOpts — inside (...) after a dataset name
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="DatasetOpts">
+                <!-- Nested data set option/value key pairs -->
+                <DetectChar attribute="Normal Text" context="DatasetOpts" char="("/>
+                <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+                <keyword attribute="SecKeyword" context="#stay" String="dataset-options"/>
+                <IncludeRules context="General"/>
+            </context>
+            <!-- ====
+            	OptionsStmt — after OPTIONS keyword, until ;
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="OptionsStmt">
+                <DetectChar attribute="Normal Text" context="#pop" char=";"/>
+                <!-- option=value - colour option name as SecKeyword, push helper to color value depending on type -->
+                <RegExpr attribute="SecKeyword" context="OptValue" String="&option_name;" insensitive="true"/>
+                <!-- standalone boolean option -->
+                <DetectIdentifier attribute="SecKeyword" context="#stay"/>
+                <IncludeRules context="General"/>
+            </context>
+            <!-- ====
+            	OptValue / OptValueAfterEq — shared by ProcHeader and
+            	OptionsStmt to consume =<value> without colouring the
+            	value as SecKeyword.
+            	 ==== -->
+            <context attribute="Normal Text" lineEndContext="#stay" name="OptValue" fallthroughContext="#pop">
+                <DetectSpaces context="#stay"/>
+                <DetectChar attribute="Operator" context="OptValueAfterEq" char="="/>
+            </context>
+            <context attribute="Normal Text" lineEndContext="#stay" name="OptValueAfterEq" fallthroughContext="#pop#pop">
+                <DetectSpaces context="#stay"/>
+                <!-- Identifier value (libref.member or plain): consume as Normal Text, pop both -->
+                <RegExpr attribute="Normal Text" context="#pop#pop" String="&identifier;(\.&identifier;)*"/>
+                <!-- Numbers, strings, other values: fall through #pop#pop — caller's General rules colour them -->
+            </context>
+            <!-- ====
+            	Comments
+            	 ==== -->
+            <context attribute="Comment" name="BlockComment">
+                <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
+            </context>
+            <context attribute="Comment" name="MacroComment">
+                <DetectChar attribute="Comment" context="#pop" char=";" endRegion="Comment"/>
+            </context>
+            <context attribute="Comment" name="StmtComment">
+                <DetectChar attribute="Comment" context="#pop" char=";" endRegion="Comment"/>
+            </context>
+            <!-- ====
+            	Regular Strings - allow double quoting to escape
+            	 ==== -->
+            <context attribute="String" name="StringDouble">
+                <StringDetect attribute="String" context="#stay" String="&quot;&quot;"/>
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+            </context>
+            <context attribute="String" name="StringSingle">
+                <StringDetect attribute="String" context="#stay" String="''"/>
+                <DetectChar attribute="String" context="#pop" char="'"/>
+            </context>
+            <!-- ====
+            	Macro Names & Variables
+            	 ==== -->
+            <context attribute="MacroName" name="MacroName">
+                <!-- Highlight macro name as in %macro <macro_name>, or as in %macro_name -->
+                <DetectSpaces attribute="Normal Text" context="#stay"/>
+                <DetectIdentifier attribute="MacroName" context="#pop"/>
+            </context>
+            <context attribute="MacroVariable" name="MacroVariable">
+                <DetectIdentifier attribute="MacroVariable" context="#stay"/>
+                <DetectChar attribute="MacroVariable" context="#pop" char="."/>
+                <RegExpr attribute="MacroVariable" context="#pop" String="\W" lookAhead="true"/>
+            </context>
+            <!-- ====
+            	CARDS / DATALINES inline data
+            	 ==== -->
+            <context attribute="Cards" name="Cards">
+                <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="Cards"/>
+            </context>
+            <context attribute="Cards" name="Cards4">
+                <StringDetect attribute="Normal Text" context="#pop" String=";;;;" endRegion="Cards"/>
+            </context>
+            <!-- ====
+            	Embedded Language PROCS
+            	 ==== -->
+            <context attribute="Normal Text" name="ProcSQL">
+                <!-- Add rules to jump to correct block if a proc sql block is ended - to take precedence over
+                     regular SQL rules -->
+                <RegExpr attribute="Step" context="#pop!Statement" String="\bquit\s*;" insensitive="true" endRegion="datastep"/>
+                <RegExpr attribute="Step" context="#pop!DataBody" String="&datastep;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>
+                <RegExpr attribute="Step" context="#pop!ProcSQL" String="\bproc\s+(?:sql|fedsql)\b[^;]*;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>
+                <RegExpr attribute="Step" context="#pop!ProcPython" String="&proc_py;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>
+                <RegExpr attribute="Step" context="#pop!ProcLua" String="&proc_lua;" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>
+                <RegExpr attribute="Step" context="#pop!ProcBody" String=";\s*\bproc\b" insensitive="true" firstNonSpace="true" beginRegion="datastep"/>
+                <IncludeRules context="Normal##SQL"/>
+            </context>
+            <context attribute="Normal Text" name="ProcPython">
+                <RegExpr attribute="Step" context="#pop!Statement" String="&run_quit;" insensitive="true" endRegion="datastep"/>
+                <RegExpr attribute="Normal Text" context="#pop" String="&proc_data;" insensitive="true" lookAhead="true"/>
+                <RegExpr attribute="Keywords" context="PythonBlock" String="&submit;" insensitive="true"/>
+                <IncludeRules context="Normal"/>
+            </context>
+            <context attribute="Normal Text" name="PythonBlock">
+                <RegExpr attribute="Keywords" context="#pop" String="&endsubmit;" insensitive="true"/>
+                <IncludeRules context="Normal##Python"/>
+            </context>
+            <context attribute="Normal Text" name="ProcLua">
+                <RegExpr attribute="Step" context="#pop!Statement" String="&run_quit;" insensitive="true" endRegion="datastep"/>
+                <RegExpr attribute="Normal Text" context="#pop" String="&proc_data;" insensitive="true" lookAhead="true"/>
+                <RegExpr attribute="Keywords" context="LuaBlock" String="&submit;" insensitive="true"/>
+                <IncludeRules context="Normal"/>
+            </context>
+            <context attribute="Normal Text" name="LuaBlock">
+                <RegExpr attribute="Keywords" context="#pop" String="&endsubmit;" insensitive="true"/>
+                <IncludeRules context="Normal##Lua"/>
+            </context>
+        </contexts>
+        <!-- ====
+        	Style Definitions
+        	 ==== -->
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal"/>
+            <itemData name="Operator" defStyleNum="dsOperator"/>
+            <itemData name="Keywords" defStyleNum="dsKeyword"/>
+            <itemData name="SecKeyword" defStyleNum="dsBuiltIn"/>
+            <itemData name="Functions" defStyleNum="dsFunction"/>
+            <itemData name="Constants" defStyleNum="dsConstant"/>
+            <itemData name="Format" defStyleNum="dsDataType"/>
+            <itemData name="MacroDef" defStyleNum="dsPreprocessor"/>
+            <itemData name="MacroKeyword" defStyleNum="dsPreprocessor"/>
+            <itemData name="Control" defStyleNum="dsControlFlow"/>
+            <itemData name="Step" defStyleNum="dsKeyword" bold="true"/>
+            <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="Number" defStyleNum="dsFloat"/>
+            <itemData name="MacroName" defStyleNum="dsExtension" italic="true"/>
+            <itemData name="MacroVariable" defStyleNum="dsVariable"/>
+            <itemData name="Cards" defStyleNum="dsOthers"/>
+        </itemDatas>
+    </highlighting>
+    <general>
+        <comments>
+            <comment name="multiLine" start="/*" end="*/" region="Comment"/>
+            <comment name="multiLine" start="*" end=";" region="Comment"/>
+            <comment name="multiLine" start="%*" end=";" region="Comment"/>
+        </comments>
+        <keywords casesensitive="false" weakDeliminator="%"/>
+    </general>
+</language>
diff --git a/xml/sass.xml b/xml/sass.xml
--- a/xml/sass.xml
+++ b/xml/sass.xml
@@ -1,41 +1,28 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
   <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
   <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
 ]>
 
-<language name="SASS" version="5" kateversion="5.53" section="Markup" extensions="*.sass" indenter="cstyle" mimetype="text/css" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT" priority="5">
+<language name="SASS" version="8" kateversion="5.79" section="Markup" extensions="*.sass" indenter="cstyle" mimetype="text/css" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT" priority="5">
 
     <highlighting>
-        <list name="properties">
-            <include>properties##SCSS</include>
-            <include>sub-properties##SCSS</include>
-        </list>
+        <list name="properties"><include>properties##SCSS</include></list>
+        <list name="vendor properties"><include>vendor properties##SCSS</include></list>
+        <list name="sub-properties"><include>sub-properties##SCSS</include></list>
         <list name="special values"><include>special values##SCSS</include></list>
         <list name="value keywords"><include>value keywords##SCSS</include></list>
         <list name="values"><include>values##SCSS</include></list>
         <list name="colors"><include>colors##SCSS</include></list>
         <list name="functions"><include>functions##SCSS</include></list>
-        <list name="medias"><include>medias##SCSS</include></list>
-        <list name="pseudoelements"><include>pseudoelements##SCSS</include></list>
-        <list name="pseudoclasses"><include>pseudoclasses##SCSS</include></list>
-        <list name="pseudoclass-selector"><include>pseudoclass-selector##SCSS</include></list>
-        <list name="pseudoclasses-@page"><include>pseudoclasses-@page##SCSS</include></list>
+        <list name="media types"><include>media types##SCSS</include></list>
+        <list name="media features"><include>media features##SCSS</include></list>
+        <list name="pseudo-elements"><include>pseudo-elements##SCSS</include></list>
+        <list name="pseudo-classes"><include>pseudo-classes##SCSS</include></list>
+        <list name="@page pseudo-classes"><include>@page pseudo-classes##SCSS</include></list>
         <list name="at-rules"><include>at-rules##SCSS</include></list>
-        <list name="nested at-rules"><include>nested at-rules##SCSS</include></list>
-        <list name="inline and nested at-rules"><include>inline and nested at-rules##SCSS</include></list>
-        <list name="@extend"><include>@extend##SCSS</include></list>
-        <list name="@if"><include>@if##SCSS</include></list>
-        <list name="@else"><include>@else##SCSS</include></list>
-        <list name="@mixin"><include>@mixin##SCSS</include></list>
-        <list name="@viewport"><include>@viewport##SCSS</include></list>
-        <list name="@page"><include>@page##SCSS</include></list>
-        <list name="@keyframes-@font-face">
-            <include>@font-face##SCSS</include>
-            <include>@keyframes##SCSS</include>
-        </list>
         <list name="media operators"><include>media operators##SCSS</include></list>
         <list name="operators"><include>operators##SCSS</include></list>
         <list name="annotations"><include>annotations##SCSS</include></list>
@@ -44,7 +31,7 @@
             <context name="Base" attribute="Normal Text" lineEndContext="#stay">
                 <IncludeRules context="FindCommentsColumn0" />
                 <IncludeRules context="FindComments" />
-                <RegExpr attribute="Property" context="Rule" String="^\s*[-_A-Za-z]+(/\*.*\*/)?\s*(?=:(\s|$))" lookAhead="true" column="0" />
+                <RegExpr attribute="Property" context="Rule" String="^\s*[-_A-Za-z]+(/\*.*\*/)?\s*(?=:(\s|$))" lookAhead="true" column="0" minimal="true" />
                 <DetectSpaces />
                 <DetectChar attribute="At Rule" context="@mixin" char="=" firstNonSpace="true" />
                 <DetectChar attribute="At Rule" context="AtRule" char="+" firstNonSpace="true" />
@@ -89,8 +76,6 @@
                 <IncludeRules context="FindStrings" />
                 <IncludeRules context="FindFunctions" />
                 <IncludeRules context="FindValues" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
             </context>
 
 
@@ -106,25 +91,25 @@
                 <DetectChar attribute="Annotation" context="Annotation" char="!" />
                 <keyword attribute="Operator" context="#stay" String="operators" />
                 <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
+                <keyword attribute="Value Keyword" context="#stay" String="special values" />
                 <keyword attribute="Value" context="#stay" String="values" />
                 <keyword attribute="Color" context="#stay" String="colors" />
                 <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?" />
                 <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
                 <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
-                <keyword attribute="Value Keyword" context="#stay" String="special values" />
                 <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
                 <AnyChar attribute="Operator" context="#stay" String="*/+%-" />
                 <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
             </context>
 
             <!-- same as SCSS -->
-            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
                 <keyword attribute="Annotation" context="#pop" String="annotations" />
             </context>
 
             <!-- same as SCSS -->
-            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)" />
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)" />
             </context>
 
             <!-- find strings // "some words" 'some words' -->
@@ -147,7 +132,7 @@
                 <Detect2Chars attribute="Comment" context="IsInlineComment2" char="/" char1="*" />
             </context>
 
-            <context name="Comment" attribute="Comment" lineEndContext="#stay" dynamic="true" fallthrough="true" fallthroughContext="IsInlineComment">
+            <context name="Comment" attribute="Comment" lineEndContext="#stay" dynamic="true" fallthroughContext="IsInlineComment">
                 <RegExpr attribute="Comment" context="IsInlineComment" String="^%1\s|^\s*$" dynamic="true" column="0" />
                 <DetectSpaces attribute="Normal Text" context="#pop" lookAhead="true" column="0" />
                 <RegExpr attribute="Comment" context="#pop" String="." lookAhead="true" column="0"/>
@@ -167,16 +152,19 @@
             </context>
 
             <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
-                <keyword attribute="At Rule" context="#pop!AtRule" String="nested at-rules" />
                 <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
-                <keyword attribute="At Rule" context="#pop!AtRule" String="inline and nested at-rules" />
-                <keyword attribute="At Rule" context="#pop!@extend" String="@extend" />
-                <keyword attribute="At Rule" context="#pop!@mixin" String="@mixin" />
-                <keyword attribute="At Rule" context="#pop!@keyframes-@font-face" String="@keyframes-@font-face" />
-                <keyword attribute="At Rule" context="#pop!@viewport" String="@viewport" />
-                <keyword attribute="At Rule" context="#pop!@if" String="@if" />
-                <keyword attribute="At Rule" context="#pop!@else" String="@else" />
-                <keyword attribute="At Rule" context="#pop!@page" String="@page" />
+                <!-- CSS: inline -->
+                <!-- SCSS: inline or block -->
+                <WordDetect attribute="At Rule" context="#pop!AtRule" String="@inline" />
+                <WordDetect attribute="At Rule" context="#pop!@extend" String="@extend" />
+                <WordDetect attribute="At Rule" context="#pop!@mixin" String="@mixin" />
+                <WordDetect attribute="At Rule" context="#pop!@mixin" String="@function" />
+                <WordDetect attribute="At Rule" context="#pop!@keyframes-@font-face" String="@keyframes" />
+                <WordDetect attribute="At Rule" context="#pop!@keyframes-@font-face" String="@font-face" />
+                <WordDetect attribute="At Rule" context="#pop!@viewport" String="@viewport" />
+                <WordDetect attribute="At Rule" context="#pop!@if" String="@if" />
+                <WordDetect attribute="At Rule" context="#pop!@else" String="@else" />
+                <WordDetect attribute="At Rule" context="#pop!@page" String="@page" />
                 <RegExpr attribute="At Rule" context="#pop!AtRule" String="@[a-zA-Z0-9\-_]+\b" />
             </context>
 
@@ -187,8 +175,6 @@
                 <IncludeRules context="FindFunctions" />
                 <IncludeRules context="FindValues" />
                 <AnyChar attribute="Operator" context="#stay" String="=!&lt;&gt;" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
             </context>
 
             <context name="@else" attribute="Error" lineEndContext="#pop">
@@ -235,8 +221,8 @@
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
             </context>
 
-            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
+            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthroughContext="#pop">
+                <keyword attribute="Selector Pseudo" context="#pop" String="@page pseudo-classes" />
                 <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
 
@@ -248,10 +234,9 @@
                 <IncludeRules context="FindFunctions" />
                 <keyword attribute="Keyword" context="#stay" String="media operators" />
                 <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
-                <keyword attribute="Value" context="#stay" String="medias" />
+                <keyword attribute="Value" context="#stay" String="media types" />
+                <keyword attribute="Value" context="#stay" String="media features" />
                 <IncludeRules context="FindValues" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
             </context>
 
             <!-- same as SCSS -->
@@ -276,30 +261,18 @@
             <!-- same as SCSS -->
             <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
+                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudo-classes" />
                 <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
 
             <!-- same as SCSS -->
             <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
-                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
+                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudo-elements" />
                 <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
             </context>
 
             <!-- same as SCSS -->
-            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#pop#pop#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <!-- same as SCSS -->
-            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
+            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
                 <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
             </context>
 
@@ -315,6 +288,7 @@
                 <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
                 <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
                 <keyword attribute="Property" context="#stay" String="properties" />
+                <keyword attribute="Property" context="#stay" String="sub-properties" />
                 <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
             </context>
 
@@ -332,8 +306,6 @@
                 <IncludeRules context="FindStrings" />
                 <IncludeRules context="FindFunctions" />
                 <IncludeRules context="FindValues" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
             </context>
 
             <!-- same as SCSS -->
@@ -347,7 +319,7 @@
             </context>
 
             <!-- same as SCSS -->
-            <context name="FunctionVar" attribute="Variable" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
+            <context name="FunctionVar" attribute="Variable" lineEndContext="#pop#pop" fallthroughContext="#pop!FunctionParameters">
                 <DetectSpaces />
                 <IncludeRules context="FindComments" />
                 <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
@@ -376,12 +348,10 @@
                 <IncludeRules context="FindFunctions" />
                 <IncludeRules context="FindValues" />
                 <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
             </context>
 
             <!-- same as SCSS -->
-            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="UrlValue">
+            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="UrlValue">
                 <DetectSpaces />
                 <IncludeRules context="FindStrings" />
                 <DetectChar attribute="Function" context="#pop#pop" char=")" />
diff --git a/xml/scala.xml b/xml/scala.xml
--- a/xml/scala.xml
+++ b/xml/scala.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="Scala" version="11" kateversion="5.62" section="Sources"
+<!DOCTYPE language>
+<language name="Scala" version="12" kateversion="5.79" section="Sources"
           extensions="*.scala;*.sbt" mimetype="text/x-scala" license="LGPL"
           author="Stephane Micheloud (stephane.micheloud@epfl.ch)">
 <!--
diff --git a/xml/scheme.xml b/xml/scheme.xml
--- a/xml/scheme.xml
+++ b/xml/scheme.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!ENTITY xmlattrs "\s+([^&quot;/>]++|&quot;[^&quot;]*+&quot;)*+">
   <!ENTITY tab      "&#009;">
@@ -11,13 +11,15 @@
   <!ENTITY initial "(?:[&initial_ascii_set;]|&initial_others;)">
   <!ENTITY subsequent "(?:[&initial_ascii_set;0-9-@.+\p{Nd}\p{Mc}\p{Me}]|&initial_others;)">
   <!ENTITY symbol "(?:&initial;&subsequent;*+)">
+
+  <!ENTITY funcname "\s*[A-Za-z0-9-!$&#37;&quot;*/:&lt;=>?~_^+.@]+\s*">
 ]>
 <!--
   https://www.scheme.com/tspl4/
   https://www.gnu.org/software/kawa/Syntax.html
   https://www.gnu.org/software/guile/manual/html_node/Scheme-Syntax.html
 -->
-<language version="11" kateversion="5.62" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile;*.chicken;*.meta" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">
+<language version="14" kateversion="5.79" name="Scheme" section="Scripts" extensions="*.scm;*.ss;*.scheme;*.guile;*.chicken;*.meta" mimetype="text/x-scheme" author="Dominik Haumann (dhaumann@kde.org)" license="MIT" priority="9">
   <highlighting>
     <list name="operators">
       <item>&lt;=</item>
@@ -27,7 +29,6 @@
       <item>&gt;=</item>
       <item>&gt;</item>
       <item>-</item>
-      <item>/</item>
       <item>*,*</item>
       <item>+</item>
       <item>!</item>
@@ -35,8 +36,6 @@
       <item>%</item>
       <item>*</item>
       <item>/</item>
-      <item>=</item>
-      <item>></item>
       <item>?</item>
       <item>^</item>
       <item>_</item>
@@ -89,13 +88,7 @@
       <item>rs</item>
       <item>us</item>
       <item>sp</item>
-      <item>nl</item>
-      <item>ht</item>
-      <item>bs</item>
-      <item>cr</item>
-      <item>np</item>
       <item>null</item>
-      <item>nul</item>
     </list>
     <list name="defines">
       <item>define</item>
@@ -364,7 +357,6 @@
       <item>error?</item>
       <item>eval</item>
       <item>even?</item>
-      <item>exact-&gt;inexact</item>
       <item>exact->inexact</item>
       <item>exact-integer-sqrt</item>
       <item>exact</item>
@@ -624,7 +616,6 @@
       <item>not</item>
       <item>null-environment</item>
       <item>null?</item>
-      <item>number-&gt;string</item>
       <item>number->string</item>
       <item>number?</item>
       <item>numerator</item>
@@ -808,10 +799,10 @@
         <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>
         <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>
         <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel0"/>
       </context>
 
-      <context name="Default" attribute="Normal" lineEndContext="#stay">
+      <context name="DefaultPre" attribute="Normal" lineEndContext="#stay">
         <DetectSpaces/>
         <DetectChar attribute="Comment" context="hash" char="#" lookAhead="1"/>
         <DetectChar attribute="Comment" context="semicolon" char=";" lookAhead="1"/>
@@ -819,15 +810,48 @@
         <Detect2Chars attribute="String" context="Template" char="&amp;" char1="{"/>
         <AnyChar attribute="Other Brackets" context="#stay" String="{}[]"/>
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword attribute="Definition" context="function_decl" String="defines"/>
+      </context>
+
+      <context name="DefaultPost" attribute="Normal" lineEndContext="#stay">
         <keyword attribute="Operator" context="#stay" String="operators"/>
         <RegExpr attribute="Normal" context="#stay" String="&symbol;"/>
         <!-- s, f, d, l are extensions of Kawa -->
         <RegExpr attribute="Float" context="#stay" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>
-        <RegExpr attribute="Decimal" context="#stay" String="[0-9]++"/>
+        <Int attribute="Decimal" context="#stay"/>
       </context>
 
+      <context name="DefaultLevel0" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="DefaultPre"/>
+        <keyword attribute="Definition" context="function_decl_level0" String="defines"/>
+        <IncludeRules context="DefaultPost"/>
+      </context>
+      <context name="DefaultLevel1" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="DefaultPre"/>
+        <keyword attribute="Definition" context="function_decl_level1" String="defines"/>
+        <IncludeRules context="DefaultPost"/>
+      </context>
+      <context name="DefaultLevel2" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="DefaultPre"/>
+        <keyword attribute="Definition" context="function_decl_level2" String="defines"/>
+        <IncludeRules context="DefaultPost"/>
+      </context>
+      <context name="DefaultLevel3" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="DefaultPre"/>
+        <keyword attribute="Definition" context="function_decl_level3" String="defines"/>
+        <IncludeRules context="DefaultPost"/>
+      </context>
+      <context name="DefaultLevel4" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="DefaultPre"/>
+        <keyword attribute="Definition" context="function_decl_level4" String="defines"/>
+        <IncludeRules context="DefaultPost"/>
+      </context>
+      <context name="DefaultLevel5" attribute="Normal" lineEndContext="#stay">
+        <IncludeRules context="DefaultPre"/>
+        <keyword attribute="Definition" context="function_decl_level5" String="defines"/>
+        <IncludeRules context="DefaultPost"/>
+      </context>
 
+
       <context name="Template" attribute="String" lineEndContext="#stay">
         <DetectSpaces/>
         <DetectIdentifier/>
@@ -911,12 +935,12 @@
       <context name="XMLTagExpr1" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Brackets1" context="Level1" char="("/>
         <DetectChar attribute="XML Tag" context="#pop!XMLTag" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel0"/>
       </context>
       <context name="XMLTagExpr2" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Brackets1" context="Level1" char="("/>
         <DetectChar attribute="XML Tag" context="#pop!XMLTag" char="}"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel0"/>
       </context>
 
       <context name="XMLTag" attribute="XML Attribute" lineEndContext="#stay">
@@ -981,12 +1005,12 @@
       <context name="XMLEnclosedExpr1" attribute="Normal" lineEndContext="#pop">
         <DetectChar attribute="Brackets2" context="Level2" char="("/>
         <DetectChar attribute="Brackets1" context="#pop" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel1"/>
       </context>
       <context name="XMLEnclosedExpr2" attribute="Normal" lineEndContext="#pop">
         <DetectChar attribute="Brackets2" context="Level2" char="("/>
         <DetectChar attribute="Brackets1" context="#pop" char="}"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel1"/>
       </context>
 
       <context name="XMLProc" attribute="XML Attribute" lineEndContext="#stay" fallthroughContext="XMLProcAttrs">
@@ -1001,9 +1025,9 @@
         <DetectIdentifier/>
         <Detect2Chars attribute="XML Comment" context="XMLCommentCheck" char="-" char1="-" lookAhead="1"/>
       </context>
-      <context name="XMLCommentCheck" attribute="Comment" lineEndContext="#stay">
+      <context name="XMLCommentCheck" attribute="Comment" lineEndContext="#stay" fallthroughContext="#pop">
         <StringDetect attribute="XML Tag" context="#pop#pop" String="-->"/>
-        <Detect2Chars attribute="XML Error" context="#pop" char="-" char1="-"/>
+        <DetectChar attribute="XML Error" char="-"/>
       </context>
 
       <context name="XMLCDATA" attribute="XML CDATA" lineEndContext="#stay">
@@ -1026,6 +1050,7 @@
 
       <context name="Num2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit2">
         <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Base Prefix" context="#stay" String="ie"/>
         <AnyChar attribute="Function" context="#pop!Digit2" String="+-"/>
       </context>
       <context name="Digit2" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
@@ -1034,6 +1059,7 @@
 
       <context name="Num8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit8">
         <IncludeRules context="NumPrefix"/>
+        <AnyChar attribute="Base Prefix" context="#stay" String="ie"/>
         <AnyChar attribute="Function" context="#pop!Digit8" String="+-"/>
       </context>
       <context name="Digit8" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
@@ -1042,16 +1068,21 @@
 
       <context name="Num10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit10">
         <IncludeRules context="NumPrefix"/>
+        <DetectChar attribute="Base Prefix" context="#pop!Num16" char="x"/>
+        <DetectChar attribute="Base Prefix" context="#pop!Num8" char="o"/>
+        <DetectChar attribute="Base Prefix" context="#pop!Num2" char="b"/>
+        <AnyChar attribute="Base Prefix" context="#stay" String="ied"/>
         <AnyChar attribute="Function" context="#pop!Digit10" String="+-"/>
       </context>
       <context name="Digit10" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
         <!-- s, f, d, l are extensions of Kawa -->
         <RegExpr attribute="Float" context="#pop" String="[0-9]*+\.[0-9]++([esfdl][+-]?[0-9]++)?|[0-9]++[esfdl][+-]?[0-9]++"/>
-        <RegExpr attribute="Decimal" context="#pop" String="[0-9]++"/>
+        <Int attribute="Decimal" context="#pop" additionalDeliminator="eid"/>
       </context>
 
       <context name="Num16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop!Digit16">
         <IncludeRules context="NumPrefix"/>
+        <DetectChar attribute="Base Prefix" context="#stay" char="i"/>
         <AnyChar attribute="Function" context="#pop!Digit16" String="+-"/>
       </context>
       <context name="Digit16" attribute="Decimal" lineEndContext="#pop" fallthroughContext="#pop">
@@ -1059,8 +1090,12 @@
       </context>
 
       <context name="NumPrefix" attribute="Decimal" lineEndContext="#pop">
-        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="e"/>
-        <Detect2Chars attribute="Decimal" context="#stay" char="#" char1="i"/>
+        <Detect2Chars attribute="Base Prefix" context="#stay" char="#" char1="e"/>
+        <Detect2Chars attribute="Base Prefix" context="#stay" char="#" char1="i"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num16" char="#" char1="x"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num8" char="#" char1="o"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num2" char="#" char1="b"/>
+        <Detect2Chars attribute="Base Prefix" context="#pop!Num10" char="#" char1="d"/>
       </context>
 
 
@@ -1289,11 +1324,100 @@
       </context>
 
 
+      <!--
+      (define (f x y)
+        (+ x y))
+      # procedures that return procedures
+      (define ((f x) y)
+        (+ x y))
+      -->
+      <context name="procedure_level1" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop!Level1">
+        <DetectChar context="#pop!procedure_param1" char="(" lookAhead="1"/>
+        <RegExpr attribute="Function" context="#pop!procedure_param1" String="&funcname;"/>
+        <DetectSpaces attribute="Function"/>
+      </context>
+      <context name="procedure_level2" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop!Level2">
+        <DetectChar context="#pop!procedure_param2" char="(" lookAhead="1"/>
+        <RegExpr attribute="Function" context="#pop!procedure_param2" String="&funcname;"/>
+        <DetectSpaces attribute="Function"/>
+      </context>
+      <context name="procedure_level3" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop!Level3">
+        <DetectChar context="#pop!procedure_param3" char="(" lookAhead="1"/>
+        <RegExpr attribute="Function" context="#pop!procedure_param3" String="&funcname;"/>
+        <DetectSpaces attribute="Function"/>
+      </context>
+      <context name="procedure_level4" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop!Level4">
+        <DetectChar context="#pop!procedure_param4" char="(" lookAhead="1"/>
+        <RegExpr attribute="Function" context="#pop!procedure_param4" String="&funcname;"/>
+        <DetectSpaces attribute="Function"/>
+      </context>
+      <context name="procedure_level5" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop!Level5">
+        <DetectChar context="#pop!procedure_param5" char="(" lookAhead="1"/>
+        <RegExpr attribute="Function" context="#pop!procedure_param5" String="&funcname;"/>
+        <DetectSpaces attribute="Function"/>
+      </context>
+      <context name="procedure_level6" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop!Level6">
+        <DetectChar context="#pop!procedure_param6" char="(" lookAhead="1"/>
+        <RegExpr attribute="Function" context="#pop!procedure_param6" String="&funcname;"/>
+        <DetectSpaces attribute="Function"/>
+      </context>
+
+      <context name="procedure_param1" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets2" context="procedure_level2" char="("/>
+        <IncludeRules context="Level1"/>
+      </context>
+      <context name="procedure_param2" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets3" context="procedure_level3" char="("/>
+        <IncludeRules context="Level2"/>
+      </context>
+      <context name="procedure_param3" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets4" context="procedure_level4" char="("/>
+        <IncludeRules context="Level3"/>
+      </context>
+      <context name="procedure_param4" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets5" context="procedure_level5" char="("/>
+        <IncludeRules context="Level4"/>
+      </context>
+      <context name="procedure_param5" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets6" context="procedure_level6" char="("/>
+        <IncludeRules context="Level5"/>
+      </context>
+      <context name="procedure_param6" attribute="Normal" lineEndContext="#stay">
+        <DetectChar attribute="Brackets1" context="procedure_level1" char="("/>
+        <IncludeRules context="Level6"/>
+      </context>
+
       <context name="function_decl" attribute="Function" lineEndContext="#stay">
-        <RegExpr attribute="Function" context="#pop" String="\s*[A-Za-z0-9-!$%&quot;*/:&lt;=>?~_^+.@]*\s*"/>
+        <RegExpr attribute="Function" context="#pop" String="&funcname;"/>
+        <DetectSpaces attribute="Function"/>
       </context>
 
+      <context name="function_decl_level0" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar attribute="Brackets1" context="#pop!procedure_level1" char="("/>
+        <IncludeRules context="function_decl"/>
+      </context>
+      <context name="function_decl_level1" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar attribute="Brackets2" context="#pop!procedure_level2" char="("/>
+        <IncludeRules context="function_decl"/>
+      </context>
+      <context name="function_decl_level2" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar attribute="Brackets3" context="#pop!procedure_level3" char="("/>
+        <IncludeRules context="function_decl"/>
+      </context>
+      <context name="function_decl_level3" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar attribute="Brackets4" context="#pop!procedure_level4" char="("/>
+        <IncludeRules context="function_decl"/>
+      </context>
+      <context name="function_decl_level4" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar attribute="Brackets5" context="#pop!procedure_level5" char="("/>
+        <IncludeRules context="function_decl"/>
+      </context>
+      <context name="function_decl_level5" attribute="Function" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectChar attribute="Brackets6" context="#pop!procedure_level6" char="("/>
+        <IncludeRules context="function_decl"/>
+      </context>
 
+
       <context name="Level1" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Brackets2" context="Level2" char="("/>
         <Detect2Chars attribute="Brackets2" context="Level2" char="'" char1="("/>
@@ -1301,7 +1425,7 @@
         <Detect2Chars attribute="Brackets2" context="Level2" char="#" char1="("/>
         <Detect2Chars attribute="Brackets2" context="Level2" char="@" char1="("/>
         <DetectChar attribute="Brackets1" context="#pop" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel1"/>
       </context>
       <context name="Level2" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Brackets3" context="Level3" char="("/>
@@ -1310,7 +1434,7 @@
         <Detect2Chars attribute="Brackets3" context="Level3" char="#" char1="("/>
         <Detect2Chars attribute="Brackets3" context="Level3" char="@" char1="("/>
         <DetectChar attribute="Brackets2" context="#pop" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel2"/>
       </context>
       <context name="Level3" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Brackets4" context="Level4" char="("/>
@@ -1319,7 +1443,7 @@
         <Detect2Chars attribute="Brackets4" context="Level4" char="#" char1="("/>
         <Detect2Chars attribute="Brackets4" context="Level4" char="@" char1="("/>
         <DetectChar attribute="Brackets3" context="#pop" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel3"/>
       </context>
       <context name="Level4" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Brackets5" context="Level5" char="("/>
@@ -1328,7 +1452,7 @@
         <Detect2Chars attribute="Brackets5" context="Level5" char="#" char1="("/>
         <Detect2Chars attribute="Brackets5" context="Level5" char="@" char1="("/>
         <DetectChar attribute="Brackets4" context="#pop" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel4"/>
       </context>
       <context name="Level5" attribute="Normal" lineEndContext="#stay">
         <DetectChar attribute="Brackets6" context="Level6" char="("/>
@@ -1337,16 +1461,11 @@
         <Detect2Chars attribute="Brackets6" context="Level6" char="#" char1="("/>
         <Detect2Chars attribute="Brackets6" context="Level6" char="@" char1="("/>
         <DetectChar attribute="Brackets5" context="#pop" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="DefaultLevel5"/>
       </context>
       <context name="Level6" attribute="Normal" lineEndContext="#stay">
-        <DetectChar attribute="Brackets1" context="Level1" char="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="'" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="`" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="#" char1="("/>
-        <Detect2Chars attribute="Brackets1" context="Level1" char="@" char1="("/>
         <DetectChar attribute="Brackets6" context="#pop" char=")"/>
-        <IncludeRules context="Default"/>
+        <IncludeRules context="Level0"/>
       </context>
     </contexts>
     <itemDatas>
diff --git a/xml/sci.xml b/xml/sci.xml
--- a/xml/sci.xml
+++ b/xml/sci.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="scilab" version="6" kateversion="5.0" section="Scientific" extensions="*.sci;*.sce" mimetype="text/x-sci">
   <highlighting>
     <list name="Structure-keywords">
diff --git a/xml/scss.xml b/xml/scss.xml
--- a/xml/scss.xml
+++ b/xml/scss.xml
@@ -1,1038 +1,1496 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-  <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
-  <!ENTITY nmstart "[_a-zA-Z]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-  <!ENTITY nmchar  "[_a-zA-Z0-9-]|(\\[0-9a-fA-F]{1,6})|(\\[^\n\r\f0-9a-fA-F])">
-]>
-
-<!--
-
-Kate SCSS syntax highlighting definition
-
-Changelog:
-
-- Version 7, by Jonathan Poelen
-- fix tag followed by a pseudo-class in a nested rule (@media, ...)
-- fix constraint in a rule
-- fix Kate auto-completion for properties and rules
-- fix highlighting of pseudoclass/pseudoelement in a sub-rule
-- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Value Keyword, Color, Number, Unit, Selector Tag, Placeholder Selector
-
-- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
-- Remake for complex SCSS syntax, avoid errors
-
-- Version 2.06, by Guo Yunhe
-- Add all W3C Work Draft properties, inherit rules from css.xml
-
-- Version 1.2.03.6, by Mte90
-- Css3 Tag
-
-- Version 1.2.03.1, by Tijn Schuurmans
-- Added basic support for "@include mixin();"
-- Clean the indentation to use 4 spaces everywhere
-
--->
-
-<language name="SCSS" version="13" kateversion="5.53" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
-
-    <highlighting>
-        <list name="properties">
-            <include>properties##CSS</include>
-        </list>
-
-        <list name="sub-properties">
-            <item>adjust</item>
-            <item>after</item>
-            <item>align-all</item>
-            <item>align</item>
-            <item>align-last</item>
-            <item>alternates</item>
-            <item>anchor</item>
-            <item>area</item>
-            <item>areas</item>
-            <item>attachment</item>
-            <item>auto-columns</item>
-            <item>auto-flow</item>
-            <item>auto-rows</item>
-            <item>baseline</item>
-            <item>basis</item>
-            <item>before</item>
-            <item>bidi</item>
-            <item>blend-mode</item>
-            <item>block-color</item>
-            <item>block-end-color</item>
-            <item>block-end</item>
-            <item>block-end-style</item>
-            <item>block-end-width</item>
-            <item>block</item>
-            <item>block-start-color</item>
-            <item>block-start</item>
-            <item>block-start-style</item>
-            <item>block-start-width</item>
-            <item>block-style</item>
-            <item>block-width</item>
-            <item>border-mode</item>
-            <item>border-outset</item>
-            <item>border-repeat</item>
-            <item>border-slice</item>
-            <item>border-source</item>
-            <item>bottom-color</item>
-            <item>bottom-left-radius</item>
-            <item>bottom-right-radius</item>
-            <item>bottom-style</item>
-            <item>bottom-width</item>
-            <item>boundary</item>
-            <item>box</item>
-            <item>break</item>
-            <item>caps</item>
-            <item>cells</item>
-            <item>change</item>
-            <item>character</item>
-            <item>chars</item>
-            <item>collapse</item>
-            <item>column-end</item>
-            <item>column</item>
-            <item>column-start</item>
-            <item>combine-upright</item>
-            <item>composite</item>
-            <item>count</item>
-            <item>decoration-break</item>
-            <item>decoration-color</item>
-            <item>decoration</item>
-            <item>decoration-line</item>
-            <item>decoration-skip-ink</item>
-            <item>decoration-skip</item>
-            <item>decoration-style</item>
-            <item>decoration-width</item>
-            <item>defer</item>
-            <item>delay</item>
-            <item>distance</item>
-            <item>down</item>
-            <item>duration</item>
-            <item>during</item>
-            <item>east-asian</item>
-            <item>emoji</item>
-            <item>emphasis-color</item>
-            <item>emphasis</item>
-            <item>emphasis-position</item>
-            <item>emphasis-skip</item>
-            <item>emphasis-style</item>
-            <item>end-color</item>
-            <item>end</item>
-            <item>end-style</item>
-            <item>end-width</item>
-            <item>events</item>
-            <item>family</item>
-            <item>feature-settings</item>
-            <item>fill-mode</item>
-            <item>filters</item>
-            <item>fit</item>
-            <item>flow</item>
-            <item>fragment</item>
-            <item>from</item>
-            <item>function</item>
-            <item>grow</item>
-            <item>gutter</item>
-            <item>header</item>
-            <item>height-step</item>
-            <item>image</item>
-            <item>image-outset</item>
-            <item>image-repeat</item>
-            <item>image-slice</item>
-            <item>image-source</item>
-            <item>image-threshold</item>
-            <item>image-transform</item>
-            <item>image-width</item>
-            <item>increment</item>
-            <item>indent</item>
-            <item>inline-color</item>
-            <item>inline-end-color</item>
-            <item>inline-end</item>
-            <item>inline-end-style</item>
-            <item>inline-end-width</item>
-            <item>inline</item>
-            <item>inline-start-color</item>
-            <item>inline-start</item>
-            <item>inline-start-style</item>
-            <item>inline-start-width</item>
-            <item>inline-style</item>
-            <item>inline-width</item>
-            <item>insert</item>
-            <item>inside</item>
-            <item>interpolation-filters</item>
-            <item>into</item>
-            <item>items</item>
-            <item>iteration-count</item>
-            <item>justify</item>
-            <item>kerning</item>
-            <item>knockout-left</item>
-            <item>knockout-right</item>
-            <item>label</item>
-            <item>language-override</item>
-            <item>last</item>
-            <item>layout</item>
-            <item>left-color</item>
-            <item>left-radius</item>
-            <item>left-style</item>
-            <item>left-width</item>
-            <item>letter-align</item>
-            <item>letter</item>
-            <item>letter-wrap</item>
-            <item>level</item>
-            <item>ligatures</item>
-            <item>limit-chars</item>
-            <item>limit-last</item>
-            <item>limit-lines</item>
-            <item>limit-zone</item>
-            <item>line</item>
-            <item>lines</item>
-            <item>loop</item>
-            <item>max-size</item>
-            <item>merge</item>
-            <item>mid</item>
-            <item>min-size</item>
-            <item>mode</item>
-            <item>name</item>
-            <item>numeral</item>
-            <item>numeric</item>
-            <item>optical-sizing</item>
-            <item>orientation</item>
-            <item>orientation-vertical</item>
-            <item>origin</item>
-            <item>outset</item>
-            <item>outside</item>
-            <item>override</item>
-            <item>palette</item>
-            <item>path</item>
-            <item>pattern</item>
-            <item>play-state</item>
-            <item>point</item>
-            <item>policy</item>
-            <item>property</item>
-            <item>punctuation</item>
-            <item>radius</item>
-            <item>range</item>
-            <item>rate</item>
-            <item>reference</item>
-            <item>rendering</item>
-            <item>repeat</item>
-            <item>reset</item>
-            <item>resolution</item>
-            <item>right-color</item>
-            <item>right-radius</item>
-            <item>right-style</item>
-            <item>right-width</item>
-            <item>rotate</item>
-            <item>round</item>
-            <item>row-end</item>
-            <item>row</item>
-            <item>rows</item>
-            <item>row-start</item>
-            <item>rule-color</item>
-            <item>rule</item>
-            <item>rule-style</item>
-            <item>rule-width</item>
-            <item>segment</item>
-            <item>select</item>
-            <item>self</item>
-            <item>set</item>
-            <item>settings</item>
-            <item>shadow</item>
-            <item>shape</item>
-            <item>shift</item>
-            <item>shrink</item>
-            <item>side</item>
-            <item>size-adjust</item>
-            <item>sizing</item>
-            <item>skip-ink</item>
-            <item>skip</item>
-            <item>slice</item>
-            <item>snap</item>
-            <item>source</item>
-            <item>space-collapse</item>
-            <item>space</item>
-            <item>space-trim</item>
-            <item>spacing</item>
-            <item>span</item>
-            <item>speed</item>
-            <item>start-color</item>
-            <item>start</item>
-            <item>start-style</item>
-            <item>start-width</item>
-            <item>state</item>
-            <item>step-align</item>
-            <item>step-insert</item>
-            <item>step</item>
-            <item>step-round</item>
-            <item>step-size</item>
-            <item>stretch</item>
-            <item>style-image</item>
-            <item>style</item>
-            <item>style-position</item>
-            <item>style-type</item>
-            <item>synthesis</item>
-            <item>template-areas</item>
-            <item>template-columns</item>
-            <item>template</item>
-            <item>template-rows</item>
-            <item>threshold</item>
-            <item>through</item>
-            <item>timing-function</item>
-            <item>top-color</item>
-            <item>top-left-radius</item>
-            <item>top-right-radius</item>
-            <item>top-style</item>
-            <item>top-width</item>
-            <item>trim</item>
-            <item>type</item>
-            <item>underline-offset</item>
-            <item>underline-position</item>
-            <item>up</item>
-            <item>upright</item>
-            <item>variant-alternates</item>
-            <item>variant-caps</item>
-            <item>variant-east-asian</item>
-            <item>variant-emoji</item>
-            <item>variant</item>
-            <item>variant-ligatures</item>
-            <item>variant-numeric</item>
-            <item>variant-position</item>
-            <item>variation-settings</item>
-            <item>vertical</item>
-            <item>weight</item>
-            <item>wrap</item>
-            <item>x</item>
-            <item>y</item>
-            <item>zone</item>
-        </list>
-
-        <list name="special values">
-            <item>true</item>
-            <item>false</item>
-            <item>null</item>
-        </list>
-
-        <list name="value keywords">
-            <include>value keywords##CSS</include>
-        </list>
-
-        <list name="values">
-            <include>values##CSS</include>
-        </list>
-
-        <list name="colors">
-            <include>colors##CSS</include>
-        </list>
-
-        <list name="functions">
-            <include>functions##CSS</include>
-
-            <!-- sass -->
-            <item>red</item>
-            <item>green</item>
-            <item>blue</item>
-            <item>mix</item>
-            <item>hue</item>
-            <item>saturation</item>
-            <item>lightness</item>
-            <item>adjust-hue</item>
-            <item>lighten</item>
-            <item>darken</item>
-            <item>saturate</item>
-            <item>desaturate</item>
-            <item>grayscale</item>
-            <item>complement</item>
-            <item>invert</item>
-            <item>alpha</item>
-            <item>opacify</item>
-            <item>transparentize</item>
-            <item>adjust-color</item>
-            <item>scale-color</item>
-            <item>change-color</item>
-            <item>ie-hex-str</item>
-            <item>unquote</item>
-            <item>quote</item>
-            <item>str-length</item>
-            <item>str-insert</item>
-            <item>str-index</item>
-            <item>str-slice</item>
-            <item>to-upper-case</item>
-            <item>to-lower-case</item>
-            <item>percentage</item>
-            <item>round</item>
-            <item>ceil</item>
-            <item>floor</item>
-            <item>abs</item>
-            <item>min</item>
-            <item>max</item>
-            <item>random</item>
-            <item>length</item>
-            <item>nth</item>
-            <item>set-nth</item>
-            <item>join</item>
-            <item>append</item>
-            <item>zip</item>
-            <item>index</item>
-            <item>list-separator</item>
-            <item>is-bracketed</item>
-            <item>map-get</item>
-            <item>map-merge</item>
-            <item>map-remove</item>
-            <item>map-keys</item>
-            <item>map-values</item>
-            <item>map-has-key</item>
-            <item>keywords</item>
-            <item>selector-nest</item>
-            <item>selector-append</item>
-            <item>selector-extend</item>
-            <item>selector-replace</item>
-            <item>selector-unify</item>
-            <item>is-superselector</item>
-            <item>simple-selectors</item>
-            <item>selector-parse</item>
-            <item>feature-exists</item>
-            <item>variable-exists</item>
-            <item>global-variable-exists</item>
-            <item>function-exists</item>
-            <item>mixin-exists</item>
-            <item>content-exists</item>
-            <item>inspect</item>
-            <item>type-of</item>
-            <item>unit</item>
-            <item>unitless</item>
-            <item>comparable</item>
-            <item>call</item>
-            <item>get-function</item>
-            <item>if</item>
-            <item>unique-id</item>
-        </list>
-
-        <list name="medias">
-            <include>medias##CSS</include>
-        </list>
-
-        <!-- prefixed by :: -->
-        <list name="pseudoelements">
-            <include>pseudoelements##CSS</include>
-        </list>
-
-        <!-- prefixed by : -->
-        <list name="pseudoclasses">
-            <include>pseudoclasses##CSS</include>
-        </list>
-
-        <list name="pseudoclass-selector">
-            <include>pseudoclass-selector##CSS</include>
-        </list>
-
-        <list name="pseudoclasses-@page">
-            <include>pseudoclasses-@page##CSS</include>
-        </list>
-
-        <list name="at-rules">
-            <include>at-rules##CSS</include>
-
-            <!-- scss -->
-            <item>@debug</item>
-            <item>@warn</item>
-            <item>@error</item>
-            <item>@content</item>
-            <item>@return</item>
-        </list>
-
-        <list name="nested at-rules">
-            <include>nested at-rules##CSS</include>
-
-            <!-- scss -->
-            <item>@at-rule</item>
-            <item>@for</item>
-            <item>@each</item>
-            <item>@while</item>
-        </list>
-
-        <list name="inline and nested at-rules">
-            <!-- CSS: inline -->
-            <!-- SCSS: inline or block -->
-            <item>@include</item>
-        </list>
-
-        <list name="@extend">
-            <item>@extend</item>
-        </list>
-
-        <list name="@if">
-            <item>@if</item>
-        </list>
-
-        <list name="@else">
-            <item>@else</item>
-        </list>
-
-        <list name="@mixin">
-            <item>@mixin</item>
-            <item>@function</item>
-        </list>
-
-        <list name="@viewport">
-            <item>@viewport</item>
-        </list>
-
-        <list name="within-@viewport">
-            <include>within-@viewport##CSS</include>
-        </list>
-
-        <list name="@page">
-            <item>@page</item>
-        </list>
-
-        <list name="within-@page">
-            <include>within-@page##CSS</include>
-        </list>
-
-        <list name="@font-face">
-            <item>@font-face</item>
-        </list>
-
-        <list name="within-@font-face">
-            <include>within-@font-face##CSS</include>
-        </list>
-
-        <list name="@keyframes">
-            <item>@keyframes</item>
-        </list>
-
-        <list name="within-@keyframes">
-            <include>within-@keyframes##CSS</include>
-        </list>
-
-        <list name="media operators">
-            <include>media operators##CSS</include>
-        </list>
-
-        <list name="operators">
-            <item>and</item>
-            <item>or</item>
-            <item>not</item>
-        </list>
-
-        <list name="annotations">
-            <item>important</item>
-            <item>default</item>
-            <item>global</item>
-        </list>
-
-        <contexts>
-            <context name="Base" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="At Rule" context="SelectAtRule" char="@" lookAhead="true" />
-                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
-                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
-                <DetectChar attribute="Separator Symbol" context="IsSelectors" char="," />
-                <AnyChar attribute="Operator" context="IsSelectors" String="*>+~|&amp;" />
-                <RegExpr attribute="Selector Pseudo" context="SelectorPseudo" String=":(?=[a-z:])" />
-                <RegExpr attribute="Selector Id" context="IsSelectors" String="#[-]?(&nmstart;)(&nmchar;)*" />
-                <RegExpr attribute="Selector Class" context="IsSelectors" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Placeholder Selector" context="IsSelectors" String="%[_a-zA-Z][_a-zA-Z\-]*" />
-                <RegExpr attribute="Selector Tag" context="IsSelectors" String="[-]?(&nmstart;)(&nmchar;)*(?=\s|:?[#.&amp;{[*>+~|,]|:[a-z:])" />
-                <RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
-                <Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
-            </context>
-
-            <context name="IsSelectors" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="At Rule" context="#pop!SelectAtRule" char="@" lookAhead="true" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Error" context="#pop" char=";" />
-                <AnyChar attribute="Operator" context="#stay" String="*>+~|&amp;" />
-                <IncludeRules context="SelectorTypes" />
-            </context>
-
-            <context name="FindSelector" attribute="Normal Text" lineEndContext="#stay">
-                <AnyChar attribute="Error" context="#stay" String=",&amp;" />
-                <AnyChar attribute="Operator" context="#stay" String="*>+~|" />
-                <IncludeRules context="SelectorTypes" />
-            </context>
-
-            <context name="SelectorTypes" attribute="Normal Text" lineEndContext="#stay">
-                <!-- find selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="[" />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Selector Id" context="#stay" String="#[-]?(&nmstart;)(&nmchar;)*" />
-                <RegExpr attribute="Selector Class" context="#stay" String="\.([a-zA-Z0-9\-_]|[\x80-\xFF]|\\[0-9A-Fa-f]{1,6})*" />
-                <RegExpr attribute="Placeholder Selector" context="#stay" String="%[_a-zA-Z][_a-zA-Z\-]*" />
-                <RegExpr attribute="Selector Tag" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
-                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
-            </context>
-
-            <context name="VariableDefine" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-            </context>
-
-            <context name="Interpolation" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Interpolation" context="#pop" char="}" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="InterpolationMaybeProperty" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Interpolation" context="#pop!MaybeProperty" char="}" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="MaybeProperty" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Normal Text" context="Rule" String=":($|[/{\s0-9$&quot;'])" lookAhead="true"/>
-            </context>
-
-
-            <!-- find functions // rgba(255,255,255,0.75) -->
-            <context name="FindFunctions" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Function" context="Function" String="[a-z\-]{2,}\(" lookAhead="true" />
-            </context>
-
-            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
-            <context name="FindValues" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Annotation" context="Annotation" char="!" />
-                <keyword attribute="Operator" context="#stay" String="operators" />
-                <keyword attribute="Value Keyword" context="#stay" String="value keywords" />
-                <keyword attribute="Value" context="#stay" String="values" />
-                <keyword attribute="Color" context="#stay" String="colors" />
-                <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?" />
-                <RegExpr attribute="Color" context="#stay" String="#([0-9A-Fa-f]{3,4}){1,2}\b" />
-                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
-                <keyword attribute="Value Keyword" context="#stay" String="special values" />
-                <RegExpr attribute="Normal Text" context="#stay" String="[-]?(&nmstart;)(&nmchar;)*" />
-                <AnyChar attribute="Operator" context="#stay" String="*/+%-" />
-                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
-            </context>
-
-            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <keyword attribute="Annotation" context="#pop" String="annotations" />
-            </context>
-
-            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cm|mm|Q|in|pc|pt|px|deg|rad|grad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|x)\b)" />
-            </context>
-
-            <!-- find strings // "some words" 'some words' -->
-            <context name="FindStrings" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="String" context="StringDQ" char="&quot;" />
-                <DetectChar attribute="String" context="StringSQ" char="'" />
-            </context>
-
-            <!-- find comments // /* comment */ -->
-            <context name="FindComments" attribute="Normal Text" lineEndContext="#stay">
-                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="/" lookAhead="true"/>
-                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="true"/>
-            </context>
-
-            <context name="IsComments" attribute="Normal Text" lineEndContext="#stay">
-                <RegExpr attribute="Region Marker" context="#stay" String="/\*\s*BEGIN\b.*\*/|//\s*BEGIN\b.*" beginRegion="UserDefined" />
-                <RegExpr attribute="Region Marker" context="#stay" String="/\*\s*END\b.*\*/|//\s*END\b.*" endRegion="UserDefined" />
-                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment" />
-                <Detect2Chars attribute="Comment" context="SassComment" char="/" char1="/" />
-            </context>
-
-            <context name="SassComment" attribute="Comment" lineEndContext="#pop#pop">
-                <DetectSpaces />
-                <IncludeRules context="##Comments" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
-                <keyword attribute="At Rule" context="#pop!NestedAtRule" String="nested at-rules" />
-                <keyword attribute="At Rule" context="#pop!AtRule" String="at-rules" />
-                <keyword attribute="At Rule" context="#pop!UnknownAtRule" String="inline and nested at-rules" />
-                <keyword attribute="At Rule" context="#pop!@extend" String="@extend" />
-                <keyword attribute="At Rule" context="#pop!@mixin" String="@mixin" />
-                <keyword attribute="At Rule" context="#pop!@keyframes" String="@keyframes" />
-                <keyword attribute="At Rule" context="#pop!@viewport" String="@viewport" />
-                <keyword attribute="At Rule" context="#pop!@font-face" String="@font-face" />
-                <keyword attribute="At Rule" context="#pop!@if" String="@if" />
-                <keyword attribute="At Rule" context="#pop!@else" String="@else" />
-                <keyword attribute="At Rule" context="#pop!@page" String="@page" />
-                <RegExpr attribute="At Rule" context="#pop!UnknownAtRule" String="@[a-zA-Z0-9\-_]+\b" />
-            </context>
-
-            <context name="@if" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <AnyChar attribute="Operator" context="#stay" String="=!&lt;&gt;" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="@else" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <WordDetect attribute="At Rule" context="#pop!@if" String="if" />
-                <DetectIdentifier attribute="Error" />
-            </context>
-
-            <context name="@extend" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <context name="@mixin" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Function" context="MixinParameter" String="[a-zA-Z0-9\-_]+" />
-            </context>
-
-            <context name="MixinParameter" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <AnyChar attribute="Normal Text" context="#stay" String="()" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Variable" context="#stay" String="\$[a-zA-Z0-9\-_]+" />
-                <StringDetect attribute="Operator" context="#stay" String="..." />
-            </context>
-
-            <context name="@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="Within-@keyframes" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@keyframes" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop#pop" char="}" endRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="RuleSet" char="{" beginRegion="ruleset" />
-                <keyword attribute="Value" context="#stay" String="within-@keyframes" />
-                <RegExpr attribute="Value" context="#stay" String="[-+]?[0-9.]+%" />
-            </context>
-
-            <context name="@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@viewport" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@viewport" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@viewport" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@font-face" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="Within-@font-face" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <keyword attribute="Property" context="IsProperty" String="within-@font-face" />
-                <RegExpr attribute="Unknown Property" context="IsProperty" String="[A-Za-z_-]+\b" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-            </context>
-
-            <context name="@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudo-@page" char=":" />
-                <DetectChar attribute="Normal Text" context="#pop!Within-@page" char="{" beginRegion="ruleset" />
-            </context>
-
-            <context name="SelectorPseudo-@page" attribute="Selector Pseudo" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop">
-                <keyword attribute="Selector Pseudo" context="#pop" String="pseudoclasses-@page" />
-                <RegExpr attribute="Selector Pseudo" context="#pop" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="Within-@page" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <keyword attribute="Property" context="IsProperty" String="within-@page" />
-                <IncludeRules context="RuleSet" />
-            </context>
-
-            <context name="IsProperty" attribute="Error" lineEndContext="#stay">
-                <DetectSpaces attribute="Normal Text" />
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-                <IncludeRules context="FindComments" />
-            </context>
-
-            <context name="NestedAtRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="AtRule" attribute="Normal Text" lineEndContext="#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="UnknownAtRule" attribute="Normal Text" lineEndContext="#pop">
-                <DetectSpaces />
-                <DetectChar attribute="Separator Symbol" context="#pop" char=";" />
-                <DetectChar attribute="Normal Text" context="#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <IncludeRules context="AtRuleValue" />
-            </context>
-
-            <context name="AtRuleValue" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Operator" context="#stay" char="&amp;" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <keyword attribute="Keyword" context="#stay" String="media operators" />
-                <RegExpr attribute="Property" context="#stay" String="[A-Za-z_-]+(?=\s*:)" />
-                <keyword attribute="Value" context="#stay" String="medias" />
-                <IncludeRules context="FindValues" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="SelectorAttr" attribute="Selector Attribute" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop" char="]" />
-                <IncludeRules context="FindStrings" />
-                <DetectChar   attribute="Operator" context="SelectorAttrValue" char="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="~" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="^" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="$" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="*" char1="=" />
-                <Detect2Chars attribute="Operator" context="SelectorAttrValue" char="|" char1="=" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorAttrValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Selector Attribute" context="#pop#pop" char="]" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="SelectorPseudo" attribute="Selector Pseudo" lineEndContext="#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoElements" char=":" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValueSelector" String="pseudoclass-selector" />
-                <keyword attribute="Selector Pseudo" context="SelectorPseudoValue" String="pseudoclasses" />
-                <RegExpr attribute="Selector Pseudo" context="SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoElements" attribute="Selector Pseudo" lineEndContext="#pop#pop">
-                <keyword attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="pseudoelements" />
-                <RegExpr attribute="Selector Pseudo" context="#pop!SelectorPseudoValue" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="SelectorPseudoValueSelector" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueCloseSelector" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueCloseSelector" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectChar attribute="Error" context="#pop#pop#pop!RuleSet" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindSelector" />
-            </context>
-
-            <context name="SelectorPseudoValue" attribute="Selector Pseudo" lineEndContext="#pop#pop" fallthrough="true" fallthroughContext="#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="SelectorPseudoValueClose" char="(" />
-            </context>
-
-            <context name="SelectorPseudoValueClose" attribute="Selector Pseudo" lineEndContext="#pop#pop#pop">
-                <DetectChar attribute="Selector Pseudo" context="#pop#pop#pop" char=")" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="Comment" attribute="Comment" lineEndContext="#stay">
-                <DetectSpaces />
-                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment" />
-                <IncludeRules context="##Comments" />
-                <DetectIdentifier />
-            </context>
-
-            <context name="RuleSet" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char="}" endRegion="ruleset" />
-                <RegExpr attribute="Property" context="Rule" String="[A-Za-z_-]+\s*:($|[/{\s0-9$&quot;'])" lookAhead="true" />
-                <IncludeRules context="Base" />
-                <!-- auto-completion only, includes by a previous rule -->
-                <keyword attribute="Normal Text" context="#stay" String="properties" />
-            </context>
-
-            <context name="Rule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Normal Text" context="RuleParameters" char=":" />
-                <Detect2Chars attribute="Variable" context="IsVariable" char="-" char1="-" />
-                <keyword attribute="Property" context="#stay" String="properties" />
-                <RegExpr attribute="Unknown Property" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="IsVariable" attribute="Normal Text" lineEndContext="#pop">
-                <DetectChar attribute="Normal Text" context="#pop!RuleParameters" char=":" />
-                <RegExpr attribute="Variable" context="#stay" String="[^:]+" />
-            </context>
-
-            <context name="RuleParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <!-- Jump out conditions -->
-                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
-                <DetectChar attribute="Normal Text" context="SubRule" char="{" beginRegion="ruleset" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="SubRule" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <DetectChar attribute="Normal Text" context="#pop#pop#pop" char="}" endRegion="ruleset" />
-                <RegExpr attribute="Property" context="IsProperty" String="[A-Za-z_-]+(?=\s*:)" />
-                <RegExpr attribute="Variable" context="VariableDefine" String="\$[a-zA-Z0-9\-_]+(?=\s*:)" />
-                <Detect2Chars attribute="Interpolation" context="InterpolationMaybeProperty" char="#" char1="{" />
-                <DetectIdentifier />
-                <AnyChar attribute="Error" context="#stay" String="*>+~|.#" />
-                <!-- auto-completion only, includes by previous rule -->
-                <keyword attribute="Normal Text" context="#stay" String="properties" />
-                <keyword attribute="Normal Text" context="#stay" String="sub-properties" />
-            </context>
-
-            <context name="Function" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="FunctionParameters" char="(" />
-                <StringDetect attribute="Function" context="FunctionVar" String="var(" />
-                <StringDetect attribute="Function" context="FunctionUrl" String="url(" />
-                <StringDetect attribute="Function" context="FunctionCalc" String="calc(" />
-                <keyword attribute="Function" context="#stay" String="functions" />
-                <RegExpr attribute="Function" context="#stay" String="[-a-zA-Z][-a-zA-Z0-9]*" />
-            </context>
-
-            <context name="FunctionVar" attribute="Variable" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!FunctionParameters">
-                <DetectSpaces />
-                <IncludeRules context="FindComments" />
-                <RegExpr attribute="Variable" context="#pop!FunctionParameters" String="--[^ \t\),]+" />
-            </context>
-
-            <context name="FunctionCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="NestedCalc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Normal Text" context="#pop" char=")" />
-                <IncludeRules context="Calc" />
-            </context>
-
-            <context name="Calc" attribute="Normal Text" lineEndContext="#stay">
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <DetectChar attribute="Normal Text" context="NestedCalc" char="(" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <RegExpr attribute="Operator" context="#stay" String="[-](?=$|[ \t(,;])|[+](?=$|[^0-9)])|[/*]" />
-                <!-- auto-completion only -->
-                <keyword attribute="Normal Text" context="#stay" String="functions" />
-            </context>
-
-            <context name="FunctionUrl" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="UrlValue">
-                <DetectSpaces />
-                <IncludeRules context="FindStrings" />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-            </context>
-
-            <context name="UrlValue" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="Function" context="#pop#pop#pop" char=")" />
-            </context>
-
-            <context name="FunctionParameters" attribute="Normal Text" lineEndContext="#stay">
-                <DetectSpaces />
-                <DetectChar attribute="Function" context="#pop#pop" char=")" />
-                <IncludeRules context="FindComments" />
-                <IncludeRules context="FindStrings" />
-                <IncludeRules context="FindFunctions" />
-                <IncludeRules context="FindValues" />
-                <DetectChar attribute="Separator Symbol" context="#stay" char="," />
-                <StringDetect attribute="Operator" String="..." />
-            </context>
-
-            <!-- string contexts -->
-            <context name="StringDQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="&quot;" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="StringSQ" attribute="String" lineEndContext="#stay">
-                <DetectChar attribute="String" context="#pop" char="'" />
-                <IncludeRules context="InsideString" />
-            </context>
-
-            <context name="InsideString" attribute="String" lineEndContext="#stay">
-                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{" />
-                <RegExpr attribute="SpecialChar" context="#stay" String="\\([0-9A-Fa-f]{1,6}|.?)" />
-                <RegExpr attribute="String" context="#stay" String="\\?[^#&quot;'\\]+" />
-            </context>
-
-        </contexts>
-
-        <itemDatas>
-            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
-            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
-            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="String" defStyleNum="dsString"/>
-            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
-            <itemData name="Interpolation" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
-            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
-            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
-            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
-            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
-            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
-            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
-            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
-            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
-            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
-            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
-            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
-            <itemData name="Placeholder Selector" defStyleNum="dsBuiltIn" spellChecking="false"/>
-            <itemData name="Comment" defStyleNum="dsComment" />
-            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
-            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
-        </itemDatas>
-    </highlighting>
-
-    <general>
-        <keywords casesensitive="0" weakDeliminator="-%@" />
-        <comments>
-            <comment name="singleLine" start="//" position="afterwhitespace" />
-            <comment name="multiLine" start="/*" end="*/" region="comment" />
+<!DOCTYPE language
+[
+  <!-- https://www.w3.org/TR/CSS22/syndata.html#tokenization -->
+  <!ENTITY escaped "\\([0-9a-fA-F]{1,6}|[^\n\r\f0-9a-fA-F])">
+  <!-- identifiers starting with several - are invalid, but supported by browsers -->
+  <!ENTITY ident2  "([-\w]+|&escaped;)+">
+  <!ENTITY selector "(&ident2;|(?=\#\{))">
+  <!ENTITY ident   "-?([_a-zA-Z]+|&escaped;)([-_a-zA-Z0-9]+|&escaped;)*">
+  <!ENTITY var     "--[-\w]*">
+  <!ENTITY func    "[-_a-zA-Z][-_a-zA-Z0-9]*">
+  <!ENTITY propcheck "(?=\s*(/[*].*?[*]/\s*)?:)">
+
+  <!-- #{...} and #{...#{...}...} -->
+  <!ENTITY interpolation "#\{([^}#]*+|#\{[^}]*+\})*+\}">
+  <!ENTITY comment "/\*.*?\*/">
+  <!ENTITY spaces "(\s|&comment;)*+">
+  <!-- TODO -->
+  <!ENTITY pseudoclasses "active|any-link|autofill|buffering|checked|current|default|defined|dir|disabled|empty|enabled|first|first-child|first-of-type|focus|focus-visible|focus-within|fullscreen|has|host|host-context|hover|in-range|indeterminate|invalid|is|lang|last-child|last-of-type|left|link|local-link|modal|muted|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|optional|out-of-range|paused|picture-in-picture|placeholder-shown|playing|read-only|read-write|required|right|root|scope|seeking|stalled|target|user-invalid|user-valid|valid|visited|volume-locked|where">
+
+  <!ENTITY propvar1 "([-_a-zA-Z0-9]*+\.)?\$">
+  <!ENTITY propvar2 "--[-_a-zA-Z0-9]*+&spaces;:">
+  <!ENTITY maybeprop "([-a-zA-Z]++|&interpolation;)+&spaces;:(?!:)">
+  <!ENTITY assumeprop "([^-a-zA-Z]|$|((?!(&pseudoclasses;)\b)[^;{}:]*+(\s*[;}]|$)))">
+]>
+
+<!--
+
+Kate SCSS syntax highlighting definition
+
+Changelog:
+
+- Version 7, by Jonathan Poelen
+- fix tag followed by a pseudo-class in a nested rule (@media, ...)
+- fix constraint in a rule
+- fix Kate auto-completion for properties and rules
+- fix highlighting of pseudoclass/pseudoelement in a sub-rule
+- New highlighting categories: Keyword, Operator, Separator Symbol, SpecialChar, Value Keyword, Color, Number, Unit, Selector Tag, Placeholder Selector
+
+- Version 4, by Guo Yunhe guoyunhebrave@gmail.com
+- Remake for complex SCSS syntax, avoid errors
+
+- Version 2.06, by Guo Yunhe
+- Add all W3C Work Draft properties, inherit rules from css.xml
+
+- Version 1.2.03.6, by Mte90
+- Css3 Tag
+
+- Version 1.2.03.1, by Tijn Schuurmans
+- Added basic support for "@include mixin();"
+- Clean the indentation to use 4 spaces everywhere
+
+-->
+
+<language name="SCSS" version="17" kateversion="5.79" section="Markup" extensions="*.scss" indenter="cstyle" mimetype="text/css" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL" priority="10">
+
+    <highlighting>
+        <list name="properties">
+            <include>properties##CSS</include>
+        </list>
+
+        <list name="vendor properties">
+            <include>vendor properties##CSS</include>
+        </list>
+
+        <list name="sub-properties">
+            <item>-webkit</item>
+            <item>-webkit-line</item>
+            <item>-webkit-text</item>
+            <item>-webkit-text-fill</item>
+            <item>accent</item>
+            <item>action</item>
+            <item>additive</item>
+            <item>adjust</item>
+            <item>after</item>
+            <item>align</item>
+            <item>align-last</item>
+            <item>alternates</item>
+            <item>anchor</item>
+            <item>animation-fill</item>
+            <item>animation-iteration</item>
+            <item>animation-play</item>
+            <item>animation-timing</item>
+            <item>area</item>
+            <item>areas</item>
+            <item>as</item>
+            <item>ascent</item>
+            <item>asian</item>
+            <item>aspect</item>
+            <item>attachment</item>
+            <item>auto</item>
+            <item>auto-columns</item>
+            <item>auto-flow</item>
+            <item>auto-rows</item>
+            <item>backdrop</item>
+            <item>backface</item>
+            <item>background-blend</item>
+            <item>base</item>
+            <item>basis</item>
+            <item>before</item>
+            <item>behavior</item>
+            <item>behavior-block</item>
+            <item>behavior-inline</item>
+            <item>behavior-x</item>
+            <item>behavior-y</item>
+            <item>bidi</item>
+            <item>blend</item>
+            <item>blend-mode</item>
+            <item>block</item>
+            <item>block-color</item>
+            <item>block-end</item>
+            <item>block-end-color</item>
+            <item>block-end-style</item>
+            <item>block-end-width</item>
+            <item>block-start</item>
+            <item>block-start-color</item>
+            <item>block-start-style</item>
+            <item>block-start-width</item>
+            <item>block-style</item>
+            <item>block-width</item>
+            <item>border-bottom-left</item>
+            <item>border-bottom-right</item>
+            <item>border-end</item>
+            <item>border-end-end</item>
+            <item>border-end-start</item>
+            <item>border-mode</item>
+            <item>border-outset</item>
+            <item>border-repeat</item>
+            <item>border-slice</item>
+            <item>border-source</item>
+            <item>border-start</item>
+            <item>border-start-end</item>
+            <item>border-start-start</item>
+            <item>border-top-left</item>
+            <item>border-top-right</item>
+            <item>bottom-color</item>
+            <item>bottom-left</item>
+            <item>bottom-left-radius</item>
+            <item>bottom-right</item>
+            <item>bottom-right-radius</item>
+            <item>bottom-style</item>
+            <item>bottom-width</item>
+            <item>box</item>
+            <item>box-decoration</item>
+            <item>break</item>
+            <item>caps</item>
+            <item>caption</item>
+            <item>caret</item>
+            <item>cells</item>
+            <item>change</item>
+            <item>character</item>
+            <item>chars</item>
+            <item>clamp</item>
+            <item>clip</item>
+            <item>clip-margin</item>
+            <item>collapse</item>
+            <item>color-adjust</item>
+            <item>colors</item>
+            <item>column</item>
+            <item>column-end</item>
+            <item>column-start</item>
+            <item>combine</item>
+            <item>combine-upright</item>
+            <item>composite</item>
+            <item>composition</item>
+            <item>contain-intrinsic</item>
+            <item>contain-intrinsic-block</item>
+            <item>contain-intrinsic-inline</item>
+            <item>count</item>
+            <item>counter</item>
+            <item>decoration</item>
+            <item>decoration-break</item>
+            <item>decoration-color</item>
+            <item>decoration-line</item>
+            <item>decoration-skip</item>
+            <item>decoration-skip-ink</item>
+            <item>decoration-style</item>
+            <item>decoration-thickness</item>
+            <item>delay</item>
+            <item>depth</item>
+            <item>descent</item>
+            <item>distance</item>
+            <item>duration</item>
+            <item>east</item>
+            <item>east-asian</item>
+            <item>emoji</item>
+            <item>emphasis</item>
+            <item>emphasis-color</item>
+            <item>emphasis-position</item>
+            <item>emphasis-style</item>
+            <item>empty</item>
+            <item>end</item>
+            <item>end-color</item>
+            <item>end-end</item>
+            <item>end-end-radius</item>
+            <item>end-radius</item>
+            <item>end-start</item>
+            <item>end-start-radius</item>
+            <item>end-style</item>
+            <item>end-width</item>
+            <item>events</item>
+            <item>family</item>
+            <item>feature</item>
+            <item>feature-settings</item>
+            <item>fill</item>
+            <item>fill-color</item>
+            <item>fill-mode</item>
+            <item>fit</item>
+            <item>flow</item>
+            <item>font-feature</item>
+            <item>font-language</item>
+            <item>font-optical</item>
+            <item>font-synthesis-small</item>
+            <item>font-variant-east</item>
+            <item>font-variation</item>
+            <item>forced</item>
+            <item>forced-color</item>
+            <item>function</item>
+            <item>gap-override</item>
+            <item>grid-auto</item>
+            <item>grow</item>
+            <item>gutter</item>
+            <item>hanging</item>
+            <item>hyphenate</item>
+            <item>hyphenate-limit</item>
+            <item>image</item>
+            <item>image-outset</item>
+            <item>image-repeat</item>
+            <item>image-slice</item>
+            <item>image-source</item>
+            <item>image-threshold</item>
+            <item>image-width</item>
+            <item>increment</item>
+            <item>indent</item>
+            <item>index</item>
+            <item>initial</item>
+            <item>ink</item>
+            <item>inline</item>
+            <item>inline-color</item>
+            <item>inline-end</item>
+            <item>inline-end-color</item>
+            <item>inline-end-style</item>
+            <item>inline-end-width</item>
+            <item>inline-start</item>
+            <item>inline-start-color</item>
+            <item>inline-start-style</item>
+            <item>inline-start-width</item>
+            <item>inline-style</item>
+            <item>inline-width</item>
+            <item>inside</item>
+            <item>intrinsic</item>
+            <item>intrinsic-block</item>
+            <item>intrinsic-block-size</item>
+            <item>intrinsic-height</item>
+            <item>intrinsic-inline</item>
+            <item>intrinsic-inline-size</item>
+            <item>intrinsic-size</item>
+            <item>intrinsic-width</item>
+            <item>items</item>
+            <item>iteration</item>
+            <item>iteration-count</item>
+            <item>justify</item>
+            <item>kerning</item>
+            <item>language</item>
+            <item>language-override</item>
+            <item>last</item>
+            <item>layout</item>
+            <item>left-color</item>
+            <item>left-radius</item>
+            <item>left-style</item>
+            <item>left-width</item>
+            <item>letter</item>
+            <item>ligatures</item>
+            <item>limit</item>
+            <item>limit-chars</item>
+            <item>line</item>
+            <item>line-clamp</item>
+            <item>line-gap</item>
+            <item>list</item>
+            <item>math</item>
+            <item>max</item>
+            <item>max-block</item>
+            <item>max-inline</item>
+            <item>min</item>
+            <item>min-block</item>
+            <item>min-inline</item>
+            <item>mix</item>
+            <item>mix-blend</item>
+            <item>mode</item>
+            <item>name</item>
+            <item>numeric</item>
+            <item>object</item>
+            <item>optical</item>
+            <item>optical-sizing</item>
+            <item>orientation</item>
+            <item>origin</item>
+            <item>outset</item>
+            <item>outside</item>
+            <item>overflow-clip</item>
+            <item>override</item>
+            <item>overscroll</item>
+            <item>page-break</item>
+            <item>paint</item>
+            <item>palette</item>
+            <item>path</item>
+            <item>place</item>
+            <item>play</item>
+            <item>play-state</item>
+            <item>pointer</item>
+            <item>position-x</item>
+            <item>position-y</item>
+            <item>print</item>
+            <item>print-color</item>
+            <item>property</item>
+            <item>punctuation</item>
+            <item>radius</item>
+            <item>ratio</item>
+            <item>rendering</item>
+            <item>repeat</item>
+            <item>reset</item>
+            <item>right-color</item>
+            <item>right-radius</item>
+            <item>right-style</item>
+            <item>right-width</item>
+            <item>row</item>
+            <item>row-end</item>
+            <item>row-start</item>
+            <item>rows</item>
+            <item>ruby</item>
+            <item>rule</item>
+            <item>rule-color</item>
+            <item>rule-style</item>
+            <item>rule-width</item>
+            <item>scheme</item>
+            <item>scroll</item>
+            <item>scroll-snap</item>
+            <item>scrollbar</item>
+            <item>select</item>
+            <item>self</item>
+            <item>set</item>
+            <item>settings</item>
+            <item>shadow</item>
+            <item>shape</item>
+            <item>shape-image</item>
+            <item>shrink</item>
+            <item>side</item>
+            <item>sizing</item>
+            <item>skip</item>
+            <item>skip-ink</item>
+            <item>slice</item>
+            <item>small</item>
+            <item>small-caps</item>
+            <item>snap</item>
+            <item>snap-align</item>
+            <item>snap-stop</item>
+            <item>snap-type</item>
+            <item>source</item>
+            <item>space</item>
+            <item>spacing</item>
+            <item>span</item>
+            <item>speak</item>
+            <item>start</item>
+            <item>start-color</item>
+            <item>start-end</item>
+            <item>start-end-radius</item>
+            <item>start-radius</item>
+            <item>start-start</item>
+            <item>start-start-radius</item>
+            <item>start-style</item>
+            <item>start-width</item>
+            <item>state</item>
+            <item>stop</item>
+            <item>stretch</item>
+            <item>stroke</item>
+            <item>stroke-color</item>
+            <item>stroke-width</item>
+            <item>style</item>
+            <item>style-image</item>
+            <item>style-position</item>
+            <item>style-type</item>
+            <item>synthesis</item>
+            <item>synthesis-position</item>
+            <item>synthesis-small</item>
+            <item>synthesis-small-caps</item>
+            <item>synthesis-style</item>
+            <item>synthesis-weight</item>
+            <item>tab</item>
+            <item>table</item>
+            <item>template</item>
+            <item>template-areas</item>
+            <item>template-columns</item>
+            <item>template-rows</item>
+            <item>text</item>
+            <item>text-combine</item>
+            <item>text-decoration-skip</item>
+            <item>text-fill</item>
+            <item>text-fill-color</item>
+            <item>text-stroke</item>
+            <item>text-stroke-color</item>
+            <item>text-stroke-width</item>
+            <item>text-underline</item>
+            <item>thickness</item>
+            <item>threshold</item>
+            <item>timing</item>
+            <item>timing-function</item>
+            <item>top-color</item>
+            <item>top-left</item>
+            <item>top-left-radius</item>
+            <item>top-right</item>
+            <item>top-right-radius</item>
+            <item>top-style</item>
+            <item>top-width</item>
+            <item>touch</item>
+            <item>transition-timing</item>
+            <item>type</item>
+            <item>underline</item>
+            <item>underline-offset</item>
+            <item>underline-position</item>
+            <item>unicode</item>
+            <item>upright</item>
+            <item>user</item>
+            <item>value</item>
+            <item>variant</item>
+            <item>variant-alternates</item>
+            <item>variant-caps</item>
+            <item>variant-east</item>
+            <item>variant-east-asian</item>
+            <item>variant-emoji</item>
+            <item>variant-ligatures</item>
+            <item>variant-numeric</item>
+            <item>variant-position</item>
+            <item>variation</item>
+            <item>variation-settings</item>
+            <item>vertical</item>
+            <item>weight</item>
+            <item>white</item>
+            <item>will</item>
+            <item>word</item>
+            <item>wrap</item>
+            <item>writing</item>
+            <item>x</item>
+            <item>y</item>
+            <item>z</item>
+        </list>
+
+        <list name="media types">
+            <include>media types##CSS</include>
+        </list>
+
+        <list name="media features">
+            <include>media features##CSS</include>
+        </list>
+
+        <list name="special values">
+            <item>true</item>
+            <item>false</item>
+            <item>null</item>
+        </list>
+
+        <list name="value keywords">
+            <include>value keywords##CSS</include>
+        </list>
+
+        <list name="values">
+            <include>values##CSS</include>
+        </list>
+
+        <list name="colors">
+            <include>colors##CSS</include>
+        </list>
+
+        <list name="functions">
+            <include>functions##CSS</include>
+
+            <!-- https://sass-lang.com/documentation/modules/ -->
+
+            <!-- color -->
+            <item>adjust-color</item>
+            <item>adjust-hue</item>
+            <item>alpha</item>
+            <item>blue</item>
+            <item>change-color</item>
+            <item>color.alpha</item>
+            <item>color.blackness</item>
+            <item>color.blue</item>
+            <item>color.complement</item>
+            <item>color.grayscale</item>
+            <item>color.green</item>
+            <item>color.hue</item>
+            <item>color.hwb</item>
+            <item>color.ie-hex-str</item>
+            <item>color.invert</item>
+            <item>color.lightness</item>
+            <item>color.mix</item>
+            <item>color.red</item>
+            <item>color.saturate</item>
+            <item>color.saturation</item>
+            <item>color.whiteness</item>
+            <item>complement</item>
+            <item>darken</item>
+            <item>desaturate</item>
+            <item>fade-in</item>
+            <item>fade-out</item>
+            <item>green</item>
+            <item>hue</item>
+            <item>ie-hex-str</item>
+            <item>lighten</item>
+            <item>lightness</item>
+            <item>mix</item>
+            <item>opacify</item>
+            <item>red</item>
+            <item>saturation</item>
+            <item>scale-color</item>
+            <item>transparentize</item>
+
+            <!-- index -->
+            <item>hsla</item>
+            <item>if</item>
+            <item>rgba</item>
+
+            <!-- list -->
+            <item>append</item>
+            <item>index</item>
+            <item>is-bracketed</item>
+            <item>join</item>
+            <item>length</item>
+            <item>list-separator</item>
+            <item>list.append</item>
+            <item>list.index</item>
+            <item>list.is-bracketed</item>
+            <item>list.join</item>
+            <item>list.length</item>
+            <item>list.nth</item>
+            <item>list.separator</item>
+            <item>list.set-nth</item>
+            <item>list.slash</item>
+            <item>list.zip</item>
+            <item>nth</item>
+            <item>set-nth</item>
+            <item>zip</item>
+
+            <!-- map -->
+            <item>map-get</item>
+            <item>map-has-key</item>
+            <item>map-keys</item>
+            <item>map-merge</item>
+            <item>map-remove</item>
+            <item>map-values</item>
+            <item>map.deep-merge</item>
+            <item>map.deep-remove</item>
+            <item>map.get</item>
+            <item>map.has-key</item>
+            <item>map.keys</item>
+            <item>map.merge</item>
+            <item>map.remove</item>
+            <item>map.set</item>
+            <item>map.values</item>
+
+            <!-- math -->
+            <item>ceil</item>
+            <item>comparable</item>
+            <item>floor</item>
+            <item>math.abs</item>
+            <item>math.acos</item>
+            <item>math.asin</item>
+            <item>math.atan</item>
+            <item>math.atan2</item>
+            <item>math.ceil</item>
+            <item>math.clamp</item>
+            <item>math.compatible</item>
+            <item>math.cos</item>
+            <item>math.div</item>
+            <item>math.floor</item>
+            <item>math.hypot</item>
+            <item>math.is-unitless</item>
+            <item>math.log</item>
+            <item>math.max</item>
+            <item>math.min</item>
+            <item>math.percentage</item>
+            <item>math.pow</item>
+            <item>math.random</item>
+            <item>math.round</item>
+            <item>math.sin</item>
+            <item>math.sqrt</item>
+            <item>math.tan</item>
+            <item>math.unit</item>
+            <item>percentage</item>
+            <item>random</item>
+            <item>unit</item>
+            <item>unitless</item>
+
+            <!-- meta -->
+            <item>call</item>
+            <item>content-exists</item>
+            <item>feature-exists</item>
+            <item>function-exists</item>
+            <item>get-function</item>
+            <item>global-variable-exists</item>
+            <item>inspect</item>
+            <item>keywords</item>
+            <item>meta.calc-args</item>
+            <item>meta.calc-name</item>
+            <item>meta.call</item>
+            <item>meta.content-exists</item>
+            <item>meta.feature-exists</item>
+            <item>meta.function-exists</item>
+            <item>meta.get-function</item>
+            <item>meta.global-variable-exists</item>
+            <item>meta.inspect</item>
+            <item>meta.keywords</item>
+            <item>meta.load-css</item>
+            <item>meta.mixin-exists</item>
+            <item>meta.module-functions</item>
+            <item>meta.module-variables</item>
+            <item>meta.type-of</item>
+            <item>meta.variable-exists</item>
+            <item>mixin-exists</item>
+            <item>type-of</item>
+            <item>variable-exists</item>
+
+            <!-- selector -->
+            <item>is-superselector</item>
+            <item>selector-append</item>
+            <item>selector-extend</item>
+            <item>selector-nest</item>
+            <item>selector-parse</item>
+            <item>selector-replace</item>
+            <item>selector-unify</item>
+            <item>selector.append</item>
+            <item>selector.extend</item>
+            <item>selector.is-superselector</item>
+            <item>selector.nest</item>
+            <item>selector.parse</item>
+            <item>selector.replace</item>
+            <item>selector.simple-selectors</item>
+            <item>selector.unify</item>
+            <item>simple-selectors</item>
+
+            <!-- string -->
+            <item>quote</item>
+            <item>str-index</item>
+            <item>str-insert</item>
+            <item>str-length</item>
+            <item>str-slice</item>
+            <item>string.index</item>
+            <item>string.insert</item>
+            <item>string.length</item>
+            <item>string.quote</item>
+            <item>string.slice</item>
+            <item>string.split</item>
+            <item>string.to-lower-case</item>
+            <item>string.to-upper-case</item>
+            <item>string.unique-id</item>
+            <item>string.unquote</item>
+            <item>to-lower-case</item>
+            <item>to-upper-case</item>
+            <item>unique-id</item>
+            <item>unquote</item>
+        </list>
+
+        <!-- prefixed by :: -->
+        <list name="pseudo-elements">
+            <include>pseudo-elements##CSS</include>
+        </list>
+
+        <!-- prefixed by : -->
+        <list name="pseudo-classes">
+            <include>pseudo-classes##CSS</include>
+        </list>
+
+        <list name="@page pseudo-classes">
+            <include>@page pseudo-classes##CSS</include>
+        </list>
+
+        <list name="at-rules">
+            <include>at-rules##CSS</include>
+
+            <!-- scss -->
+            <item>@at-root</item>
+            <item>@content</item>
+            <item>@debug</item>
+            <item>@each</item>
+            <item>@else</item>
+            <item>@error</item>
+            <item>@extend</item>
+            <item>@for</item>
+            <item>@forward</item>
+            <item>@function</item>
+            <item>@if</item>
+            <item>@import</item>
+            <item>@include</item>
+            <item>@mixin</item>
+            <item>@return</item>
+            <item>@use</item>
+            <item>@warn</item>
+            <item>@while</item>
+        </list>
+
+        <list name="at-rules definitions">
+            <include>at-rules definitions##CSS</include>
+        </list>
+
+        <list name="operators">
+            <item>and</item>
+            <item>or</item>
+            <item>not</item>
+        </list>
+
+        <list name="media operators">
+            <item>or</item>
+            <item>and</item>
+            <item>only</item>
+            <item>not</item>
+        </list>
+
+        <list name="annotations">
+            <item>important</item>
+            <item>default</item>
+            <item>global</item>
+            <item>optional</item>
+        </list>
+
+        <contexts>
+            <context name="Base" attribute="Normal Text" fallthroughContext="Selector">
+                <DetectSpaces attribute="Normal Text"/>
+                <Detect2Chars context="InterpolationPropertyOrSelector" char="#" char1="{" lookAhead="1"/>
+                <AnyChar context="Selector" String="*>+~|&amp;#.%,:[\" lookAhead="1"/>
+                <DetectChar attribute="Block Symbol" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" char="}" endRegion="ruleset"/>
+                <DetectChar context="SelectAtRule" char="@" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <RegExpr context="Property" String="(&propvar1;|&propvar2;|&maybeprop;&assumeprop;)|" lookAhead="1"/>
+            </context>
+            <context name="InterpolationPropertyOrSelector" attribute="Normal Text" fallthroughContext="#pop!Selector">
+                <RegExpr context="#pop!Property" String="(&propvar1;|&propvar2;|&maybeprop;&assumeprop;)|" lookAhead="1"/>
+            </context>
+
+            <!-- selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+            <context name="Selector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" context="#pop" char=";"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <!-- selectors // .class #id :hover :nth-child(2n+1) [type="search"] -->
+            <context name="FindSelector" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassOrElement" char=":"/>
+                <DetectChar attribute="Selector Attribute" context="SelectorAttr" char="["/>
+                <DetectChar attribute="Selector Pseudo" context="PseudoClassSelector" char="("/>
+                <AnyChar attribute="Selector Symbol" String="*>+~|&amp;"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr attribute="Selector Class" String="\.&selector;" context="SelectorClass"/>
+                <RegExpr attribute="Selector Id" String="#&selector;" context="SelectorId"/>
+                <RegExpr attribute="Selector Tag" String="&ident;"/>
+                <RegExpr attribute="Placeholder Selector" String="%&selector;" context="SelectorPlaceholder"/>
+                <DetectChar attribute="Error" char="$"/>
+            </context>
+
+            <context name="SelectorClass" attribute="Selector Class" lineEndContext="#pop" fallthroughContext="#pop">
+                <Detect2Chars context="SelectorClass2" char="#" char1="{" lookAhead="1"/>
+            </context>
+            <context name="SelectorClass2" attribute="Selector Class" fallthroughContext="#pop#pop">
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr String="&ident2;"/>
+            </context>
+
+            <context name="SelectorId" attribute="Selector Id" lineEndContext="#pop" fallthroughContext="#pop">
+                <Detect2Chars context="SelectorId2" char="#" char1="{" lookAhead="1"/>
+            </context>
+            <context name="SelectorId2" attribute="Selector Id" fallthroughContext="#pop#pop">
+                <IncludeRules context="SelectorClass2"/>
+            </context>
+
+            <context name="SelectorPlaceholder" attribute="Placeholder Selector" lineEndContext="#pop" fallthroughContext="#pop">
+                <Detect2Chars context="SelectorPlaceholder2" char="#" char1="{" lookAhead="1"/>
+            </context>
+            <context name="SelectorPlaceholder2" attribute="Placeholder Selector" fallthroughContext="#pop#pop">
+                <IncludeRules context="SelectorClass2"/>
+            </context>
+
+
+            <context name="Property" attribute="Normal Text">
+                <DetectChar attribute="Property Separator" context="PropertyValues" char=":"/>
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <Detect2Chars attribute="Variable" context="Variable" char="-" char1="-"/>
+                <keyword attribute="Property" String="properties"/>
+                <keyword attribute="Property" String="sub-properties"/>
+                <IncludeRules context="FindVendorProperty"/>
+                <RegExpr attribute="Unknown Property" String="[-_a-zA-Z0-9]++(?!\.)"/>
+                <RegExpr attribute="Normal Text" String="[-_a-zA-Z0-9]+\."/>
+            </context>
+
+            <context name="PropertyValues" attribute="Normal Text">
+                <DetectSpaces attribute="Normal Text"/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop!SubProperty" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Symbol" char="&amp;"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="SubProperty" attribute="Normal Text">
+                <DetectSpaces attribute="Normal Text"/>
+                <DetectChar attribute="Error" char=";"/>
+                <DetectChar attribute="Block Symbol" context="SubProperty" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Property Separator" context="SubPropertyValues" char=":"/>
+                <IncludeRules context="Property"/>
+            </context>
+            <context name="SubPropertyValues" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" context="#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop!SubProperty" char="{" beginRegion="ruleset"/>
+                <IncludeRules context="PropertyValues"/>
+            </context>
+
+
+            <!-- find strings // "some words" 'some words' -->
+            <context name="FindInterpolation" attribute="Normal Text">
+                <Detect2Chars attribute="Interpolation" context="Interpolation" char="#" char1="{"/>
+            </context>
+            <context name="FindInterpolationWithUnit" attribute="Normal Text">
+                <Detect2Chars attribute="Interpolation" context="InterpolationWithUnit" char="#" char1="{"/>
+            </context>
+
+            <!-- interpolation // #{...} -->
+
+            <context name="Interpolation" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Interpolation" context="#pop" char="}"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+            <context name="InterpolationWithUnit" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Interpolation" context="#pop!FindUnits" char="}"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+            <context name="FindValueInterpolation" attribute="Normal Text" lineEndContext="#pop">
+                <DetectChar attribute="Value Keyword" char="&amp;"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/+%=&lt;>!"/>
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindFunctions"/>
+                <keyword attribute="Operator" String="operators"/>
+                <keyword attribute="Value Keyword" String="special values"/>
+                <IncludeRules context="FindNumber"/>
+                <DetectChar context="OperatorOrIdentifer" char="-" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="FindVariable" attribute="Normal Text">
+                <DetectChar attribute="Variable" context="Variable" char="$"/>
+            </context>
+            <context name="Variable" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <RegExpr attribute="Variable" context="#pop" String="[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <!-- find functions // rgba(255,255,255,0.75) -->
+            <context name="FindFunctions" attribute="Normal Text">
+                <RegExpr attribute="Function" context="Function" String="&func;\(" lookAhead="1"/>
+            </context>
+            <context name="FindNestedFunctions" attribute="Normal Text">
+                <RegExpr context="NestedFunction" String="(&func;)?\(" lookAhead="1"/>
+            </context>
+
+            <!-- find values //  10px 12pt 2.5em 1rem 75% #ffcc99 red solid -->
+            <context name="FindValues" attribute="Normal Text">
+                <AnyChar attribute="Operator" String="*/+%=&lt;>"/>
+                <DetectChar attribute="Annotation" context="Annotation" char="!" lookAhead="1"/>
+                <IncludeRules context="FindVariable"/>
+                <keyword attribute="Operator" String="operators"/>
+                <keyword attribute="Value Keyword" String="value keywords" weakDeliminator="."/>
+                <keyword attribute="Value Keyword" String="special values" weakDeliminator="."/>
+                <keyword attribute="Value" String="values" weakDeliminator="."/>
+                <keyword attribute="Named Color" String="colors"/>
+                <RegExpr attribute="Color" String="#([0-9A-Fa-f]{8}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{3,4})"/>
+                <IncludeRules context="FindNumber"/>
+                <DetectChar context="OperatorOrIdentifer" char="-" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+
+            <context name="OperatorOrIdentifer" attribute="Normal Text">
+                <RegExpr context="#pop" String="-(?![0-9])&ident2;\.?\s*"/>
+                <DetectChar context="#pop" attribute="Operator" char="-"/>
+            </context>
+
+            <context name="FindNumber" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr attribute="Number" context="FindUnits" String="([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?"/>
+            </context>
+
+            <context name="FindIdentifier" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr String="&ident2;\.?\s*"/>
+            </context>
+
+            <context name="FindVendorProperty" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr attribute="Vendor Property" String="-(webkit|moz|o|ms)-[-_a-zA-Z0-9]*"/>
+            </context>
+
+            <context name="Annotation" attribute="Normal Text" lineEndContext="#pop">
+                <WordDetect attribute="Annotation" context="#pop" String="!important"/>
+                <WordDetect attribute="Annotation" context="#pop" String="!default"/>
+                <WordDetect attribute="Annotation" context="#pop" String="!global"/>
+                <DetectChar attribute="Operator" context="#pop" char="!"/>
+            </context>
+
+            <context name="FindUnits" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <RegExpr attribute="Unit" context="#pop" String="(%|(em|ex|cap|ch|ic|rem|lh|rlh|vw|vh|vi|vb|vmin|vmax|cqw|cqh|cqi|cqb|cqmin|cqmax|cm|mm|Q|in|pc|pt|px|deg|grad|rad|turn|s|ms|Hz|kHz|fr|dpi|dpcm|dppx|x)\b)"/>
+            </context>
+
+            <!-- find strings // "some words" 'some words' -->
+            <context name="FindStrings" attribute="Normal Text">
+                <DetectChar attribute="String" context="StringDQ" char="&quot;"/>
+                <DetectChar attribute="String" context="StringSQ" char="'"/>
+            </context>
+
+            <!-- find comments // /* comment */ -->
+            <context name="FindComments" attribute="Normal Text">
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="/" lookAhead="1"/>
+                <Detect2Chars attribute="Comment" context="IsComments" char="/" char1="*" lookAhead="1"/>
+            </context>
+
+            <context name="IsComments" attribute="Normal Text">
+                <RegExpr attribute="Region Marker" String="/\*\s*BEGIN\b.*\*/|//\s*BEGIN\b.*" beginRegion="UserDefined"/>
+                <RegExpr attribute="Region Marker" String="/\*\s*END\b.*\*/|//\s*END\b.*" endRegion="UserDefined"/>
+                <Detect2Chars attribute="Comment" context="Comment" char="/" char1="*" beginRegion="comment"/>
+                <Detect2Chars attribute="Comment" context="SassComment" char="/" char1="/"/>
+            </context>
+
+            <context name="SassComment" attribute="Comment" lineEndContext="#pop#pop">
+                <DetectSpaces/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="SelectAtRule" attribute="At Rule" lineEndContext="#pop">
+                <!-- scss -->
+                <WordDetect attribute="At Rule" context="@use" String="@use"/>
+                <WordDetect attribute="At Rule" context="@mixin" String="@include"/>
+                <WordDetect attribute="At Rule" context="@mixin" String="@function"/>
+                <WordDetect attribute="At Rule" context="@mixin" String="@mixin"/>
+                <WordDetect attribute="At Rule" context="@extend" String="@extend"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@content"/>
+                <WordDetect attribute="At Rule" context="@use" String="@forward"/>
+                <WordDetect attribute="At Rule" context="@expressionBlock" String="@if"/>
+                <WordDetect attribute="At Rule" context="@else" String="@else"/>
+                <WordDetect attribute="At Rule" context="@each" String="@each"/>
+                <WordDetect attribute="At Rule" context="@for" String="@for"/>
+                <WordDetect attribute="At Rule" context="@expressionBlock" String="@while"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@return"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@error"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@warn"/>
+                <WordDetect attribute="At Rule" context="@expression" String="@debug"/>
+                <WordDetect attribute="At Rule" context="@at-root" String="@at-root"/>
+                <!-- css -->
+                <WordDetect attribute="At Rule" context="@keyframes" String="@keyframes"/>
+                <WordDetect attribute="At Rule" context="@layer" String="@layer"/>
+                <WordDetect attribute="At Rule" context="@page" String="@page"/>
+                <WordDetect attribute="At Rule" context="@supports" String="@supports"/>
+                <keyword attribute="At Rule" context="@property" String="at-rules definitions"/>
+                <RegExpr attribute="At Rule" context="@media" String="@[-a-zA-Z0-9_]*"/>
+            </context>
+
+            <context name="AtRuleEnd" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+            </context>
+            <context name="AtRuleEndLvl3" attribute="Normal Text">
+                <DetectChar attribute="Error" context="#pop#pop#pop" char=";"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+            </context>
+            <context name="AtRuleBlockEnd" attribute="Normal Text">
+                <DetectChar attribute="Error" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop" char="}" endRegion="ruleset"/>
+            </context>
+
+            <context name="AtRuleCommon" attribute="At Rule Text">
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="AtRuleEnd"/>
+            </context>
+            <context name="AtRuleDefinitionCommon" attribute="At Rule Text">
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop!SubProperty" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+
+            <context name="@at-root" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="#pop!AtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="@use" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar context="@useWith" char="(" attribute="Function"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <WordDetect attribute="Keyword" String="with"/>
+                <WordDetect attribute="Keyword" String="hide"/>
+                <WordDetect attribute="Keyword" context="@useAs" String="as"/>
+            </context>
+            <context name="@useAs" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar attribute="Operator" char="*"/>
+                <DetectChar attribute="At Rule Text" char="-"/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop#pop" char=";"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Error" context="#pop#pop#pop" char="}" endRegion="ruleset"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+            <context name="@useWith" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar context="#pop" char=")" attribute="Function"/>
+                <DetectChar attribute="Property Separator" char=":"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Selector Symbol" char="&amp;"/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <StringDetect attribute="Operator" String="..."/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="@mixin" attribute="Function">
+                <DetectSpaces attribute="At Rule Text"/>
+                <DetectChar context="@useWith" char="(" attribute="Function"/>
+                <DetectChar char="-"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <WordDetect attribute="Keyword" String="using"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="@extend" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="}" endRegion="ruleset"/>
+                <DetectChar attribute="Separator Symbol" context="#pop#pop" char=";"/>
+                <WordDetect attribute="Annotation" String="!optional"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+            <context name="@expression" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleEnd"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+            <context name="@expressionBlock" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+
+            <context name="@else" attribute="At Rule Text" fallthroughContext="#pop!@expressionBlock">
+                <DetectSpaces/>
+                <WordDetect attribute="At Rule" context="#pop!@expression" String="if"/>
+                <IncludeRules context="FindComments"/>
+                <DetectChar attribute="Block Symbol" context="#pop#pop" char="{" beginRegion="ruleset"/>
+            </context>
+
+            <context name="@each" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <WordDetect attribute="Keyword" String="in"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+
+            <context name="@for" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleBlockEnd"/>
+                <WordDetect attribute="Keyword" String="to"/>
+                <WordDetect attribute="Keyword" String="from"/>
+                <WordDetect attribute="Keyword" String="through"/>
+                <IncludeRules context="FindValueInterpolation"/>
+            </context>
+
+
+            <context name="@media" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <IncludeRules context="FindFunctions"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media types" attribute="Media Type"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="AtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="NestedAtRuleMediaCondition" attribute="At Rule Text">
+                <DetectSpaces attribute="At Rule Text"/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="AtRuleMediaConditionValue"/>
+            </context>
+            <context name="AtRuleMediaConditionValue" attribute="At Rule Text">
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="NestedAtRuleMediaCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" attribute="Property Separator"/>
+                <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/+%=&lt;>"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindNumber"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="media features" attribute="Condition Property"/>
+                <IncludeRules context="FindIdentifier"/>
+                <DetectChar context="OperatorOrIdentifer" char="-" lookAhead="1"/>
+            </context>
+
+
+            <context name="@supports" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="(" context="AtRuleSupportsCondition" lookAhead="1"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <WordDetect String="selector(" context="FunctionSelector" attribute="Function"/>
+                <IncludeRules context="FindFunctions"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="AtRuleSupportsCondition" attribute="At Rule Text" fallthroughContext="#pop">
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+            </context>
+            <context name="SupportsCondition" attribute="At Rule Text" fallthroughContext="#pop!SupportsConditionValue">
+                <DetectSpaces/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" context="#pop!SupportsConditionValue" attribute="Property Separator"/>
+                <IncludeRules context="FindComments"/>
+                <keyword String="media operators" attribute="Keyword"/>
+                <keyword String="properties" attribute="Property"/>
+                <IncludeRules context="FindVendorProperty"/>
+            </context>
+            <context name="SupportsConditionValue" attribute="At Rule Text">
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Condition Open/Close"/>
+                <DetectChar char="(" context="SupportsCondition" attribute="Condition Open/Close"/>
+                <DetectChar char=":" attribute="Property Separator"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionSelector" attribute="At Rule Text">
+                <DetectSpaces/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <DetectChar char=")" context="#pop" attribute="Function"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+
+            <context name="@layer" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectIdentifier/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="AtRuleCommon"/>
+            </context>
+
+
+            <context name="@page" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Pseudo" char=":"/>
+                <IncludeRules context="AtRuleDefinitionCommon"/>
+                <keyword attribute="Selector Pseudo" String="@page pseudo-classes"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@property" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="-"/>
+                <IncludeRules context="AtRuleDefinitionCommon"/>
+                <DetectIdentifier/>
+            </context>
+
+
+            <context name="@keyframes" attribute="At Rule Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="KeyFramesBlock" attribute="Block Symbol" beginRegion="ruleset"/>
+                <IncludeRules context="AtRuleCommon"/>
+                <DetectIdentifier/>
+            </context>
+            <context name="KeyFramesBlock" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char="{" context="SubProperty" attribute="Block Symbol" beginRegion="ruleset"/>
+                <DetectChar char="}" context="#pop#pop#pop" attribute="Block Symbol" endRegion="ruleset"/>
+                <DetectChar char="," attribute="Separator Symbol"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr attribute="Value" String="\b(from|to)\b|[-+]?[0-9.]*%"/>
+            </context>
+
+
+            <!-- attribute // [name=value]-->
+
+            <context name="SelectorAttr" attribute="Attribute Name">
+                <DetectChar attribute="Selector Attribute" context="#pop" char="]"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+                <DetectChar attribute="Attribute Operator" context="SelectorAttrValue" char="="/>
+                <AnyChar attribute="Attribute Operator" String="~^$*|"/>
+                <IncludeRules context="FindComments"/>
+                <DetectIdentifier/>
+                <AnyChar context="#pop" String="{};#.,:>" lookAhead="1"/>
+            </context>
+
+            <context name="SelectorAttrValue" attribute="String" fallthroughContext="SelectorAttrEnd">
+                <DetectSpaces/>
+                <AnyChar context="SelectorAttrValueQuoted" String="&quot;'" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueQuoted" char="#" char1="{" lookAhead="1"/>
+                <RegExpr context="SelectorAttrEnd" attribute="String" String="-?(\w|&escaped;)([-\w]+|&escaped;)*"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="SelectorAttrValueQuoted" attribute="String" fallthroughContext="#pop!SelectorAttrEnd">
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+            <context name="SelectorAttrEnd" attribute="String" fallthroughContext="#pop#pop#pop">
+                <DetectSpaces/>
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop" char="]"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="i" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="I" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="s" char1="]" lookAhead="1"/>
+                <Detect2Chars context="SelectorAttrValueSensitiveOp" char="S" char1="]" lookAhead="1"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+            <context name="SelectorAttrValueSensitiveOp" attribute="String">
+                <DetectChar attribute="Selector Attribute" context="#pop#pop#pop#pop" char="]"/>
+                <AnyChar attribute="Attribute Operator" String="isIS"/>
+            </context>
+
+
+            <context name="PseudoClassOrElement" attribute="Selector Pseudo" lineEndContext="#pop" fallthroughContext="#pop">
+                <DetectChar char=":" attribute="Selector Pseudo"/>
+                <WordDetect String="lang" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <WordDetect String="part" attribute="Selector Pseudo" context="PseudoClassStr"/>
+                <RegExpr String="nth-[-a-zA-Z0-9]*" attribute="Selector Pseudo" context="PseudoClassNth"/>
+                <RegExpr String="[-a-zA-Z]+" attribute="Selector Pseudo" context="#pop"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+
+            <context name="PseudoClassStr" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassStrInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassStrInner" attribute="Error">
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <DetectChar char="{" context="#pop#pop#pop" attribute="Error" beginRegion="ruleset"/>
+                <DetectChar char=":" context="#pop#pop#pop!PseudoClassOrElement" attribute="Error"/>
+                <RegExpr String="\s*&ident;(\s+&ident;|\s+)*" attribute="String"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+
+            <context name="PseudoClassNth" attribute="Error" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+                <DetectChar char="(" context="PseudoClassNthInner" attribute="Selector Pseudo"/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="PseudoClassNthInner" attribute="Normal Text" fallthroughContext="#pop#pop!PseudoClassSelector">
+                <Int attribute="Number" additionalDeliminator="-"/>
+                <AnyChar String="+-" attribute="Operator"/>
+                <DetectChar char="n" attribute="Unit"/>
+                <DetectChar char=")" attribute="Selector Pseudo" context="#pop#pop#pop"/>
+                <WordDetect String="odd" attribute="Value"/>
+                <WordDetect String="even" attribute="Value"/>
+                <WordDetect String="of" attribute="Keyword" context="#pop#pop!PseudoClassSelector"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindInterpolation"/>
+                <DetectSpaces/>
+            </context>
+
+            <context name="PseudoClassSelector" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop" attribute="Selector Pseudo"/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindSelector"/>
+            </context>
+
+
+            <context name="Comment" attribute="Comment">
+                <DetectSpaces/>
+                <Detect2Chars attribute="Comment" context="#pop#pop" char="*" char1="/" endRegion="comment"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier/>
+            </context>
+
+            <context name="Function" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <IncludeRules context="AtRuleEndLvl3"/>
+            </context>
+            <context name="NestedFunction" attribute="Normal Text">
+                <IncludeRules context="FunctionInc"/>
+                <AnyChar context="#pop" String="{};" lookAhead="1"/>
+            </context>
+            <context name="FunctionInc" attribute="Normal Text">
+                <DetectChar attribute="Function" context="FunctionParameters" char="("/>
+                <StringDetect attribute="Function" context="FunctionVar" String="var("/>
+                <StringDetect attribute="Function" context="FunctionCalc" String="calc("/>
+                <StringDetect attribute="Function" context="FunctionUrl" String="url("/>
+                <StringDetect attribute="Function" context="FunctionEnv" String="env("/>
+                <keyword attribute="Function" String="functions"/>
+                <RegExpr attribute="Function" context="FunctionParameters" String="&func;\("/>
+            </context>
+
+            <!-- From CSS with interpolation -->
+            <!-- @{ -->
+
+            <context name="FunctionVar" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&var;" context="FunctionVarSep" attribute="Variable"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+            <context name="FunctionVarSep" attribute="Normal Text" fallthroughContext="FunctionVarParam">
+                <DetectChar char=")" context="#pop#pop#pop" attribute="Function"/>
+                <DetectChar char="," context="FunctionVarParam" attribute="Separator Symbol"/>
+            </context>
+            <context name="FunctionVarParam" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar char=")" context="#pop#pop#pop#pop" attribute="Function"/>
+                <AnyChar String=";{}" context="#pop#pop#pop" lookAhead="1"/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <context name="FunctionEnv" attribute="Normal Text" fallthroughContext="FunctionVarSep">
+                <RegExpr String="&ident;" context="FunctionVarSep" attribute="Normal Text"/>
+                <DetectSpaces/>
+                <IncludeRules context="FindComments"/>
+            </context>
+
+            <context name="FunctionCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="NestedCalc" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+                <IncludeRules context="Calc"/>
+            </context>
+            <context name="Calc" attribute="Normal Text">
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <DetectChar attribute="Normal Text" context="NestedCalc" char="("/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <!-- ATTENTION not in CSS --> <IncludeRules context="FindVariable"/>
+                <IncludeRules context="FindStrings"/>
+                <!-- ATTENTION not in CSS --> <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <AnyChar attribute="Operator" String="*/%"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <!-- ATTENTION FindNumber in CSS --> <RegExpr attribute="Number" context="FindUnits" String="[-+]?([0-9]+(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?(?![-+])"/>
+                <RegExpr String="[-+]?((?i:infinity|e|pi)|NaN)($|[^-\w])|[-+]($|[\s(,;]|/\*)" context="CalcConstantOrOperator" lookAhead="1"/>
+                <IncludeRules context="FindIdentifier"/>
+            </context>
+            <context name="CalcConstantOrOperator" attribute="Normal Text" fallthroughContext="#pop">
+                <DetectIdentifier context="#pop" attribute="Calc Constant"/>
+                <AnyChar String="-+" attribute="Operator"/>
+            </context>
+
+            <context name="FunctionUrl" attribute="Normal Text" fallthroughContext="UrlValue">
+                <DetectSpaces/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolation"/>
+            </context>
+            <context name="UrlValue" attribute="String">
+                <DetectChar attribute="Function" context="#pop#pop#pop" char=")"/>
+                <AnyChar String=";{}" context="#pop#pop" lookAhead="1"/>
+            </context>
+
+            <context name="FunctionParameters" attribute="Normal Text">
+                <DetectSpaces/>
+                <DetectChar attribute="Function" context="#pop#pop" char=")"/>
+                <DetectChar attribute="Separator Symbol" char=","/>
+                <IncludeRules context="FindStrings"/>
+                <IncludeRules context="FindInterpolationWithUnit"/>
+                <IncludeRules context="FindComments"/>
+                <!-- ATTENTION not in CSS --> <DetectChar attribute="Value Keyword" char="&amp;"/>
+                <!-- ATTENTION not in CSS --> <StringDetect attribute="Operator" String="..."/>
+                <AnyChar String=";{}" context="#pop" lookAhead="1"/>
+                <IncludeRules context="FindNestedFunctions"/>
+                <IncludeRules context="FindValues"/>
+            </context>
+
+            <!-- @} -->
+
+            <!-- string contexts -->
+            <context name="StringDQ" attribute="String">
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="StringSQ" attribute="String">
+                <DetectChar attribute="String" context="#pop" char="'"/>
+                <IncludeRules context="InsideString"/>
+            </context>
+
+            <context name="InsideString" attribute="String">
+                <IncludeRules context="FindInterpolation"/>
+                <RegExpr attribute="SpecialChar" String="\\([0-9A-Fa-f]{1,6}|.?)"/>
+                <RegExpr attribute="String" String="\\?[^#&quot;'\\]+"/>
+            </context>
+
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="At Rule" defStyleNum="dsImport" spellChecking="false"/>
+            <itemData name="At Rule Text" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Media Type" defStyleNum="dsAnnotation" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Vendor Property" defStyleNum="dsKeyword" spellChecking="false" italic="1"/>
+            <itemData name="Unknown Property" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Property Separator" defStyleNum="dsChar" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="SpecialChar" defStyleNum="dsSpecialChar" spellChecking="false"/>
+            <itemData name="Interpolation" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Separator Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Block Symbol" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Value" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Number" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Value Keyword" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Named Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Color" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Unit" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Variable" defStyleNum="dsVariable" spellChecking="false"/>
+            <itemData name="Function" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Calc Constant" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Annotation" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Condition Open/Close" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Condition Property" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Selector Id" defStyleNum="dsPreprocessor" bold="1" spellChecking="false"/>
+            <itemData name="Selector Class" defStyleNum="dsFunction" spellChecking="false"/>
+            <itemData name="Selector Attribute" defStyleNum="dsExtension" spellChecking="false"/>
+            <itemData name="Selector Pseudo" defStyleNum="dsInformation" italic="1" spellChecking="false"/>
+            <itemData name="Selector Tag" defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Selector Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Placeholder Selector" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Attribute Name" defStyleNum="dsSpecialString" spellChecking="false"/>
+            <itemData name="Attribute Operator" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Comment" defStyleNum="dsComment"/>
+            <itemData name="Region Marker" defStyleNum="dsRegionMarker" spellChecking="false"/>
+            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+
+    <general>
+        <keywords casesensitive="0" weakDeliminator="-%@"/>
+        <comments>
+            <comment name="singleLine" start="//" position="afterwhitespace"/>
+            <comment name="multiLine" start="/*" end="*/" region="comment"/>
         </comments>
     </general>
 
diff --git a/xml/sed.xml b/xml/sed.xml
--- a/xml/sed.xml
+++ b/xml/sed.xml
@@ -1,259 +1,441 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="sed" section="Scripts" version="8" kateversion="5.0" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com)" license="GPL">
-        <highlighting>
-                <contexts>
-                        <context name="BeginningOfLine" attribute="Normal" lineEndContext="#stay">
-                                <DetectSpaces/>
-                                <DetectChar char="#"     attribute="Comment"     context="Comment"/>
-                                <RegExpr String="(?|(/)|\\(\S))" attribute="Separator"   context="FirstAddressRegex"/>
-                                <Int                     attribute="Line Number" context="AfterFirstAddress"/>
-                                <DetectChar char="$"     attribute="Last Line"   context="AfterFirstAddress"/>
-                                <DetectChar char="}"     attribute="Brace"       context="AfterCommand"/>
-                                <DetectChar char=":"     attribute="Label"       context="Label"/>
-                                <DetectChar char="!"     attribute="Negation"    context="Command"/>
-                                <IncludeRules                                    context="Command"/>
-                        </context>
+<!DOCTYPE language[
+  <!ENTITY literal_escape "\\([afnrtv\\]|c[0-9a-zA-Z]|x[0-9a-fA-F]{1,2}|d[0-9]{1,3}|o[0-7]{1,3})">
+]>
+<language name="sed" section="Scripts" version="9" kateversion="5.79" extensions="*.sed" mimetype="text/x-sed" author="Bart Sas (bart.sas@gmail.com);Jonathan Poelen (jonathan.poelen@gmail.com)" license="GPL">
+<highlighting>
+<contexts>
+  <!--
+  reference:
+    $ man sed
+    $ info sed
+  -->
+  <context name="BeginningOfLine" attribute="Normal" fallthroughContext="Error">
+    <IncludeRules context="Start"/>
+    <IncludeRules context="FindCommand"/>
+  </context>
 
-                        <context name="FirstAddressRegex" attribute="Regex" lineEndContext="Error" dynamic="true">
-                                <DetectSpaces/>
-                                <StringDetect String="\%1" attribute="Regex Escape" context="#stay"             dynamic="true"/>
-                                <StringDetect String="%1"   attribute="Separator"    context="AfterFirstAddress" dynamic="true"/>
-                                <IncludeRules                                   context="Regex"/>
-                        </context>
+  <!--
+    Context to be used in other <IncludeRules> syntaxes,
+    because the FindCommand in BeginningOfLine makes an extra #pop,
+    but it avoids context switch
+  -->
+  <context name="Start" attribute="Normal" fallthroughContext="Command">
+    <DetectSpaces/>
+    <DetectChar char="#"  attribute="Comment"   context="Comment"/>
+    <!-- N -->
+    <!-- N~N -->
+    <!-- N,N -->
+    <!-- N,+N -->
+    <!-- N,~N -->
+    <Int                  attribute="Line Number" context="FirstNumberAddress"/>
+    <!--  /<regex>/ -->
+    <!-- \C<regex>C -->
+    <RegExpr String="(?|(/)|\\([\t -~]))" attribute="Separator" context="FirstAddressRegex"/>
+    <DetectChar char="$"  attribute="Last Line" context="AfterFirstAddress"/>
+    <DetectChar char="}"  attribute="Brace"     context="AfterCommand" endRegion="block"/>
+    <DetectChar char=":"  attribute="Label"     context="Label"/>
+    <DetectChar char="!"  attribute="Negation"  context="Command"/>
+    <DetectChar char=";"  attribute="Normal"/>
+  </context>
 
-                        <context name="AfterFirstAddress" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectSpaces/>
-                                <DetectChar char="!" attribute="Negation" context="Command"/>
-                                <IncludeRules                             context="AfterFirstAddress2"/>
-                        </context>
 
-                        <context name="AfterFirstAddress2" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectChar char="," attribute="Normal" context="SecondAddress"/>
-                                <DetectChar char="~" attribute="Normal" context="Step"/>
-                                <IncludeRules                           context="Command"/>
-                        </context>
+  <!--
+    N
+     ^
+  -->
+  <context name="FirstNumberAddress" attribute="Regex" lineEndContext="#pop" fallthroughContext="#pop!Command">
+    <DetectChar char="~" attribute="Normal"   context="Step"/>
+    <DetectChar char="!" attribute="Negation" context="#pop!Command"/>
+    <DetectChar char="," attribute="Normal"   context="SecondNumberAddress"/>
+    <DetectSpaces/>
+  </context>
 
-                        <context name="SecondAddress" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <RegExpr String="(?|(/)|\\(\S))" attribute="Separator"   context="SecondAddressRegex"/>
-                                <Int                     attribute="Line Number" context="AfterSecondAddress"/>
-                                <DetectChar char="$"     attribute="Last Line"   context="AfterSecondAddress"/>
-                                <RegExpr String="\S"     attribute="Error"       context="Error"/>
-                        </context>
+  <!--
+     N~N
+    N,~N
+    N,+N
+       ^
+  -->
+  <context name="Step" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Error">
+    <DetectSpaces/>
+    <Int attribute="Step" context="#pop#pop!Command"/>
+  </context>
 
-                        <context name="SecondAddressRegex" attribute="Regex" lineEndContext="Error" dynamic="true">
-                                <DetectSpaces/>
-                                <StringDetect String="\%1" attribute="Regex Escape" context="#stay"              dynamic="true"/>
-                                <StringDetect String="%1"   attribute="Separator"    context="AfterSecondAddress" dynamic="true"/>
-                                <IncludeRules                                   context="Regex"/>
-                        </context>
+  <!--
+    N,
+      ^
+  -->
+  <context name="SecondNumberAddress" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Error">
+    <AnyChar String="+~" attribute="Normal" context="#pop!Step"/>
+    <IncludeRules context="SecondAddress"/>
+  </context>
 
-                        <context name="AfterSecondAddress" attribute="Normal" lineEndContext="Error" dynamic="true">
-                                <DetectSpaces/>
-                                <DetectChar char="!" attribute="Negation" context="Command"/>
-                                <IncludeRules                             context="Command"/>
-                        </context>
 
-                        <context name="Step" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <Int                 attribute="Step"  context="Command"/>
-                                <RegExpr String="\S" attribute="Error" context="Error"/>
-                        </context>
+  <!--
+    \C<regex>C
+     /<regex>/
+      ^
+  -->
+  <context name="FirstAddressRegex" attribute="Regex" lineEndContext="#pop">
+    <StringDetect String="\%1" dynamic="1" attribute="Regex Escape"/>
+    <DetectChar     char="1"   dynamic="1" attribute="Separator"    context="#pop!AfterFirstAddress"/>
+    <IncludeRules context="Regex"/>
+  </context>
 
-                        <context name="Command" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <DetectChar char="s"              attribute="Command" context="SCommand"/>
-                                <DetectChar char="y"              attribute="Command" context="YCommand"/>
-                                <AnyChar String="dpnDNPhHgGxFvz=" attribute="Command" context="AfterCommand"/>
-                                <AnyChar String="aic"             attribute="Command" context="AICCommand"/>
-                                <AnyChar String="bTt"             attribute="Command" context="BTCommand"/>
-                                <AnyChar String="WwrR"            attribute="Command" context="WRCommand"/>
-                                <AnyChar String="lL"              attribute="Command" context="LCommand"/>
-                                <AnyChar String="qQ"              attribute="Command" context="QCommand"/>
-                                <DetectChar char="{"              attribute="Brace"   context="BeginningOfLine"/>
-                                <RegExpr String="\S"              attribute="Error"   context="Error"/>
-                        </context>
+  <!--
+    addr
+        ^
+  -->
+  <context name="AfterFirstAddress" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!Command">
+    <DetectChar char="!" attribute="Negation" context="#pop!Command"/>
+    <DetectChar char="," attribute="Normal"   context="SecondAddress"/>
+    <DetectSpaces/>
+  </context>
 
-                        <context name="SCommand" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <RegExpr String="(\S)" attribute="Separator" context="SRegex"/>
-                        </context>
+  <!--
+    addr,
+         ^
+  -->
+  <context name="SecondAddress" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Error">
+    <DetectChar char="$" attribute="Last Line"   context="AfterSecondAddress"/>
+    <Int                 attribute="Line Number" context="AfterSecondAddress"/>
+    <DetectSpaces/>
+    <RegExpr String="(?|(/)|\\([\t -~]))" attribute="Separator" context="SecondAddressRegex"/>
+  </context>
 
-                        <context name="SRegex" attribute="Regex" lineEndContext="Error" dynamic="true">
-                                <DetectSpaces/>
-                                <StringDetect String="\%1" attribute="Regex Escape" context="#stay"        dynamic="true"/>
-                                <RegExpr String="(%1)" attribute="Separator"    context="SReplacement" dynamic="true"/>
-                                <IncludeRules                                   context="Regex"/>
-                        </context>
+  <!--
+    addr,\C<regex>C
+     addr,/<regex>/
+           ^
+  -->
+  <context name="SecondAddressRegex" attribute="Regex" lineEndContext="Error">
+    <StringDetect String="\%1" dynamic="1" attribute="Regex Escape"/>
+    <StringDetect String="%1"  dynamic="1" attribute="Separator"    context="#pop!AfterSecondAddress"/>
+    <IncludeRules context="Regex"/>
+  </context>
 
-                        <context name="SReplacement" attribute="Replacement" lineEndContext="Error" dynamic="true">
-                                <DetectSpaces/>
-                                <StringDetect String="\%1"                attribute="Repl Escape" context="#stay"  dynamic="true"/>
-                                <StringDetect String="%1"                  attribute="Separator"   context="SFlags" dynamic="true"/>
-                                <RegExpr String="\\[0-9LlUuE\\&amp;]" attribute="Repl Escape" context="#stay"/>
-                                <DetectChar char="&amp;"              attribute="Repl Escape" context="#stay"/>
-                        </context>
+  <!--
+    addr,addr
+             ^
+  -->
+  <context name="AfterSecondAddress" attribute="Normal" lineEndContext="#pop#pop#pop" fallthroughContext="#pop#pop#pop!Command">
+    <DetectChar char="!" attribute="Negation" context="#pop#pop#pop!Command"/>
+    <DetectSpaces/>
+  </context>
 
-                        <context name="SFlags" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectSpaces/>
-                                <AnyChar String="gpeIiMm" attribute="Flag"        context="#stay"/>
-                                <DetectChar char="w"      attribute="Flag"        context="WFlag"/>
-                                <Int                      attribute="Repl Number" context="#stay"/>
-                                <IncludeRules                                     context="AfterCommand"/>
-                        </context>
 
-                        <context name="WFlag" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectSpaces/>
-                                <RegExpr String="\S+" attribute="Filename" context="SFlags"/>
-                        </context>
+  <context name="Command" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!Error">
+    <DetectSpaces/>
+    <IncludeRules context="FindCommand"/>
+  </context>
+  <context name="FindCommand" attribute="Normal">
+    <DetectChar char="s"        attribute="Command" context="SCommand"/>
+    <DetectChar char="y"        attribute="Command" context="YCommand"/>
+    <AnyChar String="dpnDNPhHgGxFvz=" attribute="Command" context="#pop!AfterCommand"/>
+    <AnyChar String="aic"       attribute="Command" context="AICCommand"/>
+    <AnyChar String="bTt"       attribute="Command" context="#pop!Label"/>
+    <AnyChar String="WwrR"      attribute="Command" context="WRCommand"/>
+    <AnyChar String="lL"        attribute="Command" context="LCommand"/>
+    <AnyChar String="qQ"        attribute="Command" context="QCommand"/>
+    <DetectChar char="{"        attribute="Brace"   context="#pop" beginRegion="block"/>
+    <DetectChar char="e"        attribute="Command" context="ECommand"/>
+  </context>
 
-                        <context name="YCommand" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <RegExpr String="(\S)" attribute="Separator" context="YSourceList"/>
-                        </context>
 
-                        <context name="YSourceList" attribute="Char List" lineEndContext="Error" dynamic="true">
-                                <DetectSpaces/>
-                                <StringDetect String="\%1"           attribute="Char List Escape" context="#stay"     dynamic="true"/>
-                                <RegExpr String="(%1)"           attribute="Separator"        context="YDestList" dynamic="true"/>
-                                <Detect2Chars char="\" char1="n" attribute="Char List Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="\" attribute="Char List Escape" context="#stay"/>
-                        </context>
+  <!--
+    s/regex/rep/
+     ^
+  -->
+  <context name="SCommand" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Error">
+    <RegExpr String="([\t -~])" attribute="Separator" context="SRegex"/>
+  </context>
 
-                        <context name="YDestList" attribute="Char List" lineEndContext="Error" dynamic="true">
-                                <DetectSpaces/>
-                                <StringDetect String="\%1"           attribute="Char List Escape" context="#stay"        dynamic="true"/>
-                                <StringDetect String="%1"             attribute="Separator"        context="AfterCommand" dynamic="true"/>
-                                <Detect2Chars char="\" char1="n" attribute="Char List Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="\" attribute="Char List Escape" context="#stay"/>
-                        </context>
+  <!--
+    s/regex/rep/
+      ^
+  -->
+  <context name="SRegex" attribute="Regex" lineEndContext="#pop#pop#pop">
+    <StringDetect String="\%1" dynamic="1" attribute="Regex Escape"/>
+    <!-- Avoid a dynamic regex for performance reasons -->
+    <DetectChar     char="1"   dynamic="1" lookAhead="1" context="SRegexSep"/>
+    <IncludeRules context="Regex"/>
+  </context>
 
-                        <context name="AICCommand" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <LineContinue             attribute="Line Continue" context="LiteralText"/>
-                                <RegExpr      String="\S" attribute="Error"         context="Error"/>
-                        </context>
+  <!--
+    s/regex/rep/
+           ^
+  -->
+  <context name="SRegexSep" attribute="Regex">
+    <RegExpr String="(.)" attribute="Separator" context="SReplacement"/>
+  </context>
 
-                        <context name="LiteralText" attribute="Literal Text" lineEndContext="BeginningOfLine">
-                                <Detect2Chars char="\" char1="\" attribute="Literal Escape" context="LiteralText"/>
-                                <LineContinue                    attribute="Line Continue"  context="LiteralText"/>
-                                <DetectChar   char="\"           attribute="Error"          context="Error"/>
-                        </context>
+  <!--
+    s/regex/rep/
+            ^
+  -->
+  <context name="SReplacement" attribute="Replacement" lineEndContext="#pop#pop#pop#pop#pop">
+    <StringDetect String="\%1" dynamic="1" attribute="Repl Escape"/>
+    <DetectChar     char="1"   dynamic="1" attribute="Separator"   context="SFlags"/>
+    <DetectSpaces/>
+    <DetectChar     char="&amp;"           attribute="Repl Substitution"/>
+    <DetectChar     char="\"   lookAhead="1"  context="SReplacementEscape"/>
+  </context>
+  <!--
+    on \ in rep
+               ^
+  -->
+  <context name="SReplacementEscape" attribute="Repl Escape" lineEndContext="#pop#pop#pop#pop#pop">
+    <LineContinue         attribute="Repl Escape" context="#pop"/>
+    <RegExpr String="&literal_escape;" attribute="Repl Escape" context="#pop"/>
+    <RegExpr String="\\[0-9LlUuE]" attribute="Repl Substitution" context="#pop"/>
+    <RegExpr String="\\." attribute="Unknown Escape" context="#pop"/>
+  </context>
 
-                        <context name="BTCommand" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectSpaces/>
-                                <RegExpr String="\w+" attribute="Label" context="AfterCommand"/>
-                                <IncludeRules                           context="AfterCommand"/>
-                        </context>
+  <!--
+    s/regex/rep/
+                ^
+  -->
+  <context name="SFlags" attribute="Normal" lineEndContext="#pop#pop#pop#pop#pop#pop" fallthroughContext="#pop#pop#pop#pop#pop#pop!AfterCommand">
+    <DetectSpaces/>
+    <AnyChar String="gpeIiMm"     attribute="Flag" />
+    <!-- Do not use <Int>, because the number can be surrounded by any character -->
+    <AnyChar String="0123456789"  attribute="Repl Number"/>
+    <DetectChar char="w"          attribute="Flag" context="#pop#pop#pop#pop#pop!WRCommand"/>
+  </context>
 
-                        <context name="WRCommand" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <RegExpr String="\S+" attribute="Filename" context="AfterCommand"/>
-                        </context>
 
-                        <context name="LCommand" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectSpaces/>
-                                <Int attribute="Wrap Length" context="AfterCommand"/>
-                                <IncludeRules                context="AfterCommand"/>
-                        </context>
+  <!--
+    y/source/dest/
+     ^
+  -->
+  <context name="YCommand" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!Error">
+    <RegExpr String="([\t -~])" attribute="Separator" context="YSourceList"/>
+  </context>
 
-                        <context name="QCommand" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectSpaces/>
-                                <Int attribute="Exit Code" context="AfterCommand"/>
-                                <IncludeRules              context="AfterCommand"/>
-                        </context>
+  <!--
+    y/source/dest/
+      ^
+  -->
+  <context name="YSourceList" attribute="Char List" lineEndContext="#pop#pop#pop">
+    <StringDetect String="\%1" dynamic="1" attribute="Char List Escape"/>
+    <!-- Avoid a dynamic regex for performance reasons -->
+    <DetectChar     char="1"   dynamic="1" lookAhead="1" context="YDestSep"/>
+    <DetectChar     char="\"   lookAhead="1" context="YLiteralEscape"/>
+  </context>
 
-                        <context name="Label" attribute="Normal" lineEndContext="Error">
-                                <DetectSpaces/>
-                                <RegExpr String="\w+" attribute="Label" context="AfterCommand"/>
-                                <RegExpr String="\S"  attribute="Error" context="Error"/>
-                        </context>
+  <!--
+    y/source/dest/
+            ^
+  -->
+  <context name="YDestSep" attribute="Regex">
+    <RegExpr String="(.)" attribute="Separator" context="YDestList"/>
+  </context>
 
-                        <context name="AfterCommand" attribute="Normal" lineEndContext="BeginningOfLine">
-                                <DetectSpaces/>
-                                <DetectChar char=";" attribute="Normal"  context="BeginningOfLine"/>
-                                <DetectChar char="}" attribute="Brace"   context="AfterCommand"/>
-                                <DetectChar char="#" attribute="Comment" context="Comment"/>
-                                <RegExpr String="\S" attribute="Error"   context="Error"/>
-                        </context>
+  <!--
+    y/source/dest/
+             ^
+  -->
+  <context name="YDestList" attribute="Char List" lineEndContext="#pop#pop#pop#pop#pop">
+    <StringDetect String="\%1" dynamic="1" attribute="Char List Escape"/>
+    <DetectChar     char="1"   dynamic="1" attribute="Separator"   context="#pop#pop#pop#pop#pop!AfterCommand"/>
+    <DetectChar     char="\"   lookAhead="1" context="YLiteralEscape"/>
+  </context>
+  <!--
+    on \ in dest
+  -->
+  <context name="YLiteralEscape" attribute="Char List Escape">
+    <LineContinue attribute="Char List Escape" context="#pop"/>
+    <RegExpr String="&literal_escape;" attribute="Char List Escape" context="#pop"/>
+    <RegExpr String="\\." attribute="Unknown Escape" context="#pop"/>
+  </context>
 
-                        <context name="Regex" attribute="Regex" lineEndContext="Error">
-                                <Detect2Chars char="\" char1="(" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1=")" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="+" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="?" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="|" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="{" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="}" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="[" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="]" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="." attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="*" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="\" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="^" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="$" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="n" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="t" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="0" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="1" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="2" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="3" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="4" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="5" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="6" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="7" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="8" attribute="Regex Escape" context="#stay"/>
-                                <Detect2Chars char="\" char1="9" attribute="Regex Escape" context="#stay"/>
-                                <AnyChar String="*.^$[]"         attribute="Regex Escape" context="#stay"/>
-                        </context>
 
-                        <context name="Comment" attribute="Comment" lineEndContext="#pop">
-                                <DetectSpaces />
-                                <IncludeRules context="##Comments"/>
-                        </context>
-                        <context name="Error"   attribute="Error"   lineEndContext="BeginningOfLine"/>
-                </contexts>
+  <!--
+    atext
+    itext
+    ctext
+     ^
+  -->
+  <context name="AICCommand" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="LiteralText">
+    <DetectSpaces/>
+    <LineContinue          attribute="Line Continue" context="LiteralText"/>
+    <DetectChar   char="\" attribute="Line Continue" context="LiteralText"/>
+  </context>
 
-                <itemDatas>
-                        <itemData name="Normal"           defStyleNum="dsNormal"/>
+  <!--
+    a\text
+    i\text
+    c\text
+     atext
+     itext
+     ctext
+      ^
+  -->
+  <context name="LiteralText" attribute="Literal Text" lineEndContext="#pop#pop#pop">
+    <DetectSpaces/>
+    <DetectIdentifier/>
+    <DetectChar char="\" lookAhead="1" context="LiteralTextEscape"/>
+  </context>
+  <!--
+    on \ in text
+  -->
+  <context name="LiteralTextEscape" attribute="Literal Escape">
+    <LineContinue attribute="Line Continue" context="#pop"/>
+    <RegExpr String="&literal_escape;" attribute="Literal Escape" context="#pop"/>
+    <RegExpr String="\\." attribute="Unknown Escape" context="#pop"/>
+  </context>
 
-                        <itemData name="Regex"            defStyleNum="dsString"/>
-                        <itemData name="Regex Escape"     defStyleNum="dsChar"/>
-                        <itemData name="Replacement"      defStyleNum="dsString"/>
-                        <itemData name="Repl Escape"      defStyleNum="dsChar"/>
-                        <itemData name="Char List"        defStyleNum="dsString"/>
-                        <itemData name="Char List Escape" defStyleNum="dsChar"/>
-                        <itemData name="Separator"        defStyleNum="dsString" color="#00F"/>
 
-                        <itemData name="Line Number"      defStyleNum="dsDecVal"/>
-                        <itemData name="Step"             defStyleNum="dsDecVal"/>
-                        <itemData name="Last Line"        defStyleNum="dsOthers" color="#808" bold="1"/>
-                        <itemData name="Negation"         defStyleNum="dsOthers" color="#808" bold="1"/>
+  <!--
+    s/regex/rep/w<filename>
+                w<filename>
+                r<filename>
+                W<filename>
+                R<filename>
+                 ^
+  -->
+  <context name="WRCommand" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="Filename">
+    <DetectSpaces attribute="Normal" context="Filename"/>
+  </context>
+  <context name="Filename" attribute="Filename" lineEndContext="#pop#pop#pop"/>
 
-                        <itemData name="Command"          defStyleNum="dsKeyword"/>
-                        <itemData name="Label"            defStyleNum="dsFunction"/>
-                        <itemData name="Brace"            defStyleNum="dsNormal"/>
 
-                        <itemData name="Flag"             defStyleNum="dsDataType"/>
-                        <itemData name="Repl Number"      defStyleNum="dsDecVal"/>
-                        <itemData name="Exit Code"        defStyleNum="dsDecVal"/>
-                        <itemData name="Filename"         defStyleNum="dsBaseN"/>
-                        <itemData name="Wrap Length"      defStyleNum="dsDecVal"/>
+  <!--
+    l[width]
+    L          # What does this command do?
+     ^
+  -->
+  <context name="LCommand" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!AfterCommand">
+    <DetectSpaces/>
+    <Int attribute="Wrap Length" context="#pop#pop!AfterCommand" additionalDeliminator="lL"/>
+  </context>
 
-                        <itemData name="Line Continue"    defStyleNum="dsOthers" color="#000" bold="1"/>
-                        <itemData name="Literal Text"     defStyleNum="dsOthers" color="#080" italic="1"/>
-                        <itemData name="Literal Escape"   defStyleNum="dsOthers" color="#0A0" italic="1"/>
 
-                        <itemData name="Comment"          defStyleNum="dsComment"/>
-                        <itemData name="Error"            defStyleNum="dsError"/>
-                </itemDatas>
-        </highlighting>
+  <!--
+    q[exit-code]
+    Q[exit-code]
+     ^
+  -->
+  <context name="QCommand" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop#pop!AfterCommand">
+    <DetectSpaces/>
+    <Int attribute="Exit Code" context="#pop#pop!AfterCommand" additionalDeliminator="qQ"/>
+  </context>
 
-        <general>
-                <comments>
-                        <comment name="singleLine" start="#"/>
-                </comments>
-        </general>
+
+  <!--
+    e[command]
+     ^
+  -->
+  <context name="ECommand" attribute="Shell Command" lineEndContext="#pop#pop">
+    <LineContinue          attribute="Line Continue"/>
+  </context>
+
+
+  <!--
+    blabel
+    tlabel
+    Tlabel
+    :label
+     ^
+  -->
+  <context name="Label" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!AfterCommand">
+    <DetectSpaces/>
+    <RegExpr String="[^\s;}#]+" attribute="Label" context="#pop"/>
+  </context>
+
+
+  <context name="AfterCommand" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!Error">
+    <DetectSpaces/>
+    <DetectChar char=";" attribute="Normal" context="#pop"/>
+    <DetectChar char="}" attribute="Brace"   context="#pop" endRegion="block"/>
+    <DetectChar char="#" attribute="Comment" context="#pop!Comment"/>
+  </context>
+
+
+  <!--
+    regex special char
+  -->
+  <context name="Regex" attribute="Regex">
+    <DetectSpaces/>
+    <AnyChar    String="*.^$[]"   attribute="Regex Special"/>
+    <AnyChar    String="+?|{}()"  attribute="Regex Special Extended"/>
+    <DetectChar char="\" lookAhead="1" context="RegexEscape"/>
+  </context>
+
+  <!--
+    on \
+  -->
+  <context name="RegexEscape" attribute="Regex" fallthroughContext="#pop">
+    <LineContinue         attribute="Regex Escape" context="#pop"/>
+    <RegExpr String="\\([afnrtv\\()+?|{}\[\].*^$]|c.|x[0-9a-fA-F]{1,2}|d[0-9]{1,3}|o[0-7]{1,3})"
+                          attribute="Regex Escape" context="#pop"/>
+    <RegExpr String="\\([0-9wWbBsS&lt;>`'])"
+                          attribute="Regex Escape Special" context="#pop"/>
+    <RegExpr String="\\." attribute="Unknown Escape" context="#pop"/>
+  </context>
+
+
+  <!--
+    #comment
+     ^
+  -->
+  <context name="Comment" attribute="Comment" lineEndContext="#pop">
+    <DetectSpaces/>
+    <IncludeRules context="##Comments"/>
+    <DetectIdentifier/>
+  </context>
+
+
+  <context name="Error" attribute="Error" lineEndContext="#pop"/>
+
+</contexts>
+
+<itemDatas>
+  <itemData name="Normal"     defStyleNum="dsNormal"/>
+
+  <itemData name="Regex"                  defStyleNum="dsString"/>
+  <itemData name="Regex Escape"           defStyleNum="dsChar"/>
+  <itemData name="Regex Escape Special"   defStyleNum="dsSpecialChar"/>
+  <itemData name="Regex Special"          defStyleNum="dsSpecialChar"/>
+  <itemData name="Regex Special Extended" defStyleNum="dsSpecialString"/>
+  <itemData name="Replacement"            defStyleNum="dsString"/>
+  <itemData name="Repl Escape"            defStyleNum="dsChar"/>
+  <itemData name="Repl Substitution"      defStyleNum="dsSpecialChar"/>
+  <itemData name="Char List"              defStyleNum="dsString"/>
+  <itemData name="Char List Escape"       defStyleNum="dsChar"/>
+  <itemData name="Separator"              defStyleNum="dsConstant"/>
+
+  <itemData name="Line Number"  defStyleNum="dsDecVal"/>
+  <itemData name="Step"         defStyleNum="dsDecVal"/>
+  <itemData name="Last Line"    defStyleNum="dsFunction" bold="1"/>
+  <itemData name="Negation"     defStyleNum="dsFunction" bold="1"/>
+
+  <itemData name="Command"        defStyleNum="dsKeyword"/>
+  <itemData name="Shell Command"  defStyleNum="dsPreprocessor"/>
+  <itemData name="Label"          defStyleNum="dsControlFlow"/>
+  <itemData name="Brace"          defStyleNum="dsNormal"/>
+
+  <itemData name="Flag"         defStyleNum="dsDataType"/>
+  <itemData name="Repl Number"  defStyleNum="dsDecVal"/>
+  <itemData name="Exit Code"    defStyleNum="dsDecVal"/>
+  <itemData name="Filename"     defStyleNum="dsBaseN"/>
+  <itemData name="Wrap Length"  defStyleNum="dsDecVal"/>
+
+  <itemData name="Line Continue"  defStyleNum="dsAttribute" bold="1"/>
+  <itemData name="Literal Text"   defStyleNum="dsImport" italic="1"/>
+  <itemData name="Literal Escape" defStyleNum="dsOperator" italic="1"/>
+
+  <itemData name="Unknown Escape" defStyleNum="dsChar"/>
+  <itemData name="Comment"        defStyleNum="dsComment"/>
+  <itemData name="Error"          defStyleNum="dsError"/>
+</itemDatas>
+</highlighting>
+
+<general>
+  <comments>
+    <comment name="singleLine" start="#"/>
+  </comments>
+</general>
 </language>
-<!-- kate: replace-tabs on; tab-width 8; indent-width 8; -->
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/sgml.xml b/xml/sgml.xml
--- a/xml/sgml.xml
+++ b/xml/sgml.xml
@@ -1,6 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<language name="SGML" version="4" kateversion="5.0" section="Markup" extensions="*.sgml" mimetype="text/sgml">
+<!DOCTYPE language>
+<language name="SGML" version="5" kateversion="5.0" section="Markup" extensions="*.sgml" mimetype="text/sgml">
+
+<!--
+missing features:
+- DOCTYPE with ELEMENT, ENTITY, SHORTREF, USEMAP
+- special processing: INCLUDE, IGNORE, CDATA, RCDATA, TEMP
+    <![ IGNORE [ bla bla ]]>
+    <![ %Maryland; [ bla bla ]]> (entity replacement)
+- `<ITALIC>text</>` (SHORTTAG) for `<ITALIC>text</ITALIC>`
+- `<ITALIC/text/` (NET) for `<ITALIC>text</ITALIC>`
+    `<ITALIC/text<BOLD/text//` for `<ITALIC>text<BOLD>text</BOLD></ITALIC>`
+- `<cell>a<>b<>c` for `<cell>a</cell><cell>b</cell><cell>c`
+- entity: `&je;`, `&#space;`, `&#2345;`, etc
+- comment everywhere: <tag - - comment - - no comment>
+                            ~           ~ These spaces do not exist,
+                                          but it is not possible to delete them
+                                          without having an XML syntax error
+-->
+
   <highlighting>
     <contexts>
        <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
@@ -33,9 +51,9 @@
     </contexts>
     <itemDatas>
       <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Tag" defStyleNum="dsKeyword"/>
-      <itemData name="Attribute Name" defStyleNum="dsOthers"/>
-      <itemData name="Attribute Value" defStyleNum="dsDataType"/>
+      <itemData name="Tag" defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Attribute Name" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Attribute Value" defStyleNum="dsDataType" spellChecking="false"/>
       <itemData name="Comment" defStyleNum="dsComment"/>
     </itemDatas>
   </highlighting>
diff --git a/xml/sml.xml b/xml/sml.xml
--- a/xml/sml.xml
+++ b/xml/sml.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="SML" version="6" kateversion="5.0" section="Sources" extensions="*.sml;*.ml" mimetype="" author="Christoph Cullmann (cullmann@kde.org)" license="MIT">
   <highlighting>
     <list name="keywords">
diff --git a/xml/sparql.xml b/xml/sparql.xml
new file mode 100644
--- /dev/null
+++ b/xml/sparql.xml
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<language name="SPARQL" section="Database" version="1" kateversion="5.0"
+    extensions="*.rq;*.sparql"
+    mimetype="application/sparql-query"
+    author="Damian Oswald (damian.oswald@protonmail.com)"
+    license="MIT">
+  <highlighting>
+    <list name="keywords">
+      <item>ADD</item>
+      <item>AS</item>
+      <item>ASC</item>
+      <item>ASK</item>
+      <item>BASE</item>
+      <item>BIND</item>
+      <item>BY</item>
+      <item>CLEAR</item>
+      <item>CONSTRUCT</item>
+      <item>COPY</item>
+      <item>CREATE</item>
+      <item>DATA</item>
+      <item>DEFAULT</item>
+      <item>DELETE</item>
+      <item>DESC</item>
+      <item>DESCRIBE</item>
+      <item>DISTINCT</item>
+      <item>DROP</item>
+      <item>EXISTS</item>
+      <item>FILTER</item>
+      <item>FROM</item>
+      <item>GRAPH</item>
+      <item>GROUP</item>
+      <item>HAVING</item>
+      <item>IN</item>
+      <item>INSERT</item>
+      <item>INTO</item>
+      <item>LIMIT</item>
+      <item>LOAD</item>
+      <item>MINUS</item>
+      <item>MOVE</item>
+      <item>NAMED</item>
+      <item>NOT</item>
+      <item>OFFSET</item>
+      <item>OPTIONAL</item>
+      <item>ORDER</item>
+      <item>PREFIX</item>
+      <item>REDUCED</item>
+      <item>SELECT</item>
+      <item>SERVICE</item>
+      <item>SILENT</item>
+      <item>TO</item>
+      <item>UNDEF</item>
+      <item>UNION</item>
+      <item>USING</item>
+      <item>VALUES</item>
+      <item>WHERE</item>
+      <item>WITH</item>
+    </list>
+    <list name="functions">
+      <item>ABS</item>
+      <item>BNODE</item>
+      <item>BOUND</item>
+      <item>CEIL</item>
+      <item>COALESCE</item>
+      <item>CONCAT</item>
+      <item>CONTAINS</item>
+      <item>DATATYPE</item>
+      <item>DAY</item>
+      <item>ENCODE_FOR_URI</item>
+      <item>FLOOR</item>
+      <item>HOURS</item>
+      <item>IF</item>
+      <item>IRI</item>
+      <item>ISBLANK</item>
+      <item>ISIRI</item>
+      <item>ISLITERAL</item>
+      <item>ISNUMERIC</item>
+      <item>ISURI</item>
+      <item>LANG</item>
+      <item>LANGMATCHES</item>
+      <item>LCASE</item>
+      <item>MD5</item>
+      <item>MINUTES</item>
+      <item>MONTH</item>
+      <item>NOW</item>
+      <item>RAND</item>
+      <item>REGEX</item>
+      <item>REPLACE</item>
+      <item>ROUND</item>
+      <item>SAMETERM</item>
+      <item>SECONDS</item>
+      <item>SHA1</item>
+      <item>SHA256</item>
+      <item>SHA384</item>
+      <item>SHA512</item>
+      <item>STR</item>
+      <item>STRAFTER</item>
+      <item>STRBEFORE</item>
+      <item>STRDT</item>
+      <item>STRENDS</item>
+      <item>STRLANG</item>
+      <item>STRLEN</item>
+      <item>STRSTARTS</item>
+      <item>STRUUID</item>
+      <item>SUBSTR</item>
+      <item>TIMEZONE</item>
+      <item>TZ</item>
+      <item>UCASE</item>
+      <item>URI</item>
+      <item>UUID</item>
+      <item>YEAR</item>
+    </list>
+    <list name="aggregates">
+      <item>AVG</item>
+      <item>COUNT</item>
+      <item>GROUP_CONCAT</item>
+      <item>MAX</item>
+      <item>MIN</item>
+      <item>SAMPLE</item>
+      <item>SUM</item>
+    </list>
+    <contexts>
+      <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="Singleline Comment" char="#"/>
+        <RangeDetect attribute="IRI" context="#stay" char="&lt;" char1="&gt;"/>
+        <StringDetect attribute="String" context="StringTSS" String="'''"/>
+        <StringDetect attribute="String" context="StringTDS" String="&quot;&quot;&quot;"/>
+        <DetectChar attribute="String" context="StringS" char="'"/>
+        <DetectChar attribute="String" context="StringD" char="&quot;"/>
+        <HlCHex attribute="Hex" context="#stay"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <StringDetect attribute="Variable" context="#stay" String="[\?\$]\w+"/>
+        <keyword attribute="Keyword" String="keywords" context="#stay" insensitive="true"/>
+        <keyword attribute="Function" String="functions" context="#stay" insensitive="true"/>
+        <keyword attribute="Function" String="aggregates" context="#stay" insensitive="true"/>
+        <Detect2Chars attribute="Operator" context="#stay" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Operator" context="#stay" char="|" char1="|"/>
+        <Detect2Chars attribute="Operator" context="#stay" char="!" char1="="/>
+        <Detect2Chars attribute="Operator" context="#stay" char="&lt;" char1="="/>
+        <Detect2Chars attribute="Operator" context="#stay" char="&gt;" char1="="/>
+        <Detect2Chars attribute="Operator" context="#stay" char="^" char1="^"/>
+        <AnyChar attribute="Operator" context="#stay" String="*+-/=!&lt;&gt;()[]{},;.|^"/>
+        <StringDetect attribute="Boolean" context="#stay" String="\b(true|false)\b" insensitive="true"/>
+        <StringDetect attribute="Prefixed Name" context="#stay" String="\b[a-zA-Z0-9_.-]*:[a-zA-Z0-9_.-]+"/>
+        <StringDetect attribute="Blank Node" context="#stay" String="_:[a-zA-Z0-9_.-]+"/>
+        <StringDetect attribute="LangTag" context="#stay" String="@[a-zA-Z]+(-[a-zA-Z0-9]+)*"/>
+      </context>
+      <context name="StringS" attribute="String" lineEndContext="#stay">
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="'"/>
+      </context>
+      <context name="StringD" attribute="String" lineEndContext="#stay">
+        <HlCStringChar attribute="String Char" context="#stay"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context name="StringTSS" attribute="String" lineEndContext="#stay">
+        <StringDetect attribute="String" context="#pop" String="'''"/>
+      </context>
+      <context name="StringTDS" attribute="String" lineEndContext="#stay">
+        <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;"/>
+      </context>
+      <context name="Singleline Comment" attribute="Comment" lineEndContext="#pop">
+        <IncludeRules context="##Comments"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text"   defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Keyword"       defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Function"      defStyleNum="dsFunction" spellChecking="false"/>
+      <itemData name="Decimal"       defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="Hex"           defStyleNum="dsBaseN" spellChecking="false"/>
+      <itemData name="Float"         defStyleNum="dsFloat" spellChecking="false"/>
+      <itemData name="String"        defStyleNum="dsString"/>
+      <itemData name="String Char"   defStyleNum="dsChar" spellChecking="false"/>
+      <itemData name="Comment"       defStyleNum="dsComment"/>
+      <itemData name="Operator"      defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Variable"      defStyleNum="dsOthers" spellChecking="false" bold="1"/>
+      <itemData name="IRI"           defStyleNum="dsString" spellChecking="false"/>
+      <itemData name="Prefixed Name" defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Blank Node"    defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="LangTag"       defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Boolean"       defStyleNum="dsConstant" spellChecking="false"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#" />
+    </comments>
+    <keywords casesensitive="0" />
+  </general>
+</language>
diff --git a/xml/spdx-comments.xml b/xml/spdx-comments.xml
--- a/xml/spdx-comments.xml
+++ b/xml/spdx-comments.xml
@@ -1,550 +1,813 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
-<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
-  cd data/generators
-  # increase version of spdx-comments.xml.tpl then
-  ./generate-spdx-syntax.py > ../syntax/spdx-comments.xml
--->
-<language
-    version="6"
-    kateversion="3.1"
-    name="SPDX-Comments"
-    section="Other"
-    extensions=""
-    mimetype=""
-    author="Alex Turbov (i.zaufi@gmail.com)"
-    license="MIT"
-    hidden="true"
-  >
-  <highlighting>
-    <list name="tags">
-      <item>SPDX-License-Identifier:</item>
-      <item>SPDX-FileContributor:</item>
-      <item>SPDX-FileCopyrightText:</item>
-      <item>SPDX-LicenseInfoInFile:</item>
-    </list>
-
-    <list name="operators">
-      <item>AND</item>
-      <item>OR</item>
-      <item>WITH</item>
-    </list>
-
-    <list name="licenses">
-      <item>bzip2-1.0.6</item>
-      <item>Intel-ACPI</item>
-      <item>XSkat</item>
-      <item>CC-BY-NC-SA-2.0</item>
-      <item>Plexus</item>
-      <item>Giftware</item>
-      <item>BitTorrent-1.0</item>
-      <item>APSL-1.1</item>
-      <item>UPL-1.0</item>
-      <item>Caldera</item>
-      <item>Zend-2.0</item>
-      <item>CUA-OPL-1.0</item>
-      <item>JPNIC</item>
-      <item>SAX-PD</item>
-      <item>CC-BY-ND-2.5</item>
-      <item>eGenix</item>
-      <item>LGPLLR</item>
-      <item>OLDAP-2.2.2</item>
-      <item>CC-BY-ND-3.0-DE</item>
-      <item>IPA</item>
-      <item>NCSA</item>
-      <item>W3C</item>
-      <item>Adobe-2006</item>
-      <item>Net-SNMP</item>
-      <item>CC-BY-SA-4.0</item>
-      <item>YPL-1.0</item>
-      <item>MITNFA</item>
-      <item>PHP-3.01</item>
-      <item>BSD-Source-Code</item>
-      <item>CC-BY-SA-2.5</item>
-      <item>Motosoto</item>
-      <item>OSL-1.1</item>
-      <item>NGPL</item>
-      <item>CC-BY-2.5-AU</item>
-      <item>Unicode-TOU</item>
-      <item>BSD-3-Clause-No-Nuclear-License</item>
-      <item>OPUBL-1.0</item>
-      <item>CC-BY-NC-SA-2.0-UK</item>
-      <item>NLOD-2.0</item>
-      <item>gnuplot</item>
-      <item>EPICS</item>
-      <item>Info-ZIP</item>
-      <item>OLDAP-2.0</item>
-      <item>CERN-OHL-P-2.0</item>
-      <item>BSD-3-Clause-No-Nuclear-Warranty</item>
-      <item>AML</item>
-      <item>MulanPSL-1.0</item>
-      <item>Multics</item>
-      <item>VSL-1.0</item>
-      <item>RSA-MD</item>
-      <item>CC-PDDC</item>
-      <item>CC-BY-SA-2.1-JP</item>
-      <item>LPPL-1.2</item>
-      <item>Spencer-94</item>
-      <item>OLDAP-1.2</item>
-      <item>O-UDA-1.0</item>
-      <item>OLDAP-2.7</item>
-      <item>Glulxe</item>
-      <item>iMatix</item>
-      <item>TAPR-OHL-1.0</item>
-      <item>NBPL-1.0</item>
-      <item>LiLiQ-R-1.1</item>
-      <item>Noweb</item>
-      <item>CC0-1.0</item>
-      <item>BSD-Protection</item>
-      <item>CC-BY-NC-2.5</item>
-      <item>Zlib</item>
-      <item>GFDL-1.3-invariants-or-later</item>
-      <item>CC-BY-3.0-AT</item>
-      <item>LPPL-1.3c</item>
-      <item>EPL-1.0</item>
-      <item>GFDL-1.1-invariants-or-later</item>
-      <item>ANTLR-PD-fallback</item>
-      <item>OLDAP-2.4</item>
-      <item>OLDAP-2.3</item>
-      <item>ZPL-2.1</item>
-      <item>Apache-2.0</item>
-      <item>SGI-B-2.0</item>
-      <item>Hippocratic-2.1</item>
-      <item>CC-BY-SA-3.0-DE</item>
-      <item>CC-BY-NC-SA-1.0</item>
-      <item>LGPL-2.1-or-later</item>
-      <item>CC-BY-3.0-US</item>
-      <item>TCP-wrappers</item>
-      <item>GFDL-1.2-invariants-or-later</item>
-      <item>Eurosym</item>
-      <item>LPPL-1.0</item>
-      <item>SGI-B-1.0</item>
-      <item>APL-1.0</item>
-      <item>libtiff</item>
-      <item>AFL-2.1</item>
-      <item>CC-BY-NC-1.0</item>
-      <item>GD</item>
-      <item>AFL-1.1</item>
-      <item>CC-BY-NC-ND-3.0-IGO</item>
-      <item>Unicode-DFS-2015</item>
-      <item>GFDL-1.2-only</item>
-      <item>MPL-1.1</item>
-      <item>GPL-2.0-only</item>
-      <item>CC-BY-NC-4.0</item>
-      <item>FreeImage</item>
-      <item>SHL-0.51</item>
-      <item>CNRI-Jython</item>
-      <item>ZPL-1.1</item>
-      <item>Afmparse</item>
-      <item>OLDAP-2.1</item>
-      <item>Rdisc</item>
-      <item>Imlib2</item>
-      <item>BSD-4-Clause-Shortened</item>
-      <item>Sendmail</item>
-      <item>CC-BY-2.5</item>
-      <item>AAL</item>
-      <item>MPL-2.0-no-copyleft-exception</item>
-      <item>CC-BY-NC-ND-2.5</item>
-      <item>CC-BY-3.0-NL</item>
-      <item>LPL-1.02</item>
-      <item>ECL-1.0</item>
-      <item>OFL-1.0-no-RFN</item>
-      <item>CC-BY-NC-SA-3.0-DE</item>
-      <item>CC-BY-SA-3.0</item>
-      <item>NTP</item>
-      <item>MPL-2.0</item>
-      <item>APSL-1.2</item>
-      <item>GFDL-1.2-no-invariants-only</item>
-      <item>Artistic-2.0</item>
-      <item>RSCPL</item>
-      <item>Sleepycat</item>
-      <item>xpp</item>
-      <item>CDLA-Sharing-1.0</item>
-      <item>ClArtistic</item>
-      <item>AGPL-1.0-only</item>
-      <item>CC-BY-3.0-DE</item>
-      <item>AFL-2.0</item>
-      <item>Intel</item>
-      <item>GFDL-1.1-no-invariants-or-later</item>
-      <item>APAFML</item>
-      <item>SISSL</item>
-      <item>Naumen</item>
-      <item>HTMLTIDY</item>
-      <item>OLDAP-2.8</item>
-      <item>blessing</item>
-      <item>CC-BY-ND-2.0</item>
-      <item>OGTSL</item>
-      <item>LGPL-2.0-or-later</item>
-      <item>Parity-7.0.0</item>
-      <item>CC-BY-ND-1.0</item>
-      <item>dvipdfm</item>
-      <item>CNRI-Python</item>
-      <item>BSD-4-Clause-UC</item>
-      <item>NLOD-1.0</item>
-      <item>MS-RL</item>
-      <item>CC-BY-NC-SA-4.0</item>
-      <item>HaskellReport</item>
-      <item>CC-BY-1.0</item>
-      <item>UCL-1.0</item>
-      <item>Mup</item>
-      <item>SMPPL</item>
-      <item>PHP-3.0</item>
-      <item>GL2PS</item>
-      <item>CrystalStacker</item>
-      <item>W3C-20150513</item>
-      <item>NIST-PD-fallback</item>
-      <item>OGL-UK-1.0</item>
-      <item>CPL-1.0</item>
-      <item>LGPL-2.1-only</item>
-      <item>ZPL-2.0</item>
-      <item>Frameworx-1.0</item>
-      <item>AGPL-3.0-only</item>
-      <item>DRL-1.0</item>
-      <item>EFL-2.0</item>
-      <item>Spencer-99</item>
-      <item>CAL-1.0-Combined-Work-Exception</item>
-      <item>GFDL-1.1-invariants-only</item>
-      <item>TCL</item>
-      <item>SHL-0.5</item>
-      <item>OFL-1.0-RFN</item>
-      <item>CERN-OHL-W-2.0</item>
-      <item>Glide</item>
-      <item>mpich2</item>
-      <item>psutils</item>
-      <item>SPL-1.0</item>
-      <item>Apache-1.1</item>
-      <item>CC-BY-ND-4.0</item>
-      <item>FreeBSD-DOC</item>
-      <item>SCEA</item>
-      <item>Latex2e</item>
-      <item>Artistic-1.0-cl8</item>
-      <item>SGI-B-1.1</item>
-      <item>NRL</item>
-      <item>SWL</item>
-      <item>Zed</item>
-      <item>CERN-OHL-1.1</item>
-      <item>RHeCos-1.1</item>
-      <item>JasPer-2.0</item>
-      <item>SSPL-1.0</item>
-      <item>OLDAP-1.4</item>
-      <item>libpng-2.0</item>
-      <item>CNRI-Python-GPL-Compatible</item>
-      <item>Aladdin</item>
-      <item>CECILL-1.0</item>
-      <item>Ruby</item>
-      <item>NPL-1.1</item>
-      <item>ImageMagick</item>
-      <item>Cube</item>
-      <item>GFDL-1.1-only</item>
-      <item>CC-BY-2.0</item>
-      <item>AFL-1.2</item>
-      <item>CC-BY-SA-2.0</item>
-      <item>CECILL-2.0</item>
-      <item>MIT-advertising</item>
-      <item>CC-BY-NC-SA-2.5</item>
-      <item>Artistic-1.0</item>
-      <item>OSL-3.0</item>
-      <item>X11</item>
-      <item>Bahyph</item>
-      <item>OLDAP-2.0.1</item>
-      <item>EUDatagrid</item>
-      <item>MTLL</item>
-      <item>GFDL-1.2-invariants-only</item>
-      <item>GFDL-1.3-no-invariants-or-later</item>
-      <item>curl</item>
-      <item>LAL-1.3</item>
-      <item>DSDP</item>
-      <item>CERN-OHL-1.2</item>
-      <item>TOSL</item>
-      <item>CC-BY-3.0</item>
-      <item>Qhull</item>
-      <item>GFDL-1.3-no-invariants-only</item>
-      <item>TORQUE-1.1</item>
-      <item>MS-PL</item>
-      <item>Apache-1.0</item>
-      <item>copyleft-next-0.3.1</item>
-      <item>GFDL-1.2-or-later</item>
-      <item>MulanPSL-2.0</item>
-      <item>FSFAP</item>
-      <item>Xerox</item>
-      <item>CDDL-1.0</item>
-      <item>GFDL-1.3-invariants-only</item>
-      <item>etalab-2.0</item>
-      <item>XFree86-1.1</item>
-      <item>SNIA</item>
-      <item>LPPL-1.1</item>
-      <item>CATOSL-1.1</item>
-      <item>TU-Berlin-2.0</item>
-      <item>GFDL-1.3-or-later</item>
-      <item>LAL-1.2</item>
-      <item>ICU</item>
-      <item>FTL</item>
-      <item>MirOS</item>
-      <item>CC-BY-NC-ND-3.0</item>
-      <item>OSET-PL-2.1</item>
-      <item>CC-BY-NC-ND-2.0</item>
-      <item>SISSL-1.2</item>
-      <item>Wsuipa</item>
-      <item>Zimbra-1.4</item>
-      <item>Linux-OpenIB</item>
-      <item>OLDAP-2.5</item>
-      <item>AMPAS</item>
-      <item>GPL-1.0-or-later</item>
-      <item>BUSL-1.1</item>
-      <item>Adobe-Glyph</item>
-      <item>0BSD</item>
-      <item>W3C-19980720</item>
-      <item>FSFUL</item>
-      <item>CC-BY-NC-SA-3.0</item>
-      <item>DOC</item>
-      <item>TMate</item>
-      <item>MIT-open-group</item>
-      <item>AMDPLPA</item>
-      <item>Condor-1.1</item>
-      <item>PolyForm-Noncommercial-1.0.0</item>
-      <item>BSD-3-Clause-No-Military-License</item>
-      <item>CC-BY-4.0</item>
-      <item>OGL-Canada-2.0</item>
-      <item>CC-BY-NC-SA-3.0-IGO</item>
-      <item>EFL-1.0</item>
-      <item>Newsletr</item>
-      <item>copyleft-next-0.3.0</item>
-      <item>GPL-3.0-or-later</item>
-      <item>CDLA-Permissive-2.0</item>
-      <item>CC-BY-ND-3.0</item>
-      <item>C-UDA-1.0</item>
-      <item>Barr</item>
-      <item>Vim</item>
-      <item>BitTorrent-1.1</item>
-      <item>CDL-1.0</item>
-      <item>CC-BY-SA-1.0</item>
-      <item>ADSL</item>
-      <item>PostgreSQL</item>
-      <item>OFL-1.1</item>
-      <item>NPL-1.0</item>
-      <item>xinetd</item>
-      <item>LGPL-2.0-only</item>
-      <item>zlib-acknowledgement</item>
-      <item>OLDAP-2.2.1</item>
-      <item>APSL-1.0</item>
-      <item>BSD-3-Clause-LBNL</item>
-      <item>GLWTPL</item>
-      <item>LGPL-3.0-only</item>
-      <item>OGC-1.0</item>
-      <item>Dotseqn</item>
-      <item>MakeIndex</item>
-      <item>GPL-3.0-only</item>
-      <item>BSD-3-Clause-No-Nuclear-License-2014</item>
-      <item>GPL-1.0-only</item>
-      <item>IJG</item>
-      <item>AGPL-1.0-or-later</item>
-      <item>OFL-1.1-no-RFN</item>
-      <item>BSL-1.0</item>
-      <item>Libpng</item>
-      <item>CC-BY-NC-3.0</item>
-      <item>CC-BY-NC-2.0</item>
-      <item>Unlicense</item>
-      <item>LPL-1.0</item>
-      <item>bzip2-1.0.5</item>
-      <item>Entessa</item>
-      <item>BSD-2-Clause-Patent</item>
-      <item>ECL-2.0</item>
-      <item>Crossword</item>
-      <item>CC-BY-NC-ND-1.0</item>
-      <item>OCLC-2.0</item>
-      <item>CECILL-1.1</item>
-      <item>CECILL-2.1</item>
-      <item>OGDL-Taiwan-1.0</item>
-      <item>Abstyles</item>
-      <item>libselinux-1.0</item>
-      <item>ANTLR-PD</item>
-      <item>GPL-2.0-or-later</item>
-      <item>IPL-1.0</item>
-      <item>MIT-enna</item>
-      <item>CPOL-1.02</item>
-      <item>CC-BY-SA-3.0-AT</item>
-      <item>BSD-1-Clause</item>
-      <item>NTP-0</item>
-      <item>SugarCRM-1.1.3</item>
-      <item>MIT</item>
-      <item>OFL-1.1-RFN</item>
-      <item>Watcom-1.0</item>
-      <item>CC-BY-NC-SA-2.0-FR</item>
-      <item>ODbL-1.0</item>
-      <item>FSFULLR</item>
-      <item>OLDAP-1.3</item>
-      <item>SSH-OpenSSH</item>
-      <item>BSD-2-Clause</item>
-      <item>HPND</item>
-      <item>Zimbra-1.3</item>
-      <item>Borceux</item>
-      <item>OLDAP-1.1</item>
-      <item>OFL-1.0</item>
-      <item>NASA-1.3</item>
-      <item>VOSTROM</item>
-      <item>MIT-0</item>
-      <item>ISC</item>
-      <item>Unicode-DFS-2016</item>
-      <item>BlueOak-1.0.0</item>
-      <item>LiLiQ-Rplus-1.1</item>
-      <item>NOSL</item>
-      <item>SMLNJ</item>
-      <item>CPAL-1.0</item>
-      <item>PSF-2.0</item>
-      <item>RPL-1.5</item>
-      <item>MIT-Modern-Variant</item>
-      <item>Nokia</item>
-      <item>GFDL-1.1-no-invariants-only</item>
-      <item>PDDL-1.0</item>
-      <item>EUPL-1.0</item>
-      <item>CDDL-1.1</item>
-      <item>GFDL-1.3-only</item>
-      <item>OLDAP-2.6</item>
-      <item>JSON</item>
-      <item>LGPL-3.0-or-later</item>
-      <item>Fair</item>
-      <item>OSL-2.1</item>
-      <item>LPPL-1.3a</item>
-      <item>NAIST-2003</item>
-      <item>CC-BY-NC-ND-4.0</item>
-      <item>CC-BY-NC-3.0-DE</item>
-      <item>OPL-1.0</item>
-      <item>HPND-sell-variant</item>
-      <item>QPL-1.0</item>
-      <item>EUPL-1.2</item>
-      <item>GFDL-1.2-no-invariants-or-later</item>
-      <item>NCGL-UK-2.0</item>
-      <item>Beerware</item>
-      <item>BSD-3-Clause-Open-MPI</item>
-      <item>CECILL-B</item>
-      <item>EPL-2.0</item>
-      <item>MIT-feh</item>
-      <item>RPL-1.1</item>
-      <item>CDLA-Permissive-1.0</item>
-      <item>Python-2.0</item>
-      <item>MPL-1.0</item>
-      <item>GFDL-1.1-or-later</item>
-      <item>diffmark</item>
-      <item>OpenSSL</item>
-      <item>OSL-1.0</item>
-      <item>Parity-6.0.0</item>
-      <item>YPL-1.1</item>
-      <item>SSH-short</item>
-      <item>IBM-pibs</item>
-      <item>Xnet</item>
-      <item>TU-Berlin-1.0</item>
-      <item>CAL-1.0</item>
-      <item>AFL-3.0</item>
-      <item>CECILL-C</item>
-      <item>OGL-UK-3.0</item>
-      <item>BSD-3-Clause-Clear</item>
-      <item>BSD-3-Clause-Modification</item>
-      <item>CC-BY-SA-2.0-UK</item>
-      <item>Saxpath</item>
-      <item>NLPL</item>
-      <item>SimPL-2.0</item>
-      <item>psfrag</item>
-      <item>Spencer-86</item>
-      <item>OCCT-PL</item>
-      <item>CERN-OHL-S-2.0</item>
-      <item>ErlPL-1.1</item>
-      <item>MIT-CMU</item>
-      <item>NIST-PD</item>
-      <item>OSL-2.0</item>
-      <item>APSL-2.0</item>
-      <item>Leptonica</item>
-      <item>PolyForm-Small-Business-1.0.0</item>
-      <item>LiLiQ-P-1.1</item>
-      <item>NetCDF</item>
-      <item>OML</item>
-      <item>AGPL-3.0-or-later</item>
-      <item>OLDAP-2.2</item>
-      <item>BSD-3-Clause</item>
-      <item>WTFPL</item>
-      <item>OGL-UK-2.0</item>
-      <item>BSD-3-Clause-Attribution</item>
-      <item>RPSL-1.0</item>
-      <item>CC-BY-NC-ND-3.0-DE</item>
-      <item>EUPL-1.1</item>
-      <item>Sendmail-8.23</item>
-      <item>ODC-By-1.0</item>
-      <item>D-FSL-1.0</item>
-      <item>BSD-4-Clause</item>
-      <item>BSD-2-Clause-Views</item>
-      <item>Artistic-1.0-Perl</item>
-      <item>NPOSL-3.0</item>
-      <item>gSOAP-1.3b</item>
-      <item>Interbase-1.0</item>
-    </list>
-
-    <list name="deprecated-licenses">
-      <item>GPL-1.0</item>
-      <item>GPL-2.0-with-GCC-exception</item>
-      <item>wxWindows</item>
-      <item>Nunit</item>
-      <item>GFDL-1.1</item>
-      <item>GPL-2.0</item>
-      <item>GFDL-1.2</item>
-      <item>LGPL-2.0</item>
-      <item>GPL-3.0-with-autoconf-exception</item>
-      <item>GFDL-1.3</item>
-      <item>BSD-2-Clause-NetBSD</item>
-      <item>LGPL-3.0</item>
-      <item>GPL-2.0-with-classpath-exception</item>
-      <item>GPL-3.0-with-GCC-exception</item>
-      <item>BSD-2-Clause-FreeBSD</item>
-      <item>GPL-3.0</item>
-      <item>GPL-2.0-with-font-exception</item>
-      <item>eCos-2.0</item>
-      <item>GPL-2.0-with-bison-exception</item>
-      <item>GPL-2.0-with-autoconf-exception</item>
-      <item>AGPL-1.0</item>
-      <item>AGPL-3.0</item>
-      <item>LGPL-2.1</item>
-      <item>StandardML-NJ</item>
-    </list>
-
-    <list name="exceptions">
-      <item>GPL-CC-1.0</item>
-      <item>openvpn-openssl-exception</item>
-      <item>WxWindows-exception-3.1</item>
-      <item>GPL-3.0-linking-exception</item>
-      <item>i2p-gpl-java-exception</item>
-      <item>OpenJDK-assembly-exception-1.0</item>
-      <item>mif-exception</item>
-      <item>CLISP-exception-2.0</item>
-      <item>freertos-exception-2.0</item>
-      <item>Bison-exception-2.2</item>
-      <item>OCCT-exception-1.0</item>
-      <item>Autoconf-exception-2.0</item>
-      <item>LLVM-exception</item>
-      <item>GCC-exception-3.1</item>
-      <item>Font-exception-2.0</item>
-      <item>Libtool-exception</item>
-      <item>u-boot-exception-2.0</item>
-      <item>Swift-exception</item>
-      <item>eCos-exception-2.0</item>
-      <item>OCaml-LGPL-linking-exception</item>
-      <item>Qt-GPL-exception-1.0</item>
-      <item>Linux-syscall-note</item>
-      <item>Bootloader-exception</item>
-      <item>PS-or-PDF-font-exception-20170817</item>
-      <item>Universal-FOSS-exception-1.0</item>
-      <item>Classpath-exception-2.0</item>
-      <item>Qwt-exception-1.0</item>
-      <item>LZMA-exception</item>
-      <item>Autoconf-exception-3.0</item>
-      <item>DigiRule-FOSS-exception</item>
-      <item>389-exception</item>
-      <item>SHL-2.0</item>
-      <item>GCC-exception-2.0</item>
-      <item>GPL-3.0-linking-source-exception</item>
-      <item>Qt-LGPL-exception-1.1</item>
-      <item>Fawkes-Runtime-exception</item>
-      <item>gnu-javamail-exception</item>
-      <item>FLTK-exception</item>
-      <item>LGPL-3.0-linking-exception</item>
-      <item>SHL-2.1</item>
+<!DOCTYPE language>
+<!-- ***** THIS FILE WAS GENERATED BY A SCRIPT - DO NOT EDIT *****
+  cd data/generators
+  # increase version of spdx-comments.xml.tpl then
+  ./generate-spdx-syntax.py > ../syntax/spdx-comments.xml
+-->
+<language
+    version="7"
+    kateversion="3.1"
+    name="SPDX-Comments"
+    section="Other"
+    extensions=""
+    mimetype=""
+    author="Alex Turbov (i.zaufi@gmail.com)"
+    license="MIT"
+    hidden="true"
+  >
+  <highlighting>
+    <list name="tags">
+      <item>SPDX-License-Identifier:</item>
+      <item>SPDX-FileContributor:</item>
+      <item>SPDX-FileCopyrightText:</item>
+      <item>SPDX-LicenseInfoInFile:</item>
+    </list>
+
+    <list name="operators">
+      <item>AND</item>
+      <item>OR</item>
+      <item>WITH</item>
+    </list>
+
+    <list name="licenses">
+      <item>X11</item>
+      <item>HPND-export2-US</item>
+      <item>OpenPBS-2.3</item>
+      <item>OSL-3.0</item>
+      <item>Rdisc</item>
+      <item>LPD-document</item>
+      <item>BSD-3-Clause-LBNL</item>
+      <item>AFL-1.1</item>
+      <item>HP-1989</item>
+      <item>CC-BY-ND-4.0</item>
+      <item>RSA-MD</item>
+      <item>HPND-sell-variant</item>
+      <item>threeparttable</item>
+      <item>AMPAS</item>
+      <item>ngrep</item>
+      <item>mplus</item>
+      <item>MIT-Festival</item>
+      <item>HDF5</item>
+      <item>Artistic-1.0-Perl</item>
+      <item>BSD-4-Clause-UC</item>
+      <item>SAX-PD</item>
+      <item>APSL-1.1</item>
+      <item>AGPL-1.0-or-later</item>
+      <item>ANTLR-PD</item>
+      <item>Zimbra-1.3</item>
+      <item>GLWTPL</item>
+      <item>Minpack</item>
+      <item>OSL-2.1</item>
+      <item>PolyForm-Small-Business-1.0.0</item>
+      <item>DOC</item>
+      <item>Cronyx</item>
+      <item>LPPL-1.3c</item>
+      <item>SGI-OpenGL</item>
+      <item>libtiff</item>
+      <item>OpenVision</item>
+      <item>TrustedQSL</item>
+      <item>Sun-PPP</item>
+      <item>Entessa</item>
+      <item>AFL-2.0</item>
+      <item>Sleepycat</item>
+      <item>Latex2e</item>
+      <item>FDK-AAC</item>
+      <item>CECILL-C</item>
+      <item>ODC-By-1.0</item>
+      <item>Bitstream-Charter</item>
+      <item>UMich-Merit</item>
+      <item>CC-BY-NC-2.5</item>
+      <item>diffmark</item>
+      <item>BlueOak-1.0.0</item>
+      <item>Info-ZIP</item>
+      <item>CC-BY-NC-ND-4.0</item>
+      <item>JSON</item>
+      <item>Sendmail-8.23</item>
+      <item>SGI-B-1.0</item>
+      <item>RPL-1.1</item>
+      <item>ISC</item>
+      <item>FSFUL</item>
+      <item>Multics</item>
+      <item>3D-Slicer-1.0</item>
+      <item>Libpng</item>
+      <item>LPPL-1.0</item>
+      <item>NGPL</item>
+      <item>Clips</item>
+      <item>CC-BY-4.0</item>
+      <item>GFDL-1.1-or-later</item>
+      <item>GPL-1.0-or-later</item>
+      <item>GFDL-1.3-invariants-only</item>
+      <item>Sun-PPP-2000</item>
+      <item>Glide</item>
+      <item>Furuseth</item>
+      <item>GFDL-1.3-no-invariants-or-later</item>
+      <item>any-OSI</item>
+      <item>LGPL-2.0-or-later</item>
+      <item>ADSL</item>
+      <item>Noweb</item>
+      <item>Linux-man-pages-1-para</item>
+      <item>CC-BY-SA-3.0</item>
+      <item>TAPR-OHL-1.0</item>
+      <item>SMLNJ</item>
+      <item>OFL-1.1-RFN</item>
+      <item>SL</item>
+      <item>Afmparse</item>
+      <item>CC-SA-1.0</item>
+      <item>APSL-1.0</item>
+      <item>Hippocratic-2.1</item>
+      <item>UPL-1.0</item>
+      <item>CC-BY-NC-SA-4.0</item>
+      <item>xzoom</item>
+      <item>SchemeReport</item>
+      <item>Boehm-GC</item>
+      <item>xinetd</item>
+      <item>CC-BY-NC-ND-3.0</item>
+      <item>CECILL-2.1</item>
+      <item>SSLeay-standalone</item>
+      <item>CATOSL-1.1</item>
+      <item>NIST-PD</item>
+      <item>GPL-2.0-or-later</item>
+      <item>CECILL-1.1</item>
+      <item>GFDL-1.2-no-invariants-only</item>
+      <item>mpich2</item>
+      <item>JasPer-2.0</item>
+      <item>RPSL-1.0</item>
+      <item>OLDAP-1.4</item>
+      <item>TU-Berlin-1.0</item>
+      <item>CC-BY-3.0-AT</item>
+      <item>BSD-3-Clause-No-Nuclear-License</item>
+      <item>Xdebug-1.03</item>
+      <item>SISSL</item>
+      <item>Apache-1.1</item>
+      <item>HPND-DEC</item>
+      <item>Unlicense-libtelnet</item>
+      <item>Condor-1.1</item>
+      <item>Unicode-TOU</item>
+      <item>OML</item>
+      <item>QPL-1.0-INRIA-2004</item>
+      <item>CC-BY-ND-1.0</item>
+      <item>PolyForm-Noncommercial-1.0.0</item>
+      <item>man2html</item>
+      <item>OLFL-1.3</item>
+      <item>copyleft-next-0.3.0</item>
+      <item>LGPLLR</item>
+      <item>CDDL-1.1</item>
+      <item>Xfig</item>
+      <item>CC-BY-2.5-AU</item>
+      <item>APL-1.0</item>
+      <item>OpenSSL-standalone</item>
+      <item>OGDL-Taiwan-1.0</item>
+      <item>BSL-1.0</item>
+      <item>generic-xts</item>
+      <item>PHP-3.0</item>
+      <item>LAL-1.2</item>
+      <item>DRL-1.1</item>
+      <item>LPL-1.0</item>
+      <item>Leptonica</item>
+      <item>CNRI-Jython</item>
+      <item>DL-DE-ZERO-2.0</item>
+      <item>Cube</item>
+      <item>w3m</item>
+      <item>TGPPL-1.0</item>
+      <item>HPND-UC-export-US</item>
+      <item>EFL-1.0</item>
+      <item>NRL</item>
+      <item>CPAL-1.0</item>
+      <item>NCSA</item>
+      <item>CC-BY-SA-2.1-JP</item>
+      <item>PPL</item>
+      <item>GPL-1.0-only</item>
+      <item>ASWF-Digital-Assets-1.1</item>
+      <item>NCL</item>
+      <item>App-s2p</item>
+      <item>BitTorrent-1.0</item>
+      <item>HPND-merchantability-variant</item>
+      <item>EPICS</item>
+      <item>BSD-3-Clause-Attribution</item>
+      <item>curl</item>
+      <item>NLPL</item>
+      <item>Apache-2.0</item>
+      <item>BSD-Protection</item>
+      <item>DEC-3-Clause</item>
+      <item>MakeIndex</item>
+      <item>RSCPL</item>
+      <item>bcrypt-Solar-Designer</item>
+      <item>OGL-UK-1.0</item>
+      <item>OLDAP-2.1</item>
+      <item>HPND-export-US-modify</item>
+      <item>MIT-0</item>
+      <item>MPL-2.0-no-copyleft-exception</item>
+      <item>CERN-OHL-S-2.0</item>
+      <item>TMate</item>
+      <item>CMU-Mach</item>
+      <item>OSL-2.0</item>
+      <item>UnixCrypt</item>
+      <item>Plexus</item>
+      <item>MulanPSL-2.0</item>
+      <item>OSET-PL-2.1</item>
+      <item>DocBook-Schema</item>
+      <item>CC-BY-NC-ND-3.0-DE</item>
+      <item>IPA</item>
+      <item>LGPL-2.1-or-later</item>
+      <item>zlib-acknowledgement</item>
+      <item>Zed</item>
+      <item>Fair</item>
+      <item>AGPL-3.0-only</item>
+      <item>GFDL-1.2-invariants-only</item>
+      <item>Spencer-86</item>
+      <item>AMDPLPA</item>
+      <item>NPOSL-3.0</item>
+      <item>SWL</item>
+      <item>CC-BY-SA-2.0-UK</item>
+      <item>Brian-Gladman-2-Clause</item>
+      <item>CC-BY-NC-SA-2.0</item>
+      <item>CERN-OHL-P-2.0</item>
+      <item>OFL-1.0-RFN</item>
+      <item>Linux-man-pages-copyleft-var</item>
+      <item>OFL-1.1-no-RFN</item>
+      <item>BSD-3-Clause-flex</item>
+      <item>Intel-ACPI</item>
+      <item>CFITSIO</item>
+      <item>Bitstream-Vera</item>
+      <item>HPND</item>
+      <item>HPND-UC</item>
+      <item>PSF-2.0</item>
+      <item>xkeyboard-config-Zinoviev</item>
+      <item>mpi-permissive</item>
+      <item>TORQUE-1.1</item>
+      <item>CC-BY-NC-ND-2.5</item>
+      <item>cve-tou</item>
+      <item>Artistic-2.0</item>
+      <item>ANTLR-PD-fallback</item>
+      <item>CERN-OHL-W-2.0</item>
+      <item>Spencer-99</item>
+      <item>PHP-3.01</item>
+      <item>SugarCRM-1.1.3</item>
+      <item>GFDL-1.3-only</item>
+      <item>SNIA</item>
+      <item>HPND-sell-variant-MIT-disclaimer</item>
+      <item>libpng-2.0</item>
+      <item>BSD-4-Clause</item>
+      <item>HPND-Intel</item>
+      <item>LiLiQ-R-1.1</item>
+      <item>any-OSI-perl-modules</item>
+      <item>Aspell-RU</item>
+      <item>LiLiQ-P-1.1</item>
+      <item>HPND-INRIA-IMAG</item>
+      <item>BUSL-1.1</item>
+      <item>Parity-7.0.0</item>
+      <item>TTYP0</item>
+      <item>LOOP</item>
+      <item>LiLiQ-Rplus-1.1</item>
+      <item>BSD-3-Clause-No-Nuclear-License-2014</item>
+      <item>BSD-3-Clause-Sun</item>
+      <item>Parity-6.0.0</item>
+      <item>IBM-pibs</item>
+      <item>bzip2-1.0.6</item>
+      <item>GFDL-1.2-no-invariants-or-later</item>
+      <item>FSFULLRWD</item>
+      <item>Game-Programming-Gems</item>
+      <item>gnuplot</item>
+      <item>X11-swapped</item>
+      <item>NLOD-1.0</item>
+      <item>CPOL-1.02</item>
+      <item>OAR</item>
+      <item>Abstyles</item>
+      <item>SISSL-1.2</item>
+      <item>Unicode-DFS-2015</item>
+      <item>Graphics-Gems</item>
+      <item>CC-BY-SA-4.0</item>
+      <item>Dotseqn</item>
+      <item>RHeCos-1.1</item>
+      <item>BSD-3-Clause-Clear</item>
+      <item>CC-BY-SA-2.0</item>
+      <item>GFDL-1.2-invariants-or-later</item>
+      <item>EUDatagrid</item>
+      <item>libselinux-1.0</item>
+      <item>FreeImage</item>
+      <item>APSL-1.2</item>
+      <item>Sendmail</item>
+      <item>SHL-0.5</item>
+      <item>Ubuntu-font-1.0</item>
+      <item>BSD-4-Clause-Shortened</item>
+      <item>GCR-docs</item>
+      <item>GFDL-1.1-invariants-only</item>
+      <item>ZPL-2.1</item>
+      <item>CC-PDDC</item>
+      <item>OCLC-2.0</item>
+      <item>OpenSSL</item>
+      <item>MS-RL</item>
+      <item>BSD-3-Clause-acpica</item>
+      <item>TCP-wrappers</item>
+      <item>CC-BY-NC-SA-3.0-DE</item>
+      <item>LPPL-1.3a</item>
+      <item>OLDAP-1.2</item>
+      <item>HP-1986</item>
+      <item>hdparm</item>
+      <item>PADL</item>
+      <item>OPL-UK-3.0</item>
+      <item>BSD-1-Clause</item>
+      <item>MIT-CMU</item>
+      <item>Mup</item>
+      <item>ICU</item>
+      <item>xpp</item>
+      <item>Artistic-1.0-cl8</item>
+      <item>CC-BY-2.5</item>
+      <item>XSkat</item>
+      <item>YPL-1.0</item>
+      <item>W3C-20150513</item>
+      <item>SGI-B-1.1</item>
+      <item>LGPL-2.1-only</item>
+      <item>CUA-OPL-1.0</item>
+      <item>Eurosym</item>
+      <item>FSFULLRSD</item>
+      <item>CC-BY-NC-SA-2.0-FR</item>
+      <item>X11-distribute-modifications-variant</item>
+      <item>MPEG-SSG</item>
+      <item>MIT-Modern-Variant</item>
+      <item>CAL-1.0</item>
+      <item>HPND-doc-sell</item>
+      <item>Naumen</item>
+      <item>Unicode-3.0</item>
+      <item>Unicode-DFS-2016</item>
+      <item>HIDAPI</item>
+      <item>Baekmuk</item>
+      <item>Kazlib</item>
+      <item>HPND-MIT-disclaimer</item>
+      <item>OLDAP-2.2.2</item>
+      <item>AdaCore-doc</item>
+      <item>0BSD</item>
+      <item>ISC-Veillard</item>
+      <item>CERN-OHL-1.2</item>
+      <item>dvipdfm</item>
+      <item>MulanPSL-1.0</item>
+      <item>JPL-image</item>
+      <item>FSFULLR</item>
+      <item>CryptoSwift</item>
+      <item>CC-BY-NC-3.0-DE</item>
+      <item>BitTorrent-1.1</item>
+      <item>EPL-2.0</item>
+      <item>Vim</item>
+      <item>Inner-Net-2.0</item>
+      <item>LGPL-2.0-only</item>
+      <item>Zimbra-1.4</item>
+      <item>Cornell-Lossless-JPEG</item>
+      <item>Knuth-CTAN</item>
+      <item>OLDAP-1.1</item>
+      <item>CC-BY-NC-ND-2.0</item>
+      <item>Borceux</item>
+      <item>DSDP</item>
+      <item>Unlicense</item>
+      <item>ECL-2.0</item>
+      <item>HPND-Pbmplus</item>
+      <item>ASWF-Digital-Assets-1.0</item>
+      <item>HPND-sell-MIT-disclaimer-xserver</item>
+      <item>SPL-1.0</item>
+      <item>AFL-3.0</item>
+      <item>OLDAP-2.6</item>
+      <item>BSD-Advertising-Acknowledgement</item>
+      <item>SAX-PD-2.0</item>
+      <item>Crossword</item>
+      <item>swrule</item>
+      <item>LZMA-SDK-9.11-to-9.20</item>
+      <item>MIPS</item>
+      <item>CNRI-Python</item>
+      <item>UCAR</item>
+      <item>InnoSetup</item>
+      <item>MIT-Wu</item>
+      <item>CC-BY-NC-SA-2.0-DE</item>
+      <item>HPND-sell-variant-MIT-disclaimer-rev</item>
+      <item>CC-BY-NC-SA-3.0</item>
+      <item>GL2PS</item>
+      <item>Martin-Birgmeier</item>
+      <item>xlock</item>
+      <item>etalab-2.0</item>
+      <item>OLDAP-2.8</item>
+      <item>W3C-19980720</item>
+      <item>CC-BY-3.0-US</item>
+      <item>CPL-1.0</item>
+      <item>OFFIS</item>
+      <item>CC0-1.0</item>
+      <item>CECILL-2.0</item>
+      <item>OCCT-PL</item>
+      <item>NPL-1.0</item>
+      <item>magaz</item>
+      <item>Soundex</item>
+      <item>SOFA</item>
+      <item>Frameworx-1.0</item>
+      <item>check-cvs</item>
+      <item>OLDAP-2.2.1</item>
+      <item>Apache-1.0</item>
+      <item>URT-RLE</item>
+      <item>mailprio</item>
+      <item>OLDAP-2.4</item>
+      <item>BSD-Source-beginning-file</item>
+      <item>CC-BY-SA-1.0</item>
+      <item>CDL-1.0</item>
+      <item>OLDAP-1.3</item>
+      <item>HPND-Netrek</item>
+      <item>Artistic-1.0</item>
+      <item>checkmk</item>
+      <item>Saxpath</item>
+      <item>CMU-Mach-nodoc</item>
+      <item>NCGL-UK-2.0</item>
+      <item>EUPL-1.1</item>
+      <item>CC-BY-ND-2.5</item>
+      <item>SunPro</item>
+      <item>Elastic-2.0</item>
+      <item>ODbL-1.0</item>
+      <item>CERN-OHL-1.1</item>
+      <item>IEC-Code-Components-EULA</item>
+      <item>OGL-UK-2.0</item>
+      <item>Caldera-no-preamble</item>
+      <item>libutil-David-Nugent</item>
+      <item>ThirdEye</item>
+      <item>MIT-open-group</item>
+      <item>EUPL-1.0</item>
+      <item>NICTA-1.0</item>
+      <item>CDDL-1.0</item>
+      <item>MIT-feh</item>
+      <item>CC-BY-3.0-IGO</item>
+      <item>OLDAP-2.3</item>
+      <item>RPL-1.5</item>
+      <item>OPUBL-1.0</item>
+      <item>AGPL-1.0-only</item>
+      <item>TOSL</item>
+      <item>FTL</item>
+      <item>WTFPL</item>
+      <item>Intel</item>
+      <item>Barr</item>
+      <item>Zlib</item>
+      <item>BSD-Systemics-W3Works</item>
+      <item>psfrag</item>
+      <item>AAL</item>
+      <item>CECILL-B</item>
+      <item>NTIA-PD</item>
+      <item>CC-BY-NC-1.0</item>
+      <item>libpng-1.6.35</item>
+      <item>BSD-2-Clause</item>
+      <item>NASA-1.3</item>
+      <item>Mackerras-3-Clause-acknowledgment</item>
+      <item>BSD-4.3RENO</item>
+      <item>Pixar</item>
+      <item>CC-BY-3.0-NL</item>
+      <item>AMD-newlib</item>
+      <item>MIT-Click</item>
+      <item>AML-glslang</item>
+      <item>MIT-advertising</item>
+      <item>CC-BY-2.0</item>
+      <item>CC-BY-NC-ND-1.0</item>
+      <item>OLDAP-2.5</item>
+      <item>Zend-2.0</item>
+      <item>HPND-Fenneberg-Livingston</item>
+      <item>DRL-1.0</item>
+      <item>NIST-Software</item>
+      <item>CrystalStacker</item>
+      <item>BSD-Source-Code</item>
+      <item>Spencer-94</item>
+      <item>SimPL-2.0</item>
+      <item>OSL-1.1</item>
+      <item>CDLA-Permissive-1.0</item>
+      <item>metamail</item>
+      <item>GFDL-1.1-only</item>
+      <item>CC-BY-ND-3.0</item>
+      <item>CC-BY-3.0-DE</item>
+      <item>HPND-export-US</item>
+      <item>NBPL-1.0</item>
+      <item>GPL-2.0-only</item>
+      <item>NAIST-2003</item>
+      <item>SSH-OpenSSH</item>
+      <item>Nokia</item>
+      <item>gtkbook</item>
+      <item>Boehm-GC-without-fee</item>
+      <item>GPL-3.0-or-later</item>
+      <item>CECILL-1.0</item>
+      <item>AGPL-3.0-or-later</item>
+      <item>Xnet</item>
+      <item>NOSL</item>
+      <item>ImageMagick</item>
+      <item>MITNFA</item>
+      <item>APAFML</item>
+      <item>Jam</item>
+      <item>FBM</item>
+      <item>BSD-2-Clause-Darwin</item>
+      <item>HTMLTIDY</item>
+      <item>W3C</item>
+      <item>AFL-1.2</item>
+      <item>YPL-1.1</item>
+      <item>iMatix</item>
+      <item>Caldera</item>
+      <item>SCEA</item>
+      <item>O-UDA-1.0</item>
+      <item>LPPL-1.2</item>
+      <item>HPND-export-US-acknowledgement</item>
+      <item>GFDL-1.2-or-later</item>
+      <item>McPhee-slideshow</item>
+      <item>Ruby</item>
+      <item>Kastrup</item>
+      <item>Adobe-Glyph</item>
+      <item>CC-BY-SA-3.0-AT</item>
+      <item>DocBook-Stylesheet</item>
+      <item>Aladdin</item>
+      <item>MIT-testregex</item>
+      <item>BSD-3-Clause-Modification</item>
+      <item>BSD-3-Clause-No-Military-License</item>
+      <item>Adobe-Display-PostScript</item>
+      <item>psutils</item>
+      <item>LGPL-3.0-or-later</item>
+      <item>LZMA-SDK-9.22</item>
+      <item>Bahyph</item>
+      <item>BSD-Attribution-HPND-disclaimer</item>
+      <item>Motosoto</item>
+      <item>MIT-Khronos-old</item>
+      <item>Ruby-pty</item>
+      <item>CC-BY-NC-SA-1.0</item>
+      <item>Artistic-dist</item>
+      <item>IJG</item>
+      <item>Linux-OpenIB</item>
+      <item>ulem</item>
+      <item>MIT</item>
+      <item>GFDL-1.3-no-invariants-only</item>
+      <item>Symlinks</item>
+      <item>NPL-1.1</item>
+      <item>Giftware</item>
+      <item>CDLA-Permissive-2.0</item>
+      <item>LAL-1.3</item>
+      <item>Widget-Workshop</item>
+      <item>Latex2e-translated-notice</item>
+      <item>Gutmann</item>
+      <item>COIL-1.0</item>
+      <item>Watcom-1.0</item>
+      <item>HPND-Kevlin-Henney</item>
+      <item>fwlw</item>
+      <item>DL-DE-BY-2.0</item>
+      <item>Interbase-1.0</item>
+      <item>OGTSL</item>
+      <item>BSD-Inferno-Nettverk</item>
+      <item>BSD-2-Clause-Views</item>
+      <item>ssh-keyscan</item>
+      <item>GFDL-1.1-invariants-or-later</item>
+      <item>Mackerras-3-Clause</item>
+      <item>TPL-1.0</item>
+      <item>ErlPL-1.1</item>
+      <item>LPPL-1.1</item>
+      <item>BSD-2-Clause-first-lines</item>
+      <item>OGL-Canada-2.0</item>
+      <item>D-FSL-1.0</item>
+      <item>SMAIL-GPL</item>
+      <item>CC-PDM-1.0</item>
+      <item>CDLA-Sharing-1.0</item>
+      <item>GD</item>
+      <item>GFDL-1.3-invariants-or-later</item>
+      <item>Zeeff</item>
+      <item>Imlib2</item>
+      <item>CC-BY-NC-2.0</item>
+      <item>Adobe-Utopia</item>
+      <item>ZPL-2.0</item>
+      <item>Beerware</item>
+      <item>SUL-1.0</item>
+      <item>EPL-1.0</item>
+      <item>CC-BY-1.0</item>
+      <item>CC-BY-NC-4.0</item>
+      <item>FSFAP</item>
+      <item>VSL-1.0</item>
+      <item>lsof</item>
+      <item>Wsuipa</item>
+      <item>Unlicense-libwhirlpool</item>
+      <item>NTP-0</item>
+      <item>BSD-3-Clause</item>
+      <item>APSL-2.0</item>
+      <item>CAL-1.0-Combined-Work-Exception</item>
+      <item>OGL-UK-3.0</item>
+      <item>CC-BY-SA-3.0-IGO</item>
+      <item>SGP4</item>
+      <item>SSH-short</item>
+      <item>OLDAP-2.7</item>
+      <item>VOSTROM</item>
+      <item>CC-BY-3.0</item>
+      <item>CC-BY-NC-ND-3.0-IGO</item>
+      <item>dtoa</item>
+      <item>SMPPL</item>
+      <item>MIT-enna</item>
+      <item>Catharon</item>
+      <item>SHL-0.51</item>
+      <item>copyleft-next-0.3.1</item>
+      <item>BSD-2-Clause-Patent</item>
+      <item>FSL-1.1-ALv2</item>
+      <item>Python-2.0.1</item>
+      <item>CC-BY-ND-2.0</item>
+      <item>MTLL</item>
+      <item>OFL-1.0</item>
+      <item>Qhull</item>
+      <item>IPL-1.0</item>
+      <item>Linux-man-pages-copyleft-2-para</item>
+      <item>softSurfer</item>
+      <item>snprintf</item>
+      <item>GFDL-1.2-only</item>
+      <item>EUPL-1.2</item>
+      <item>ZPL-1.1</item>
+      <item>TTWL</item>
+      <item>MPL-2.0</item>
+      <item>HPND-doc</item>
+      <item>BSD-Systemics</item>
+      <item>DocBook-DTD</item>
+      <item>EFL-2.0</item>
+      <item>HaskellReport</item>
+      <item>BSD-3-Clause-No-Nuclear-Warranty</item>
+      <item>Newsletr</item>
+      <item>OFL-1.1</item>
+      <item>GFDL-1.1-no-invariants-only</item>
+      <item>CC-BY-ND-3.0-DE</item>
+      <item>UCL-1.0</item>
+      <item>OGC-1.0</item>
+      <item>eGenix</item>
+      <item>OPL-1.0</item>
+      <item>Xerox</item>
+      <item>NIST-PD-fallback</item>
+      <item>SGI-B-2.0</item>
+      <item>TermReadKey</item>
+      <item>Sendmail-Open-Source-1.1</item>
+      <item>NTP</item>
+      <item>HPND-Markus-Kuhn</item>
+      <item>BSD-2-Clause-pkgconf-disclaimer</item>
+      <item>TCL</item>
+      <item>NetCDF</item>
+      <item>wwl</item>
+      <item>Python-2.0</item>
+      <item>FSFAP-no-warranty-disclaimer</item>
+      <item>python-ldap</item>
+      <item>CC-BY-SA-2.5</item>
+      <item>GPL-3.0-only</item>
+      <item>GFDL-1.3-or-later</item>
+      <item>LGPL-3.0-only</item>
+      <item>Glulxe</item>
+      <item>CC-BY-NC-SA-3.0-IGO</item>
+      <item>BSD-3-Clause-Open-MPI</item>
+      <item>FSL-1.1-MIT</item>
+      <item>Linux-man-pages-copyleft</item>
+      <item>ECL-1.0</item>
+      <item>jove</item>
+      <item>BSD-3-Clause-HP</item>
+      <item>AML</item>
+      <item>FreeBSD-DOC</item>
+      <item>XFree86-1.1</item>
+      <item>CC-BY-3.0-AU</item>
+      <item>Arphic-1999</item>
+      <item>OSL-1.0</item>
+      <item>OFL-1.0-no-RFN</item>
+      <item>OLDAP-2.0.1</item>
+      <item>JPNIC</item>
+      <item>LPL-1.02</item>
+      <item>OLDAP-2.0</item>
+      <item>Adobe-2006</item>
+      <item>CC-BY-NC-SA-2.5</item>
+      <item>C-UDA-1.0</item>
+      <item>Lucida-Bitmap-Fonts</item>
+      <item>Ferguson-Twofish</item>
+      <item>MMIXware</item>
+      <item>SSPL-1.0</item>
+      <item>MPL-1.0</item>
+      <item>TPDL</item>
+      <item>OLDAP-2.2</item>
+      <item>gSOAP-1.3b</item>
+      <item>TU-Berlin-2.0</item>
+      <item>pkgconf</item>
+      <item>CC-BY-NC-SA-2.0-UK</item>
+      <item>DocBook-XML</item>
+      <item>CNRI-Python-GPL-Compatible</item>
+      <item>MS-LPL</item>
+      <item>Brian-Gladman-3-Clause</item>
+      <item>radvd</item>
+      <item>MPL-1.1</item>
+      <item>blessing</item>
+      <item>HPND-sell-regexpr</item>
+      <item>AFL-2.1</item>
+      <item>CC-BY-SA-3.0-DE</item>
+      <item>PDDL-1.0</item>
+      <item>BSD-4.3TAHOE</item>
+      <item>CC-BY-NC-3.0</item>
+      <item>NLOD-2.0</item>
+      <item>GFDL-1.1-no-invariants-or-later</item>
+      <item>ClArtistic</item>
+      <item>pnmstitch</item>
+      <item>MirOS</item>
+      <item>QPL-1.0</item>
+      <item>IJG-short</item>
+      <item>Community-Spec-1.0</item>
+      <item>NCBI-PD</item>
+      <item>PostgreSQL</item>
+      <item>MS-PL</item>
+    </list>
+
+    <list name="deprecated-licenses">
+      <item>LGPL-3.0</item>
+      <item>GPL-1.0</item>
+      <item>AGPL-1.0</item>
+      <item>GPL-2.0-with-font-exception</item>
+      <item>GPL-2.0-with-classpath-exception</item>
+      <item>Nunit</item>
+      <item>GFDL-1.2</item>
+      <item>GPL-2.0-with-bison-exception</item>
+      <item>bzip2-1.0.5</item>
+      <item>AGPL-3.0</item>
+      <item>wxWindows</item>
+      <item>StandardML-NJ</item>
+      <item>GPL-3.0</item>
+      <item>GPL-2.0-with-GCC-exception</item>
+      <item>BSD-2-Clause-NetBSD</item>
+      <item>GFDL-1.1</item>
+      <item>GPL-3.0-with-GCC-exception</item>
+      <item>GPL-2.0-with-autoconf-exception</item>
+      <item>BSD-2-Clause-FreeBSD</item>
+      <item>Net-SNMP</item>
+      <item>eCos-2.0</item>
+      <item>GPL-3.0-with-autoconf-exception</item>
+      <item>GFDL-1.3</item>
+      <item>LGPL-2.0</item>
+      <item>LGPL-2.1</item>
+      <item>GPL-2.0</item>
+    </list>
+
+    <list name="exceptions">
+      <item>SHL-2.1</item>
+      <item>Autoconf-exception-2.0</item>
+      <item>openvpn-openssl-exception</item>
+      <item>GStreamer-exception-2005</item>
+      <item>SHL-2.0</item>
+      <item>romic-exception</item>
+      <item>RRDtool-FLOSS-exception-2.0</item>
+      <item>u-boot-exception-2.0</item>
+      <item>i2p-gpl-java-exception</item>
+      <item>CLISP-exception-2.0</item>
+      <item>OpenJDK-assembly-exception-1.0</item>
+      <item>PCRE2-exception</item>
+      <item>erlang-otp-linking-exception</item>
+      <item>GCC-exception-2.0</item>
+      <item>SWI-exception</item>
+      <item>Asterisk-exception</item>
+      <item>OCCT-exception-1.0</item>
+      <item>GPL-3.0-389-ds-base-exception</item>
+      <item>libpri-OpenH323-exception</item>
+      <item>GCC-exception-2.0-note</item>
+      <item>Fawkes-Runtime-exception</item>
+      <item>Asterisk-linking-protocols-exception</item>
+      <item>freertos-exception-2.0</item>
+      <item>LLGPL</item>
+      <item>GCC-exception-3.1</item>
+      <item>Gmsh-exception</item>
+      <item>SANE-exception</item>
+      <item>Bison-exception-2.2</item>
+      <item>mif-exception</item>
+      <item>LZMA-exception</item>
+      <item>WxWindows-exception-3.1</item>
+      <item>LGPL-3.0-linking-exception</item>
+      <item>GPL-CC-1.0</item>
+      <item>Qt-GPL-exception-1.0</item>
+      <item>Font-exception-2.0</item>
+      <item>389-exception</item>
+      <item>Linux-syscall-note</item>
+      <item>mxml-exception</item>
+      <item>Qt-LGPL-exception-1.1</item>
+      <item>Autoconf-exception-generic-3.0</item>
+      <item>GStreamer-exception-2008</item>
+      <item>OCaml-LGPL-linking-exception</item>
+      <item>PS-or-PDF-font-exception-20170817</item>
+      <item>KiCad-libraries-exception</item>
+      <item>Independent-modules-exception</item>
+      <item>cryptsetup-OpenSSL-exception</item>
+      <item>Digia-Qt-LGPL-exception-1.1</item>
+      <item>stunnel-exception</item>
+      <item>QPL-1.0-INRIA-2004-exception</item>
+      <item>Autoconf-exception-3.0</item>
+      <item>Swift-exception</item>
+      <item>DigiRule-FOSS-exception</item>
+      <item>polyparse-exception</item>
+      <item>vsftpd-openssl-exception</item>
+      <item>Bison-exception-1.24</item>
+      <item>x11vnc-openssl-exception</item>
+      <item>GNU-compiler-exception</item>
+      <item>harbour-exception</item>
+      <item>Texinfo-exception</item>
+      <item>eCos-exception-2.0</item>
+      <item>GPL-3.0-linking-source-exception</item>
+      <item>Autoconf-exception-macro</item>
+      <item>gnu-javamail-exception</item>
+      <item>Bootloader-exception</item>
+      <item>FLTK-exception</item>
+      <item>Classpath-exception-2.0</item>
+      <item>GPL-3.0-linking-exception</item>
+      <item>GNAT-exception</item>
+      <item>Universal-FOSS-exception-1.0</item>
+      <item>Libtool-exception</item>
+      <item>LLVM-exception</item>
+      <item>Autoconf-exception-generic</item>
+      <item>CGAL-linking-exception</item>
+      <item>UBDL-exception</item>
+      <item>GNOME-examples-exception</item>
+      <item>fmt-exception</item>
+      <item>GPL-3.0-interface-exception</item>
+      <item>Qwt-exception-1.0</item>
     </list>
 
     <list name="deprecated-exceptions">
diff --git a/xml/sql-mysql.xml b/xml/sql-mysql.xml
--- a/xml/sql-mysql.xml
+++ b/xml/sql-mysql.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
   MySQL syntax definition based on sql.xml by Yury Lebedev
   original by Shane Wright (me@shanewright.co.uk)
diff --git a/xml/sql-postgresql.xml b/xml/sql-postgresql.xml
--- a/xml/sql-postgresql.xml
+++ b/xml/sql-postgresql.xml
@@ -1,9 +1,34 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language
+[
+
+  <!-- Regular expression matching case-insensitively a single hexadecial digit. -->
+  <!ENTITY hexDigit "[0-9a-fA-F]">
+
+  <!-- Regular expression matching all potential names of PostgresSQL built-in
+  functions and PostGIS functions. -->
+  <!ENTITY functionName "[a-zA-Z][a-zA-Z0-9_]*">
+
+]>
+
 <!-- PostgreSQL SQL, syntax definition based on sql.xml by Yury Lebedev
      v5 fix comments by Gene Thomas <gene@genethomas.com>
   -->
-<language name="SQL (PostgreSQL)" version="14" kateversion="5.44" section="Database" extensions="*.sql;*.SQL;*.ddl;*.DDL" mimetype="text/x-sql" casesensitive="0" author="Shane Wright (me@shanewright.co.uk)" license="">
+
+<!-- Support for escape characters in strings and identifiers, PostGIS highlighting
+     and better functioni highlighting by Lukas Sommer <sommerluk@gamil.com>. These
+     modifications are under MIT License.
+  -->
+
+<language name="SQL (PostgreSQL)"
+          version="17"
+          kateversion="5.44"
+          section="Database"
+          extensions="*.sql;*.SQL;*.ddl;*.DDL"
+          mimetype="text/x-sql"
+          casesensitive="0"
+          author="Shane Wright (me@shanewright.co.uk)"
+          license="">
   <highlighting>
     <list name="controlFlow">
       <item>BEGIN</item>
@@ -473,7 +498,6 @@
       <item>PROCEDURE</item>
       <item>PROGRAM</item>
       <item>PUBLIC</item>
-      <item>RANGE</item>
       <item>PUBLICATION</item>
       <item>QUOTE</item>
       <item>RANGE</item>
@@ -750,6 +774,8 @@
       <item>BIT_LENGTH</item>
       <item>CHAR_LENGTH</item>
       <item>CHARACTER_LENGTH</item>
+      <item>CONCAT</item>
+      <item>CONCAT_WS</item>
       <item>CONVERT</item>
       <item>GET_BYTE</item>
       <item>GET_BIT</item>
@@ -927,6 +953,257 @@
       <item>PG_READ_FILE</item>
       <item>PG_STAT_FILE</item>
     </list>
+    <list name="postgisFunctions">
+      <!-- From https://postgis.net/docs/PostGIS_Special_Functions_Index.html#PostGIS_TypeFunctionMatrix at 2022-09-16 19:15 GMT -->
+      <item>Box2D</item>
+      <item>Box3D</item>
+      <item>GeometryType</item>
+      <item>PostGIS_AddBBox</item>
+      <item>PostGIS_DropBBox</item>
+      <item>PostGIS_Extensions_Upgrade</item>
+      <item>PostGIS_Full_Version</item>
+      <item>PostGIS_GEOS_Version</item>
+      <item>PostGIS_HasBBox</item>
+      <item>PostGIS_LibXML_Version</item>
+      <item>PostGIS_Lib_Build_Date</item>
+      <item>PostGIS_Lib_Version</item>
+      <item>PostGIS_Liblwgeom_Version</item>
+      <item>PostGIS_PROJ_Version</item>
+      <item>PostGIS_Scripts_Build_Date</item>
+      <item>PostGIS_Scripts_Installed</item>
+      <item>PostGIS_Scripts_Released</item>
+      <item>PostGIS_Version</item>
+      <item>PostGIS_Wagyu_Version</item>
+      <item>ST_3DArea</item>
+      <item>ST_3DClosestPoint</item>
+      <item>ST_3DConvexHull</item>
+      <item>ST_3DDifference</item>
+      <item>ST_3DDistance</item>
+      <item>ST_3DExtent</item>
+      <item>ST_3DIntersection</item>
+      <item>ST_3DLength</item>
+      <item>ST_3DLineInterpolatePoint</item>
+      <item>ST_3DLongestLine</item>
+      <item>ST_3DMakeBox</item>
+      <item>ST_3DMaxDistance</item>
+      <item>ST_3DPerimeter</item>
+      <item>ST_3DShortestLine</item>
+      <item>ST_3DUnion</item>
+      <item>ST_AddMeasure</item>
+      <item>ST_AddPoint</item>
+      <item>ST_Affine</item>
+      <item>ST_AlphaShape</item>
+      <item>ST_Angle</item>
+      <item>ST_ApproximateMedialAxis</item>
+      <item>ST_Area</item>
+      <item>ST_Azimuth</item>
+      <item>ST_Boundary</item>
+      <item>ST_BoundingDiagonal</item>
+      <item>ST_Buffer</item>
+      <item>ST_BuildArea</item>
+      <item>ST_CPAWithin</item>
+      <item>ST_Centroid</item>
+      <item>ST_ChaikinSmoothing</item>
+      <item>ST_ClipByBox2D</item>
+      <item>ST_ClosestPoint</item>
+      <item>ST_ClosestPointOfApproach</item>
+      <item>ST_ClusterDBSCAN</item>
+      <item>ST_ClusterIntersecting</item>
+      <item>ST_ClusterKMeans</item>
+      <item>ST_ClusterWithin</item>
+      <item>ST_Collect</item>
+      <item>ST_CollectionExtract</item>
+      <item>ST_CollectionHomogenize</item>
+      <item>ST_ConcaveHull</item>
+      <item>ST_ConstrainedDelaunayTriangles</item>
+      <item>ST_ConvexHull</item>
+      <item>ST_CoordDim</item>
+      <item>ST_CurveToLine</item>
+      <item>ST_DelaunayTriangles</item>
+      <item>ST_Difference</item>
+      <item>ST_Dimension</item>
+      <item>ST_Distance</item>
+      <item>ST_DistanceCPA</item>
+      <item>ST_DistanceSphere</item>
+      <item>ST_DistanceSpheroid</item>
+      <item>ST_Dump</item>
+      <item>ST_DumpPoints</item>
+      <item>ST_DumpRings</item>
+      <item>ST_DumpSegments</item>
+      <item>ST_EndPoint</item>
+      <item>ST_Envelope</item>
+      <item>ST_EstimatedExtent</item>
+      <item>ST_Expand</item>
+      <item>ST_Extent</item>
+      <item>ST_ExteriorRing</item>
+      <item>ST_Extrude</item>
+      <item>ST_FilterByM</item>
+      <item>ST_FlipCoordinates</item>
+      <item>ST_Force2D</item>
+      <item>ST_ForceCurve</item>
+      <item>ST_ForceLHR</item>
+      <item>ST_ForcePolygonCCW</item>
+      <item>ST_ForcePolygonCW</item>
+      <item>ST_ForceRHR</item>
+      <item>ST_ForceSFS</item>
+      <item>ST_Force3D</item>
+      <item>ST_Force3DM</item>
+      <item>ST_Force3DZ</item>
+      <item>ST_Force4D</item>
+      <item>ST_ForceCollection</item>
+      <item>ST_FrechetDistance</item>
+      <item>ST_GeneratePoints</item>
+      <item>ST_GeometricMedian</item>
+      <item>ST_GeometryN</item>
+      <item>ST_GeometryType</item>
+      <item>ST_HasArc</item>
+      <item>ST_HausdorffDistance</item>
+      <item>ST_Hexagon</item>
+      <item>ST_HexagonGrid</item>
+      <item>ST_InteriorRingN</item>
+      <item>ST_InterpolatePoint</item>
+      <item>ST_Intersection</item>
+      <item>ST_IsClosed</item>
+      <item>ST_IsCollection</item>
+      <item>ST_IsEmpty</item>
+      <item>ST_IsPlanar</item>
+      <item>ST_IsPolygonCCW</item>
+      <item>ST_IsPolygonCW</item>
+      <item>ST_IsRing</item>
+      <item>ST_IsSimple</item>
+      <item>ST_IsSolid</item>
+      <item>ST_IsValid</item>
+      <item>ST_IsValidDetail</item>
+      <item>ST_IsValidReason</item>
+      <item>ST_IsValidTrajectory</item>
+      <item>ST_Length</item>
+      <item>ST_Length2D</item>
+      <item>ST_LengthSpheroid</item>
+      <item>ST_Letters</item>
+      <item>ST_LineFromMultiPoint</item>
+      <item>ST_LineInterpolatePoint</item>
+      <item>ST_LineInterpolatePoints</item>
+      <item>ST_LineLocatePoint</item>
+      <item>ST_LineMerge</item>
+      <item>ST_LineSubstring</item>
+      <item>ST_LineToCurve</item>
+      <item>ST_LocateAlong</item>
+      <item>ST_LocateBetween</item>
+      <item>ST_LocateBetweenElevations</item>
+      <item>ST_LongestLine</item>
+      <item>ST_M</item>
+      <item>ST_MakeBox2D</item>
+      <item>ST_MakeEnvelope</item>
+      <item>ST_MakeLine</item>
+      <item>ST_MakePoint</item>
+      <item>ST_MakePointM</item>
+      <item>ST_MakePolygon</item>
+      <item>ST_MakeSolid</item>
+      <item>ST_MakeValid</item>
+      <item>ST_MaxDistance</item>
+      <item>ST_MaximumInscribedCircle</item>
+      <item>ST_MemSize</item>
+      <item>ST_MemUnion</item>
+      <item>ST_MinimumBoundingCircle</item>
+      <item>ST_MinimumBoundingRadius</item>
+      <item>ST_MinimumClearance</item>
+      <item>ST_MinimumClearanceLine</item>
+      <item>ST_MinkowskiSum</item>
+      <item>ST_Multi</item>
+      <item>ST_NDims</item>
+      <item>ST_NPoints</item>
+      <item>ST_NRings</item>
+      <item>ST_Node</item>
+      <item>ST_Normalize</item>
+      <item>ST_NumGeometries</item>
+      <item>ST_NumInteriorRing</item>
+      <item>ST_NumInteriorRings</item>
+      <item>ST_NumPatches</item>
+      <item>ST_NumPoints</item>
+      <item>ST_OffsetCurve</item>
+      <item>ST_OptimalAlphaShape</item>
+      <item>ST_Orientation</item>
+      <item>ST_OrientedEnvelope</item>
+      <item>ST_PatchN</item>
+      <item>ST_Perimeter</item>
+      <item>ST_Perimeter2D</item>
+      <item>ST_Point</item>
+      <item>ST_PointM</item>
+      <item>ST_PointN</item>
+      <item>ST_PointOnSurface</item>
+      <item>ST_PointZ</item>
+      <item>ST_PointZM</item>
+      <item>ST_Points</item>
+      <item>ST_Polygon</item>
+      <item>ST_Polygonize</item>
+      <item>ST_Project</item>
+      <item>ST_QuantizeCoordinates</item>
+      <item>ST_ReducePrecision</item>
+      <item>ST_RemovePoint</item>
+      <item>ST_RemoveRepeatedPoints</item>
+      <item>ST_Reverse</item>
+      <item>ST_Rotate</item>
+      <item>ST_RotateX</item>
+      <item>ST_RotateY</item>
+      <item>ST_RotateZ</item>
+      <item>ST_SRID</item>
+      <item>ST_Scale</item>
+      <item>ST_Scroll</item>
+      <item>ST_Segmentize</item>
+      <item>ST_SetEffectiveArea</item>
+      <item>ST_SetPoint</item>
+      <item>ST_SetSRID</item>
+      <item>ST_SharedPaths</item>
+      <item>ST_ShiftLongitude</item>
+      <item>ST_ShortestLine</item>
+      <item>ST_Simplify</item>
+      <item>ST_SimplifyPolygonHull</item>
+      <item>ST_SimplifyPreserveTopology</item>
+      <item>ST_SimplifyVW</item>
+      <item>ST_Snap</item>
+      <item>ST_SnapToGrid</item>
+      <item>ST_Split</item>
+      <item>ST_Square</item>
+      <item>ST_SquareGrid</item>
+      <item>ST_StartPoint</item>
+      <item>ST_StraightSkeleton</item>
+      <item>ST_Subdivide</item>
+      <item>ST_Summary</item>
+      <item>ST_SwapOrdinates</item>
+      <item>ST_SymDifference</item>
+      <item>ST_Tesselate</item>
+      <item>ST_TileEnvelope</item>
+      <item>ST_TransScale</item>
+      <item>ST_Transform</item>
+      <item>ST_Translate</item>
+      <item>ST_TriangulatePolygon</item>
+      <item>ST_UnaryUnion</item>
+      <item>ST_Union</item>
+      <item>ST_Volume</item>
+      <item>ST_VoronoiLines</item>
+      <item>ST_VoronoiPolygons</item>
+      <item>ST_WrapX</item>
+      <item>ST_X</item>
+      <item>ST_XMax</item>
+      <item>ST_XMin</item>
+      <item>ST_Y</item>
+      <item>ST_YMax</item>
+      <item>ST_YMin</item>
+      <item>ST_Z</item>
+      <item>ST_ZMax</item>
+      <item>ST_ZMin</item>
+      <item>ST_Zmflag</item>
+      <!--<item>postgis.backend</item>--><!-- Commenting out because inner dot is incompatible with the keyword delimiters. -->
+      <!--<item>postgis.enable_outdb_rasters</item>--><!-- Commenting out because inner dot is incompatible with the keyword delimiters. -->
+      <!--<item>postgis.gdal_datapath</item>--><!-- Commenting out because inner dot is incompatible with the keyword delimiters. -->
+      <!--<item>postgis.gdal_enabled_drivers</item>--><!-- Commenting out because inner dot is incompatible with the keyword delimiters. -->
+      <!--<item>postgis.gdal_config_options</item>--><!-- Commenting out because inner dot is incompatible with the keyword delimiters. -->
+      <item>postgis_sfcgal_full_version</item>
+      <item>postgis_sfcgal_version</item>
+
+      <!-- Further functions from https://postgis.net/docs/PostGIS_Special_Functions_Index.html -->
+      <item>ST_DWithin</item>
+    </list>
     <list name="types">
       <!-- https://www.postgresql.org/docs/current/static/datatype.html#DATATYPE-TABLE -->
       <item>BIGINT</item>
@@ -988,12 +1265,11 @@
       <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
 
         <!-- comments before operators -->
-        <DetectChar attribute="Comment" context="SingleLineComment" char="#"/>
         <Detect2Chars attribute="Comment" context="SingleLineComment" char="-" char1="-"/>
         <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
         <WordDetect attribute="Comment" context="SingleLineComment" String="rem" insensitive="true" column="0"/>
 
-        <!-- HACK: don't jump into MultiLineString for CREATE FUNCTION $funcName$...$funcName$ -->
+        <!-- HACK: don't jump into DollarQuotedString for CREATE FUNCTION $funcName$...$funcName$ -->
         <RegExpr String="create\s+(or\s+replace\s+)?function" insensitive="true" context="CreateFunction" attribute="Keyword"/>
 
         <RegExpr String="do\s+\$([^\$\n\r]*)\$" insensitive="true" context="FunctionBody" attribute="Keyword"/>
@@ -1001,13 +1277,34 @@
         <keyword attribute="Keyword" context="#stay" String="keywords"/>
         <keyword attribute="Operator Keyword" context="#stay" String="operators"/>
         <keyword attribute="ControlFlow" context="#stay" String="controlFlow"/>
-        <keyword attribute="Function" context="#stay" String="functions"/>
         <keyword attribute="Data Type" context="#stay" String="types"/>
         <RegExpr attribute="Data Type" context="#stay" String="%(bulk_(exceptions|rowcount)|(not)?found|isopen|rowcount|(row)?type)\b" insensitive="true"/>
+        <!-- Highlight the names of functions when they are followed by a “(” character.
+        NOTE Some names are both, function names and data type names. Currently:
+        BOX|CIRCLE|LSEG|PATH|POINT|POLYGON|TEXT|TIMESTAMPTZ Those are always
+        catched by the above rule as data types. Highlighting them differently when
+        used as function would be tricky… -->
+        <RegExpr context="HighlightFunction" String="(?&lt;=\b)&functionName;(?=[\t ]*\()" lookAhead="true" insensitive="true"/>
         <Float attribute="Float" context="#stay"/>
         <Int attribute="Decimal" context="#stay"/>
-        <DetectChar attribute="String" context="String" char="'"/>
+        <DetectChar attribute="Verbatim string" context="SingleQuotedString" char="'"/>
+        <Detect2Chars attribute="String delimiter" context="EscapeString" char='e' char1="'"/>
+        <Detect2Chars attribute="String delimiter" context="EscapeString" char='E' char1="'"/>
+        <!-- Supports Unicode Escape String with user-defined escape character. Example:
+             u&'y+000065' UESCAPE  'y'
+             The user-defined escape character is available to dynamic rules as capture-group 1.
+             NOTE As KSyntaxHighlighing is line-based, this highlighting rule works only if all the
+             above code is within the same line (though Postgre allows it to be on different lines). -->
+        <RegExpr attribute="String delimiter" context="UnicodeEscapeStringModified" String="U&amp;'(?=(?:[^']|'')*'[ \t]*UESCAPE[ \t]*'([^0-9a-fA-F+'&quot; \t])')" insensitive="true"/>
+        <StringDetect attribute="String delimiter" context="UnicodeEscapeString" String="U&amp;'" insensitive="true"/>
         <DetectChar attribute="Identifier" context="Identifier" char="&quot;"/>
+        <!-- Supports Unicode Escape Identifiers with user-defined escape character. Example:
+             u&"y+000065" UESCAPE  'y'
+             The user-defined escape character is available to dynamic rules as capture-group 1.
+             NOTE As KSyntaxHighlighing is line-based, this highlighting rule works only if all the
+             above code is within the same line (though Postgre allows it to be on different lines). -->
+        <RegExpr attribute="Identifier" context="UnicodeEscapeIdentifierModified" String="U&amp;&quot;(?=(?:[^&quot;]|&quot;&quot;)*&quot;[ \t]*UESCAPE[ \t]*'([^0-9a-fA-F+'&quot; \t])')" insensitive="true"/>
+        <StringDetect attribute="Identifier" context="UnicodeEscapeIdentifier" String="U&amp;&quot;" insensitive="true"/>
         <Detect2Chars attribute="Operator" context="#stay" char=":" char1="="/>
         <AnyChar attribute="Symbol" context="#stay" String=":&amp;"/>
         <Detect2Chars attribute="Operator" context="#stay" char="." char1="."/>
@@ -1016,9 +1313,24 @@
         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="-"/>
         <Detect2Chars attribute="Operator" context="#stay" char="?" char1="|"/>
         <RegExpr attribute="Preprocessor" context="Preprocessor" String="^@@?[^@ \t\r\n]" column="0"/>
-        <RegExpr attribute="Operator" context="MultiLineString" String="\$([^\$\n\r]*)\$"/>
+        <RegExpr attribute="Operator" context="DollarQuotedString" String="\$([^\$\n\r]*)\$"/>
         <AnyChar attribute="Operator" context="#stay" String="+-*/=%^!&lt;&gt;&amp;|@~#"/>
       </context>
+      <context attribute="Normal Text" name="HighlightFunction" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop">
+        <!-- Helper context that expects to see a function on its very beginning.
+        If it’s a PostgreSQL or PostGIS function, it is highlighted accordingly.
+        If not, by a catch-all, it gets the "Normal Text" attribute. After that,
+        it pops back to the previous context. -->
+        <keyword attribute="PostgreSQL function" context="#pop" String="functions"/>
+        <keyword attribute="PostGIS function" context="#pop" String="postgisFunctions"/>
+        <!-- Highlight user-defined functions like "Normal Text". It is not
+        possible to have an own style for this, because the syntax is
+        difficult and we could catch here strings that are not actual
+        user-defined functions. "Normal Text" is a safe alternative. Using
+        &functionName; which is the same regular expression that is used
+        by the rule that calls this context: -->
+        <RegExpr attribute="Normal Text" context="#pop" String="&functionName;" insensitive="true"/>
+      </context>
       <context name="CreateFunction" attribute="Normal Text" lineEndContext="#stay">
         <RegExpr attribute="Function" context="FunctionBody" String="\$([^\$\n\r]*)\$"/>
         <IncludeRules context="Normal"/>
@@ -1027,15 +1339,69 @@
         <StringDetect attribute="Function" context="#pop#pop" String="$%1$" dynamic="true"/>
         <IncludeRules context="Normal"/>
       </context>
-      <context name="MultiLineString" attribute="String" lineEndContext="#stay" dynamic="true">
+      <context name="SingleQuotedString" attribute="Verbatim string" lineEndContext="#stay">
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="'" char1="'"/>
+        <DetectChar attribute="String delimiter" context="#pop" char="'"/>
+      </context>
+      <context name="DollarQuotedString" attribute="Verbatim string" lineEndContext="#stay" dynamic="true">
         <StringDetect attribute="Operator" context="#pop" String="$%1$" dynamic="true"/>
       </context>
-      <context name="String" attribute="String" lineEndContext="#stay">
-        <LineContinue attribute="String" context="#pop"/>
-        <HlCStringChar attribute="String Char" context="#stay"/>
-        <DetectChar attribute="Symbol" context="#stay" char="&amp;"/>
-        <DetectChar attribute="String" context="#pop" char="'"/>
+      <context name="EscapeString" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="'" char1="'"/>
+        <!-- Default C style escapes: \n \101 \x41 … : -->
+        <HlCStringChar attribute="Escape sequence" context="#stay"/>
+        <!-- \u escapes: -->
+        <RegExpr attribute="Escape sequence" context="#stay" String="\\u&hexDigit;{4}"/>
+        <!-- Incomplete \u escape sequences are errors: -->
+        <Detect2Chars attribute="Error" context="#stay" char="\" char1="u"/>
+        <!-- \U escapes: -->
+        <RegExpr attribute="Escape sequence" context="#stay" String="\\U&hexDigit;{8}"/>
+        <!-- Incomplete \U escape sequences are errors: -->
+        <Detect2Chars attribute="Error" context="#stay" char="\" char1="U"/>
+        <!-- All other escape sequences are interpreted as escape of the concerned character: \y → y -->
+        <RegExpr attribute="Escape sequence" context="#stay" String="\\."/>
+        <!-- Even an escape sequence with the line break (means: backslash as last character of a line) is possible: -->
+        <LineContinue attribute="Escape sequence" context="#stay" char="\"/>
+        <!-- end of the string -->
+        <DetectChar attribute="String delimiter" context="#pop" char="'"/>
       </context>
+      <context attribute="Normal Text" name="IncludeUnicodeEscapeSequences" lineEndContext="#pop">
+        <!-- four-digit/six-digit escapes: -->
+        <RegExpr attribute="Escape sequence" context="#stay" String="(\\&hexDigit;{4})|(\\\+&hexDigit;{6})"/>
+        <!-- \\ is a valid escape for the backslash: -->
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="\" char1="\"/>
+        <!-- All other occurences of \ are errors: -->
+        <DetectChar attribute="Error" context="#stay" char="\"/>
+      </context>
+      <context attribute="Normal Text" name="IncludeUnicodeEscapeSequencesModified" lineEndContext="#pop">
+        <!-- Context meant to be included in other contexts, not to be used on its own.
+             Containt dynamic rules. Expects that the escape character is available
+             at capture group #1.
+             NOTE The capture group expands literally for the StringDetect and DetectChar
+             rules. For the RegExpr rule, special characters (and only special characters)
+             seem to become escaped automatically: The capture “.” is available as “\.”
+             while the capture “t” is available as “t” (and not as “\t” which would mean a
+             tabulator character). So this works fine out-of-the-box even for special
+             characters.-->
+        <!-- four-digit/six-digit escapes: -->
+        <RegExpr attribute="Escape sequence" context="#stay" String="(%1&hexDigit;{4})|(%1\+&hexDigit;{6})" dynamic="true"/>
+        <!-- The escape character can escape himself: -->
+        <StringDetect attribute="Escape sequence" context="#stay" String="%1%1" dynamic="true"/>
+        <!-- All other occurences of \ are errors: -->
+        <DetectChar attribute="Error" context="#stay" char="1" dynamic="true"/>
+      </context>
+      <context name="UnicodeEscapeString" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="'" char1="'"/>
+        <IncludeRules context="IncludeUnicodeEscapeSequences" />
+        <!-- end of the string -->
+        <DetectChar attribute="String delimiter" context="#pop" char="'"/>
+      </context>
+      <context name="UnicodeEscapeStringModified" attribute="String" lineEndContext="#stay">
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="'" char1="'"/>
+        <IncludeRules context="IncludeUnicodeEscapeSequencesModified" />
+        <!-- end of the string -->
+        <DetectChar attribute="String delimiter" context="#pop" char="'"/>
+      </context>
       <context name="SingleLineComment" attribute="Comment" lineEndContext="#pop">
         <DetectSpaces />
         <IncludeRules context="##Comments"/>
@@ -1047,27 +1413,48 @@
         <Detect2Chars attribute="Comment" context="MultiLineComment" char="/" char1="*" beginRegion="Comment"/>
         <IncludeRules context="##Comments"/>
       </context>
-      <context name="Identifier" attribute="Identifier" lineEndContext="#pop">
+      <context name="Identifier" attribute="Identifier" lineEndContext="#stay">
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="&quot;" char1="&quot;"/>
         <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
       </context>
+      <context name="UnicodeEscapeIdentifier" attribute="Identifier" lineEndContext="#stay">
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="&quot;" char1="&quot;"/>
+        <IncludeRules context="IncludeUnicodeEscapeSequences" />
+        <!-- end of the string -->
+        <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
+      </context>
+      <context name="UnicodeEscapeIdentifierModified" attribute="Identifier" lineEndContext="#stay">
+        <Detect2Chars attribute="Escape sequence" context="#stay" char="&quot;" char1="&quot;"/>
+        <IncludeRules context="IncludeUnicodeEscapeSequencesModified" />
+        <!-- end of the string -->
+        <DetectChar attribute="Identifier" context="#pop" char="&quot;"/>
+      </context>
       <context name="Preprocessor" attribute="Preprocessor" lineEndContext="#pop"/>
     </contexts>
     <itemDatas>
-      <itemData name="Normal Text"       defStyleNum="dsNormal" spellChecking="false"/>
-      <itemData name="Keyword"           defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="ControlFlow"       defStyleNum="dsControlFlow" spellChecking="false"/>
-      <itemData name="Operator"          defStyleNum="dsOperator" spellChecking="false"/>
-      <itemData name="Operator Keyword"  defStyleNum="dsKeyword" spellChecking="false"/>
-      <itemData name="Function"          defStyleNum="dsFunction" spellChecking="false"/>
-      <itemData name="Data Type"         defStyleNum="dsDataType" spellChecking="false"/>
-      <itemData name="Decimal"           defStyleNum="dsDecVal" spellChecking="false"/>
-      <itemData name="Float"             defStyleNum="dsFloat" spellChecking="false"/>
-      <itemData name="String"            defStyleNum="dsString"/>
-      <itemData name="String Char"       defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Comment"           defStyleNum="dsComment"/>
-      <itemData name="Identifier"        defStyleNum="dsOthers" spellChecking="false"/>
-      <itemData name="Symbol"            defStyleNum="dsChar" spellChecking="false"/>
-      <itemData name="Preprocessor"      defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Normal Text"         defStyleNum="dsNormal"      spellChecking="false"/>
+      <itemData name="Keyword"             defStyleNum="dsKeyword"     spellChecking="false"/>
+      <itemData name="ControlFlow"         defStyleNum="dsControlFlow" spellChecking="false"/>
+      <itemData name="Operator"            defStyleNum="dsOperator"    spellChecking="false"/>
+      <itemData name="Operator Keyword"    defStyleNum="dsKeyword"     spellChecking="false"/>
+      <itemData name="Function"            defStyleNum="dsFunction"    spellChecking="false"/>
+      <itemData name="PostgreSQL function" defStyleNum="dsFunction"    spellChecking="false"/>
+      <itemData name="PostGIS function"    defStyleNum="dsExtension"   spellChecking="false"/>
+      <itemData name="Data Type"           defStyleNum="dsDataType"    spellChecking="false"/>
+      <itemData name="Decimal"             defStyleNum="dsDecVal"      spellChecking="false"/>
+      <itemData name="Float"               defStyleNum="dsFloat"       spellChecking="false"/>
+      <itemData name="String"              defStyleNum="dsString"/>
+      <!-- The only purpose of "String delimiter" is correct spell checking. If we would use
+           "String" also for the delimiters, code like E'test' would generate spell checking
+           errors because the E is considered part of the word that will be checked. -->
+      <itemData name="String delimiter"    defStyleNum="dsString"      spellChecking="false"/>
+      <itemData name="Verbatim string"     defStyleNum="dsVerbatimString"/>
+      <itemData name="Escape sequence"     defStyleNum="dsChar"        spellChecking="false"/>
+      <itemData name="Comment"             defStyleNum="dsComment"/>
+      <itemData name="Identifier"          defStyleNum="dsOthers"      spellChecking="false"/>
+      <itemData name="Symbol"              defStyleNum="dsChar"        spellChecking="false"/>
+      <itemData name="Preprocessor"        defStyleNum="dsOthers"      spellChecking="false"/>
+      <itemData name="Error"               defStyleNum="dsError"       spellChecking="false"/>
     </itemDatas>
   </highlighting>
   <general>
diff --git a/xml/sql.xml b/xml/sql.xml
--- a/xml/sql.xml
+++ b/xml/sql.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!-- Oracle10g SQL and PL/SQL syntax - ANSI SQL 2003 superset -->
 <!-- This file is maintained by Anders Lund <anders@alweb.dk> since 2005-11-06
      v3 fix comments by Gene Thomas <gene@genethomas.com>
diff --git a/xml/stan.xml b/xml/stan.xml
--- a/xml/stan.xml
+++ b/xml/stan.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Stan"
           section="Scientific"
-          version="5"
+          version="8"
           kateversion="5.0"
           indenter="cstyle"
           extensions="*.stan;*.stanfunctions"
@@ -21,6 +21,7 @@
     </list>
     <list name="keywords">
       <item>reject</item>
+      <item>fatal_error</item>
       <item>print</item>
       <item>integrate_ode</item>
       <item>integrate_ode_bdf</item>
@@ -40,14 +41,21 @@
       <item>positive_ordered</item>
       <item>simplex</item>
       <item>unit_vector</item>
+      <item>sum_to_zero_vector</item>
+      <item>column_stochastic_matrix</item>
+      <item>row_stochastic_matrix</item>
       <item>row_vector</item>
       <item>matrix</item>
       <item>array</item>
+      <item>tuple</item>
       <item>cholesky_factor_corr</item>
       <item>cholesky_factor_cov</item>
       <item>corr_matrix</item>
       <item>cov_matrix</item>
       <item>void</item>
+      <item>complex_matrix</item>
+      <item>complex_vector</item>
+      <item>complex_row_vector</item>
     </list>
     <contexts>
       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
@@ -55,7 +63,7 @@
         <DetectChar attribute="Comment" context="Hash comment" char="#"/>
         <Detect2Chars attribute="Comment" context="C-style comment" char="/" char1="/"/>
         <Detect2Chars attribute="Comment" context="Block comment" char="/" char1="*" beginRegion="Comment"/>
-        <RegExpr attribute="Keyword" context="#stay" String="\btarget\s*\+=" />
+        <RegExpr attribute="Keyword" context="#stay" String="\b(target|jacobian)\s*\+=" />
         <DetectChar attribute="Operator" context="After less-than" char="&lt;" />
         <DetectChar attribute="Punctuation" context="After comma" char="," />
         <DetectChar attribute="Operator" context="After Right Paren" char=")" />
@@ -72,7 +80,7 @@
         <DetectChar attribute="String" context="String" char="&quot;" />
         <RegExpr attribute="Assignment" context="#stay" String="([+-]?=|\.?[*/]=)" />
         <RegExpr attribute="Operator" context="#stay" String="(:|\?|\|\||&amp;&amp;|==|!=|&lt;=?|&gt;=?|\+|-|\.?\*|\.?/|%|\\|'|^)" />
-        <RegExpr attribute="Punctuation" context="#stay" String="[[\]()]" />
+        <AnyChar attribute="Punctuation" context="#stay" String="[]()" />
       </context>
       <context attribute="String" lineEndContext="#stay" name="String">
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
diff --git a/xml/stata.xml b/xml/stata.xml
--- a/xml/stata.xml
+++ b/xml/stata.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Stata" version="12" kateversion="5.0" section="Scientific" extensions="*.do;*.ado;*.doh;*.DO;*.ADO;*.DOH"
  casesensitive="1" priority="5" author="Larry Radbill (Larry.Radbill gmail com)" license="LGPL" >
 
diff --git a/xml/swift.xml b/xml/swift.xml
--- a/xml/swift.xml
+++ b/xml/swift.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
     <!ENTITY int "(?:[0-9]++(_++[0-9]++)*+)">
     <!ENTITY hex "(?:[0-9a-fA-F]++(_++[0-9a-fA-F]++)*+)">
@@ -10,7 +10,7 @@
 
 <language
     name="Swift"
-    version="1"
+    version="2"
     kateversion="5.62"
     section="Sources"
     extensions="*.swift"
@@ -139,8 +139,7 @@
                 <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1"/>
                 <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1"/>
 
-                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
-                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+                <IncludeRules context="FindComments"/>
 
                 <AnyChar attribute="Symbol" context="#stay" String="()[]&amp;|+,-/*&lt;=&gt;;!%?:~^"/>
 
@@ -172,6 +171,11 @@
                 <DetectIdentifier attribute="Normal Text"/>
             </context>
 
+            <context attribute="Normal Text" lineEndContext="#stay" name="FindComments">
+                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
+                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+            </context>
+
             <context attribute="Normal Text" lineEndContext="#stay" name="Number">
                 <IncludeRules context="FindFloat"/>
                 <RegExpr attribute="Hex" context="#pop" String="\b0[xX]&hex;[lL]?\b"/>
@@ -251,16 +255,20 @@
                 <DetectIdentifier attribute="Variable" context="#pop" />
             </context>
 
-            <context name="TypeDeclaration" lineEndContext="#stay" attribute="Normal Text">
+            <context name="TypeDeclaration" lineEndContext="#stay" attribute="Normal Text" fallthroughContext="#pop">
                 <keyword attribute="Keyword" context="#stay" String="keywords"/>
 
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
                 <DetectChar attribute="Symbol" context="Parameters" char="(" />
                 <DetectChar attribute="Symbol" context="SuperTypes" char=":" />
                 <DetectChar attribute="Symbol" context="#pop" char="{" lookAhead="true" />
+
+                <DetectIdentifier attribute="Normal Text" context="#stay"/>
+                <DetectSpaces attribute="Normal Text" context="#stay"/>
+                <IncludeRules context="FindComments"/>
             </context>
 
-            <context name="SuperTypes" lineEndContext="#stay" attribute="Normal Text">
+            <context name="SuperTypes" lineEndContext="#stay" attribute="Normal Text" fallthroughContext="#pop">
                 <keyword attribute="Keyword" context="#pop#pop" String="keywords" lookAhead="true" />
 
                 <DetectChar attribute="Symbol" context="#stay" char="," />
@@ -269,18 +277,21 @@
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
 
                 <DetectIdentifier attribute="Data Type" context="#stay"/>
+                <DetectSpaces attribute="Normal Text" context="#stay"/>
+                <IncludeRules context="FindComments"/>
             </context>
 
-            <context name="FunctionDeclaration" lineEndContext="#stay" attribute="Normal Text">
+            <context name="FunctionDeclaration" lineEndContext="#stay" attribute="Normal Text" fallthroughContext="#pop">
                 <keyword attribute="Keyword" context="#stay" String="keywords"/>
                 <DetectChar attribute="Symbol" context="#stay" char="." />
                 <DetectChar attribute="Symbol" context="Parameters" char="(" />
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
                 <DetectChar attribute="Symbol" context="TypeName" char=":" />
-
-                <AnyChar attribute="Symbol" context="#pop" String="{=" lookAhead="true" />
+                <AnyChar attribute="Normal Text" String="->[]?" />
 
                 <DetectIdentifier attribute="Function" context="#stay"/>
+                <DetectSpaces attribute="Normal Text" context="#stay"/>
+                <IncludeRules context="FindComments"/>
             </context>
 
             <context name="TypeParameters" lineEndContext="#stay" attribute="Normal Text">
@@ -293,6 +304,8 @@
                 <DetectChar attribute="Symbol" context="TypeParameters" char="&lt;" />
 
                 <DetectIdentifier attribute="Data Type" context="DataTypeSuffix"/>
+                <DetectSpaces attribute="Normal Text" context="#stay"/>
+                <IncludeRules context="FindComments"/>
             </context>
             <context name="DataTypeSuffix" lineEndContext="#pop" attribute="Normal Text" fallthroughContext="#pop">
                 <DetectChar attribute="Symbol" context="#pop" char="?"/>
@@ -305,6 +318,8 @@
                 <DetectChar attribute="Symbol" context="Expression" char="=" />
                 <DetectIdentifier attribute="Variable" context="#stay"/>
                 <DetectChar attribute="Symbol" context="#stay" char=","/>
+                <DetectSpaces attribute="Normal Text" context="#stay"/>
+                <IncludeRules context="FindComments"/>
             </context>
 
             <context name="TypeName" lineEndContext="#stay" attribute="Normal Text">
@@ -339,8 +354,7 @@
                 <DetectChar context="String" char="&quot;" lookAhead="1"/>
                 <DetectChar context="Char" char="'" lookAhead="1"/>
 
-                <Detect2Chars attribute="Comment" context="CommentSingleLine" char="/" char1="/"/>
-                <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
+                <IncludeRules context="FindComments"/>
 
                 <DetectIdentifier attribute="Normal Text"/>
             </context>
@@ -357,12 +371,14 @@
             <context attribute="Comment" lineEndContext="#pop" name="CommentSingleLine">
                 <DetectSpaces />
                 <IncludeRules context="##Comments"/>
+                <DetectIdentifier />
             </context>
             <context attribute="Comment" lineEndContext="#stay" name="CommentMultiline">
                 <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="Comment"/>
                 <Detect2Chars attribute="Comment" context="CommentMultiline" char="/" char1="*" beginRegion="Comment"/>
                 <DetectSpaces />
                 <IncludeRules context="##Comments"/>
+                <DetectIdentifier />
             </context>
 
         </contexts>
diff --git a/xml/systemverilog.xml b/xml/systemverilog.xml
--- a/xml/systemverilog.xml
+++ b/xml/systemverilog.xml
@@ -38,7 +38,7 @@
 <!-- $LastChangedRevision: 10 $                                             -->
 <!--                                                                       -->
 <!--***********************************************************************-->
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="SystemVerilog" version="11" kateversion="5.0" section="Hardware" extensions="*.sv;*.svh" mimetype="text/x-systemverilog-src" author="Sean O'Boyle (seanoboyle@intelligentdv.com)" license="GPLv3+">
   <highlighting>
     <list name="key_deprecated">
@@ -144,7 +144,6 @@
        <item>ms</item>
        <item>ns</item>
        <item>us</item>
-       <item>ns</item>
        <item>ps</item>
        <item>fs</item>
        <item>step</item>
@@ -362,10 +361,6 @@
         <item>$acosh</item>
         <item>$tan</item>
         <item>$atanh</item>
-        <item>$fatal</item>
-        <item>$error</item>
-        <item>$warning</item>
-        <item>$info</item>
         <item>$fatal</item>
         <item>$error</item>
         <item>$warning</item>
diff --git a/xml/tcl.xml b/xml/tcl.xml
--- a/xml/tcl.xml
+++ b/xml/tcl.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language [
+  <!ENTITY var "\$([a-zA-Z0-9_]|::)+">
+  <!ENTITY delims "!&#37;&amp;*+,-./:&lt;=>^|~">
+]>
 
 <!-- Authors: Alexander Dederer & JM. Philippe -->
 <!-- Copyright: BSD copyright & Irsid - Arcelor Innovation R&D -->
@@ -28,11 +31,34 @@
 	    - Fixed detection of varaibles with names containing serval namespace delimiters (::)
 -->
 
-<language name="Tcl/Tk" version="8" kateversion="5.62" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
+<language name="Tcl/Tk" version="9" kateversion="5.79" section="Scripts" extensions="*.tcl;*.tk" mimetype="text/x-tcl" license="BSD">
   <highlighting>
+    <list name="control-flow">
+      <item>break</item>
+      <item>catch</item>
+      <item>continue</item>
+      <item>else</item>
+      <item>elseif</item>
+      <item>exit</item>
+      <item>finally</item>
+      <item>for</item>
+      <item>foreach</item>
+      <item>if</item>
+      <item>return</item>
+      <item>switch</item>
+      <item>switch</item>
+      <item>throw</item>
+      <item>trap</item>
+      <item>try</item>
+      <item>while</item>
+      <item>yield</item>
+      <item>yieldto</item>
+    </list>
+
     <list name="keywords">
       <item>after</item>
       <item>append</item>
+      <item>apply</item>
       <item>AppleScript</item>
       <item>argv</item>
       <item>argc</item>
@@ -56,7 +82,6 @@
       <item>button</item>
       <item>canvas</item>
       <item>case</item>
-      <item>catch</item>
       <item>cd</item>
       <item>chan</item>
       <item>checkbutton</item>
@@ -66,12 +91,13 @@
       <item>combobox</item>
       <item>concat</item>
       <item>console</item>
-      <item>continue</item>
+      <item>const</item>
+      <item>coroinject</item>
+      <item>coroprobe</item>
+      <item>coroutine</item>
       <item>dde</item>
       <item>destroy</item>
       <item>dict</item>
-      <item>else</item>
-      <item>elseif</item>
       <item>encoding</item>
       <item>entry</item>
       <item>env</item>
@@ -82,7 +108,6 @@
       <item>eval</item>
       <item>event</item>
       <item>exec</item>
-      <item>exit</item>
       <item>expr</item>
       <item>fblocked</item>
       <item>fconfigure</item>
@@ -92,8 +117,6 @@
       <item>flush</item>
       <item>focus</item>
       <item>font</item>
-      <item>for</item>
-      <item>foreach</item>
       <item>format</item>
       <item>frame</item>
       <item>gets</item>
@@ -102,7 +125,6 @@
       <item>grab</item>
       <item>grid</item>
       <item>history</item>
-      <item>if</item>
       <item>image</item>
       <item>incr</item>
       <item>info</item>
@@ -112,19 +134,23 @@
       <item>labelframe</item>
       <item>lappend</item>
       <item>lassign</item>
+      <item>ledit</item>
       <item>lindex</item>
       <item>linsert</item>
       <item>list</item>
       <item>listbox</item>
       <item>llength</item>
+      <item>lmap</item>
       <item>load</item>
       <item>lower</item>
+      <item>lpop</item>
       <item>lrange</item>
       <item>lremove</item>
       <item>lrepeat</item>
       <item>lreplace</item>
       <item>lreverse</item>
       <item>lsearch</item>
+      <item>lseq</item>
       <item>lset</item>
       <item>lsort</item>
       <item>menu</item>
@@ -154,7 +180,6 @@
       <item>regsub</item>
       <item>rename</item>
       <item>resource</item>
-      <item>return</item>
       <item>scale</item>
       <item>scan</item>
       <item>scrollbar</item>
@@ -171,7 +196,7 @@
       <item>string</item>
       <item>style</item>
       <item>subst</item>
-      <item>switch</item>
+      <item>tailcall</item>
       <item>tclLog</item>
       <item>tcl_endOfWord</item>
       <item>tcl_findLibrary</item>
@@ -224,7 +249,6 @@
       <item>upvar</item>
       <item>variable</item>
       <item>vwait</item>
-      <item>while</item>
       <item>winfo</item>
       <item>wm</item>
     </list>
@@ -249,6 +273,7 @@
       <item>default</item>
       <item>delete</item>
       <item>dirname</item>
+      <item>epoll</item>
       <item>equal</item>
       <item>executable</item>
       <item>exists</item>
@@ -267,6 +292,7 @@
       <item>isdirectory</item>
       <item>isfile</item>
       <item>join</item>
+      <item>kqueue</item>
       <item>last</item>
       <item>length</item>
       <item>level</item>
@@ -329,7 +355,6 @@
       <item>wordend</item>
       <item>wordstart</item>
       <item>writable</item>
-
       <item>activate</item>
       <item>actual</item>
       <item>addtag</item>
@@ -412,6 +437,7 @@
       <item>mark</item>
       <item>maxsize</item>
       <item>measure</item>
+      <item>method</item>
       <item>metrics</item>
       <item>minsize</item>
       <item>move</item>
@@ -487,52 +513,82 @@
       <item>x</item>
       <item>xview</item>
       <item>y</item>
+      <item>zlib</item>
     </list>
 
     <contexts>
       <context name = "Base" attribute = "Normal Text" lineEndContext="#stay">
-      
-        <!-- Virtual blocks -->
-        <RegExpr attribute="Region Marker" context="#stay" String="#\s*BEGIN.*$" beginRegion="region" firstNonSpace="true"/>
-        <RegExpr attribute="Region Marker" context="#stay" String="#\s*END.*$" endRegion="region" firstNonSpace="true"/>
-        
-        <!-- Standard -->
-        <keyword String = "keywords" attribute = "Keyword" context="#stay"/>
-        <keyword String = "keywords-opt" attribute = "Parameter" context="#stay"/>
-        <Float attribute = "Float" context="#stay"/>
-        <Int attribute ="Decimal" context="#stay"/>
-        <RegExpr String="\\." attribute = "Char" context = "#stay"/>
-        
-        <!-- Options -->
-        <RegExpr String = "\s-\w+" attribute = "Parameter" context="#stay"/>
-        
-        <!-- Variables -->
-        <RegExpr String = "\$\{([^\}]|\\\})+\}|\$(::|\w)+" attribute = "Variable" context="#stay"/>
-        
+        <DetectSpaces/>
+
+        <!-- Braces, brackets, etc -->
+        <DetectChar char = "{" attribute = "Block Symbol" context="#stay" beginRegion="block"/>
+        <DetectChar char = "}" attribute = "Block Symbol" context="#stay" endRegion="block"/>
+        <AnyChar String = "[]" attribute = "Substitution Symbol" context="#stay"/>
+        <StringDetect String="${" attribute="Variable" context="VarBrace"/>
+
+        <!-- Symbols -->
+        <AnyChar String="=!&lt;>&amp;|+*/%!:" attribute="Operator"/>
+        <AnyChar String="()" attribute="Symbol"/>
+
         <!-- Strings -->
-        <Detect2Chars char = "&quot;" char1 = "&quot;" attribute = "String" context="#stay"/>
         <DetectChar char = "&quot;" attribute = "String" context="String"/>
-        
+
         <!-- Comments -->
-        <DetectChar char = ";" attribute = "Normal Text" context="New command line" />
-        <DetectChar char = "#" attribute = "Comment" context="Comment" firstNonSpace="true"/>
-        
-        <!-- Braces, brackets, etc -->
-        <DetectChar char = "{" attribute = "Keyword" context="#stay" beginRegion="block"/>
-        <DetectChar char = "}" attribute = "Keyword" context="#stay" endRegion="block"/>
-        <AnyChar String= "[]" attribute = "Keyword" context="#stay"/>
+        <DetectChar char = ";" attribute = "Separator Symbol" context="New command line" />
+        <DetectChar char = "#" attribute = "Comment" context="CommentWithOptionalRegion" firstNonSpace="true" lookAhead="1"/>
+
+        <!-- Standard -->
+        <keyword String="keywords" attribute="Keyword" weakDeliminator="&delims;"/>
+        <keyword String="keywords-opt" attribute="Parameter" weakDeliminator="&delims;"/>
+        <keyword String="control-flow" attribute="Control Flow" weakDeliminator="&delims;"/>
+        <Float attribute="Float"/>
+        <Int attribute="Decimal"/>
+        <IncludeRules context="FindSpecialChar"/>
+
+        <!-- Options -->
+        <RegExpr String = "(?&lt;=\s)-\w+" attribute = "Parameter"/>
+        <DetectChar char = "-" attribute = "Symbol"/>
+
+        <!-- Variables -->
+        <RegExpr String="&var;" attribute="Variable"/>
         
+        <RegExpr String="[^\s;{}()\[\]&quot;$\\=!&lt;>&amp;|+*/%!:]+"/>
       </context>
 
-      <context name = "String" attribute = "String" lineEndContext="#stay">
-        <RegExpr String="\\." attribute = "Char" context = "#stay"/>
-        <DetectChar char="&quot;" attribute = "String" context = "#pop"/>
-        <DetectChar char  = "$" attribute = "Variable" context="#stay"/>
+      <context name="String" attribute="String" lineEndContext="#stay">
+        <DetectChar char="&quot;" attribute="String" context="#pop"/>
+        <IncludeRules context="FindSpecialChar"/>
+        <StringDetect String="${" attribute="Variable" context="VarBrace"/>
+        <RegExpr String="&var;" attribute="Variable" context="StringAfterVar"/>
       </context>
 
+      <context name="StringAfterVar" attribute="Variable" fallthroughContext="#pop">
+        <DetectChar char="(" attribute="Variable Index Symbol" context="StringVarIndex"/>
+      </context>
+      <context name="StringVarIndex" attribute="String Variable Index">
+        <DetectChar char=")" attribute="Variable Index Symbol" context="#pop#pop"/>
+        <DetectChar char="&quot;" context="#pop#pop" lookAhead="1"/>
+        <IncludeRules context="String"/>
+      </context>
+
+      <context name="FindSpecialChar" attribute="Char" lineEndContext="#pop">
+        <RegExpr String="\\(x[0-9a-fA-F]{1,2}|[0-7]{1,3}|.)?" attribute="Char"/>
+      </context>
+
+      <context name="VarBrace" attribute="Variable" lineEndContext="#pop">
+        <DetectChar char="}" attribute="Variable" context="#pop"/>
+      </context>
+
+      <context name = "CommentWithOptionalRegion" attribute = "Comment" lineEndContext="#pop" fallthroughContext="#pop!Comment">
+        <!-- Virtual blocks -->
+        <RegExpr attribute="Region Marker" context="#pop" String="#\s*BEGIN\b.*" beginRegion="region" firstNonSpace="true"/>
+        <RegExpr attribute="Region Marker" context="#pop" String="#\s*END\b.*" endRegion="region" firstNonSpace="true"/>
+      </context>
+
       <context name = "Comment" attribute = "Comment" lineEndContext="#pop">
         <DetectSpaces />
         <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
       </context>
 
       <context name = "New command line" attribute = "Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
@@ -543,22 +599,30 @@
 
     <itemDatas>
       <itemData name = "Normal Text" defStyleNum = "dsNormal"/>
-      <itemData name = "Keyword" defStyleNum = "dsKeyword"/>
-      <itemData name = "Decimal" defStyleNum = "dsDecVal"/>
-      <itemData name = "Float" defStyleNum = "dsFloat"/>
+      <itemData name = "Keyword" defStyleNum = "dsKeyword" spellChecking="0"/>
+      <itemData name = "Control Flow" defStyleNum = "dsControlFlow" spellChecking="0"/>
+      <itemData name = "Substitution Symbol" defStyleNum = "dsKeyword" spellChecking="0"/>
+      <itemData name = "Block Symbol" defStyleNum = "dsKeyword" spellChecking="0"/>
+      <itemData name = "Separator Symbol" defStyleNum = "dsNormal" bold="1" spellChecking="0"/>
+      <itemData name = "Decimal" defStyleNum = "dsDecVal" spellChecking="0"/>
+      <itemData name = "Float" defStyleNum = "dsFloat" spellChecking="0"/>
+      <itemData name = "Operator" defStyleNum = "dsOperator" spellChecking="0"/>
+      <itemData name = "Symbol" defStyleNum = "dsNormal"/>
       <itemData name = "String" defStyleNum = "dsString"/>
+      <itemData name = "String Variable Index" defStyleNum = "dsVerbatimString"/>
       <itemData name = "Comment" defStyleNum = "dsComment"/>
-      <itemData name = "Parameter" defStyleNum = "dsOthers"/>
+      <itemData name = "Parameter" defStyleNum = "dsOthers" spellChecking="0"/>
       <itemData name = "Variable" defStyleNum = "dsDataType"/>
-      <itemData name = "Char" defStyleNum="dsChar"/>
-      <itemData name = "Region Marker" defStyleNum="dsRegionMarker"/>
+      <itemData name = "Variable Index Symbol" defStyleNum = "dsVariable" spellChecking="0"/>
+      <itemData name = "Char" defStyleNum="dsChar" spellChecking="0"/>
+      <itemData name = "Region Marker" defStyleNum="dsRegionMarker" spellChecking="0"/>
     </itemDatas>
 
   </highlighting>
 
   <general>
     <comments>
-	<comment name="singleLine" start="#" />
+      <comment name="singleLine" start="#" />
     </comments>
     <keywords casesensitive="1"/>
   </general>
diff --git a/xml/tcsh.xml b/xml/tcsh.xml
--- a/xml/tcsh.xml
+++ b/xml/tcsh.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
         <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">
         <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
@@ -9,7 +9,7 @@
         <!ENTITY pathpart "([\w_@.&#37;*?+-]|\\ )">     <!-- valid character in a file name -->
         <!ENTITY tab      "&#9;">
 ]>
-<language name="Tcsh" version="10" kateversion="5.53" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
+<language name="Tcsh" version="12" kateversion="5.53" section="Scripts" extensions="*.csh;*.tcsh;csh.cshrc;csh.login;.tcshrc;.cshrc;.login" mimetype="application/x-csh;text/x-csh" casesensitive="1" author="Matthew Woehlke (mw_triad@users.sourceforge.net)" license="LGPL">
 
 <!-- (c) 2006 Matthew Woehlke (mw_triad@users.sourceforge.net)
     Based on the bash highlighter by Wilbert Berendsen (wilbert@kde.nl)
@@ -465,7 +465,7 @@
   </highlighting>
   <general>
     <comments>
-      <comment name="singleLine" start="#"/>
+      <comment name="singleLine" start="#" position="afterwhitespace"/>
     </comments>
     <keywords casesensitive="1" weakDeliminator="^%#[]$._{}:-" additionalDeliminator="`"/>
   </general>
diff --git a/xml/terraform.xml b/xml/terraform.xml
new file mode 100644
--- /dev/null
+++ b/xml/terraform.xml
@@ -0,0 +1,268 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+
+<language name="Terraform"
+          section="Sources"
+          version="3"
+          kateversion="5.0"
+          indenter="normal"
+          extensions="*.tf;*.tfvars"
+          mimetype="text/x-terraform"
+          priority="1"
+          author="Thuck (denisdoria@gmail.com)"
+          license="MIT">
+    <highlighting>
+        <list name="blocks">
+            <item>resource</item>
+            <item>data</item>
+            <item>variable</item>
+            <item>output</item>
+            <item>locals</item>
+            <item>module</item>
+            <item>provider</item>
+            <item>terraform</item>
+        </list>
+        <list name="sub blocks">
+            <item>dynamic</item>
+            <item>content</item>
+            <item>provisioner</item>
+            <item>required_providers</item>
+            <item>backend</item>
+        </list>
+        <list name="meta arguments">
+            <item>depends_on</item>
+            <item>count</item>
+            <item>for_each</item>
+            <!--<item>provider</item> needs context to behave like an argument -->
+            <item>lifecycle</item>
+        </list>
+        <list name="keywords">
+            <item>source</item>
+            <item>required_version</item>
+            <!--<item>index</item> can also be a function-->
+        </list>
+
+        <list name="controlflow">
+            <item>for</item>
+            <item>in</item>
+            <item>if</item>
+        </list>
+
+        <list name="variables">
+            <item>var</item>
+            <item>local</item>
+            <item>each</item>
+            <item>self</item>
+        </list>
+        <list name="built in functions">
+            <item>abs</item>
+            <item>ceil</item>
+            <item>floor</item>
+            <item>log</item>
+            <item>max</item>
+            <item>min</item>
+            <item>parseint</item>
+            <item>pow</item>
+            <item>signum</item>
+            <item>chomp</item>
+            <item>format</item>
+            <item>formatlist</item>
+            <item>indent</item>
+            <item>join</item>
+            <item>lower</item>
+            <item>regex</item>
+            <item>regexall</item>
+            <item>replace</item>
+            <item>split</item>
+            <item>strrev</item>
+            <item>substr</item>
+            <item>title</item>
+            <item>trim</item>
+            <item>trimprefix</item>
+            <item>trimsuffix</item>
+            <item>trimspace</item>
+            <item>upper</item>
+            <item>alltrue</item>
+            <item>anytrue</item>
+            <item>chunklist</item>
+            <item>coalesce</item>
+            <item>coalescelist</item>
+            <item>compact</item>
+            <item>concat</item>
+            <item>contains</item>
+            <item>distinct</item>
+            <item>element</item>
+            <item>flatten</item>
+            <item>index</item>
+            <item>keys</item>
+            <item>length</item>
+            <item>lookup</item>
+            <item>matchkeys</item>
+            <item>merge</item>
+            <item>one</item>
+            <item>range</item>
+            <item>reverse</item>
+            <item>setintersection</item>
+            <item>setproduct</item>
+            <item>setsubtract</item>
+            <item>setunion</item>
+            <item>slice</item>
+            <item>sort</item>
+            <item>sum</item>
+            <item>transpose</item>
+            <item>values</item>
+            <item>zipmap</item>
+            <item>base64decode</item>
+            <item>base64encode</item>
+            <item>base64gzip</item>
+            <item>csvdecode</item>
+            <item>jsondecode</item>
+            <item>jsonencode</item>
+            <item>textdecodebase64</item>
+            <item>textencodebase64</item>
+            <item>urlencode</item>
+            <item>yamldecode</item>
+            <item>yamlencode</item>
+            <item>abspath</item>
+            <item>dirname</item>
+            <item>pathexpand</item>
+            <item>basename</item>
+            <item>file</item>
+            <item>fileexists</item>
+            <item>fileset</item>
+            <item>filebase64</item>
+            <item>templatefile</item>
+            <item>formatdate</item>
+            <item>timeadd</item>
+            <item>timestamp</item>
+            <item>base64sha256</item>
+            <item>base64sha512</item>
+            <item>bcrypt</item>
+            <item>filebase64sha256</item>
+            <item>filebase64sha512</item>
+            <item>filemd5</item>
+            <item>filesha1</item>
+            <item>filesha256</item>
+            <item>filesha512</item>
+            <item>md5</item>
+            <item>rsadecrypt</item>
+            <item>sha1</item>
+            <item>sha256</item>
+            <item>sha512</item>
+            <item>uuid</item>
+            <item>uuidv5</item>
+            <item>cidrhost</item>
+            <item>cidrnetmask</item>
+            <item>cidrsubnet</item>
+            <item>cidrsubnets</item>
+            <item>can</item>
+            <item>defaults</item>
+            <item>nonsensitive</item>
+            <item>sensitive</item>
+            <item>tobool</item>
+            <item>tolist</item>
+            <item>tomap</item>
+            <item>tonumber</item>
+            <item>toset</item>
+            <item>tostring</item>
+            <item>try</item>
+            <item>optional</item> <!-- not exactly a function -->
+        </list>
+        <list name="primitive types">
+            <item>string</item>
+            <item>number</item>
+            <item>bool</item>
+        </list>
+        <list name="complex types">
+            <item>list</item>
+            <item>map</item>
+            <item>set</item>
+        </list>
+        <list name="structural types">
+            <item>object</item>
+            <item>tuple</item>
+        </list>
+        <list name="dynamic types">
+            <item>any</item>
+        </list>
+        <list name="special vars">
+            <item>true</item>
+            <item>false</item>
+            <item>null</item>
+        </list>
+
+        <contexts>
+            <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+                <DetectSpaces />
+
+                <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
+                <keyword attribute="Keyword" context="#stay" String="keywords"/>
+                <keyword attribute="Meta Argument" context="#stay" String="meta arguments"/>
+                <keyword attribute="Block" context="#stay" String="blocks"/>
+                <keyword attribute="Sub Block" context="#stay" String="sub blocks"/>
+                <keyword attribute="Built In" context="#stay" String="built in functions" />
+                <keyword attribute="Variable" context="#stay" String="variables" />
+                <keyword attribute="Variable" context="#stay" String="special vars" />
+                <keyword attribute="Data Type" context="#stay" String="primitive types"/>
+                <keyword attribute="Data Type" context="#stay" String="complex types"/>
+                <keyword attribute="Data Type" context="#stay" String="structural types"/>
+                <keyword attribute="Data Type" context="#stay" String="dynamic types"/>
+                <DetectIdentifier />
+
+                <Float attribute="Float" context="#stay"/>
+                <Int attribute="Decimal" context="#stay"/>
+                <HlCHex attribute="Hex" context="#stay"/>
+                <HlCOct attribute="Octal" context="#stay"/>
+
+                <DetectChar attribute="String" context="DoubleQuoteString" char="&quot;"/>
+                <DetectChar attribute="Comment" char="#" context="Comment"/>
+                <StringDetect attribute="Operator" context="#stay" String="..." />
+                <AnyChar attribute="Operator" String="-+*/%\|=;&lt;&gt;!&amp;" context="#stay"/>
+
+            </context>
+
+            <context attribute="String" lineEndContext="#pop" name="DoubleQuoteString">
+                <Detect2Chars attribute="Special String" context="Interpolation" char="$" char1="{"/>
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+            </context>
+
+            <context attribute="Variable" lineEndContext="#pop" name="Interpolation">
+                <DetectChar attribute="Special String" context="#pop" char="}"/>
+            </context>
+
+            <context attribute="Comment" lineEndContext="#pop" name="Comment">
+                <DetectSpaces/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier/>
+            </context>
+
+
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text"    defStyleNum="dsNormal" spellChecking="false"/>
+            <itemData name="Control Flow"   defStyleNum="dsControlFlow" spellChecking="false"/>
+            <itemData name="Keyword"        defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Block"          defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Sub Block"      defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Meta Argument"  defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Built In"       defStyleNum="dsBuiltIn" spellChecking="false" />
+            <itemData name="Operator"       defStyleNum="dsOperator" spellChecking="false" />
+            <itemData name="Variable"       defStyleNum="dsVariable" spellChecking="false" />
+            <itemData name="Data Type"      defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Decimal"        defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Octal"          defStyleNum="dsBaseN" spellChecking="false"/>
+            <itemData name="Hex"            defStyleNum="dsBaseN" spellChecking="false"/>
+            <itemData name="Float"          defStyleNum="dsFloat" spellChecking="false"/>
+            <itemData name="String"         defStyleNum="dsString"/>
+            <itemData name="Special String" defStyleNum="dsSpecialString"/>
+            <itemData name="Comment"        defStyleNum="dsComment"/>
+        </itemDatas>
+    </highlighting>
+    <general>
+        <comments>
+            <comment name="singleLine" start="#" />
+        </comments>
+        <keywords casesensitive="true" />
+    </general>
+</language>
diff --git a/xml/texinfo.xml b/xml/texinfo.xml
--- a/xml/texinfo.xml
+++ b/xml/texinfo.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Texinfo" extensions="*.texi" section="Markup" mimetype="application/x-texinfo" author="Daniel Franke (franke.daniel@gmail.com)" license="LGPL" version="3" kateversion="5.0">
 
   <highlighting>
diff --git a/xml/textile.xml b/xml/textile.xml
new file mode 100644
--- /dev/null
+++ b/xml/textile.xml
@@ -0,0 +1,102 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Kate syntax highlight filter for Textile formatted documents
+
+    Copyright 2012 alexander Kabakov. http://kabakov.wordpress.com/
+    Licensed under GPL license.
+-->
+
+<!DOCTYPE language
+            [           
+            <!ENTITY strongregex "(\s|^)\*[^*]\w.*\w[^*]\*(\s|\.|,|;|:|\-|\?|$)">
+            <!ENTITY strikeoutregex "(\s|^)-[^-]\w.*\w[^-]-(\s|\.|,|;|:|\-|\?|$)">
+            <!ENTITY blockattrsregex "(\(\w+(#\w+)?\))?">
+            <!ENTITY formatregex "(&gt;|&lt;|=|&lt;&gt;)?">
+            <!ENTITY name "(?![0-9])[\w_:][\w.:_-]*">
+]>
+            
+<language section="Markup" name="Textile" 
+        version="6" kateversion="5.0"
+        extensions="*.textile" priority="15"
+        author="Alexander Kabakov (kabakov.as@gmail.com)"
+        license="LGPL" >
+    <highlighting>
+        <contexts>
+            <context attribute="Normal Text" lineEndContext="#stay" name="Normal Text" >
+                <StringDetect attribute="comment" context="comment" String="&lt;!--" beginRegion="comment" />
+                <RegExpr attribute="macro" String="\{\{&name;\}\}" />
+                
+                <Detect2Chars context="sectiontitle_block"  char="h" char1="1" column="0" />
+                <Detect2Chars context="sectionheader_block" char="h" char1="2" column="0" />                
+                <Detect2Chars context="sectionheader_block" char="h" char1="3" column="0" />
+                <Detect2Chars context="sectionheader_block" char="h" char1="4" column="0" />
+                <Detect2Chars context="sectionheader_block" char="h" char1="5" column="0" />
+                
+                <RegExpr attribute="textblock" String="^(p|pre|bq|bc)&blockattrsregex;&formatregex;\." column="0" />
+                <DetectChar context="image" char="!"/>
+                
+                <IncludeRules context="inc" />
+
+                <RegExpr attribute="itemlist" String="^[\*\#]+\s" column="0" />
+                <RegExpr attribute="htmllink" String='".*":http(s)?:[\w_/\\\d\.%\?&amp;=-]*' />
+            </context>
+            
+            <context name="image" lineEndContext="#pop" attribute="image">
+                <RegExpr String="&blockattrsregex;" attribute="blockattrs" />
+                <RegExpr String="\w+\.(png|jpg|jpeg|gif|bmp)" attribute="imagefilename" />
+                <DetectChar char="!" context="#pop" attribute="image"/>
+            </context>
+            
+            <context name="sectiontitle_block" lineEndContext="#pop" attribute="sectiontitle">
+                <RegExpr String="&blockattrsregex;" attribute="sectionblockattrs" />
+            </context>
+            
+            <context name="sectionheader_block" lineEndContext="#pop" attribute="sectionheader">
+                <RegExpr String="&blockattrsregex;" attribute="sectionblockattrs" />
+            </context>
+            
+            <context name="comment" attribute="comment" lineEndContext="#stay">
+                <DetectSpaces/>
+                <StringDetect attribute="comment" context="#pop" String="--&gt;" endRegion="comment" />
+                <IncludeRules context="##Comments" />
+                <DetectIdentifier/>
+            </context>
+            
+            <context attribute="Normal Text" name="inc" lineEndContext="#stay" >
+                <RegExpr attribute="strong" String="&strongregex;" />
+                <RegExpr attribute="strikeout" minimal="true" String="&strikeoutregex;"/>
+            </context>
+        </contexts>
+
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal" />
+            
+            <itemData name="sectiontitle" defStyleNum="dsKeyword" bold="true" />
+            <itemData name="sectionheader" defStyleNum="dsFunction" bold="true" />
+            <itemData name="sectionblockattrs" defStyleNum="dsComment" bold="true"/>
+            <itemData name="blockattrs" defStyleNum="dsComment" />
+            <itemData name="textblock"  defStyleNum="dsComment" />
+            
+            <itemData name="strong" defStyleNum="dsNormal" bold="true" />
+            <itemData name="strikeout" defStyleNum="dsNormal" strikeOut="true" />
+            
+            <itemData name="itemlist" defStyleNum="dsDataType" />
+            
+            <itemData name="macro"  defStyleNum="dsComment" bold="true"/>
+            <itemData name="comment"  defStyleNum="dsComment" />
+            
+            <itemData name="image"  defStyleNum="dsFloat" />
+            <itemData name="imagefilename"  defStyleNum="dsKeyword" />
+            <itemData name="htmllink" defStyleNum="dsDataType" />
+        </itemDatas>
+
+    </highlighting>
+
+    <general>
+        <comments>
+            <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment" />
+        </comments>
+    </general>
+
+</language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/tlaplus.xml b/xml/tlaplus.xml
new file mode 100644
--- /dev/null
+++ b/xml/tlaplus.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language>
+<!--
+    SPDX-FileCopyrightText: 2024 Younes IO <dev@younes.io>
+    SPDX-License-Identifier: MIT
+-->
+<language name="TLA+" version="1" kateversion="5.0" section="Sources" extensions="*.tla" mimetype="text/x-tlaplus" priority="5" author="Younes (dev@younes.io)">
+  <highlighting>
+    <list name="keywords">
+      <item>ASSUME</item>
+      <item>ASSUMPTION</item>
+      <item>AXIOM</item>
+      <item>CASE</item>
+      <item>CHOOSE</item>
+      <item>CONSTANT</item>
+      <item>CONSTANTS</item>
+      <item>DOMAIN</item>
+      <item>ELSE</item>
+      <item>ENABLED</item>
+      <item>EXCEPT</item>
+      <item>EXTENDS</item>
+      <item>IF</item>
+      <item>IN</item>
+      <item>INSTANCE</item>
+      <item>LET</item>
+      <item>LOCAL</item>
+      <item>MODULE</item>
+      <item>OTHER</item>
+      <item>SUBSET</item>
+      <item>THEN</item>
+      <item>THEOREM</item>
+      <item>UNCHANGED</item>
+      <item>UNION</item>
+      <item>VARIABLE</item>
+      <item>VARIABLES</item>
+      <item>WITH</item>
+    </list>
+    <list name="operators">
+      <item>/\</item>
+      <item>\/</item>
+      <item>~</item>
+      <item>=&gt;</item>
+      <item>&lt;=&gt;</item>
+      <item>\E</item>
+      <item>\A</item>
+      <item>\in</item>
+      <item>\notin</item>
+      <item>\subset</item>
+      <item>\subseteq</item>
+      <item>\supset</item>
+      <item>\supseteq</item>
+      <item>\union</item>
+      <item>\intersect</item>
+      <item>\setminus</item>
+    </list>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Operator" context="#stay" String="operators"/>
+        <Float attribute="Float" context="#stay"/>
+        <Int attribute="Decimal" context="#stay"/>
+        <DetectChar attribute="String" context="String" char="&quot;"/>
+        <Detect2Chars attribute="Comment" context="SingleLineComment" char="\" char1="*" beginRegion="Comment"/>
+        <Detect2Chars attribute="Comment" context="MultiLineComment" char="(" char1="*" beginRegion="Comment"/>
+      </context>
+      <context attribute="String" lineEndContext="#pop" name="String">
+        <DetectChar attribute="String" context="#pop" char="&quot;"/>
+      </context>
+      <context attribute="Comment" lineEndContext="#pop" name="SingleLineComment">
+        <DetectSpaces/>
+        <IncludeRules context="##Alerts"/>
+        <DetectIdentifier/>
+      </context>
+      <context attribute="Comment" lineEndContext="#stay" name="MultiLineComment">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment"/>
+        <DetectSpaces/>
+        <IncludeRules context="##Alerts"/>
+        <DetectIdentifier/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Operator" defStyleNum="dsOperator"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="Decimal" defStyleNum="dsDecVal"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="\*"/>
+      <comment name="multiLine" start="(*" end="*)"/>
+    </comments>
+    <keywords casesensitive="1"/>
+  </general>
+</language>
diff --git a/xml/todo.xml b/xml/todo.xml
new file mode 100644
--- /dev/null
+++ b/xml/todo.xml
@@ -0,0 +1,468 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+  <!ENTITY date "\d{4}-\d{2}-\d{2}(?=\s|$)">
+  <!ENTITY tab "&#009;">
+]>
+<!-- http://todotxt.org/ -->
+<language
+  name="Todo.txt" section="Other"
+  version="2" kateversion="5.62"
+  extensions="todo.txt"
+  author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT"
+>
+<highlighting>
+  <contexts>
+    <context name="Normal" attribute="Normal" lineEndContext="#stay" fallthroughContext="CompletionDate">
+      <Detect2Chars attribute="Done" context="Done" char="x" char1=" "/>
+      <Detect2Chars attribute="Done" context="Done" char="x" char1="&tab;"/>
+      <DetectChar attribute="Normal" context="Priority" char="(" lookAhead="1"/>
+    </context>
+
+    <context name="Priority" attribute="Normal" lineEndContext="#pop" fallthroughContext="#pop!CompletionDate">
+      <StringDetect attribute="Priority A" context="#pop!(A)CompletionDate" String="(A)"/>
+      <StringDetect attribute="Priority B" context="#pop!(B)CompletionDate" String="(B)"/>
+      <StringDetect attribute="Priority C" context="#pop!(C)CompletionDate" String="(C)"/>
+      <StringDetect attribute="Priority D" context="#pop!(D)CompletionDate" String="(D)"/>
+      <StringDetect attribute="Priority E" context="#pop!(E)CompletionDate" String="(E)"/>
+      <StringDetect attribute="Priority F" context="#pop!(F)CompletionDate" String="(F)"/>
+      <StringDetect attribute="Priority G" context="#pop!(G)CompletionDate" String="(G)"/>
+      <StringDetect attribute="Priority H" context="#pop!(H)CompletionDate" String="(H)"/>
+      <StringDetect attribute="Priority I" context="#pop!(I)CompletionDate" String="(I)"/>
+      <StringDetect attribute="Priority J" context="#pop!(J)CompletionDate" String="(J)"/>
+      <StringDetect attribute="Priority K" context="#pop!(K)CompletionDate" String="(K)"/>
+      <StringDetect attribute="Priority L" context="#pop!(L)CompletionDate" String="(L)"/>
+      <StringDetect attribute="Priority M" context="#pop!(M)CompletionDate" String="(M)"/>
+      <StringDetect attribute="Priority N" context="#pop!(N)CompletionDate" String="(N)"/>
+      <StringDetect attribute="Priority O" context="#pop!(O)CompletionDate" String="(O)"/>
+      <StringDetect attribute="Priority P" context="#pop!(P)CompletionDate" String="(P)"/>
+      <StringDetect attribute="Priority Q" context="#pop!(Q)CompletionDate" String="(Q)"/>
+      <StringDetect attribute="Priority R" context="#pop!(R)CompletionDate" String="(R)"/>
+      <StringDetect attribute="Priority S" context="#pop!(S)CompletionDate" String="(S)"/>
+      <StringDetect attribute="Priority T" context="#pop!(T)CompletionDate" String="(T)"/>
+      <StringDetect attribute="Priority U" context="#pop!(U)CompletionDate" String="(U)"/>
+      <StringDetect attribute="Priority V" context="#pop!(V)CompletionDate" String="(V)"/>
+      <StringDetect attribute="Priority W" context="#pop!(W)CompletionDate" String="(W)"/>
+      <StringDetect attribute="Priority X" context="#pop!(X)CompletionDate" String="(X)"/>
+      <StringDetect attribute="Priority Y" context="#pop!(Y)CompletionDate" String="(Y)"/>
+      <StringDetect attribute="Priority Z" context="#pop!(Z)CompletionDate" String="(Z)"/>
+    </context>
+
+    <context name="Done" attribute="Done" lineEndContext="#pop">
+    </context>
+
+    <context name="CompletionDate" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!Description">
+      <DetectSpaces attribute="Normal" context="#pop!Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+
+    <context name="CreationDate" attribute="Normal" lineEndContext="#pop#pop" fallthroughContext="#pop">
+      <RegExpr attribute="Creation Date" context="#pop" String="\G\s+&date;"/>
+    </context>
+
+    <context name="Description" attribute="Normal" lineEndContext="#pop">
+      <DetectSpaces attribute="Normal"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Normal"/>
+    </context>
+
+    <context name="_Tag" attribute="Normal" lineEndContext="#pop">
+      <DetectChar attribute="Project Tag" context="ProjectTag" char="+" lookAhead="1"/>
+      <DetectChar attribute="Context Tag" context="ContextTag" char="@" lookAhead="1"/>
+      <RegExpr attribute="Metadata Key" context="MetadataValue" String="(?&lt;=\s)[^\s:]++:(?=[^\s:]++(?!:))"/>
+    </context>
+
+    <context name="ProjectTag" attribute="Project Tag" lineEndContext="#pop#pop" fallthroughContext="#pop">
+      <RegExpr attribute="Project Tag" context="#pop" String="(?&lt;=\s)\+[^\s]+"/>
+      <DetectChar context="#pop" char="+"/>
+    </context>
+
+    <context name="ContextTag" attribute="Context Tag" lineEndContext="#pop#pop" fallthroughContext="#pop">
+      <RegExpr attribute="Context Tag" context="#pop" String="(?&lt;=\s)@[^\s]+"/>
+      <DetectChar context="#pop" char="@"/>
+    </context>
+
+    <context name="MetadataValue" attribute="Metadata Value" lineEndContext="#pop#pop">
+      <RegExpr attribute="Metadata Value" context="#pop" String="\G[^\s:]+"/>
+    </context>
+
+    <context name="_CompletionDate" attribute="Completion Date" lineEndContext="#pop">
+      <RegExpr attribute="Completion Date" context="CreationDate" String="\G&date;"/>
+    </context>
+
+    <context name="(A)CompletionDate" attribute="Priority A" lineEndContext="#pop" fallthroughContext="#pop!(A)Description">
+      <DetectSpaces attribute="Priority A" context="#pop!(A)CompletionDate2"/>
+    </context>
+    <context name="(A)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(A)Description">
+      <DetectSpaces attribute="Priority A" context="#pop!(A)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(A)Description" attribute="Priority A" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority A"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority A"/>
+    </context>
+
+    <context name="(B)CompletionDate" attribute="Priority B" lineEndContext="#pop" fallthroughContext="#pop!(B)Description">
+      <DetectSpaces attribute="Priority B" context="#pop!(B)CompletionDate2"/>
+    </context>
+    <context name="(B)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(B)Description">
+      <DetectSpaces attribute="Priority B" context="#pop!(B)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(B)Description" attribute="Priority B" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority B"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority B"/>
+    </context>
+
+    <context name="(C)CompletionDate" attribute="Priority C" lineEndContext="#pop" fallthroughContext="#pop!(C)Description">
+      <DetectSpaces attribute="Priority C" context="#pop!(C)CompletionDate2"/>
+    </context>
+    <context name="(C)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(C)Description">
+      <DetectSpaces attribute="Priority C" context="#pop!(C)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(C)Description" attribute="Priority C" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority C"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority C"/>
+    </context>
+
+    <context name="(D)CompletionDate" attribute="Priority D" lineEndContext="#pop" fallthroughContext="#pop!(D)Description">
+      <DetectSpaces attribute="Priority D" context="#pop!(D)CompletionDate2"/>
+    </context>
+    <context name="(D)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(D)Description">
+      <DetectSpaces attribute="Priority D" context="#pop!(D)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(D)Description" attribute="Priority D" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority D"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority D"/>
+    </context>
+
+    <context name="(E)CompletionDate" attribute="Priority E" lineEndContext="#pop" fallthroughContext="#pop!(E)Description">
+      <DetectSpaces attribute="Priority E" context="#pop!(E)CompletionDate2"/>
+    </context>
+    <context name="(E)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(E)Description">
+      <DetectSpaces attribute="Priority E" context="#pop!(E)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(E)Description" attribute="Priority E" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority E"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority E"/>
+    </context>
+
+    <context name="(F)CompletionDate" attribute="Priority F" lineEndContext="#pop" fallthroughContext="#pop!(F)Description">
+      <DetectSpaces attribute="Priority F" context="#pop!(F)CompletionDate2"/>
+    </context>
+    <context name="(F)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(F)Description">
+      <DetectSpaces attribute="Priority F" context="#pop!(F)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(F)Description" attribute="Priority F" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority F"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority F"/>
+    </context>
+
+    <context name="(G)CompletionDate" attribute="Priority G" lineEndContext="#pop" fallthroughContext="#pop!(G)Description">
+      <DetectSpaces attribute="Priority G" context="#pop!(G)CompletionDate2"/>
+    </context>
+    <context name="(G)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(G)Description">
+      <DetectSpaces attribute="Priority G" context="#pop!(G)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(G)Description" attribute="Priority G" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority G"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority G"/>
+    </context>
+
+    <context name="(H)CompletionDate" attribute="Priority H" lineEndContext="#pop" fallthroughContext="#pop!(H)Description">
+      <DetectSpaces attribute="Priority H" context="#pop!(H)CompletionDate2"/>
+    </context>
+    <context name="(H)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(H)Description">
+      <DetectSpaces attribute="Priority H" context="#pop!(H)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(H)Description" attribute="Priority H" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority H"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority H"/>
+    </context>
+
+    <context name="(I)CompletionDate" attribute="Priority I" lineEndContext="#pop" fallthroughContext="#pop!(I)Description">
+      <DetectSpaces attribute="Priority I" context="#pop!(I)CompletionDate2"/>
+    </context>
+    <context name="(I)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(I)Description">
+      <DetectSpaces attribute="Priority I" context="#pop!(I)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(I)Description" attribute="Priority I" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority I"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority I"/>
+    </context>
+
+    <context name="(J)CompletionDate" attribute="Priority J" lineEndContext="#pop" fallthroughContext="#pop!(J)Description">
+      <DetectSpaces attribute="Priority J" context="#pop!(J)CompletionDate2"/>
+    </context>
+    <context name="(J)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(J)Description">
+      <DetectSpaces attribute="Priority J" context="#pop!(J)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(J)Description" attribute="Priority J" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority J"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority J"/>
+    </context>
+
+    <context name="(K)CompletionDate" attribute="Priority K" lineEndContext="#pop" fallthroughContext="#pop!(K)Description">
+      <DetectSpaces attribute="Priority K" context="#pop!(K)CompletionDate2"/>
+    </context>
+    <context name="(K)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(K)Description">
+      <DetectSpaces attribute="Priority K" context="#pop!(K)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(K)Description" attribute="Priority K" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority K"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority K"/>
+    </context>
+
+    <context name="(L)CompletionDate" attribute="Priority L" lineEndContext="#pop" fallthroughContext="#pop!(L)Description">
+      <DetectSpaces attribute="Priority L" context="#pop!(L)CompletionDate2"/>
+    </context>
+    <context name="(L)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(L)Description">
+      <DetectSpaces attribute="Priority L" context="#pop!(L)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(L)Description" attribute="Priority L" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority L"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority L"/>
+    </context>
+
+    <context name="(M)CompletionDate" attribute="Priority M" lineEndContext="#pop" fallthroughContext="#pop!(M)Description">
+      <DetectSpaces attribute="Priority M" context="#pop!(M)CompletionDate2"/>
+    </context>
+    <context name="(M)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(M)Description">
+      <DetectSpaces attribute="Priority M" context="#pop!(M)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(M)Description" attribute="Priority M" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority M"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority M"/>
+    </context>
+
+    <context name="(N)CompletionDate" attribute="Priority N" lineEndContext="#pop" fallthroughContext="#pop!(N)Description">
+      <DetectSpaces attribute="Priority N" context="#pop!(N)CompletionDate2"/>
+    </context>
+    <context name="(N)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(N)Description">
+      <DetectSpaces attribute="Priority N" context="#pop!(N)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(N)Description" attribute="Priority N" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority N"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority N"/>
+    </context>
+
+    <context name="(O)CompletionDate" attribute="Priority O" lineEndContext="#pop" fallthroughContext="#pop!(O)Description">
+      <DetectSpaces attribute="Priority O" context="#pop!(O)CompletionDate2"/>
+    </context>
+    <context name="(O)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(O)Description">
+      <DetectSpaces attribute="Priority O" context="#pop!(O)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(O)Description" attribute="Priority O" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority O"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority O"/>
+    </context>
+
+    <context name="(P)CompletionDate" attribute="Priority P" lineEndContext="#pop" fallthroughContext="#pop!(P)Description">
+      <DetectSpaces attribute="Priority P" context="#pop!(P)CompletionDate2"/>
+    </context>
+    <context name="(P)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(P)Description">
+      <DetectSpaces attribute="Priority P" context="#pop!(P)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(P)Description" attribute="Priority P" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority P"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority P"/>
+    </context>
+
+    <context name="(Q)CompletionDate" attribute="Priority Q" lineEndContext="#pop" fallthroughContext="#pop!(Q)Description">
+      <DetectSpaces attribute="Priority Q" context="#pop!(Q)CompletionDate2"/>
+    </context>
+    <context name="(Q)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(Q)Description">
+      <DetectSpaces attribute="Priority Q" context="#pop!(Q)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(Q)Description" attribute="Priority Q" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority Q"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority Q"/>
+    </context>
+
+    <context name="(R)CompletionDate" attribute="Priority R" lineEndContext="#pop" fallthroughContext="#pop!(R)Description">
+      <DetectSpaces attribute="Priority R" context="#pop!(R)CompletionDate2"/>
+    </context>
+    <context name="(R)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(R)Description">
+      <DetectSpaces attribute="Priority R" context="#pop!(R)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(R)Description" attribute="Priority R" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority R"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority R"/>
+    </context>
+
+    <context name="(S)CompletionDate" attribute="Priority S" lineEndContext="#pop" fallthroughContext="#pop!(S)Description">
+      <DetectSpaces attribute="Priority S" context="#pop!(S)CompletionDate2"/>
+    </context>
+    <context name="(S)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(S)Description">
+      <DetectSpaces attribute="Priority S" context="#pop!(S)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(S)Description" attribute="Priority S" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority S"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority S"/>
+    </context>
+
+    <context name="(T)CompletionDate" attribute="Priority T" lineEndContext="#pop" fallthroughContext="#pop!(T)Description">
+      <DetectSpaces attribute="Priority T" context="#pop!(T)CompletionDate2"/>
+    </context>
+    <context name="(T)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(T)Description">
+      <DetectSpaces attribute="Priority T" context="#pop!(T)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(T)Description" attribute="Priority T" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority T"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority T"/>
+    </context>
+
+    <context name="(U)CompletionDate" attribute="Priority U" lineEndContext="#pop" fallthroughContext="#pop!(U)Description">
+      <DetectSpaces attribute="Priority U" context="#pop!(U)CompletionDate2"/>
+    </context>
+    <context name="(U)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(U)Description">
+      <DetectSpaces attribute="Priority U" context="#pop!(U)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(U)Description" attribute="Priority U" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority U"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority U"/>
+    </context>
+
+    <context name="(V)CompletionDate" attribute="Priority V" lineEndContext="#pop" fallthroughContext="#pop!(V)Description">
+      <DetectSpaces attribute="Priority V" context="#pop!(V)CompletionDate2"/>
+    </context>
+    <context name="(V)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(V)Description">
+      <DetectSpaces attribute="Priority V" context="#pop!(V)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(V)Description" attribute="Priority V" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority V"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority V"/>
+    </context>
+
+    <context name="(W)CompletionDate" attribute="Priority W" lineEndContext="#pop" fallthroughContext="#pop!(W)Description">
+      <DetectSpaces attribute="Priority W" context="#pop!(W)CompletionDate2"/>
+    </context>
+    <context name="(W)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(W)Description">
+      <DetectSpaces attribute="Priority W" context="#pop!(W)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(W)Description" attribute="Priority W" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority W"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority W"/>
+    </context>
+
+    <context name="(X)CompletionDate" attribute="Priority X" lineEndContext="#pop" fallthroughContext="#pop!(X)Description">
+      <DetectSpaces attribute="Priority X" context="#pop!(X)CompletionDate2"/>
+    </context>
+    <context name="(X)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(X)Description">
+      <DetectSpaces attribute="Priority X" context="#pop!(X)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(X)Description" attribute="Priority X" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority X"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority X"/>
+    </context>
+
+    <context name="(Y)CompletionDate" attribute="Priority Y" lineEndContext="#pop" fallthroughContext="#pop!(Y)Description">
+      <DetectSpaces attribute="Priority Y" context="#pop!(Y)CompletionDate2"/>
+    </context>
+    <context name="(Y)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(Y)Description">
+      <DetectSpaces attribute="Priority Y" context="#pop!(Y)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(Y)Description" attribute="Priority Y" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority Y"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority Y"/>
+    </context>
+
+    <context name="(Z)CompletionDate" attribute="Priority Z" lineEndContext="#pop" fallthroughContext="#pop!(Z)Description">
+      <DetectSpaces attribute="Priority Z" context="#pop!(Z)CompletionDate2"/>
+    </context>
+    <context name="(Z)CompletionDate2" attribute="Completion Date" lineEndContext="#pop" fallthroughContext="#pop!(Z)Description">
+      <DetectSpaces attribute="Priority Z" context="#pop!(Z)Description"/>
+      <IncludeRules context="_CompletionDate"/>
+    </context>
+    <context name="(Z)Description" attribute="Priority Z" lineEndContext="#pop">
+      <DetectSpaces attribute="Priority Z"/>
+      <IncludeRules context="_Tag"/>
+      <DetectIdentifier attribute="Priority Z"/>
+    </context>
+  </contexts>
+
+  <itemDatas>
+    <itemData name="Normal" defStyleNum="dsNormal"/>
+    <itemData name="Done" defStyleNum="dsAnnotation" spellChecking="0"/>
+    <itemData name="Completion Date" defStyleNum="dsBuiltIn" spellChecking="0"/>
+    <itemData name="Creation Date" defStyleNum="dsPreprocessor" spellChecking="0"/>
+    <itemData name="Project Tag" defStyleNum="dsAttribute" spellChecking="0"/>
+    <itemData name="Context Tag" defStyleNum="dsExtension" spellChecking="0"/>
+    <itemData name="Metadata Key" defStyleNum="dsVariable" spellChecking="0"/>
+    <itemData name="Metadata Value" defStyleNum="dsString" spellChecking="0"/>
+    <itemData name="Priority A" defStyleNum="dsAlert"/>
+    <itemData name="Priority B" defStyleNum="dsWarning"/>
+    <itemData name="Priority C" defStyleNum="dsInformation"/>
+    <itemData name="Priority D" defStyleNum="dsOthers"/>
+    <itemData name="Priority E" defStyleNum="dsOthers"/>
+    <itemData name="Priority F" defStyleNum="dsOthers"/>
+    <itemData name="Priority G" defStyleNum="dsOthers"/>
+    <itemData name="Priority H" defStyleNum="dsOthers"/>
+    <itemData name="Priority I" defStyleNum="dsOthers"/>
+    <itemData name="Priority J" defStyleNum="dsOthers"/>
+    <itemData name="Priority K" defStyleNum="dsOthers"/>
+    <itemData name="Priority L" defStyleNum="dsOthers"/>
+    <itemData name="Priority M" defStyleNum="dsOthers"/>
+    <itemData name="Priority N" defStyleNum="dsOthers"/>
+    <itemData name="Priority O" defStyleNum="dsOthers"/>
+    <itemData name="Priority P" defStyleNum="dsOthers"/>
+    <itemData name="Priority Q" defStyleNum="dsOthers"/>
+    <itemData name="Priority R" defStyleNum="dsOthers"/>
+    <itemData name="Priority S" defStyleNum="dsOthers"/>
+    <itemData name="Priority T" defStyleNum="dsOthers"/>
+    <itemData name="Priority U" defStyleNum="dsOthers"/>
+    <itemData name="Priority V" defStyleNum="dsOthers"/>
+    <itemData name="Priority W" defStyleNum="dsOthers"/>
+    <itemData name="Priority X" defStyleNum="dsOthers"/>
+    <itemData name="Priority Y" defStyleNum="dsOthers"/>
+    <itemData name="Priority Z" defStyleNum="dsOthers"/>
+  </itemDatas>
+</highlighting>
+</language>
diff --git a/xml/toml.xml b/xml/toml.xml
--- a/xml/toml.xml
+++ b/xml/toml.xml
@@ -1,139 +1,183 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-	<!ENTITY more "(_\d+)*">
-	<!ENTITY int  "[+-]?(0|[1-9]\d*&more;)">
-	<!ENTITY frac "\.\d+&more;">
-	<!ENTITY exp  "[eE][+-]?\d+&more;">
-	
-	<!ENTITY offset   "[+-]\d\d:\d\d">
-	<!ENTITY time     "\d\d:\d\d:\d\d(\.\d+)?(&offset;|Z)?">
-	<!ENTITY datetime "\d\d\d\d-\d\d-\d\d(T&time;)?">
+    <!ENTITY more "(_[0-9]++)*+">
+    <!ENTITY int  "(0|[1-9][0-9]*+&more;)">
+    <!ENTITY frac "\.[0-9]+&more;">
+    <!ENTITY exp  "[eE][+-]?[0-9]+&more;">
+
+    <!ENTITY offset   "[+-][0-9][0-9]:[0-9][0-9]">
+    <!ENTITY time     "[0-9][0-9]:[0-9][0-9]:[0-9][0-9](\.[0-9]+)?">
+    <!ENTITY datetime "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]([T ]&time;(&offset;|Z)?)?|&time;">
 ]>
 <!-- https://github.com/toml-lang/toml -->
-<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="9" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
+<!-- https://toml.io/en/v1.0.0 -->
+<language
+    name="TOML"
+    section="Configuration"
+    extensions="Cargo.lock;*.toml;*.rc;*.conf;*.cfg;*.cf;*.cnf;*.ini;mirrorlist"
+    mimetype="text/x-toml;application/toml"
+    version="13"
+    kateversion="5.0"
+    author="flying-sheep@web.de"
+    license="LGPLv2+"
+    priority="-1"
+  >
 <highlighting>
-	<list name="bools">
-		<item>true</item>
-		<item>false</item>
-	</list>
-	<contexts>
-		<context attribute="Error" lineEndContext="#stay" name="Toml">
-			<DetectSpaces attribute="Whitespace"/>
-			<Detect2Chars attribute="TableHeader" context="NestedTableHeader" char="[" char1="[" endRegion="Table"/>
-			<DetectChar attribute="TableHeader" context="TableHeader" char="[" endRegion="Table"/>
-			<RegExpr    attribute="Key" context="#stay"   String="[\w-]+" firstNonSpace="true"/>
-			<DetectChar attribute="Key" context="QuotedKey" char="&quot;" firstNonSpace="true"/>
-			<DetectChar attribute="Key" context="LitQuotedKey" char="'" firstNonSpace="true"/>
-			<DetectChar attribute="Assignment" context="Value" char="="/>
-			<DetectChar char="#" attribute="Comment" context="Comment"/>
-		</context>
-		<!-- table headers -->
-		<context attribute="TableHeader" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop" name="TableHeader">
-			<IncludeRules context="TableHeaderCommon"/>
-			<DetectChar attribute="TableHeader" context="#pop" char="]" beginRegion="Table"/>
-		</context>
-		<context attribute="TableHeader" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop" name="NestedTableHeader">
-			<IncludeRules context="TableHeaderCommon"/>
-			<Detect2Chars attribute="TableHeader" context="#pop" char="]" char1="]" beginRegion="Table"/>
-		</context>
-		<context attribute="TableHeader" lineEndContext="#pop" name="TableHeaderCommon">
-			<DetectSpaces attribute="Whitespace"/>
-			<DetectChar attribute="TableHeader" context="#stay" char="."/>
-			<RegExpr    attribute="Key" context="#stay" String="[\w-]+"/>
-			<DetectChar attribute="Key" context="QuotedKey" char="&quot;"/>
-			<DetectChar attribute="Key" context="LitQuotedKey" char="'"/>
-		</context>
-		<!-- values -->
-		<context attribute="Normal Text" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Value">
-			<DetectSpaces attribute="Whitespace"/>
-			<RegExpr attribute="Date"  context="#stay" String="&datetime;"/>
-			<keyword attribute="Bool" String="bools" context="#stay"/>
-			<RegExpr attribute="Float" context="#stay" String="&int;(&frac;&exp;|&frac;|&exp;)"/>
-			<RegExpr attribute="Int"   context="#stay" String="&int;"/>
-			<StringDetect attribute="String" context="MultilineString"    String="&quot;&quot;&quot;"/>
-			<DetectChar   attribute="String" context="String"               char="&quot;"/>
-			<StringDetect attribute="String" context="LitMultilineString" String="'''"/>
-			<DetectChar   attribute="String" context="LitString"            char="'"/>
-			<DetectChar attribute="Array" context="Array" char="["/>
-			<DetectChar attribute="InlineTable" context="InlineTable" char="{"/>
-			<DetectChar char="#" attribute="Comment" context="Comment"/>
-		</context>
-		<context attribute="Comment" lineEndContext="#pop" name="Comment">
-			<DetectSpaces/>
-			<IncludeRules context="##Comments" />
-			<DetectIdentifier/>
-		</context>
-		<!-- Quoted keys and Strings -->
-		<context attribute="Key" lineEndContext="#pop" name="QuotedKey">
-			<LineContinue attribute="Escape" context="#stay"/>
-			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]|\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
-			<RegExpr attribute="Error" String="\\." context="#stay" />
-			<DetectChar attribute="Key" context="#pop" char="&quot;"/>
-		</context>
-		<context attribute="String" lineEndContext="#pop" name="String">
-			<LineContinue attribute="Escape" context="#stay"/>
-			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]|\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
-			<RegExpr attribute="Error" String="\\." context="#stay" />
-			<DetectChar attribute="String" context="#pop" char="&quot;"/>
-		</context>
-		<context attribute="String" lineEndContext="#stay" name="MultilineString">
-			<LineContinue attribute="Escape" context="#stay"/>
-			<RegExpr attribute="Escape" String="\\[btnfr&quot;\\]|\\(u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})" context="#stay" />
-			<RegExpr attribute="Error" String="\\." context="#stay" />
-			<StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;"/>
-		</context>
-		<context attribute="Key" lineEndContext="#pop" name="LitQuotedKey">
-			<DetectChar attribute="Key" context="#pop" char="'"/>
-		</context>
-		<context attribute="LitString" lineEndContext="#pop" name="LitString">
-			<DetectChar attribute="String" context="#pop" char="'"/>
-		</context>
-		<context attribute="LitString" lineEndContext="#stay" name="LitMultilineString">
-			<StringDetect attribute="String" context="#pop" String="'''"/>
-		</context>
-		<!-- Arrays -->
-		<context attribute="Array" lineEndContext="#stay" name="Array">
-			<IncludeRules context="Value" />
-			<DetectChar context="#pop" attribute="Array" char="]" />
-			<DetectChar context="#stay" attribute="NextEntry" char="," />
-		</context>
-		<context attribute="InlineTable" lineEndContext="#stay" name="InlineTable">
-			<RegExpr    attribute="Key" context="#stay"   String="[\w-]+"/>
-			<DetectChar attribute="Key" context="QuotedKey" char="&quot;"/>
-			<DetectChar attribute="Key" context="LitQuotedKey" char="'"/>
-			<DetectChar attribute="Assignment" context="Value" char="="/>
-			<DetectChar char="#" attribute="Comment" context="Comment"/>
-			<DetectChar context="#pop" attribute="InlineTable" char="}" />
-			<DetectChar context="#stay" attribute="NextEntry" char="," />
-		</context>
-	</contexts>
-	<itemDatas>
-		<itemData name="Normal Text" defStyleNum="dsNormal"/>
-		<itemData name="Key"         defStyleNum="dsDataType"/>
-		<itemData name="TableHeader" defStyleNum="dsKeyword"/>
-		<itemData name="Assignment"  defStyleNum="dsOperator"/>
-		<itemData name="Comment"     defStyleNum="dsComment"/>
-		
-		<itemData name="Date"        defStyleNum="dsBaseN"/>
-		<itemData name="Float"       defStyleNum="dsFloat"/>
-		<itemData name="Int"         defStyleNum="dsDecVal"/>
-		<itemData name="Bool"        defStyleNum="dsConstant"/>
-		<itemData name="String"      defStyleNum="dsString"/>
-		<itemData name="LitString"   defStyleNum="dsVerbatimString"/>
-		<itemData name="Escape"      defStyleNum="dsSpecialChar"/>
-		<itemData name="Array"       defStyleNum="dsOperator"/>
-		<itemData name="InlineTable" defStyleNum="dsOperator"/>
-		<itemData name="NextEntry"   defStyleNum="dsOperator"/>
-		
-		<itemData name="Whitespace"  defStyleNum="dsNormal"/>
-		<itemData name="Error"       defStyleNum="dsError"/>
-	</itemDatas>
+    <list name="bools">
+        <item>true</item>
+        <item>false</item>
+    </list>
+
+    <contexts>
+        <context attribute="Error" lineEndContext="#stay" name="Toml">
+            <DetectSpaces attribute="Whitespace"/>
+            <Detect2Chars attribute="TableHeader" context="NestedTableHeader" char="[" char1="[" endRegion="Table"/>
+            <DetectChar attribute="TableHeader" context="TableHeader" char="[" endRegion="Table"/>
+            <DetectChar attribute="Assignment" context="Value" char="="/>
+            <DetectChar char="#" attribute="Comment" context="Comment"/>
+            <IncludeRules context="FindKey"/>
+        </context>
+
+
+        <context attribute="Key" lineEndContext="#stay" name="FindKey">
+            <DetectChar attribute="Key" char="."/>
+            <RegExpr    attribute="Key" context="#stay" String="[A-Za-z0-9_-]+"/>
+            <DetectChar attribute="Key" context="QuotedKey" char="&quot;"/>
+            <DetectChar attribute="Key" context="LitQuotedKey" char="'"/>
+        </context>
+
+
+        <!-- table headers -->
+        <context attribute="TableHeader" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop" name="TableHeader">
+            <DetectChar attribute="TableHeader" context="#pop" char="]" beginRegion="Table"/>
+            <IncludeRules context="TableHeaderCommon"/>
+        </context>
+
+        <context attribute="TableHeader" fallthrough="true" fallthroughContext="#pop" lineEndContext="#pop" name="NestedTableHeader">
+            <Detect2Chars attribute="TableHeader" context="#pop" char="]" char1="]" beginRegion="Table"/>
+            <IncludeRules context="TableHeaderCommon"/>
+        </context>
+
+        <context attribute="TableHeader" lineEndContext="#pop" name="TableHeaderCommon">
+            <DetectSpaces attribute="Whitespace"/>
+            <DetectChar attribute="TableHeader" char="."/>
+            <RegExpr    attribute="TableHeader" context="#stay" String="[A-Za-z0-9_-]+"/>
+            <DetectChar attribute="TableHeader" context="QuotedKey" char="&quot;"/>
+            <DetectChar attribute="TableHeader" context="LitQuotedKey" char="'"/>
+        </context>
+
+
+        <!-- values -->
+        <context attribute="Error" lineEndContext="#pop" fallthrough="true" fallthroughContext="#pop" name="Value">
+            <DetectSpaces attribute="Whitespace"/>
+            <WordDetect attribute="Boolean true" context="#pop" String="true"/>
+            <WordDetect attribute="Boolean false" context="#pop" String="false"/>
+            <StringDetect attribute="String" context="#pop!MultilineString"    String="&quot;&quot;&quot;"/>
+            <DetectChar   attribute="String" context="#pop!String"               char="&quot;"/>
+            <StringDetect attribute="String" context="#pop!LitMultilineString" String="'''"/>
+            <DetectChar   attribute="String" context="#pop!LitString"            char="'"/>
+            <DetectChar attribute="Array" context="#pop!Array" char="["/>
+            <DetectChar attribute="InlineTable" context="#pop!InlineTable" char="{"/>
+            <RegExpr attribute="Date"  context="#pop" String="&datetime;"/>
+            <RegExpr attribute="Int"   context="#pop" String="[+-]?(0x[0-9a-fA-F]+(_[0-9a-fA-F]+)*|0o[0-7]+(_[0-7]+)*|0b[01]+(_[01]+)*|&int;(?!(\.|[eE][+-]?)[0-9]))"/>
+            <RegExpr attribute="Float" context="#pop" String="[+-]?(&int;(&frac;(&exp;)?|&exp;)|inf|nan)"/>
+        </context>
+
+        <context attribute="Comment" lineEndContext="#pop" name="Comment">
+            <DetectSpaces/>
+            <IncludeRules context="##Comments"/>
+            <DetectIdentifier/>
+        </context>
+
+
+        <!-- Quoted keys and Strings-->
+        <context attribute="Key" lineEndContext="#pop" name="QuotedKey">
+            <DetectChar attribute="Key" context="#pop" char="&quot;"/>
+            <IncludeRules context="FindEscapedChar"/>
+        </context>
+
+        <context attribute="String" lineEndContext="#pop" name="String">
+            <DetectChar attribute="String" context="#pop" char="&quot;"/>
+            <IncludeRules context="FindEscapedChar"/>
+        </context>
+
+        <context attribute="String" lineEndContext="#stay" name="MultilineString">
+            <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;&quot;&quot;"/>
+            <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;&quot;"/>
+            <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;"/>
+            <LineContinue attribute="Escape" context="#stay"/>
+            <IncludeRules context="FindEscapedChar"/>
+        </context>
+
+        <context attribute="String" lineEndContext="#pop" name="FindEscapedChar">
+            <RegExpr attribute="Escape" String="\\[btnfr&quot;\\]|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}" context="#stay"/>
+            <RegExpr attribute="Error" String="\\[uU][0-9a-fA-F]*|\\." context="#stay"/>
+        </context>
+
+        <context attribute="Key" lineEndContext="#pop" name="LitQuotedKey">
+            <DetectChar attribute="Key" context="#pop" char="'"/>
+        </context>
+
+        <context attribute="LitString" lineEndContext="#pop" name="LitString">
+            <DetectChar attribute="String" context="#pop" char="'"/>
+        </context>
+
+        <context attribute="LitString" lineEndContext="#stay" name="LitMultilineString">
+            <StringDetect attribute="String" context="#pop" String="'''''"/>
+            <StringDetect attribute="String" context="#pop" String="''''"/>
+            <StringDetect attribute="String" context="#pop" String="'''"/>
+        </context>
+
+
+        <!-- Arrays -->
+        <context attribute="Array" lineEndContext="#stay" name="Array" fallthrough="true" fallthroughContext="InArray">
+            <DetectSpaces attribute="Whitespace"/>
+            <DetectChar context="#pop" attribute="Array" char="]"/>
+            <DetectChar attribute="Comment" context="Comment" char="#"/>
+            <DetectChar context="InArray" attribute="NextEntry" char=","/>
+        </context>
+        <context attribute="Error" lineEndContext="#stay" name="InArray">
+            <DetectChar context="#pop#pop" attribute="Array" char="]"/>
+            <DetectChar context="#stay" attribute="Error" char=","/>
+            <DetectChar attribute="Comment" context="Comment" char="#"/>
+            <IncludeRules context="Value"/>
+        </context>
+
+        <context attribute="InlineTable" lineEndContext="#stay" name="InlineTable">
+            <DetectChar attribute="Assignment" context="Value" char="="/>
+            <DetectChar char="#" attribute="Comment" context="Comment"/>
+            <DetectChar context="#pop" attribute="InlineTable" char="}"/>
+            <DetectChar context="#stay" attribute="NextEntry" char=","/>
+            <IncludeRules context="FindKey"/>
+        </context>
+
+    </contexts>
+    <itemDatas>
+        <itemData name="Whitespace"    defStyleNum="dsNormal"/>
+        <itemData name="Key"           defStyleNum="dsDataType"/>
+        <itemData name="TableHeader"   defStyleNum="dsKeyword"/>
+        <itemData name="Assignment"    defStyleNum="dsOperator"/>
+        <itemData name="Comment"       defStyleNum="dsComment"/>
+
+        <itemData name="Date"          defStyleNum="dsBaseN"/>
+        <itemData name="Float"         defStyleNum="dsFloat"/>
+        <itemData name="Int"           defStyleNum="dsDecVal"/>
+        <itemData name="Boolean true"  defStyleNum="dsConstant"/>
+        <itemData name="Boolean false" defStyleNum="dsConstant"/>
+        <itemData name="String"        defStyleNum="dsString"/>
+        <itemData name="LitString"     defStyleNum="dsVerbatimString"/>
+        <itemData name="Escape"        defStyleNum="dsSpecialChar"/>
+        <itemData name="Array"         defStyleNum="dsOperator"/>
+        <itemData name="InlineTable"   defStyleNum="dsOperator"/>
+        <itemData name="NextEntry"     defStyleNum="dsOperator"/>
+
+        <itemData name="Error"         defStyleNum="dsError"/>
+    </itemDatas>
 </highlighting>
 <general>
-	<comments>
-		<comment name="singleLine" start="#" position="afterwhitespace" />
-	</comments>
+    <comments>
+        <comment name="singleLine" start="#" position="afterwhitespace"/>
+    </comments>
 </general>
 </language>
-<!-- kate: replace-tabs off; -->
diff --git a/xml/typescript.xml b/xml/typescript.xml
--- a/xml/typescript.xml
+++ b/xml/typescript.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-	<!ENTITY identifier     "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
+	<!ENTITY identifier     "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*+">
 	<!ENTITY numSuffix      "(?=n?(?:[^\w]|$))">
 	<!ENTITY objectOp       "[\?!]?">
 	<!ENTITY objectPoint    "\s*&objectOp;\.">
@@ -13,6 +13,12 @@
 	<!ENTITY functionSuffix "(?=\s*(?:&lt;(?:\{(?:[^\{\}]|\{[^\{\}]*\})*\}|\((?:[^\(\)]|\([^\(\)]*\))*\)|\[(?:[^\[\]]|\[[^\[\]]*\])*\]|'(?:\\.|[^'])*'|&quot;(?:\\.|[^&quot;])*&quot;|`(?:\\.|[^`])*`|[^&lt;&gt;]|&lt;.*&gt;)*&gt;)?\()">
 
 	<!ENTITY codeContent    "&quot;(?:[^&quot;]|\\.)*&quot;|'(?:[^']|\\.)*'|`(?:[^`]|\\.)`|/\*.*\*/|/(?:[^/\\\[]|\\.|\[(?:[^\]\\]|\\.)+\])+/">
+
+  <!-- https://tc39.es/ecma262/#sec-literals-numeric-literals -->
+  <!ENTITY DecimalIntegerLiteral "(0|[1-9][0-9]*+(_[0-9]++)*+)">
+  <!ENTITY DecimalDigits "([0-9]++(_[0-9]++)*+)">
+  <!ENTITY ExponentPart "([eE][+-]?&DecimalDigits;)">
+  <!ENTITY float "\b&DecimalIntegerLiteral;(\.&DecimalDigits;?&ExponentPart;?|&ExponentPart;)|\.&DecimalDigits;&ExponentPart;?">
 ]>
 
 <!--
@@ -61,10 +67,11 @@
 -->
 
 <language name="TypeScript"
-          version="13"
+          alternativeNames="TS"
+          version="18"
           kateversion="5.53"
           section="Scripts"
-          extensions="*.ts"
+          extensions="*.ts;*.mts;*.cts"
           priority="9"
           mimetype="text/typescript;application/typescript;text/x-typescript;application/x-typescript"
           indenter="cstyle"
@@ -242,10 +249,26 @@
 		</context>
 
 		<context name="Normal Pt1" attribute="Normal Text" lineEndContext="#stay">
+			<IncludeRules context="JSBaseSomeSymboles##JavaScript" />
+			<DetectChar context="Types" attribute="Symbol" char=":" />
+
+			<!-- Symbols & Operators -->
+			<!-- NOTE: - The brackets {}()[] are highlighted as Normal Text.
+			           - Bracket highlighting rules must be explicitly included here
+			             for the "Animate Bracket Highlighting" feature to work properly. -->
+			<DetectChar context="Object" attribute="Normal Text" char="{" beginRegion="Brace" />
+			<DetectChar context="#stay" attribute="Normal Text" char="[" beginRegion="List" />
+			<DetectChar context="NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
+			<DetectChar context="#stay" attribute="Normal Text" char="(" />
+			<DetectChar context="NoRegExp" attribute="Normal Text" char=")" />
+
 			<StringDetect context="#stay" attribute="Symbol" String="..." />
 			<IncludeRules context="FindNumbers" />
+			<DetectChar context="MemberObject" attribute="Symbol" char="." />
 			<IncludeRules context="FindStrings" />
 
+			<IncludeRules context="FindPrivateOperator##JavaScript" />
+
 			<!-- Abstract -->
 			<RegExpr context="#stay" attribute="Reserved" String="\babstract(?=\s+(?:class|interface)\b)" />
 			<!-- New -->
@@ -271,7 +294,6 @@
 			<IncludeRules context="BuiltInConstants" />
 			<!-- Objects -->
 			<RegExpr context="MemberObject" attribute="Objects" String="&identifier;(?=&objectPoint;)" />
-			<DetectChar context="MemberObject" attribute="Symbol" char="." />
 
 			<RegExpr context="Types" attribute="Module" String="\bas(?=\s)" />
 			<!-- Import -->
@@ -289,16 +311,6 @@
 			<!-- Tagged Template Literals -->
 			<RegExpr context="#stay" attribute="Function Name" String="&identifier;(?=\s*`)" />
 
-			<!-- Symbols & Operators -->
-			<!-- NOTE: - The brackets {}()[] are highlighted as Normal Text.
-			           - Bracket highlighting rules must be explicitly included here
-			             for the "Animate Bracket Highlighting" feature to work properly. -->
-			<DetectChar context="Object" attribute="Normal Text" char="{" beginRegion="Brace" />
-			<DetectChar context="#stay" attribute="Normal Text" char="[" beginRegion="List" />
-			<DetectChar context="NoRegExp" attribute="Normal Text" char="]" endRegion="List" />
-			<DetectChar context="#stay" attribute="Normal Text" char="(" />
-			<DetectChar context="NoRegExp" attribute="Normal Text" char=")" />
-
 			<Detect2Chars context="#stay" attribute="Symbol" char="?" char1="?" /> <!-- Null operator -->
 			<!-- Conditional Expressions:
 			       CASE 1:  '?' ... <identifier> ':'
@@ -308,7 +320,6 @@
 			<RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=\s*(?:(?:[^/&quot;'`\s\?:\.;,\=\}\]\)]|&codeContent;)(?:[^/&quot;'`]|&codeContent;)*)?&identifier;\s*(?:/\*.*\*/\s*)*:|(?:&amp;&amp;|\|\||\s*(?:/\*.*\*/\s*)*&identifier;)?&endLine;)" minimal="true" />
 
 			<!-- Type Parameter: Highlight types after ":" and between "<" and ">" -->
-			<DetectChar context="Types" attribute="Symbol" char=":" />
 			<RegExpr context="TypesAngleBracket" attribute="Symbol" String="&lt;(?=(?:&identifier;|[\[\{\(&lt;]).*&gt;)" />
 
 			<IncludeRules context="JSBase##JavaScript" />
@@ -375,12 +386,22 @@
 
 		<!-- Numbers -->
 		<context name="FindNumbers" attribute="Normal Text" lineEndContext="#stay">
-			<RegExpr context="NoRegExp" attribute="Hexadecimal" String="\b0[xX][\da-fA-F][\da-fA-F_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Binary" String="\b0[bB][01][01_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Float" String="(?:\b\d[\d_]*\.?|(?:\b\d[\d_]*)?\.\d[\d_]*)[eE][\+\-]?\d[\d_]*&numSuffix;|(?:\.\d[\d_]*|\b\d[\d_]*\.(?:\d[\d_]*)?)&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Octal" String="\b0[oO]?[0-7][0-7_]*&numSuffix;" />
-			<RegExpr context="NoRegExp" attribute="Decimal" String="\b\d[\d_]*&numSuffix;" />
+			<RegExpr attribute="Float" context="NoRegExp" String="&float;" />
+			<AnyChar context="Integer" String="0123456789" lookAhead="1"/>
 		</context>
+		<!-- same as JS, but with Hexadecimal instead of Hex -->
+		<context name="Integer" attribute="Normal Text" lineEndContext="#stay">
+			<RegExpr attribute="Hexadecimal" context="#pop!NumericSufix" String="\b0[xX][0-9a-fA-F]++(_[0-9a-fA-F]++)*+"/>
+			<!-- 07 is octal, 08 is decimal -->
+			<RegExpr attribute="Octal" context="#pop!NumericSufix" String="\b0([oO][0-7]++(_[0-7]++)*+|0*+[1-7][0-7]*+(_[0-7]++)*+(?!_?[89]))" />
+			<RegExpr attribute="Binary" context="#pop!NumericSufix" String="\b0[bB][01]++(_[01]++)*+" />
+			<!-- 0000_8 is invalid -->
+			<RegExpr attribute="Decimal" context="#pop!NumericSufix" String="\b0*+([1-9][0-9]*+(_[0-9]++)*+)?"/>
+		</context>
+		<context attribute="Normal Text" lineEndContext="#pop" name="NumericSufix" fallthrough="true" fallthroughContext="#pop!NoRegExp">
+			<DetectChar attribute="Normal Text" context="#pop!NoRegExp" char="n" />
+			<IncludeRules context="NumericSufixError##JavaScript" />
+		</context>
 
 		<!-- Function Name -->
 		<context name="Function" attribute="Normal Text" lineEndContext="#pop">
@@ -575,7 +596,7 @@
 			<keyword context="#pop!NoRegExp" attribute="Object Property (Built-in)" String="variable_property" />
 			<keyword context="#pop!NoRegExp" attribute="Constant" String="dom_constant" />
 
-			<RegExpr context="#stay" attribute="Normal Text" String="#(?=&identifier;)" /> <!-- Private-Named Instance Fields -->
+			<IncludeRules context="FindPrivateOperator##JavaScript" />
 			<RegExpr context="#stay" attribute="Object Member" String="&identifier;(?=&objectPoint;)" />
 			<RegExpr context="#pop!NoRegExp" attribute="Object Member" String="&identifier;" />
 			<IncludeRules context="NoRegExp" />
@@ -741,11 +762,11 @@
 
 <general>
 	<comments>
-		<comment name="singleLine" start="//" />
+		<comment name="singleLine" start="//" position="afterwhitespace" />
 		<comment name="multiLine" start="/*" end="*/" />
 	</comments>
 	<keywords casesensitive="1" additionalDeliminator="&quot;&apos;`" weakDeliminator="$" />
 </general>
 
 </language>
-<!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->
+<!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; -->
diff --git a/xml/typst.xml b/xml/typst.xml
new file mode 100644
--- /dev/null
+++ b/xml/typst.xml
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+    <!ENTITY float "(\.?[0-9]+|[0-9]+\.[0-9]*)">
+
+    <!ENTITY ident0 "[a-zA-Z_]">
+    <!ENTITY identn "[a-zA-Z0-9_\-]">
+    <!ENTITY ident "&ident0;&identn;*">
+    <!ENTITY boundl "(?&lt;!&ident0;)">
+    <!ENTITY boundr "(?!&identn;)">
+    <!ENTITY fmtbdl "(?&lt;=\W|^)">
+    <!ENTITY fmtbdr "(?=\W|$)">
+]>
+
+<!--
+    SPDX-FileCopyrightText: 2024 Katalin Rebhan <me@dblsaiko.net>
+
+    SPDX-License-Identifier: MIT
+-->
+
+<language
+    name="Typst"
+    version="1"
+    kateversion="5.79"
+    section="Markup"
+    extensions="*.typ"
+    casesensitive="1"
+    author="Katalin Rebhan &lt;me@dblsaiko.net&gt;"
+    license="MIT"
+    priority="1"
+>
+    <highlighting>
+        <list name="bool">
+            <item>true</item>
+            <item>false</item>
+        </list>
+        <contexts>
+            <context name="Markup" attribute="Normal Text" lineEndContext="#stay">
+                <IncludeRules context="Comment Rules" />
+                <RegExpr String="&fmtbdl;\*" attribute="Strong" context="Strong" />
+                <RegExpr String="&fmtbdl;_" attribute="Emphasis" context="Emphasis" />
+                <RegExpr String="```(`*)" attribute="Raw Text" context="Big Raw Text" />
+                <DetectChar char="`" attribute="Raw Text" context="Raw Text" />
+                <RegExpr String="^\s*=+.*" column="0" attribute="Heading" />
+                <RegExpr String="^\s*[-+]" column="0" attribute="List" />
+                <RegExpr String="\\(u\{[0-9A-Za-z]+\}|.?)" attribute="Special Char" />
+                <RegExpr String="https?://[0-9A-Za-z-._~:/?#\[\]@!\$&amp;'\(\)\*\+,;%=]+" attribute="URL Literal" />
+                <DetectChar char="$" attribute="Math" context="Math" beginRegion="Math" />
+                <DetectChar char="#" attribute="Code Keyword" context="Code" />
+                <RegExpr String="&lt;&ident;&gt;" attribute="Label" />
+                <RegExpr String="@&ident;" attribute="Label Reference" />
+                <!--
+                    Keep track of nested [] so we don't prematurely pop:
+
+                        #[ text containing [] ]
+                -->
+                <DetectChar char="[" context="Markup Inner []" />
+            </context>
+            <context name="Strong" attribute="Strong">
+                <RegExpr String="\*&fmtbdr;" attribute="Strong" context="#pop" />
+                <IncludeRules context="Markup" />
+            </context>
+            <context name="Emphasis" attribute="Emphasis">
+                <RegExpr String="_&fmtbdr;" attribute="Emphasis" context="#pop" />
+                <IncludeRules context="Markup" />
+            </context>
+            <context name="Raw Text" attribute="Raw Text">
+                <DetectChar char="`" attribute="Raw Text" context="#pop" />
+            </context>
+            <context name="Big Raw Text" attribute="Raw Text">
+                <StringDetect String="```%1" dynamic="true" attribute="Raw Text" context="#pop" />
+            </context>
+
+            <context name="Markup Block" attribute="Normal Text">
+                <DetectChar char="]" attribute="Operator" context="#pop" endRegion="Markup Block" />
+                <IncludeRules context="Markup" />
+            </context>
+            <context name="Markup Inner []" attribute="Normal Text">
+                <DetectChar char="]" context="#pop" />
+                <IncludeRules context="Markup" />
+            </context>
+            <context name="Markup Block Call" attribute="Normal Text">
+                <DetectChar char="]" attribute="Operator" context="#pop!Continued Expression" endRegion="Markup Block" />
+                <IncludeRules context="Markup Block" />
+            </context>
+
+            <context name="Code" attribute="Code" lineEndContext="#pop!Line Error" fallthroughContext="#pop!Line Error">
+                <!--
+                    Start of #-expression inside of a markup context. Needs
+                    special handling because we need to automatically return to
+                    the markup context at the end of the expression.
+                -->
+                <!-- Keep this synced with Nested Code below! -->
+                <DetectSpaces />
+                <IncludeRules context="Comment Rules" />
+                <WordDetect String="none" attribute="Builtin" context="#pop!Continued Expression" />
+                <WordDetect String="auto" attribute="Builtin" context="#pop!Continued Expression" />
+                <keyword String="bool" attribute="Builtin" context="#pop!Continued Expression" />
+                <RegExpr String="&float;(fr|em|pt|mm|cm|in|%)" attribute="Float" context="#pop!Continued Expression" />
+                <Float attribute="Float" context="#pop!Continued Expression" />
+                <Int attribute="Int" context="#pop!Continued Expression" />
+                <DetectChar char="&quot;" attribute="String" context="#pop!String" />
+                <RegExpr String="```(`*)" attribute="Raw Text" context="#pop!Big Raw Text" />
+                <DetectChar char="`" attribute="Raw Text" context="#pop!Raw Text" />
+                <DetectChar char="$" attribute="Math" context="#pop!Math" beginRegion="Math" />
+                <RegExpr String="&lt;&ident;&gt;" attribute="Label" context="Continued Expression" />
+                <DetectChar char="(" attribute="Operator" context="#pop!Parentheses" beginRegion="Parentheses" />
+                <DetectChar char="[" attribute="Operator" context="#pop!Markup Block" beginRegion="Markup Block" />
+                <DetectChar char="{" attribute="Operator" context="#pop!Code Block" beginRegion="Code Block" />
+                <Detect2Chars char="!" char1="=" attribute="Operator" />
+                <Detect2Chars char="&gt;" char1="=" attribute="Operator" />
+                <Detect2Chars char="&lt;" char1="=" attribute="Operator" />
+                <Detect2Chars char="+" char1="=" attribute="Operator" />
+                <Detect2Chars char="-" char1="=" attribute="Operator" />
+                <Detect2Chars char="=" char1="=" attribute="Operator" />
+                <AnyChar String="!&gt;&lt;+-=" attribute="Operator" />
+                <WordDetect String="in" attribute="Operator" />
+                <WordDetect String="import" attribute="Import" context="#pop!Import" />
+                <WordDetect String="show" attribute="Code Keyword" context="#pop!Show" />
+                <WordDetect String="set" attribute="Code Keyword" context="#pop!Set" />
+                <WordDetect String="let" attribute="Code Keyword" context="#pop!Let" />
+                <WordDetect String="if" attribute="Control Flow" context="#pop!If" />
+                <WordDetect String="else" attribute="Control Flow" />
+                <WordDetect String="while" attribute="Control Flow" context="#pop!While" />
+                <WordDetect String="for" attribute="Control Flow" context="#pop!For" />
+                <WordDetect String="break" attribute="Control Flow" />
+                <WordDetect String="continue" attribute="Control Flow" />
+                <WordDetect String="return" attribute="Control Flow" />
+                <RegExpr String="&boundl;&ident;&boundr;" context="#pop!Continued Expression" />
+            </context>
+            <context name="Nested Code" attribute="Code">
+                <!-- Keep this synced with Code above! -->
+                <DetectSpaces />
+                <IncludeRules context="Comment Rules" />
+                <WordDetect String="none" attribute="Builtin" context="Continued Expression" />
+                <WordDetect String="auto" attribute="Builtin" context="Continued Expression" />
+                <keyword String="bool" attribute="Builtin" context="Continued Expression" />
+                <RegExpr String="&float;(fr|em|pt|mm|cm|in|%)" attribute="Float" context="Continued Expression" />
+                <Float attribute="Float" context="Continued Expression" />
+                <Int attribute="Int" context="Continued Expression" />
+                <DetectChar char="&quot;" attribute="String" context="String" />
+                <RegExpr String="```(`*)" attribute="Raw Text" context="Big Raw Text" />
+                <DetectChar char="`" attribute="Raw Text" context="Raw Text" />
+                <DetectChar char="$" attribute="Math" context="Math" beginRegion="Math" />
+                <RegExpr String="&lt;&ident;&gt;" attribute="Label" context="Continued Expression" />
+                <DetectChar char="(" attribute="Operator" context="Parentheses" beginRegion="Parentheses" />
+                <DetectChar char="[" attribute="Operator" context="Markup Block" beginRegion="Markup Block" />
+                <DetectChar char="{" attribute="Operator" context="Code Block" beginRegion="Code Block" />
+                <Detect2Chars char="!" char1="=" attribute="Operator" />
+                <Detect2Chars char="&gt;" char1="=" attribute="Operator" />
+                <Detect2Chars char="&lt;" char1="=" attribute="Operator" />
+                <Detect2Chars char="+" char1="=" attribute="Operator" />
+                <Detect2Chars char="-" char1="=" attribute="Operator" />
+                <Detect2Chars char="=" char1="=" attribute="Operator" />
+                <AnyChar String="!&gt;&lt;+-=" attribute="Operator" />
+                <WordDetect String="in" attribute="Operator" />
+                <WordDetect String="import" attribute="Import" context="Import" />
+                <WordDetect String="show" attribute="Code Keyword" context="Show" />
+                <WordDetect String="set" attribute="Code Keyword" context="Set" />
+                <WordDetect String="let" attribute="Code Keyword" context="Let" />
+                <WordDetect String="if" attribute="Control Flow" context="If" />
+                <WordDetect String="else" attribute="Control Flow" />
+                <WordDetect String="while" attribute="Control Flow" context="While" />
+                <WordDetect String="for" attribute="Control Flow" context="For" />
+                <WordDetect String="break" attribute="Control Flow" />
+                <WordDetect String="continue" attribute="Control Flow" />
+                <WordDetect String="return" attribute="Control Flow" />
+                <RegExpr String="&boundl;&ident;&boundr;" context="Continued Expression" />
+            </context>
+
+            <context name="Code Block" attribute="Code">
+                <DetectChar char="}" attribute="Operator" context="#pop" endRegion="Code Block" />
+                <IncludeRules context="Nested Code" />
+            </context>
+
+            <context name="Continued Expression" attribute="Code" lineEndContext="#pop" fallthroughContext="#pop">
+                <DetectChar char="(" attribute="Operator" context="#pop!Function Call" />
+                <DetectChar char="[" attribute="Operator" context="#pop!Markup Block Call" beginRegion="Markup Block" />
+                <DetectChar char="." attribute="Operator" context="Value Access" />
+            </context>
+
+            <context name="Value Access" attribute="Code" lineEndContext="#pop" fallthroughContext="#pop!Line Error">
+                <RegExpr String="&boundl;&ident;&boundr;" context="#pop!Continued Expression" />
+            </context>
+
+            <context name="Parentheses" attribute="Code">
+                <DetectChar char=")" attribute="Operator" context="#pop!Continued Expression" endRegion="Parentheses" />
+                <DetectChar char="," attribute="Operator" />
+                <IncludeRules context="Nested Code" />
+            </context>
+            <context name="Function Call" attribute="Code">
+                <DetectChar char=":" attribute="Operator" context="Function Call - Parameter" />
+                <IncludeRules context="Parentheses" />
+            </context>
+            <context name="Function Call - Parameter" attribute="Code">
+                <DetectChar char="," attribute="Operator" context="#pop" />
+                <IncludeRules context="Code" />
+            </context>
+
+            <context name="Import" attribute="Code" lineEndContext="#pop" fallthroughContext="#pop">
+                <DetectChar char=":" attribute="Operator" context="#pop!Import 1" />
+                <IncludeRules context="Nested Code" />
+            </context>
+            <context name="Import 1" attribute="Code" fallthroughContext="#pop!Line Error">
+                <DetectSpaces />
+                <DetectChar char="*" attribute="Operator" context="#pop" />
+                <RegExpr String="&boundl;&ident;&boundr;" context="#pop!Import 2" />
+            </context>
+            <context name="Import 2" attribute="Code" lineEndContext="#pop" fallthroughContext="#pop">
+                <DetectSpaces />
+                <DetectChar char="," attribute="Operator" context="#pop!Import 1" />
+            </context>
+
+            <context name="Show" attribute="Code">
+                <DetectSpaces />
+                <DetectChar char=":" attribute="Operator" context="#pop!Code" />
+                <IncludeRules context="Nested Code" />
+            </context>
+
+            <context name="Set" attribute="Code" lineEndContext="#pop!Line Error" fallthroughContext="#pop!Line Error">
+                <DetectSpaces />
+                <RegExpr String="&boundl;&ident;&boundr;" attribute="Element" context="#pop!Set 1" />
+            </context>
+            <context name="Set 1" attribute="Code">
+                <DetectSpaces />
+                <DetectChar char="(" attribute="Operator" context="#pop!Function Call" />
+            </context>
+
+            <context name="Let" attribute="Code" fallthroughContext="#pop!Line Error">
+                <DetectSpaces />
+                <RegExpr String="&boundl;&ident;&boundr;" attribute="Element" context="#pop!Let 1" />
+            </context>
+            <context name="Let 1" attribute="Code">
+                <DetectChar char="(" attribute="Operator" context="#pop!Let 2" />
+                <IncludeRules context="Let 3" />
+            </context>
+            <context name="Let 2" attribute="Code">
+                <DetectChar char=")" attribute="Operator" context="#pop!Let 3" />
+                <IncludeRules context="Function Call" />
+            </context>
+            <context name="Let 3" attribute="Code">
+                <DetectSpaces />
+                <DetectChar char="=" attribute="Operator" context="#pop!Code" />
+            </context>
+
+            <context name="If" attribute="Code">
+                <DetectChar char="{" attribute="Operator" context="#pop!Code Block" beginRegion="Code Block" />
+                <DetectChar char="[" attribute="Operator" context="#pop!Markup Block" beginRegion="Markup Block" />
+                <IncludeRules context="Nested Code" />
+            </context>
+
+            <context name="While" attribute="Code">
+                <DetectChar char="{" attribute="Operator" context="#pop!Code Block" beginRegion="Code Block" />
+                <DetectChar char="[" attribute="Operator" context="#pop!Markup Block" beginRegion="Markup Block" />
+                <IncludeRules context="Nested Code" />
+            </context>
+
+            <context name="For" attribute="Code">
+                <DetectChar char="{" attribute="Operator" context="#pop!Code Block" beginRegion="Code Block" />
+                <DetectChar char="[" attribute="Operator" context="#pop!Markup Block" beginRegion="Markup Block" />
+                <WordDetect String="in" attribute="Control Flow" />
+                <IncludeRules context="Nested Code" />
+            </context>
+
+            <context name="String" attribute="String">
+                <RegExpr String="\\." attribute="Special Char" />
+                <DetectChar char="&quot;" attribute="String" context="#pop!Continued Expression" />
+            </context>
+
+
+            <context name="Math" attribute="Math">
+                <DetectChar char="$" attribute="Math" context="#pop" endRegion="Math" />
+                <DetectChar char="#" attribute="Code Keyword" context="Code" />
+            </context>
+
+
+            <context name="Line Error" attribute="Error" lineEndContext="#pop" />
+
+
+            <context name="Comment Rules" attribute="Normal Text" lineEndContext="#stay">
+                <Detect2Chars char="/" char1="/" attribute="Comment" context="Comment" />
+                <Detect2Chars char="/" char1="*" attribute="Comment" context="Multi-Line Comment" beginRegion="Comment" />
+            </context>
+            <context name="Comment" attribute="Comment" lineEndContext="#pop">
+                <DetectSpaces attribute="Comment"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier attribute="Comment" context="#stay" />
+            </context>
+            <context name="Multi-Line Comment" attribute="Comment" lineEndContext="#stay">
+                <Detect2Chars char="*" char1="/" attribute="Comment" context="#pop" endRegion="Comment" />
+                <IncludeRules context="Comment" />
+            </context>
+        </contexts>
+        <itemDatas>
+            <itemData name="Comment" defStyleNum="dsComment" />
+            <itemData name="Error" defStyleNum="dsError" />
+
+            <itemData name="Normal Text" defStyleNum="dsNormal" />
+            <itemData name="Heading" defStyleNum="dsFunction" bold="true" />
+            <itemData name="List" defStyleNum="dsNormal" bold="true" />
+            <itemData name="Strong" defStyleNum="dsNormal" bold="true" />
+            <itemData name="Emphasis" defStyleNum="dsNormal" italic="true" />
+            <itemData name="Raw Text" defStyleNum="dsSpecialString" />
+            <itemData name="URL Literal" defStyleNum="dsSpecialString" />
+
+            <itemData name="Code" defStyleNum="dsNormal" />
+            <itemData name="Code Keyword" defStyleNum="dsKeyword" />
+            <itemData name="Builtin" defStyleNum="dsBuiltIn" />
+            <itemData name="Int" defStyleNum="dsDecVal" />
+            <itemData name="Float" defStyleNum="dsFloat" />
+            <itemData name="String" defStyleNum="dsString" />
+            <itemData name="Special Char" defStyleNum="dsSpecialChar" />
+            <itemData name="Label" defStyleNum="dsVariable" />
+            <itemData name="Label Reference" defStyleNum="dsVariable" />
+            <itemData name="Operator" defStyleNum="dsOperator" />
+            <itemData name="Element" defStyleNum="dsVariable" />
+            <itemData name="Control Flow" defStyleNum="dsControlFlow" />
+            <itemData name="Import" defStyleNum="dsImport" />
+
+            <itemData name="Math" defStyleNum="dsSpecialString" />
+        </itemDatas>
+    </highlighting>
+    <general>
+        <comments>
+            <comment name="singleLine" start="//" />
+            <comment name="multiLine" start="/*" end="*/" region="Comment" />
+        </comments>
+        <keywords casesensitive="1" weakDeliminator="-" additionalDeliminator="#" />
+    </general>
+</language>
diff --git a/xml/verilog.xml b/xml/verilog.xml
--- a/xml/verilog.xml
+++ b/xml/verilog.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="Verilog" version="8" kateversion="5.0" section="Hardware" extensions="*.v;*.V;*.vl" mimetype="text/x-verilog-src" author="Yevgen Voronenko (ysv22@drexel.edu), Ryan Dalzell (ryan@tullyroan.com)" license="">
   <highlighting>
     <list name="keywords">
diff --git a/xml/vhdl.xml b/xml/vhdl.xml
--- a/xml/vhdl.xml
+++ b/xml/vhdl.xml
@@ -1,769 +1,1612 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd" [
-  <!ENTITY funcname "[A-Za-z_:][A-Za-z0-9_:#&#37;@-]*">
-  <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
-  <!ENTITY identifier "\b(?:[A-Za-z_][A-Za-z0-9_]*)\b|/(?:[^/]++(?://)?+)*+/">
-  <!ENTITY bos      "\b">                        <!-- bol or space following -->
-]>
-<language name="VHDL" version="13" kateversion="5.62" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
-  <highlighting>
-    <list name="keywordsToplevel">
-      <item>file</item>
-      <item>library</item>
-      <item>use</item>
-      <item>with</item>
-    </list>
-
-    <list name="keywords">
-      <item>access</item>
-      <item>after</item>
-      <item>alias</item>
-      <item>all</item>
-      <item>array</item>
-      <item>assert</item>
-      <item>assume</item>
-      <item>assume_guarantee</item>
-      <item>attribute</item>
-      <item>begin</item>
-      <item>block</item>
-      <item>body</item>
-      <item>bus</item>
-      <item>case</item>
-      <item>component</item>
-      <item>constant</item>
-      <item>context</item>
-      <item>cover</item>
-      <item>default</item>
-      <item>disconnect</item>
-      <item>downto</item>
-      <item>else</item>
-      <item>elsif</item>
-      <item>end</item>
-      <item>fairness</item>
-      <item>falling_edge</item>
-      <item>file</item>
-      <item>for</item>
-      <item>force</item>
-      <item>function</item>
-      <item>generate</item>
-      <item>generic</item>
-      <item>group</item>
-      <item>guarded</item>
-      <item>if</item>
-      <item>impure</item>
-      <item>inertial</item>
-      <item>is</item>
-      <item>label</item>
-      <item>linkage</item>
-      <item>literal</item>
-      <item>map</item>
-      <item>new</item>
-      <item>null</item>
-      <item>of</item>
-      <item>on</item>
-      <item>open</item>
-      <item>others</item>
-      <item>parameter</item>
-      <item>port</item>
-      <item>postponed</item>
-      <item>procedure</item>
-      <item>process</item>
-      <item>property</item>
-      <item>protected</item>
-      <item>pure</item>
-      <item>range</item>
-      <item>record</item>
-      <item>register</item>
-      <item>reject</item>
-      <item>release</item>
-      <item>report</item>
-      <item>rising_edge</item>
-      <item>select</item>
-      <item>sequence</item>
-      <item>severity</item>
-      <item>signal</item>
-      <item>shared</item>
-      <item>strong</item>
-      <item>subtype</item>
-      <item>then</item>
-      <item>to</item>
-      <item>transport</item>
-      <item>type</item>
-      <item>unaffected</item>
-      <item>units</item>
-      <item>until</item>
-      <item>variable</item>
-      <item>vmode</item>
-      <item>vprop</item>
-      <item>vunit</item>
-      <item>wait</item>
-      <item>when</item>
-      <item>with</item>
-      <item>note</item>
-      <item>warning</item>
-      <item>error</item>
-      <item>failure</item>
-      <item>in</item>
-      <item>inout</item>
-      <item>out</item>
-      <item>buffer</item>
-      <item>and</item>
-      <item>abs</item>
-      <item>or</item>
-      <item>xor</item>
-      <item>xnor</item>
-      <item>not</item>
-      <item>mod</item>
-      <item>nand</item>
-      <item>nor</item>
-      <item>rem</item>
-      <item>rol</item>
-      <item>ror</item>
-      <item>sla</item>
-      <item>sra</item>
-      <item>sll</item>
-      <item>srl</item>
-    </list>
-
-    <list name="controls">
-      <item>exit</item>
-      <item>next</item>
-      <item>return</item>
-    </list>
-
-    <list name="signals">
-      <item>signal</item>
-      <item>variable</item>
-      <item>constant</item>
-      <item>type</item>
-      <item>attribute</item>
-    </list>
-
-    <list name="range">
-      <item>to</item>
-      <item>downto</item>
-      <item>others</item>
-    </list>
-
-    <list name="timeunits">
-      <item>fs</item>
-      <item>ps</item>
-      <item>ns</item>
-      <item>us</item>
-      <item>ms</item>
-      <item>sec</item>
-      <item>min</item>
-      <item>hr</item>
-    </list>
-
-
-    <list name="types">
-      <item>bit</item>
-      <item>bit_vector</item>
-      <item>character</item>
-      <item>boolean</item>
-      <item>boolean_vector</item>
-      <item>integer</item>
-      <item>integer_vector</item>
-      <item>real</item>
-      <item>real_vector</item>
-      <item>time</item>
-      <item>time_vector</item>
-      <item>delay_length</item>
-      <item>string</item>
-      <item>severity_level</item>
-      <item>positive</item>
-      <item>natural</item>
-      <item>file_open_kind</item>
-      <item>file_open_status</item>
-      <item>signed</item>
-      <item>unsigned</item>
-      <item>unresolved_unsigned</item>
-      <item>unresolved_signed</item>
-      <item>line</item>
-      <item>text</item>
-      <item>side</item>
-      <item>width</item>
-      <item>std_logic</item>
-      <item>std_logic_vector</item>
-      <item>std_ulogic</item>
-      <item>std_ulogic_vector</item>
-      <item>x01</item>
-      <item>x01z</item>
-      <item>ux01</item>
-      <item>ux01z</item>
-      <item>qsim_state</item>
-      <item>qsim_state_vector</item>
-      <item>qsim_12state</item>
-      <item>qsim_12state_vector</item>
-      <item>qsim_strength</item>
-      <item>mux_bit</item>
-      <item>mux_vector</item>
-      <item>reg_bit</item>
-      <item>reg_vector</item>
-      <item>wor_bit</item>
-      <item>wor_vector</item>
-    </list>
-
-
-    <contexts>
-
-<!-- start / global environment -->
-      <context name="start" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preDeclaration"/>
-
-        <WordDetect attribute="Control" context="entity" insensitive="1" String="entity"/>
-        <WordDetect attribute="Control" context="configuration" insensitive="1" String="configuration"/>
-        <WordDetect attribute="Control" context="architecture" insensitive="1" String="architecture"/>
-        <WordDetect attribute="Control" context="package" insensitive="1" String="package"/>
-
-        <keyword attribute="Keyword" context="#stay" String="keywordsToplevel"/>
-
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-
-      <context name="package" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Control" context="#pop!packagebody" insensitive="true" String="body"/>
-        <RegExpr attribute="Name" context="package_main" beginRegion="PackageRegion1"
-                 String="(&identifier;)"/>
-      </context>
-
-      <context name="package_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="package_decl">
-        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
-                 String="&bos;end(\s+package\b)?(\s+%1)?\s*;" endRegion="EntityRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
-                    String="end" endRegion="EntityRegion1"/>
-      </context>
-
-      <context name="package_decl" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preDeclaration"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-      <!-- package body environment -->
-
-      <context name="packagebody" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
-        <IncludeRules context="blank"/>
-        <RegExpr attribute="Name" context="packagebody_main" beginRegion="PackageBodyRegion1"
-                 String="(&identifier;)"/>
-      </context>
-
-      <context name="packagebody_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="package_decl">
-        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
-                 String="&bos;end(\s+package\s+body\b)?(\s+%1)?\s*;" endRegion="EntityRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
-                    String="end" endRegion="EntityRegion1"/>
-      </context>
-
-<!--====ARCHITECTURE ===============-->
-      <context name="architecture" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="blank"/>
-        <RegExpr attribute="Name" context="arch_of" beginRegion="ArchitectureRegion1"
-                 String="(&identifier;)"/>
-      </context>
-
-      <context name="arch_of" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="arch_decl">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Keyword" context="arch_ref" insensitive="1" String="of"/>
-        <RegExpr attribute="Control" context="#pop#pop" insensitive="1" dynamic="1"
-                 String="&bos;end(\s+architecture\b)?(\s+%1)?\s*;" endRegion="ArchitectureRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="1"
-                    String="end" endRegion="ArchitectureRegion1"/>
-      </context>
-
-      <context name="arch_ref" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!arch_decl">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Keyword" context="#pop!arch_decl" insensitive="1" String="is" />
-        <RegExpr attribute="Reference" context="#pop!arch_decl" String="&identifier;"/>
-      </context>
-
-      <context name="arch_decl" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preDeclaration"/>
-        <WordDetect attribute="Control" context="#pop!parallel_stmt" insensitive="true" String="begin"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-<!--====if ===============-->
-      <context name="if_start" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="if_expr">
-        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="IfRegion1"
-                 String="&bos;end\s+if(\s+&varname;)?\s*;"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="IfRegion1"/>
-      </context>
-
-      <context name="if_expr" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <WordDetect attribute="Control" context="if_body" insensitive="true" String="then"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="if_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_decl">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Control" context="#pop#pop" insensitive="true" String="end" lookAhead="1"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="elsif"/>
-        <WordDetect attribute="Control" context="#pop#pop!sequential_stmt" insensitive="true" String="else"/>
-        <IncludeRules context="sequentialStatementKw"/>
-        <IncludeRules context="label"/>
-      </context>
-
-<!--====case ===============-->
-      <context name="case" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Keyword" context="#pop!case_stmt" insensitive="true" String="is"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="case_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="case_when">
-        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="CaseRegion1"
-                 String="&bos;end\s+case(&varname;)?\s*;"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="CaseRegion1"/>
-      </context>
-
-      <context name="case_when" attribute="Normal Text" lineEndContext="#stay">
-        <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="case_when2" beginRegion="CaseWhenRegion1"/>
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" insensitive="true" String="when"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="case_when2" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_decl">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="when" endRegion="CaseWhenRegion1"/>
-        <WordDetect attribute="Control" context="#pop#pop" insensitive="true" String="end" lookAhead="1" endRegion="CaseWhenRegion1"/>
-        <IncludeRules context="sequentialStatementKw"/>
-        <IncludeRules context="label"/>
-      </context>
-      <!-- 'when' and 'end case' are checked at the beginning of the line for better code folding -->
-
-<!--====while ===============-->
-      <context name="while" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" context="#pop!loop" insensitive="true" String="loop" beginRegion="LoopRegion1"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-<!--====loop ===============-->
-      <context name="loop" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
-        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="LoopRegion1"
-                 String="&bos;end\s+loop(&varname;)?\s*;"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="CaseRegion1"/>
-      </context>
-
-<!--====declare ===============-->
-      <context name="declare" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Redirection" context="#pop!declare_begin" insensitive="true"
-                    String="begin"/>
-        <keyword attribute="Signal" context="signal" String="signals"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="declare_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
-        <RegExpr attribute="Redirection" context="#pop" insensitive="true" endRegion="DeclareRegion1"
-                 String="&bos;end(\s+declare)?\s*;"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="ProcedureRegion1"/>
-      </context>
-
-
-<!--====ENTITY ===============-->
-<!-- entity environment -->
-      <context name="entity" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
-        <IncludeRules context="blank"/>
-        <RegExpr attribute="Name" context="entity_main" beginRegion="EntityRegion1"
-                 String="(&identifier;)"/>
-      </context>
-
-      <context name="entity_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="entity_decl">
-        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
-                 String="&bos;end(\s+entity\b)?(\s+%1)?\s*;" endRegion="EntityRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
-                    String="end" endRegion="EntityRegion1"/>
-      </context>
-
-      <context name="entity_decl" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preDeclaration"/>
-        <WordDetect attribute="Control" context="#stay" insensitive="true" String="generic"/>
-        <WordDetect attribute="Control" context="#stay" insensitive="true" String="port"/>
-        <WordDetect attribute="Keyword" context="#pop!parallel_stmt" insensitive="true" String="begin"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-<!--====Configuration ===============-->
-<!-- configuration environment -->
-      <context name="configuration" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
-        <IncludeRules context="blank"/>
-        <RegExpr attribute="Name" context="conf_of" beginRegion="ConfigurationRegion1"
-                 String="(&identifier;)"/>
-      </context>
-
-      <context name="conf_of" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="conf_is">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Keyword" context="conf_ref" insensitive="1" String="of"/>
-        <RegExpr attribute="Control" context="#pop#pop" insensitive="1" dynamic="1"
-                 String="&bos;end(\s+configuration\b)?(\s+%1)?\s*;" endRegion="ConfigurationRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="1"
-                    String="end" endRegion="ConfigurationRegion1"/>
-      </context>
-
-      <context name="conf_ref" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!conf_decl">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Keyword" context="#pop!conf_decl" insensitive="1" String="is" />
-        <RegExpr attribute="Reference" context="#pop!conf_is" String="&identifier;"/>
-      </context>
-
-      <context name="conf_is" attribute="Control" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Keyword" context="#pop!conf_decl" insensitive="1" String="is" />
-      </context>
-
-      <context name="conf_decl" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preDeclaration"/>
-        <WordDetect attribute="Control" context="conf_for" insensitive="1" String="for"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="1" lookAhead="1" String="end"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-      <context name="conf_for" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preDeclaration"/>
-        <WordDetect attribute="Control" context="conf_for" insensitive="1" String="for"/>
-        <WordDetect attribute="Control" context="conf_for_end" insensitive="1" lookAhead="1" String="end"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-      <context name="conf_for_end" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!expressionError">
-        <RegExpr attribute="Control" context="#pop#pop" insensitive="true"  String="&bos;end(\s+for\b)?\s*;"/>
-      </context>
-
-
-<!--====Basic Stuff ===============-->
-<!-- comment and spaces -->
-      <context name="blank" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <Detect2Chars attribute="Comment" context="comment" char="-" char1="-"/>
-      </context>
-
-<!-- declaration -->
-      <context name="preDeclaration" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="blank"/>
-        <AnyChar attribute="Operator" context="#stay" String="[&amp;&gt;&lt;=:+-*/|`].,"/>
-        <DetectChar attribute="Vector" context="string" char="&quot;"/>
-        <DetectChar attribute="Attribute" context="attribute" char="'"/>
-        <Int attribute="Integer" context="#stay"/>
-      </context>
-
-      <context name="postDeclaration" attribute="Normal Text" lineEndContext="#stay">
-        <WordDetect attribute="Signal" context="type" insensitive="1" String="type"/>
-        <WordDetect attribute="Control" context="function" insensitive="1" String="function"/>
-        <WordDetect attribute="Keyword" context="procedure" insensitive="1" String="procedure"/>
-        <WordDetect attribute="Keyword" context="component" insensitive="1" String="component"/>
-        <keyword attribute="Data Type" context="#stay" String="types"/>
-        <keyword attribute="Data Type" context="#stay" String="timeunits"/>
-        <keyword attribute="Signal" context="signal" String="signals"/>
-        <keyword attribute="Range" context="#stay" String="range"/>
-        <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <keyword attribute="Control" context="#stay" String="controls"/>
-        <DetectIdentifier attribute="Normal Text"/>
-      </context>
-
-<!-- label -->
-      <context name="label" attribute="Normal Text" lineEndContext="#stay">
-        <RegExpr attribute="Name" context="after_label" String="\b(?!process|constant|signal|variable)&varname;(?=\s*:(?!=))"/>
-      </context>
-
-      <context name="after_label" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar attribute="Operator" context="#pop" char=":"/>
-        <DetectSpaces attribute="Normal Text"/>
-      </context>
-
-<!-- parallel statement -->
-      <context name="parallel_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="parallel_stmt_decl">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="parallelStatementKw"/>
-        <IncludeRules context="label"/>
-      </context>
-
-      <context name="parallelStatementKw" attribute="Normal Text" lineEndContext="#stay">
-        <WordDetect attribute="Control" context="generate" insensitive="1" String="if" beginRegion="GenerateRegion1"/>
-        <WordDetect attribute="Control" context="generate" insensitive="1" String="for" beginRegion="GenerateRegion1"/>
-        <WordDetect attribute="Control" context="block" insensitive="1" String="block" beginRegion="BlockRegion1"/>
-        <WordDetect attribute="Process" context="process" insensitive="1" String="process" beginRegion="ProcessRegion1"/>
-        <WordDetect attribute="Keyword" context="#stay" insensitive="1" String="postponed"/>
-      </context>
-
-      <context name="parallel_stmt_decl" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
-        <IncludeRules context="preDeclaration"/>
-        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="generic"/>
-        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="port"/>
-        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="map"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-<!-- sequential statement -->
-      <context name="sequential_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_decl">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="sequentialStatementKw"/>
-        <IncludeRules context="label"/>
-      </context>
-
-      <context name="sequentialStatementKw" attribute="Normal Text" lineEndContext="#stay">
-        <WordDetect attribute="Control" context="if_start" insensitive="1" String="if" beginRegion="IfRegion1"/>
-        <WordDetect attribute="Control" context="case" insensitive="1" String="case" beginRegion="CaseRegion1"/>
-        <WordDetect attribute="Control" context="while" insensitive="1" String="while"/>
-        <WordDetect attribute="Control" context="while" insensitive="1" String="for"/>
-        <WordDetect attribute="Control" context="loop" insensitive="1" String="loop" beginRegion="LoopRegion1"/>
-        <WordDetect attribute="Keyword" context="declare" insensitive="1" String="declare" beginRegion="DeclareRegion1"/>
-      </context>
-
-      <context name="sequential_stmt_decl" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
-        <IncludeRules context="preDeclaration"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-<!-- if/for generate -->
-      <context name="generate" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" context="generate_stmt" insensitive="1" String="generate"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="generate_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="parallel_stmt">
-        <RegExpr attribute="Control" context="#pop#pop" insensitive="1"
-                 String="&bos;end(\s+generate\b)?(\s+&varname;)?\s*;" endRegion="GenerateRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
-                    String="end" endRegion="GenerateRegion1"/>
-      </context>
-
-<!-- block -->
-      <context name="block" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="entity_decl">
-        <RegExpr attribute="Control" context="#pop#pop" insensitive="1"
-                 String="&bos;end(\s+block\b)?(\s+&varname;)?\s*;" endRegion="BlockRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
-                    String="end" endRegion="BlockRegion1"/>
-      </context>
-
-<!-- process -->
-      <context name="process" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="process_decl">
-        <RegExpr attribute="Process" context="#pop" insensitive="1"
-                 String="&bos;end(\s+postponed)?(\s+process\b)?(\s+&varname;)?\s*;" endRegion="ProcessRegion1"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="ProcessRegion1"/>
-      </context>
-
-      <context name="process_decl" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preDeclaration"/>
-        <WordDetect attribute="Process" context="#pop!sequential_stmt" insensitive="true" String="begin"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="postDeclaration"/>
-      </context>
-
-<!-- expression -->
-      <context name="preExpression" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="blank"/>
-        <AnyChar attribute="Operator" context="#stay" String="[&amp;&gt;&lt;=:+-*/|`].,"/>
-        <DetectChar attribute="Vector" context="string" char="&quot;"/>
-        <DetectChar attribute="Attribute" context="attribute" char="'"/>
-        <Int attribute="Integer" context="#stay"/>
-      </context>
-
-      <context name="postExpression" attribute="Normal Text" lineEndContext="#stay">
-        <keyword attribute="Data Type" context="#stay" String="types"/>
-        <keyword attribute="Data Type" context="#stay" String="timeunits"/>
-        <keyword attribute="Range" context="#stay" String="range"/>
-        <keyword attribute="Keyword" context="#stay" String="keywords"/>
-        <DetectIdentifier attribute="Normal Text"/>
-      </context>
-
-<!-- expression error -->
-      <context name="expressionError" attribute="Error" lineEndContext="#stay">
-        <Detect2Chars attribute="Comment" context="comment" char="-" char1="-"/>
-        <DetectChar attribute="Error" context="#pop" char=";"/>
-      </context>
-
-<!-- other environments -->
-      <context name="comment" attribute="Comment" lineEndContext="#pop">
-        <DetectSpaces />
-        <IncludeRules context="##Comments"/>
-      </context>
-
-      <context name="string" attribute="Vector" lineEndContext="#stay">
-        <DetectChar attribute="Vector" context="#pop" char="&quot;"/>
-      </context>
-
-      <context name="attribute" attribute="Attribute" lineEndContext="#pop">
-        <DetectChar attribute="Attribute" context="quot in att" char="&quot;"/>
-        <DetectChar attribute="Attribute" context="par in att" char="("/>
-        <DetectChar attribute="Normal Text" context="#pop" char=" "/>
-        <DetectChar attribute="Attribute" context="#pop" char="'"/>
-        <AnyChar attribute="Attribute" context="#pop" String=")=&lt;&gt;;" lookAhead="true" />
-       </context>
-
-      <context name="quot in att" attribute="Attribute" lineEndContext="#stay">
-        <DetectChar attribute="Attribute" context="#pop" char="&quot;"/>
-      </context>
-      <context name="par in att" attribute="Attribute" lineEndContext="#stay">
-        <DetectChar attribute="Attribute" context="#pop" char=")"/>
-      </context>
-
-      <context name="signal" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-<!-- type -->
-      <context name="type" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Signal" context="type_is" insensitive="1" String="is"/>
-        <DetectIdentifier attribute="Normal Text"/>
-      </context>
-
-      <context name="type_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!signal">
-        <IncludeRules context="blank"/>
-        <WordDetect attribute="Keyword" context="#pop#pop!type_record" insensitive="1" String="record" beginRegion="sig"/>
-        <WordDetect attribute="Keyword" context="#pop#pop!type_range" insensitive="1" String="range"/>
-      </context>
-
-<!-- type range -->
-      <context name="type_range" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" context="type_range_units" insensitive="1" String="units" beginRegion="UnitRegion1"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="type_range_units" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_range_units_decl">
-        <RegExpr attribute="Control" context="#pop#pop" insensitive="1"
-                 String="&bos;end\s+units(\s+&varname;)?\s*;" endRegion="UnitRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
-                    String="end" endRegion="GenerateRegion1"/>
-      </context>
-
-      <context name="type_range_units_decl" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-<!-- type record -->
-      <context name="type_record" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_record_body">
-        <IncludeRules context="blank"/>
-        <RegExpr attribute="Keyword" context="#pop" insensitive="1"
-                 String="&bos;end\s+record;" endRegion="sig"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="sig"/>
-      </context>
-
-      <context name="type_record_body" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="blank"/>
-        <DetectChar attribute="Normal Text" context="#stay" char=";"/>
-        <DetectChar attribute="Operator" context="#stay" char=":"/>
-        <WordDetect attribute="Keyword" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <DetectIdentifier attribute="Normal Text"/>
-      </context>
-
-<!-- function -->
-      <context name="function" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="function_name">
-        <IncludeRules context="blank"/>
-        <DetectIdentifier attribute="Name" context="function_name"/>
-      </context>
-
-      <context name="function_name" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" context="function_return" insensitive="true" String="return"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="function_return" attribute="Normal Text" lineEndContext="#stay">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Normal Text" context="#pop#pop#pop" char=";"/>
-        <WordDetect attribute="Keyword" context="#pop#pop#pop!function_is" insensitive="1" String="is" beginRegion="FunctionRegion1"/>
-        <keyword attribute="Data Type" context="#stay" String="types"/>
-      </context>
-
-      <context name="function_is" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Redirection" context="#pop!function_begin" insensitive="true"
-                    String="begin" beginRegion="FunctionRegion1"/>
-        <keyword attribute="Signal" context="signal" String="signals"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="function_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
-        <RegExpr attribute="Redirection" context="#pop" insensitive="1"
-                 String="&bos;end(\s+function\b)?(\s+(&varname;|&quot;[^&quot;]+&quot;))?\s*;" endRegion="FunctionRegion1"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="FunctionRegion1"/>
-      </context>
-
-<!-- procedure -->
-      <context name="procedure" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="blank"/>
-        <DetectIdentifier attribute="Name" context="procedure_name"/>
-      </context>
-
-      <context name="procedure_name" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Control" context="#pop#pop!procedure_is" insensitive="true" String="is"/>
-        <keyword attribute="Signal" context="signal" String="signals"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="procedure_is" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Redirection" context="#pop!procedure_begin" insensitive="true"
-                    String="begin" endRegion="ProcedureRegion1"/>
-        <keyword attribute="Signal" context="signal" String="signals"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-      <context name="procedure_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
-        <RegExpr attribute="Redirection" context="#pop" insensitive="1"
-                 String="&bos;end(\s+procedure)?(\s+&varname;)?\s*;" endRegion="ProcedureRegion1"/>
-        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
-                    String="end" endRegion="ProcedureRegion1"/>
-      </context>
-
-<!-- component -->
-      <context name="component" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
-        <IncludeRules context="blank"/>
-        <RegExpr attribute="Name" context="component_main" beginRegion="ComponentRegion1"
-                 String="(&identifier;)"/>
-      </context>
-
-      <context name="component_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="component_body">
-        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
-                 String="&bos;end\s+component\b(\s+%1)?\s*;" endRegion="ComponentRegion1"/>
-        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
-                    String="end" endRegion="ComponentRegion1"/>
-      </context>
-
-      <context name="component_body" attribute="Normal Text" lineEndContext="#stay">
-        <IncludeRules context="preExpression"/>
-        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="generic"/>
-        <WordDetect attribute="Keyword" context="#stay" insensitive="true" String="port"/>
-        <WordDetect attribute="Control" context="#pop" insensitive="true" String="end" lookAhead="1"/>
-        <IncludeRules context="postExpression"/>
-      </context>
-
-    </contexts>
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsNormal"/>
-      <itemData name="Keyword" defStyleNum="dsKeyword"/>
-      <itemData name="Data Type" defStyleNum="dsDataType"/>
-      <itemData name="Comment" defStyleNum="dsComment"/>
-      <itemData name="Integer" defStyleNum="dsDecVal"/>
+<!DOCTYPE language [
+  <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
+  <!ENTITY identifier "(?:\b&varname;\b|\\[^\\]*\\)">
+  <!ENTITY designator "(?:\b&varname;\b|\\[^\\]*\\|&quot;[^&quot;]*&quot;)">
+  <!ENTITY label    "\b&varname;(?=\s*:(?!=))">
+  <!ENTITY bos      "\b">                        <!-- bol or space following -->
+]>
+<language name="VHDL" version="16" kateversion="5.62" section="Hardware" extensions="*.vhdl;*.vhd" mimetype="text/x-vhdl" author="Rocky Scaletta (rocky@purdue.edu), Stefan Endrullis (stefan@endrullis.de), Florent Ouchet (outchy@users.sourceforge.net), Chris Higgs (chiggs.99@gmail.com), Jan Michel (jan@mueschelsoft.de), Luigi Calligaris (luigi.calligaris@stfc.ac.uk)">
+  <!-- BNF: https://github.com/antlr/grammars-v4/blob/master/vhdl/vhdl.g4 (VHDL-2005) -->
+  <!-- Based on VHDL-2008 -->
+  <highlighting>
+    <list name="keywordsToplevel">
+      <item>file</item>
+      <item>library</item>
+      <item>use</item>
+      <item>with</item>
+    </list>
+
+    <list name="keywords">
+      <item>access</item>
+      <item>after</item>
+      <item>alias</item>
+      <item>all</item>
+      <item>array</item>
+      <item>assert</item>
+      <item>assume</item>
+      <item>assume_guarantee</item>
+      <item>attribute</item>
+      <item>begin</item>
+      <item>block</item>
+      <item>body</item>
+      <item>bus</item>
+      <item>case</item>
+      <item>component</item>
+      <item>constant</item>
+      <item>context</item>
+      <item>cover</item>
+      <item>default</item>
+      <item>disconnect</item>
+      <item>downto</item>
+      <item>else</item>
+      <item>elsif</item>
+      <item>end</item>
+      <item>fairness</item>
+      <item>falling_edge</item>
+      <item>false</item>
+      <item>file</item>
+      <item>for</item>
+      <item>force</item>
+      <item>function</item>
+      <item>generate</item>
+      <item>generic</item>
+      <item>group</item>
+      <item>guarded</item>
+      <item>if</item>
+      <item>impure</item>
+      <item>inertial</item>
+      <item>is</item>
+      <item>label</item>
+      <item>linkage</item>
+      <item>literal</item>
+      <item>map</item>
+      <item>new</item>
+      <item>null</item>
+      <item>of</item>
+      <item>on</item>
+      <item>open</item>
+      <item>others</item>
+      <item>package</item>
+      <item>parameter</item>
+      <item>port</item>
+      <item>postponed</item>
+      <item>procedure</item>
+      <item>process</item>
+      <item>property</item>
+      <item>protected</item>
+      <item>pure</item>
+      <item>range</item>
+      <item>record</item>
+      <item>register</item>
+      <item>reject</item>
+      <item>release</item>
+      <item>report</item>
+      <item>rising_edge</item>
+      <item>select</item>
+      <item>sequence</item>
+      <item>severity</item>
+      <item>signal</item>
+      <item>shared</item>
+      <item>strong</item>
+      <item>subtype</item>
+      <item>then</item>
+      <item>to</item>
+      <item>transport</item>
+      <item>true</item>
+      <item>type</item>
+      <item>use</item>
+      <item>unaffected</item>
+      <item>units</item>
+      <item>until</item>
+      <item>variable</item>
+      <item>view</item>
+      <item>vmode</item>
+      <item>vprop</item>
+      <item>vunit</item>
+      <item>wait</item>
+      <item>when</item>
+      <item>with</item>
+      <item>note</item>
+      <item>warning</item>
+      <item>error</item>
+      <item>failure</item>
+      <item>in</item>
+      <item>inout</item>
+      <item>out</item>
+      <item>buffer</item>
+      <item>and</item>
+      <item>abs</item>
+      <item>or</item>
+      <item>xor</item>
+      <item>xnor</item>
+      <item>not</item>
+      <item>mod</item>
+      <item>nand</item>
+      <item>nor</item>
+      <item>rem</item>
+      <item>rol</item>
+      <item>ror</item>
+      <item>sla</item>
+      <item>sra</item>
+      <item>sll</item>
+      <item>srl</item>
+    </list>
+
+    <list name="controls">
+      <item>exit</item>
+      <item>next</item>
+      <item>return</item>
+    </list>
+
+    <list name="signals">
+      <item>signal</item>
+      <item>variable</item>
+      <item>constant</item>
+      <item>type</item>
+      <item>attribute</item>
+    </list>
+
+    <list name="range">
+      <item>to</item>
+      <item>downto</item>
+      <item>others</item>
+    </list>
+
+    <list name="timeunits">
+      <item>fs</item>
+      <item>ps</item>
+      <item>ns</item>
+      <item>us</item>
+      <item>ms</item>
+      <item>sec</item>
+      <item>min</item>
+      <item>hr</item>
+    </list>
+
+    <list name="types">
+      <item>bit</item>
+      <item>bit_vector</item>
+      <item>character</item>
+      <item>boolean</item>
+      <item>boolean_vector</item>
+      <item>integer</item>
+      <item>integer_vector</item>
+      <item>real</item>
+      <item>real_vector</item>
+      <item>time</item>
+      <item>time_vector</item>
+      <item>delay_length</item>
+      <item>string</item>
+      <item>severity_level</item>
+      <item>positive</item>
+      <item>natural</item>
+      <item>file_open_kind</item>
+      <item>file_open_status</item>
+      <item>signed</item>
+      <item>unsigned</item>
+      <item>unresolved_unsigned</item>
+      <item>unresolved_signed</item>
+      <item>line</item>
+      <item>text</item>
+      <item>side</item>
+      <item>width</item>
+      <item>std_logic</item>
+      <item>std_logic_vector</item>
+      <item>std_ulogic</item>
+      <item>std_ulogic_vector</item>
+      <item>x01</item>
+      <item>x01z</item>
+      <item>ux01</item>
+      <item>ux01z</item>
+      <item>qsim_state</item>
+      <item>qsim_state_vector</item>
+      <item>qsim_12state</item>
+      <item>qsim_12state_vector</item>
+      <item>qsim_strength</item>
+      <item>mux_bit</item>
+      <item>mux_vector</item>
+      <item>reg_bit</item>
+      <item>reg_vector</item>
+      <item>wor_bit</item>
+      <item>wor_vector</item>
+    </list>
+
+    <list name="instantiated">
+      <item>configuration</item>
+      <item>component</item>
+      <item>entity</item>
+    </list>
+
+    <contexts>
+
+
+<!-- start / global environment -->
+      <context name="start" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+
+        <WordDetect attribute="Control" context="entity" insensitive="1" String="entity"/>
+        <WordDetect attribute="Control" context="configuration" insensitive="1" String="configuration"/>
+        <WordDetect attribute="Control" context="architecture" insensitive="1" String="architecture"/>
+        <WordDetect attribute="Control" context="package" insensitive="1" String="package"/>
+        <WordDetect attribute="Keyword" context="context" insensitive="1" String="context"/>
+
+        <keyword attribute="Keyword" context="#stay" String="keywordsToplevel"/>
+
+        <WordDetect attribute="Signal" context="type" insensitive="1" String="type"/>
+        <WordDetect attribute="Redirection" context="function" insensitive="1" String="function"/>
+        <WordDetect attribute="Keyword" context="procedure" insensitive="1" String="procedure" beginRegion="ProcedureRegion1"/>
+        <WordDetect attribute="Control" context="component" insensitive="1" String="component"/>
+        <WordDetect attribute="Keyword" context="view" insensitive="1" String="view" beginRegion="sig"/>
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <keyword attribute="Data Type" context="#stay" String="timeunits"/>
+        <keyword attribute="Range" context="#stay" String="range"/>
+        <keyword attribute="Signal" context="signal" String="signals"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+        <keyword attribute="Control" context="#stay" String="controls"/>
+        <DetectIdentifier attribute="Normal Text"/>
+      </context>
+
+<!--
+package ::=
+    *package* identifier *is* *new* name
+        [ *generic* *map* ( association_list ) ] ;
+
+  | *package* identifier *is*
+        [ *generic* ( interface_list ) ;
+        [ *generic* *map* ( association_list ) ; ] ]
+        { package_declarative_item }
+    *end* [ *package* ] [ identifier ] ;
+
+  | *package *body* identifier *is*
+        { process_declarative_item }
+    *end* [ *package* *body* ] [ identifier ] ;
+-->
+      <context name="package" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Control" context="#pop!packagebody" insensitive="true" String="body"/>
+        <RegExpr attribute="Name" context="package_main" beginRegion="PackageRegion1"
+                 String="(&identifier;)"/>
+      </context>
+
+      <context name="package_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="package_is">
+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
+                 String="&bos;end(\s+package\b)?(\s+%1)?\s*;" endRegion="PackageRegion1"/>
+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
+                    String="end" endRegion="PackageRegion1"/>
+      </context>
+
+      <context name="package_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!package_decl">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" insensitive="1" String="is"/>
+        <WordDetect attribute="Keyword" insensitive="1" String="new" context="#pop#pop#pop!package_is_new"/>
+      </context>
+
+      <context name="package_is_new" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!package_is_new_main">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="pop_end"/>
+        <DetectIdentifier attribute="Name" context="#pop!package_is_new_main"/>
+        <RangeDetect attribute="Name" context="#pop!package_is_new_main" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Name" context="#pop!package_is_new_main" char="\" char1="\"/>
+      </context>
+
+      <context name="package_is_new_main" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="PackageRegion1"/>
+        <DetectChar attribute="Operator" char="."/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="find_instantiated_map"/>
+      </context>
+
+      <context name="package_decl" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!package_declarative_list">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" char=";"/>
+        <IncludeRules context="enclosed_interface_list"/>
+        <IncludeRules context="find_instantiated_map"/>
+        <WordDetect attribute="Control" insensitive="true" String="generic"/>
+      </context>
+
+      <context name="package_declarative_list" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="package_declarative_start_expr"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+      <!-- package body environment -->
+
+      <context name="packagebody" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="packagebody_main" beginRegion="PackageBodyRegion1"
+                 String="(&identifier;)"/>
+      </context>
+
+      <context name="packagebody_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="packagebody_is">
+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
+                 String="&bos;end(\s+package\s+body\b)?(\s+%1)?\s*;" endRegion="PackageBodyRegion1"/>
+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
+                    String="end" endRegion="PackageBodyRegion1"/>
+      </context>
+
+      <context name="packagebody_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!package_declarative_list">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#pop!package_declarative_list" insensitive="1" String="is"/>
+      </context>
+
+<!--
+architecture ::=
+    *architecture* identifier *of* name *is*
+        { block_declarative_item }
+    *begin*
+        { concurrent_statement }
+    *end* [ *architecture* ] [ identifier ] ;
+-->
+      <context name="architecture" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="arch_end" beginRegion="ArchitectureRegion1"
+                 String="(&identifier;)"/>
+      </context>
+
+      <context name="arch_end" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="arch_of">
+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1" dynamic="1"
+                 String="&bos;end(\s+architecture\b)?(\s+%1)?\s*;" endRegion="ArchitectureRegion1"/>
+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="1"
+                    String="end" endRegion="ArchitectureRegion1"/>
+      </context>
+
+      <context name="arch_of" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!block_declarative_stmt">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#pop!arch_ref" insensitive="1" String="of"/>
+      </context>
+
+      <context name="arch_ref" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!block_declarative_stmt">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#pop!block_declarative_stmt" insensitive="1" String="is" />
+        <IncludeRules context="reference"/>
+      </context>
+
+      <context name="reference" attribute="Normal Text" lineEndContext="#stay">
+        <DetectIdentifier attribute="Reference"/>
+        <RangeDetect attribute="Reference" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Reference" char="\" char1="\"/>
+        <DetectChar attribute="Reference" char="."/>
+      </context>
+
+<!-- { block_declarative_item } -->
+      <context name="block_declarative_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="block_declarative_start_expr"/>
+        <WordDetect attribute="Control" context="#pop!concurrent_stmt" insensitive="1" String="begin"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+      <context name="block_declarative_start_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="package_declarative_start_expr"/>
+        <WordDetect attribute="Control" context="for_block_decl" insensitive="1" String="for" beginRegion="LoopRegion1"/>
+      </context>
+
+      <context name="package_declarative_start_expr" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Control" context="component" insensitive="1" String="component"/>
+        <IncludeRules context="process_declarative_start_expr"/>
+      </context>
+
+      <context name="process_declarative_start_expr" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Control" context="package" insensitive="1" String="package"/>
+        <WordDetect attribute="Signal" context="type" insensitive="1" String="type"/>
+        <WordDetect attribute="Redirection" context="function" insensitive="1" String="function"/>
+        <WordDetect attribute="Keyword" context="procedure" insensitive="1" String="procedure" beginRegion="ProcedureRegion1"/>
+        <!-- *shared* *variable* ... -->
+        <WordDetect attribute="Keyword" insensitive="1" String="shared"/>
+        <!-- *impure* *function* ... -->
+        <WordDetect attribute="Keyword" insensitive="1" String="impure"/>
+        <!-- *pure* *function* ... -->
+        <WordDetect attribute="Keyword" insensitive="1" String="pure"/>
+        <WordDetect attribute="Keyword" context="view" insensitive="1" String="view" beginRegion="sig"/>
+        <keyword attribute="Signal" context="signal" String="signals"/>
+      </context>
+
+      <context name="start_simple_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="pop_end"/>
+        <keyword attribute="Keyword" context="sequential_stmt_expr" String="keywords"/>
+        <DetectIdentifier attribute="Normal Text" context="sequential_stmt_expr"/>
+      </context>
+
+      <context name="start_simple_expr_then_pop" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="pop_end"/>
+        <keyword attribute="Keyword" context="#pop!sequential_stmt_expr" String="keywords"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop!sequential_stmt_expr"/>
+      </context>
+
+<!-- { concurrent_statement } -->
+      <context name="concurrent_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="concurrent_stmt_item">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="concurrent_label"/>
+      </context>
+
+      <context name="concurrent_label" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Name" context="concurrent_stmt_label" String="\b(?!(process|constant|signal|variable)\b)&label;"/>
+      </context>
+
+      <context name="concurrent_stmt_label" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Operator" context="#pop!concurrent_stmt_labelized_item" char=":"/>
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <context name="concurrent_stmt_labelized_item" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Control" context="#pop!case_generate" insensitive="1" String="case" beginRegion="CaseRegion1"/>
+        <WordDetect attribute="Control" context="#pop!for_generate" insensitive="1" String="for" beginRegion="LoopRegion1"/>
+        <WordDetect attribute="Control" context="#pop!if_generate" insensitive="1" String="if" beginRegion="IfRegion1"/>
+        <keyword attribute="Keyword" context="#pop!instantiated_unit" String="instantiated"/>
+        <IncludeRules context="concurrent_stmt_item_start"/>
+        <IncludeRules context="instantiated_unit_name"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop!sequential_stmt_expr"/>
+      </context>
+
+      <context name="concurrent_stmt_item" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="concurrent_stmt_item_start"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop!sequential_stmt_expr"/>
+      </context>
+
+      <context name="concurrent_stmt_item_start" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Keyword" context="#stay" insensitive="1" String="postponed"/>
+        <WordDetect attribute="Control" context="#pop!package" insensitive="1" String="package"/>
+        <WordDetect attribute="Signal" context="#pop!type" insensitive="1" String="type"/>
+        <WordDetect attribute="Redirection" context="#pop!function" insensitive="1" String="function"/>
+        <WordDetect attribute="Keyword" context="#pop!procedure" insensitive="1" String="procedure" beginRegion="ProcedureRegion1"/>
+        <WordDetect attribute="Process" context="#pop!process" insensitive="1" String="process" beginRegion="ProcessRegion1"/>
+        <WordDetect attribute="Control" context="#pop!block" insensitive="1" String="block" beginRegion="BlockRegion1"/>
+        <WordDetect attribute="Keyword" context="#pop!view" insensitive="1" String="view"/>
+        <keyword attribute="Signal" context="#pop!signal" String="signals" beginRegion="sig"/>
+        <IncludeRules context="sequential_stmt_item_start"/>
+        <keyword attribute="Keyword" context="#pop!sequential_stmt_expr" String="keywords"/>
+      </context>
+
+<!--
+block_declarative_item_for ::=
+    *for* instantiation_list : name
+        [ *use* entity_aspect ]
+        [ generic_map_aspect ]
+        [ port_map_aspect ] ;
+    [ block_declarative_item_for_end ]
+
+block_declarative_item_for ::=
+        [ *use* *vunit* name_list ;
+          { *use* *vunit* name_list ; } ]
+      *end* *for* ;
+    | *end* *for* ;
+-->
+      <context name="for_block_decl" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop!for_block_unit" char=";" endRegion="InstanceRegion1"/>
+        <WordDetect context="#pop!expressionError" insensitive="1" String="end"/>
+        <IncludeRules context="find_instantiated_map"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="for_block_unit" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!for_block_end_region">
+        <IncludeRules context="blank"/>
+        <WordDetect context="sequential_stmt_expr" insensitive="1" String="use"/>
+        <WordDetect context="for_block_end" insensitive="1" String="end"/>
+      </context>
+
+      <context name="for_block_end" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1"
+                 String="&bos;end\s+for\s*;" endRegion="LoopRegion1"/>
+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="1"
+                    String="end" endRegion="LoopRegion1"/>
+      </context>
+
+      <context name="for_block_end_region" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr context="#pop" String="." lookAhead="1" endRegion="LoopRegion1"/>
+      </context>
+
+<!--
+instantiated ::=
+    instantiated_unit
+    instantiated_unit_decl
+
+instantiated_unit ::=
+      [ *component* ] name
+    | *entity* name [ ( identifier ) ]
+    | *configuration* name
+
+instantiated_unit_decl ::=
+    [ generic_map_aspect ] [ port_map_aspect ] ;
+
+port_map_aspect ::=
+    *port* *map* ( association_list )
+
+generic_map_aspect ::=
+    *generic* *map* ( association_list )
+-->
+      <context name="instantiated_unit" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!instantiated_unit_decl">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="instantiated_unit_name"/>
+      </context>
+
+      <context name="instantiated_unit_name" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Reference" context="#pop!instantiated_unit_decl" String="&varname;(\s*\.\s*&varname;)?" beginRegion="InstanceRegion1"/>
+      </context>
+
+      <context name="instantiated_unit_decl" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!end_instance_region">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=";" endRegion="InstanceRegion1"/>
+        <!-- *entity* name ( identifier ) -->
+        <!--               ^_____________ -->
+        <DetectChar attribute="Normal Text" context="instantiated_unit_identifier" char="("/>
+        <IncludeRules context="find_instantiated_map"/>
+      </context>
+
+      <context name="find_instantiated_map" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Keyword" context="instance_map_start" insensitive="true" String="&bos;(port|generic)\s+map\b\s*"/>
+      </context>
+
+      <context name="instantiated_unit_identifier" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!end_instance_region">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Error" context="#pop" char=")"/>
+        <RegExpr attribute="Normal Text" context="#pop!instantiated_unit_identifier_end" String="&identifier;"/>
+      </context>
+      <context name="instantiated_unit_identifier_end" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!end_instance_region">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+      </context>
+
+      <context name="end_instance_region" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect context="#pop" insensitive="1" String="end" lookAhead="1" endRegion="InstanceRegion1"/>
+        <DetectIdentifier context="#pop" lookAhead="1" endRegion="InstanceRegion1"/>
+        <RegExpr context="#pop" String="." lookAhead="1" endRegion="InstanceRegion1"/>
+      </context>
+
+      <context name="instance_map_start" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" context="#pop!instance_map" char="(" beginRegion="InstanceMapRegion"/>
+      </context>
+
+      <!-- Inside a port or generic map -->
+      <context name="instance_map" attribute="Normal Text" lineEndContext="#stay">
+        <AnyChar attribute="Error" context="#stay" String="&lt;;:"/>
+        <IncludeRules context="preExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")" endRegion="InstanceMapRegion"/>
+        <IncludeRules context="enclosed_association_list"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+<!--
+if ::=
+    *if* expression *then*
+        { sequential_statement }
+    { *elsif* expression *then*
+        { sequential_statement } }
+    [ *else*
+        { sequential_statement } ]
+    *end* *if* [ label ] ;
+-->
+      <context name="if_start" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="if_expr">
+        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="IfRegion1"
+                 String="&bos;end\s+if(\s+&varname;)?\s*;"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="IfRegion1"/>
+      </context>
+
+      <context name="if_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <WordDetect attribute="Control" context="if_body" insensitive="true" String="then"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="if_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_item">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Control" context="#pop" insensitive="true" String="elsif"/>
+        <WordDetect attribute="Control" context="#pop#pop!sequential_stmt" insensitive="true" String="else"/>
+        <WordDetect attribute="Control" context="#pop#pop" insensitive="true" String="end" lookAhead="1"/>
+        <IncludeRules context="sequential_label"/>
+      </context>
+
+<!--
+case ::=
+    *case* [ ? ] expression *is*
+        *when* choices => { sequential_statement }
+        { *when* choices => { sequential_statement } }
+    *end* *case* [ ? ] [ label ] ;
+-->
+      <context name="case" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="case_expr">
+        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="CaseRegion1"
+                 String="&bos;end\s+case(\s*[?])?(?:\s*\b&varname;)?\s*;"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="CaseRegion1"/>
+      </context>
+
+      <context name="case_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <WordDetect attribute="Keyword" context="#pop!case_is" insensitive="true" String="is"/>
+        <DetectChar char=";" attribute="Normal Text" context="#pop!case_body" beginRegion="CaseWhenRegion1"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="case_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!case_when">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Control" context="#pop!case_when" insensitive="true" String="when"/>
+      </context>
+
+      <context name="case_when" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="#pop!case_body" beginRegion="CaseWhenRegion1"/>
+        <IncludeRules context="preExpression"/>
+        <DetectChar char=";" attribute="Normal Text" context="#pop!case_body" beginRegion="CaseWhenRegion1"/>
+        <IncludeRules context="case_when_post_expr"/>
+      </context>
+
+      <context name="case_when_post_expr" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Keyword" insensitive="1" String="others"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="keywordExpression"/>
+        <DetectIdentifier attribute="Name"/>
+      </context>
+
+      <context name="case_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_item">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Control" context="#pop!case_when" insensitive="1" String="when" endRegion="CaseWhenRegion1"/>
+        <WordDetect context="#pop" insensitive="1" String="end" lookAhead="1" endRegion="CaseWhenRegion1"/>
+        <IncludeRules context="sequential_label"/>
+      </context>
+      <!-- 'when' and 'end case' are checked at the beginning of the line for better code folding -->
+
+<!--
+while ::=
+    *while* expression *loop*
+        { sequential_statement }
+    *end* *loop* [ label ] ;
+
+for ::=
+    *for* identifier *in* discrete_range *loop*
+        { sequential_statement }
+    *end* *loop* [ label ] ;
+-->
+      <context name="while" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <WordDetect attribute="Control" context="#pop!loop" insensitive="true" String="loop" beginRegion="LoopRegion1"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+<!--
+loop ::=
+    *loop*
+        { sequential_statement }
+    *end* *loop* [ label ] ;
+-->
+      <context name="loop" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
+        <RegExpr attribute="Control" context="#pop" insensitive="true" endRegion="LoopRegion1"
+                 String="&bos;end\s+loop(\s+&varname;)?\s*;"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="LoopRegion1"/>
+      </context>
+
+<!--====declare ===============-->
+      <context name="declare" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="block_body">
+        <RegExpr attribute="Keyword" context="#pop" insensitive="true" endRegion="DeclareRegion1"
+                 String="&bos;end(\s+declare)?\s*;"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="DeclareRegion1"/>
+      </context>
+
+<!--
+entity ::=
+    *entity* identifier *is*
+        [ entity_header ]
+        { entity_declarative_item }
+    [ *begin*
+        { entity_statement } ]
+    *end* [ *entity* ] [ identifier ] ;
+
+entity_header ::=
+    [ *generic* ( interface_list ) ; ]
+    [ *port* ( interface_list ) ; ]
+-->
+      <context name="entity" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="entity_main" beginRegion="EntityRegion1"
+                 String="(&identifier;)"/>
+      </context>
+
+      <context name="entity_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="entity_header">
+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
+                 String="&bos;end(\s+entity)?(\s+%1)?\s*;" endRegion="EntityRegion1"/>
+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
+                    String="end" endRegion="EntityRegion1"/>
+      </context>
+
+      <context name="entity_header" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!entity_decl">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="enclosed_interface_list"/>
+        <DetectChar attribute="Normal Text" char=";"/>
+        <WordDetect attribute="Control" insensitive="true" String="generic"/>
+        <WordDetect attribute="Control" insensitive="true" String="port"/>
+        <WordDetect attribute="Keyword" insensitive="true" String="is"/>
+      </context>
+
+      <context name="entity_decl" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="process_declarative_start_expr"/>
+        <WordDetect attribute="Keyword" context="#pop!entity_stmt" insensitive="1" String="begin"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+      <context name="entity_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="entity_stmt_item">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="pop_end"/>
+        <RegExpr attribute="Name" context="entity_stmt_label" String="&label;"/>
+      </context>
+
+      <context name="entity_stmt_label" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Operator" context="#pop!entity_stmt_item" char=":"/>
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <context name="entity_stmt_item" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#stay" insensitive="1" String="postponed"/>
+        <WordDetect attribute="Process" context="#pop!process" insensitive="1" String="process" beginRegion="ProcessRegion1"/>
+        <IncludeRules context="start_simple_expr_then_pop"/>
+      </context>
+
+<!--
+configuration ::=
+    *configuration* identifier *of* name *is*
+        { configuration_declarative_item }
+        { verification_unit_binding_indication ; }
+        *for* block_specification
+            { use_clause }
+            { configuration_item }
+        *end* *for* ;
+    *end* [ *configuration* ] [ identifier ] ;
+-->
+      <context name="configuration" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="conf_of" beginRegion="ConfigurationRegion1"
+                 String="(&identifier;)"/>
+      </context>
+
+      <context name="conf_of" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="conf_is">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="conf_ref" insensitive="1" String="of"/>
+        <RegExpr attribute="Control" context="#pop#pop" insensitive="1" dynamic="1"
+                 String="&bos;end(\s+configuration\b)?(\s+%1)?\s*;" endRegion="ConfigurationRegion1"/>
+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="1"
+                    String="end" endRegion="ConfigurationRegion1"/>
+      </context>
+
+      <context name="conf_ref" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!conf_decl">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#pop!conf_decl" insensitive="1" String="is" />
+        <IncludeRules context="reference"/>
+      </context>
+
+      <context name="conf_is" attribute="Control" lineEndContext="#stay" fallthroughContext="#pop#pop#pop">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#pop!conf_decl" insensitive="1" String="is" />
+      </context>
+
+      <context name="conf_decl" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <WordDetect attribute="Control" context="conf_for" insensitive="1" String="for" beginRegion="LoopRegion1"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="conf_for" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <WordDetect attribute="Control" context="conf_for" insensitive="1" String="for" beginRegion="LoopRegion1"/>
+        <WordDetect attribute="Control" context="conf_for_end" insensitive="1" lookAhead="1" String="end" endRegion="LoopRegion1"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="conf_for_end" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!expressionError">
+        <RegExpr attribute="Control" context="#pop#pop" insensitive="true"  String="&bos;end(\s+for\b)?\s*;"/>
+      </context>
+
+<!--
+context ::=
+    *context* identifier *is*
+        { context_item }
+    *end* [ *context* ] [ identifier ] ;
+
+  | *context* selected_name { , selected_name } ;
+
+ context_item ::=
+      *library* identifier { , identifier } ;
+    | *use* selected_name { , selected_name } ;
+    | *context* selected_name { , selected_name } ;
+
+selected_name ::= prefix . suffix
+-->
+      <context name="context" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="#pop!context_main" beginRegion="ContextRegion1"
+                 String="(&identifier;)(?!\.)"/>
+      </context>
+
+      <context name="context_main" attribute="Control" lineEndContext="#stay" fallthroughContext="context_decl">
+        <RegExpr attribute="Keyword" context="#pop" dynamic="1" insensitive="1"
+                 String="&bos;end(\s+context)?(\s+%1)?\s*;" endRegion="ContextRegion1"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="1"
+                    String="end" endRegion="ContextRegion1"/>
+      </context>
+
+      <context name="context_decl" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <keyword attribute="Keyword" context="sequential_stmt_expr" String="keywordsToplevel"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+
+<!--====Basic Stuff ===============-->
+<!-- comment and spaces -->
+      <context name="blank" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <Detect2Chars attribute="Comment" context="comment" char="-" char1="-"/>
+        <Detect2Chars attribute="Comment" context="block_comment" char="/" char1="*"/>
+      </context>
+
+<!--
+abstract_literal ::=
+    integer [ . integer ] [ exponent ]
+  | base # based_integer [ . based_integer ] # [ exponent ]
+
+base ::= integer
+integer ::= digit { [ _ ] digit }
+exponent ::= E [ + ] integer | E – integer
+based_integer ::= extended_digit { [ _ ] extended_digit }
+extended_digit ::= digit | letter
+-->
+      <context name="abstract_literal" attribute="Integer" lineEndContext="#pop" fallthroughContext="exponent">
+        <DetectChar attribute="Operator" char="."/>
+        <DetectChar attribute="Operator" context="based_integer" char="#"/>
+        <RegExpr attribute="Integer" context="exponent" String="_?[0-9]++(_[0-9]+)*"/>
+      </context>
+      <context name="exponent" attribute="Integer" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <RegExpr attribute="Exponent" context="#pop#pop" String="[eE][+-]?[0-9]++(_[0-9]+)*+"/>
+        <AnyChar attribute="Error" context="#pop#pop" String="eE_"/>
+      </context>
+      <context name="based_integer" attribute="Integer" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Operator" char="."/>
+        <DetectChar attribute="Error" char="_"/>
+        <DetectChar attribute="Operator" context="#pop!exponent" char="#"/>
+        <RegExpr attribute="Based Integer" String="[0-9a-fA-F]++(_[0-9a-fA-F]+)*"/>
+      </context>
+
+<!--
+external_name ::=
+    << *constant* external_pathname : subtype_indication >>
+  | << *signal* external_pathname : subtype_indication >>
+  | << *variable* external_pathname : subtype_indication >>
+-->
+      <context name="external_name" attribute="Integer" lineEndContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="blank"/>
+        <!-- back to expression context -->
+        <keyword attribute="Signal" context="#pop" String="signals"/>
+      </context>
+
+<!--
+interface_list ::=
+    interface_element { ; interface_element }
+
+interface_element ::=
+      [ *constant* ] identifier_list : [ *in* ] subtype_indication [ := expression ]
+    | [ *signal* ] identifier_list : [ *in* | *out* ] subtype_indication [ *bus* ] [ := expression ]
+    | [ *variable* ] identifier_list : [ *in* | *out* ] subtype_indication [ := expression ]
+    | *file* identifier_list : subtype_indication
+    | *type* identifier
+    | interface_subprogram_specification [ *is* name ]
+    | interface_subprogram_specification [ *is* <> ]
+    | *package* identifier *is* *new* name *generic* *map* ( association_list )
+    | *package* identifier *is* *new* name *generic* *map* ( <> )
+    | *package* identifier *is* *new* name *generic* *map* ( *default* )
+
+interface_subprogram_specification ::=
+      *procedure* designator [ [ *parameter* ] ( interface_list ) ]
+    | [ *pure* | *impure* ] *function* designator
+         [ [ *parameter* ] ( interface_list ) ] *return* name
+
+designator ::= identifier | string_literal
+-->
+      <context name="enclosed_interface_list" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Normal Text" context="interface_list" char="("/>
+      </context>
+
+      <context name="interface_list" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <keyword attribute="Signal" String="signals"/>
+        <IncludeRules context="postExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="enclosed_association_list"/>
+      </context>
+
+<!--
+association_list ::=
+    association_element { , association_element }
+
+association_element ::=
+    [ name [ ( name ) ] => ] actual_part
+
+actual_part ::=
+      actual_designator
+    | name ( actual_designator )
+
+actual_designator ::=
+      [ *inertial* ] expression
+    | name
+    | subtype_indication
+    | *open*
+-->
+      <context name="enclosed_association_list" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Normal Text" context="association_list" char="("/>
+      </context>
+
+      <context name="association_list" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="postExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="enclosed_association_list"/>
+        <DetectChar context="#pop" char=";" lookAhead="1"/>
+      </context>
+
+
+<!-- sequential statement -->
+      <context name="sequential_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_item">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="sequential_label"/>
+      </context>
+
+      <context name="sequential_label" attribute="Normal Text" lineEndContext="#stay">
+        <RegExpr attribute="Name" context="sequential_stmt_label" String="&label;"/>
+      </context>
+
+      <context name="sequential_stmt_label" attribute="Normal Text" lineEndContext="#stay">
+        <DetectChar attribute="Operator" context="#pop!sequential_stmt_item" char=":"/>
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <context name="sequential_stmt_item" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
+        <IncludeRules context="sequential_stmt_item_start"/>
+        <IncludeRules context="start_simple_expr_then_pop"/>
+      </context>
+
+      <context name="sequential_stmt_item_start" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Control" context="#pop!if_start" insensitive="1" String="if" beginRegion="IfRegion1"/>
+        <WordDetect attribute="Control" context="#pop!case" insensitive="1" String="case" beginRegion="CaseRegion1"/>
+        <WordDetect attribute="Control" context="#pop!while" insensitive="1" String="for"/>
+        <WordDetect attribute="Control" context="#pop!while" insensitive="1" String="while"/>
+        <WordDetect attribute="Control" context="#pop!loop" insensitive="1" String="loop" beginRegion="LoopRegion1"/>
+        <WordDetect attribute="Keyword" context="#pop!declare" insensitive="1" String="declare" beginRegion="DeclareRegion1"/>
+        <keyword attribute="Control" context="#pop!sequential_stmt_expr" String="controls"/>
+      </context>
+
+      <context name="sequential_stmt_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+<!--
+if_generate ::=
+    *if* [ alternative_label : ] expression *generate*
+        generate_statement_body
+    { *elsif* [ alternative_label : ] expression *generate*
+        generate_statement_body }
+    [ *else* [ alternative_label : ] *generate*
+        generate_statement_body ]
+    *end* *generate* [ label ] ;
+
+generate_statement_body ::=
+        generate_body
+    [ *end* [ alternative_label ] ; ]
+-->
+      <context name="if_generate" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="if_generate_label">
+        <RegExpr attribute="Control" context="#pop" insensitive="1" endRegion="IfRegion1"
+                 String="&bos;end\s+generate(\s+&varname;)?\s*;"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="1"
+                    String="end" endRegion="IfRegion1"/>
+      </context>
+
+      <context name="if_generate_label" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!if_generate_expr">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="if_generate_after_label" String="&label;"/>
+      </context>
+
+      <context name="if_generate_after_label" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!if_generate_expr">
+        <DetectChar attribute="Operator" context="#pop#pop!if_generate_expr" char=":"/>
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <context name="if_generate_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <WordDetect attribute="Control" context="#pop!if_generate_body" insensitive="1" String="generate"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="if_generate_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="generate_body_pre_start"/>
+        <WordDetect attribute="Control" context="#pop!if_generate_label" insensitive="1" String="elsif"/>
+        <WordDetect attribute="Control" context="#pop!if_generate_label" insensitive="1" String="else"/>
+        <WordDetect context="if_generate_body_end" insensitive="1" String="end" lookAhead="1"/>
+        <IncludeRules context="generate_body_post_start"/>
+      </context>
+
+      <context name="if_generate_body_end" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!expressionError">
+        <RegExpr context="#pop#pop" insensitive="1" String="end\s+generate\b" lookAhead="1"/>
+        <RegExpr attribute="Control" context="#pop" insensitive="1" String="end(\s+&varname;)?\s*;"/>
+      </context>
+
+<!--
+generate_body ::=
+        [ { block_declarative_item }
+    *begin* ]
+        { concurrent_statement }
+-->
+      <context name="generate_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="generate_body_pre_start"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="generate_body_post_start"/>
+      </context>
+
+      <context name="generate_body_pre_start" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="block_declarative_start_expr"/>
+
+        <!-- concurrent_stmt_item -->
+        <WordDetect attribute="Keyword" context="#stay" insensitive="1" String="postponed"/>
+        <WordDetect attribute="Process" context="process" insensitive="1" String="process" beginRegion="ProcessRegion1"/>
+        <WordDetect attribute="Control" context="block" insensitive="1" String="block" beginRegion="BlockRegion1"/>
+
+        <!-- sequential_stmt_item -->
+        <WordDetect attribute="Control" context="if_start" insensitive="1" String="if" beginRegion="IfRegion1"/>
+        <WordDetect attribute="Control" context="case" insensitive="1" String="case" beginRegion="CaseRegion1"/>
+        <WordDetect attribute="Control" context="while" insensitive="1" String="while"/>
+        <WordDetect attribute="Control" context="loop" insensitive="1" String="loop" beginRegion="LoopRegion1"/>
+        <WordDetect attribute="Keyword" context="declare" insensitive="1" String="declare" beginRegion="DeclareRegion1"/>
+        <keyword attribute="Control" context="sequential_stmt_expr" String="controls"/>
+
+        <WordDetect attribute="Control" insensitive="1" String="begin"/>
+      </context>
+
+      <context name="generate_body_post_start" attribute="Normal Text" lineEndContext="#stay">
+        <keyword attribute="Keyword" context="sequential_stmt_expr" String="keywords"/>
+        <IncludeRules context="concurrent_label"/>
+        <DetectIdentifier attribute="Normal Text" context="sequential_stmt_expr"/>
+      </context>
+
+<!--
+case_generate ::=
+    *case* expression *generate*
+        *when* [ label : ] choices => generate_statement_body
+        { *when* [ label : ] choices => generate_statement_body }
+    *end* *generate* [ label ] ;
+
+generate_statement_body ::=
+        generate_body
+    [ *end* [ alternative_label ] ; ]
+-->
+      <context name="case_generate" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="case_generate_expr">
+        <RegExpr attribute="Control" context="#pop" insensitive="1" endRegion="CaseRegion1"
+                 String="&bos;end\s+generate(\s+&varname;)?\s*;"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="1"
+                    String="end" endRegion="CaseRegion1"/>
+      </context>
+
+      <context name="case_generate_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <WordDetect attribute="Control" context="#pop!case_generate_is" insensitive="1" String="generate"/>
+        <!-- fallback to case ... is -->
+        <WordDetect attribute="Keyword" context="#pop!case_is" insensitive="1" String="is"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="case_generate_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!case_generate_when">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Control" context="case_generate_when" insensitive="1" String="when"/>
+      </context>
+
+      <context name="case_generate_when" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!case_generate_when_expr">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="case_generate_when_label" String="&label;"/>
+      </context>
+
+      <context name="case_generate_when_label" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!case_generate_when_expr">
+        <DetectChar attribute="Operator" context="#pop#pop!case_generate_when_expr" char=":"/>
+        <DetectSpaces attribute="Normal Text"/>
+      </context>
+
+      <context name="case_generate_when_expr" attribute="Normal Text" lineEndContext="#stay">
+        <Detect2Chars char="=" char1="&gt;" attribute="Operator" context="#pop!case_generate_body" beginRegion="CaseWhenRegion1"/>
+        <IncludeRules context="preExpression"/>
+        <DetectChar char=";" attribute="Normal Text" context="#pop!case_generate_body" beginRegion="CaseWhenRegion1"/>
+        <IncludeRules context="case_when_post_expr"/>
+      </context>
+
+      <context name="case_generate_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="generate_body_pre_start"/>
+        <WordDetect attribute="Control" context="#pop!case_generate_when" insensitive="1" String="when" endRegion="CaseWhenRegion1"/>
+        <WordDetect context="#pop!if_generate_body_end" insensitive="1" String="end" lookAhead="1" endRegion="CaseWhenRegion1"/>
+        <IncludeRules context="generate_body_post_start"/>
+      </context>
+
+<!--
+for_generate ::=
+    *for* parameter_specification *generate*
+        generate_body
+    *end* *generate* [ label ] ;
+-->
+      <context name="for_generate" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="for_generate_expr">
+        <RegExpr attribute="Control" context="#pop" insensitive="1" endRegion="LoopRegion1"
+                 String="&bos;end\s+generate(\s+&varname;)?\s*;"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="1"
+                    String="end" endRegion="LoopRegion1"/>
+      </context>
+
+      <context name="for_generate_expr" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <WordDetect attribute="Control" context="#pop!generate_body" insensitive="1" String="generate"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+<!--
+block ::=
+    *block* [ ( condition ) ] [ *is* ]
+        [ generic_clause
+        [ generic_map_aspect ; ] ]
+        [ port_clause
+        [ port_map_aspect ; ] ]
+        { block_declarative_item }
+    *begin*
+        { concurrent_statement }
+    *end* *block* [ block_label ] ;
+-->
+      <context name="block" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="block_cont">
+        <RegExpr attribute="Control" context="#pop" insensitive="1"
+                 String="&bos;end\s+block(\s+&varname;)?\s*;" endRegion="BlockRegion1"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="BlockRegion1"/>
+      </context>
+
+      <context name="block_cont" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!block_is">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="enclosed_association_list"/>
+        <WordDetect attribute="Keyword" context="#pop!block_is" insensitive="true" String="is"/>
+      </context>
+
+      <context name="block_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!block_body">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="enclosed_interface_list"/>
+        <DetectChar attribute="Normal Text" char=";"/>
+        <IncludeRules context="find_instantiated_map"/>
+        <WordDetect attribute="Control" insensitive="true" String="generic"/>
+        <WordDetect attribute="Control" insensitive="true" String="port"/>
+      </context>
+
+      <!-- as block_declarative_stmt but with begin as Keyword -->
+      <context name="block_body" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="block_declarative_start_expr"/>
+        <WordDetect attribute="Keyword" context="#pop!concurrent_stmt" insensitive="1" String="begin"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+<!--
+process  ::=
+    *process* [ ( *all* | name_list ) ] [ *is* ]
+        { process_declarative_item }
+    *begin*
+        { sequential_statement }
+    *end* [ *postponed* ] *process* [ label ] ;
+-->
+      <context name="process" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="process_params">
+        <RegExpr attribute="Process" context="#pop" insensitive="1"
+                 String="&bos;end(\s+postponed)?(\s+process\b)?(\s+&varname;)?\s*;" endRegion="ProcessRegion1"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="ProcessRegion1"/>
+      </context>
+
+      <context name="process_params" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!process_decl">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="enclosed_association_list"/>
+        <WordDetect attribute="Keyword" context="#pop!process_decl" String="is"/>
+      </context>
+
+      <context name="process_decl" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="process_declarative_start_expr"/>
+        <WordDetect attribute="Process" context="#pop!sequential_stmt" insensitive="true" String="begin"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+<!-- expression -->
+      <context name="preExpression" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="blank"/>
+        <Detect2Chars attribute="Operator" context="external_name" char="&lt;" char1="&lt;"/>
+        <AnyChar attribute="Operator" context="#stay" String="[]&amp;&gt;&lt;=:+-*/|`.,?@"/>
+        <DetectChar attribute="Vector" context="string" char="&quot;"/>
+        <DetectChar attribute="Attribute" context="attribute" char="'"/>
+        <Int attribute="Integer" context="abstract_literal"/>
+      </context>
+
+      <context name="postExpression" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="keywordExpression"/>
+        <DetectIdentifier attribute="Normal Text"/>
+      </context>
+
+      <context name="keywordExpression" attribute="Normal Text" lineEndContext="#stay">
+        <keyword attribute="Data Type" context="#stay" String="types"/>
+        <keyword attribute="Data Type" context="#stay" String="timeunits"/>
+        <keyword attribute="Range" context="#stay" String="range"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+      </context>
+
+<!-- expression error -->
+      <context name="expressionError" attribute="Error" lineEndContext="#pop">
+        <Detect2Chars attribute="Comment" context="comment" char="-" char1="-"/>
+        <DetectChar attribute="Error" context="#pop" char=";"/>
+      </context>
+
+<!-- other environments -->
+      <context name="comment" attribute="Comment" lineEndContext="#pop">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+      </context>
+
+      <context name="block_comment" attribute="Comment" lineEndContext="#stay">
+        <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/"/>
+        <IncludeRules context="comment"/>
+      </context>
+
+      <context name="string" attribute="Vector" lineEndContext="#stay">
+        <DetectChar attribute="Vector" context="#pop" char="&quot;"/>
+      </context>
+
+      <context name="attribute" attribute="Attribute" lineEndContext="#pop">
+        <!-- character_literal or end attribute -->
+        <RegExpr attribute="Attribute" context="#pop" String="[^']?'"/>
+        <DetectIdentifier attribute="Attribute"/>
+        <DetectChar attribute="Attribute" context="quot in att" char="&quot;"/>
+        <DetectChar attribute="Attribute" context="par in att" char="("/>
+        <DetectSpaces attribute="Normal Text" context="#pop"/>
+        <AnyChar attribute="Attribute" context="#pop" String=")=&lt;&gt;;" lookAhead="true" />
+       </context>
+
+      <context name="quot in att" attribute="Attribute" lineEndContext="#stay">
+        <DetectChar attribute="Attribute" context="#pop" char="&quot;"/>
+      </context>
+      <context name="par in att" attribute="Attribute" lineEndContext="#stay">
+        <DetectChar attribute="Attribute" context="#pop" char=")"/>
+      </context>
+
+      <context name="signal" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+<!--
+type ::= *type* identifier [ *is* type_definition ] ;
+
+type_definition ::=
+      type_definition_range
+    | type_definition_record
+    | type_definition_protected
+    | ......
+-->
+      <context name="type" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
+        <WordDetect attribute="Signal" context="type_is" insensitive="1" String="is"/>
+        <DetectIdentifier attribute="Normal Text"/>
+      </context>
+
+      <context name="type_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop!signal">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#pop#pop!type_record" insensitive="1" String="record" beginRegion="sig"/>
+        <WordDetect attribute="Keyword" context="#pop#pop!type_range" insensitive="1" String="range"/>
+        <WordDetect attribute="Keyword" context="#pop#pop!type_protected" insensitive="1" String="protected" beginRegion="BlockRegion1"/>
+      </context>
+
+<!-- type range
+
+type_definition_range ::=
+    *range* range
+        [ *units*
+            identifier
+            { identifier = physical_literal ; }
+          *end* *units* [ identifier ] ]
+
+range ::=
+      attribute_name
+    | simple_expression direction simple_expression
+
+attribute_name ::=
+    prefix [ signature ] ' identifier [ ( expression ) ]
+-->
+      <context name="type_range" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=";"/>
+        <WordDetect attribute="Control" context="#pop!type_range_units" insensitive="1" String="units" beginRegion="UnitRegion1"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="type_range_units" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_body">
+        <RegExpr attribute="Control" context="#pop" insensitive="1"
+                 String="&bos;end\s+units(\s+&identifier;)?\s*;" endRegion="UnitRegion1"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="UnitRegion1"/>
+      </context>
+
+      <context name="type_body" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <IncludeRules context="pop_end"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+<!-- type record
+
+type_definition_record ::=
+    *record*
+        element_declaration
+        { element_declaration }
+    *end* *record* [ identifier ]
+-->
+      <context name="type_record" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_body">
+        <RegExpr attribute="Keyword" context="#pop" insensitive="1"
+                 String="&bos;end\s+record(\s+&identifier;)?\s*;" endRegion="sig"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="sig"/>
+      </context>
+
+<!-- type protected
+
+type_definition_protected ::=
+      *protected*
+         { protected_type_declarative_item }
+      *end* *protected* [ identifier ]
+    | *protected* *body*
+          { process_declarative_item }
+      *end *protected* *body* [ simple name ]
+-->
+      <context name="type_protected" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_protected_stmt">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="type_protected_stmt" insensitive="1" String="body"/>
+        <RegExpr attribute="Keyword" context="#pop" insensitive="1"
+                 String="&bos;end\s+protected(\s+body)?(\s+&identifier;)?\s*;" endRegion="BlockRegion1"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="BlockRegion1"/>
+      </context>
+
+      <context name="type_protected_stmt" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="process_declarative_start_expr"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+<!--
+view ::=
+    *view* identifier *of* name *is*
+        element_declaration
+        { element_declaration }
+    *end* *view* [ identifier ] ;
+-->
+      <context name="view" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="type_body">
+        <RegExpr attribute="Keyword" context="#pop" insensitive="1"
+                 String="&bos;end\s+view(\s+&identifier;)?\s*;" endRegion="sig"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="sig"/>
+      </context>
+
+<!--
+function ::=
+    *function* designator
+        [ *generic* ( interface_list )
+        [ generic_map_aspect ] ]
+        [ [ *parameter* ] ( interface_list ) ] *return* name ;
+
+  | *function* identifier *is* *new* name
+        [ name_list ]
+        [ *return* name ]
+        [ generic_map_aspect ] ;
+
+  | *function* identifier *is*
+        { process_declarative_item }
+    *begin*
+        { sequential_statement }
+    *end* [ *function* ] [ designator ] ;
+-->
+      <context name="function" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="function_name">
+        <IncludeRules context="blank"/>
+        <DetectIdentifier attribute="Name" context="function_name"/>
+        <RangeDetect attribute="Vector" context="function_name" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Name" context="function_name" char="\" char1="\"/>
+      </context>
+
+      <context name="function_name" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="blank"/>
+        <DetectChar attribute="Normal Text" context="function_params" char="("/>
+        <DetectChar attribute="Normal Text" context="#pop#pop" char=";"/>
+        <WordDetect attribute="Control" context="function_return" insensitive="1" String="return"/>
+        <WordDetect attribute="Keyword" context="#pop#pop!function_is" insensitive="1" String="is" beginRegion="FunctionRegion1"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+      </context>
+
+      <context name="function_params" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+         <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="pop_end"/>
+        <DetectChar attribute="Normal Text" context="function_params_recursive" char="("/>
+        <WordDetect attribute="Error" context="#pop!function_return" insensitive="1" String="return"/>
+        <keyword attribute="Signal" String="signals"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+      <context name="function_params_recursive" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <DetectChar attribute="Normal Text" context="function_params_recursive" char="("/>
+        <WordDetect context="#pop" insensitive="1" String="return" lookAhead="1"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="function_return" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="preExpression"/>
+        <DetectChar attribute="Normal Text" context="#pop#pop#pop" char=";"/>
+        <WordDetect attribute="Keyword" context="#pop#pop#pop!function_is" insensitive="1" String="is" beginRegion="FunctionRegion1"/>
+        <IncludeRules context="postExpression"/>
+      </context>
+
+      <context name="function_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!function_decl">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Keyword" context="#pop!function_new" insensitive="1" String="new"/>
+      </context>
+
+      <context name="function_new" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <WordDetect attribute="Control" context="#pop!sequential_stmt_expr" insensitive="1" String="return"/>
+        <IncludeRules context="start_simple_expr_then_pop"/>
+      </context>
+
+      <context name="function_decl" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="process_declarative_start_expr"/>
+        <WordDetect attribute="Redirection" context="#pop!function_begin" insensitive="true" String="begin"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+      <context name="function_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
+        <RegExpr attribute="Redirection" context="#pop" insensitive="1"
+                 String="&bos;end(\s+function\b)?(\s+&designator;)?\s*;" endRegion="FunctionRegion1"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="FunctionRegion1"/>
+      </context>
+
+<!--
+procedure ::=
+      *procedure* designator
+          [ *generic* ( interface_list )
+          [ generic_map_aspect ] ]
+          [ [ *parameter* ] ( interface_list ) ] ;
+
+    | *procedure* identifier *is* *new* name
+          [ name_list ]
+          [ *return* name ]
+          [ generic_map_aspect ] ;
+
+    | *procedure* designator
+          [ [ *parameter* ] ( interface_list ) ] *is*
+          { process_declarative_item }
+      *begin*
+          { sequential_statement }
+      *end* [ *procedure* ] [ designator ] ;
+-->
+      <context name="procedure" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="blank"/>
+        <DetectIdentifier attribute="Name" context="procedure_name"/>
+        <RangeDetect attribute="Vector" context="procedure_name" char="&quot;" char1="&quot;"/>
+        <RangeDetect attribute="Name" context="procedure_name" char="\" char1="\"/>
+      </context>
+
+      <context name="procedure_name" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="enclosed_interface_list"/>
+        <DetectChar attribute="Normal Text" context="#pop#pop" char=";" endRegion="ProcedureRegion1"/>
+        <WordDetect attribute="Control" context="#pop#pop!procedure_is" insensitive="true" String="is"/>
+        <!-- ghdl extension ?
+          procedure readline (variable f: in text; l: inout line)  <- no ;
+          procedure readline (file f: text; l: inout line)
+          is ...
+        -->
+        <WordDetect attribute="Keyword" context="#pop" insensitive="true" String="procedure" endRegion="ProcedureRegion1" beginRegion="ProcedureRegion1"/>
+        <keyword attribute="Keyword" context="#stay" String="keywords"/>
+      </context>
+
+      <context name="procedure_is" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!procedure_is2">
+        <IncludeRules context="function_is"/>
+      </context>
+
+      <!-- ghdl extension ?
+        *procedure* designator
+          (...) is
+          (...) is                <- here
+        begin ...
+      -->
+      <context name="procedure_is2" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!procedure_decl">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="enclosed_interface_list"/>
+        <WordDetect attribute="Control" context="#pop!procedure_is" insensitive="true" String="is"/>
+        <WordDetect attribute="Keyword" insensitive="true" String="parameter"/>
+      </context>
+
+      <context name="procedure_decl" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt_expr">
+        <IncludeRules context="blank"/>
+        <IncludeRules context="process_declarative_start_expr"/>
+        <WordDetect attribute="Keyword" context="#pop!procedure_begin" insensitive="true" String="begin" endRegion="ProcedureRegion1" beginRegion="ProcedureRegion1"/>
+        <IncludeRules context="start_simple_expr"/>
+      </context>
+
+      <context name="procedure_begin" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="sequential_stmt">
+        <RegExpr attribute="Keyword" context="#pop" insensitive="1"
+                 String="&bos;end(\s+procedure)?(\s+&designator;)?\s*;" endRegion="ProcedureRegion1"/>
+        <WordDetect attribute="Error" context="#pop!expressionError" insensitive="true"
+                    String="end" endRegion="ProcedureRegion1"/>
+      </context>
+
+<!--
+component ::=
+    *component* identifier [ *is* ]
+        entity_header
+    *end* *component* [ identifier ] ;
+-->
+      <context name="component" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <IncludeRules context="blank"/>
+        <RegExpr attribute="Name" context="component_main" beginRegion="ComponentRegion1"
+                 String="(&identifier;)"/>
+      </context>
+
+      <context name="component_main" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="component_body">
+        <RegExpr attribute="Control" context="#pop#pop" dynamic="1" insensitive="1"
+                 String="&bos;end\s+component\b(\s+%1)?\s*;" endRegion="ComponentRegion1"/>
+        <WordDetect attribute="Error" context="#pop#pop!expressionError" insensitive="true"
+                    String="end" endRegion="ComponentRegion1"/>
+      </context>
+
+      <context name="component_body" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="entity_header"/>
+        <IncludeRules context="pop_end"/>
+        <DetectIdentifier attribute="Error"/>
+      </context>
+
+      <context name="pop_end" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect context="#pop" insensitive="1" String="end" lookAhead="1"/>
+      </context>
+
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Data Type" defStyleNum="dsDataType"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Integer" defStyleNum="dsDecVal"/>
+      <itemData name="Exponent" defStyleNum="dsFloat"/>
+      <itemData name="Based Integer" defStyleNum="dsBaseN"/>
       <itemData name="Reference" defStyleNum="dsFunction"/>
       <itemData name="Error" defStyleNum="dsError" bold="1"/>
       <itemData name="Vector" defStyleNum="dsString"/>
diff --git a/xml/vue.xml b/xml/vue.xml
new file mode 100644
--- /dev/null
+++ b/xml/vue.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+<!ENTITY name "[A-Za-z_:][\w.:_-]*">
+<!ENTITY attributeName "[\@A-Za-z_:*#\(\[][\)\]\w.:_-]*">
+<!ENTITY entref "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+]>
+<language name="Vue" version="19" kateversion="5.79" section="Markup" extensions="*.vue" mimetype="text/html" author="James Zuccon" license="LGPL" priority="10">
+  <!--
+    This is a modified version of the HTML Syntax Highlighter to accommodate Vue JS template files (with some non-relevant parts removed).
+    While we could take the approach of just including rules from the HTML files, this introduces some problems:
+    1. Vue supports the <template> tag recursively - to support this, we would need to duplicate much of the HTML syntax file anyway.
+    2. Vue has some additional attributeName patterns that are not supported by HTML (e.g. '@' prefix as shorthand for events).
+    3. If we wanted to support Vue Attribute Bindings in future (e.g. :some-binded-param), we would have to duplicate much of the HTML syntax file  again.
+    4. If we wanted to support Vue JS Brackets in future (e.g. {{ echoSomeContent }}, we would also have to duplicate much of the HTML syntax file again.
+    If Syntax Highlighting supports over-riding third-party contexts at some point in future, it might be worth re-thinking how this file is constructed.
+    But, for now, it's probably saner to use HTML as the base template.
+    NOTE: We do not necessarily want to just integrate support for these features directly into the HTML syntax highlighter, as we want Vue to have its own mimetype.
+          One of the major reasons for this is so that we can identify Vue files for use with an LSP (e.g. Volar) in Kate.
+  -->
+  <highlighting>
+    <contexts>
+      <context name="Start" attribute="Normal Text" lineEndContext="#stay">
+        <IncludeRules context="FindHTML"/>
+      </context>
+      <context name="FindHTML" attribute="Normal Text" lineEndContext="#stay">
+        <DetectSpaces/>
+        <DetectIdentifier/>
+        <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment"/>
+        <IncludeRules context="FindElements"/>
+        <IncludeRules context="FindEntityRefs"/>
+      </context>
+      <context name="FindElements" attribute="Other Text" lineEndContext="#pop">
+        <RegExpr attribute="Element Symbols" context="ElementTagName" String="&lt;(?=(&name;))"/>
+        <RegExpr attribute="Element Symbols" context="ElementTagNameClose" String="&lt;/(?=(&name;))"/>
+      </context>
+      <context name="ElementTagName" attribute="Other Text" lineEndContext="#pop">
+        <IncludeRules context="FindHTMLTags"/>
+        <IncludeRules context="FindSpecialHTMLTags"/>
+        <StringDetect attribute="Element" context="#pop!El Open" String="%1" dynamic="true"/>
+      </context>
+      <context name="ElementTagNameClose" attribute="Other Text" lineEndContext="#pop">
+        <IncludeRules context="FindHTMLTagsClose"/>
+        <StringDetect attribute="Element" context="#pop!El Close" String="%1" dynamic="true"/>
+      </context>
+      <!-- This allows you to insert HTML tags in other syntax definitions -->
+      <context name="FindSpecialHTMLTags" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Element" context="#pop!CSS" String="style" insensitive="true" beginRegion="style"/>
+        <WordDetect attribute="Element" context="#pop!JS" String="script" insensitive="true" beginRegion="script"/>
+      </context>
+      <context name="FindHTMLTags" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Element" context="#pop!El Open" String="pre" insensitive="true" beginRegion="pre"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="div" insensitive="true" beginRegion="div"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="table" insensitive="true" beginRegion="table"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="ul" insensitive="true" beginRegion="ul"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="ol" insensitive="true" beginRegion="ol"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="dl" insensitive="true" beginRegion="dl"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="article" insensitive="true" beginRegion="article"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="aside" insensitive="true" beginRegion="aside"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="details" insensitive="true" beginRegion="details"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="figure" insensitive="true" beginRegion="figure"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="footer" insensitive="true" beginRegion="footer"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="header" insensitive="true" beginRegion="header"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="main" insensitive="true" beginRegion="main"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="nav" insensitive="true" beginRegion="nav"/>
+        <WordDetect attribute="Element" context="#pop!El Open" String="section" insensitive="true" beginRegion="section"/>
+      </context>
+      <context name="FindHTMLTagsClose" attribute="Normal Text" lineEndContext="#stay">
+        <WordDetect attribute="Element" context="#pop!El Close" String="pre" insensitive="true" endRegion="pre"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="div" insensitive="true" endRegion="div"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="table" insensitive="true" endRegion="table"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="ul" insensitive="true" endRegion="ul"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="ol" insensitive="true" endRegion="ol"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="dl" insensitive="true" endRegion="dl"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="article" insensitive="true" endRegion="article"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="aside" insensitive="true" endRegion="aside"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="details" insensitive="true" endRegion="details"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="figure" insensitive="true" endRegion="figure"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="footer" insensitive="true" endRegion="footer"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="header" insensitive="true" endRegion="header"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="main" insensitive="true" endRegion="main"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="nav" insensitive="true" endRegion="nav"/>
+        <WordDetect attribute="Element" context="#pop!El Close" String="section" insensitive="true" endRegion="section"/>
+      </context>
+      <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
+        <RegExpr attribute="EntityRef" context="#stay" String="&entref;"/>
+        <AnyChar attribute="Error" context="#stay" String="&amp;&lt;"/>
+      </context>
+      <context name="FindAttributes" attribute="Other Text" lineEndContext="#stay">
+        <DetectChar attribute="Attribute Separator" context="Value" char="="/>
+        <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;(\s+&attributeName;)*\s*|\s+"/>
+      </context>
+      <context name="Comment" attribute="Comment" lineEndContext="#stay">
+        <DetectSpaces/>
+        <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment"/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+      <context name="El Open" attribute="Error" lineEndContext="#stay">
+        <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;"/>
+        <DetectChar attribute="Element Symbols" context="#pop" char="&gt;"/>
+        <IncludeRules context="FindAttributes"/>
+      </context>
+      <context name="El Close" attribute="Error" lineEndContext="#stay">
+        <DetectChar attribute="Element Symbols" context="#pop" char="&gt;"/>
+        <DetectSpaces attribute="Other Text"/>
+      </context>
+      <context name="CSS" attribute="Error" lineEndContext="#stay">
+        <RegExpr attribute="Attribute" context="Style-Type" String="(?:\s+|^)lang(?=\=|\s|$)" insensitive="true"/>
+        <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="style"/>
+        <DetectChar attribute="Element Symbols" context="CSS content" char="&gt;"/>
+        <IncludeRules context="FindAttributes"/>
+      </context>
+      <context name="DefaultCSS" attribute="Other Text" lineEndContext="#stay">
+        <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="style"/>
+        <DetectChar attribute="Attribute Separator" context="Value" char="="/>
+        <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;|\s+"/>
+      </context>
+      <context name="CSS content" attribute="Other Text" lineEndContext="#stay">
+        <RegExpr attribute="Element Symbols" context="StyleTagClose" String="&lt;/(?=style\b)" insensitive="true"/>
+        <IncludeRules context="##CSS" includeAttrib="true"/>
+      </context>
+      <context name="Default CSS content" attribute="Other Text" lineEndContext="#stay">
+        <IncludeRules context="FindStyleTagClose"/>
+      </context>
+      <context name="FindStyleTagClose" attribute="Other Text" lineEndContext="#stay">
+        <RegExpr attribute="Element Symbols" context="StyleTagClose" String="&lt;/(?=style\b)" insensitive="true"/>
+      </context>
+      <context name="StyleTagClose" attribute="Other Text" lineEndContext="#stay">
+        <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="style"/>
+      </context>
+      <context name="JS" attribute="Error" lineEndContext="#stay">
+        <RegExpr attribute="Attribute" context="Script-Type" String="(?:\s+|^)lang(?=\=|\s|$)" insensitive="true"/>
+        <DetectChar attribute="Element Symbols" context="JS content" char="&gt;"/>
+        <IncludeRules context="DefaultJS"/>
+      </context>
+      <context name="DefaultJS" attribute="Other Text" lineEndContext="#stay">
+        <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="script"/>
+        <DetectChar attribute="Attribute Separator" context="Value" char="="/>
+        <RegExpr attribute="Attribute" context="#stay" String="(^|\s+)&attributeName;|\s+"/>
+      </context>
+      <context name="JS content" attribute="Other Text" lineEndContext="#stay">
+        <IncludeRules context="Default JS content"/>
+        <IncludeRules context="Normal##JavaScript" includeAttrib="true"/>
+      </context>
+      <context name="Default JS content" attribute="Other Text" lineEndContext="#stay">
+        <IncludeRules context="FindScriptTagClose"/>
+        <RegExpr attribute="Comment" context="JS comment close" String="//(?=.*&lt;/script\b)" insensitive="true"/>
+      </context>
+      <context name="FindScriptTagClose" attribute="Other Text" lineEndContext="#stay">
+        <RegExpr attribute="Element Symbols" context="ScriptTagClose" String="&lt;/(?=script\b)" insensitive="true"/>
+      </context>
+      <context name="ScriptTagClose" attribute="Other Text" lineEndContext="#stay">
+        <DetectIdentifier attribute="Element" context="#pop#pop#pop!El Close" endRegion="script"/>
+      </context>
+      <context name="JS comment close" attribute="Comment" lineEndContext="#pop">
+        <RegExpr attribute="Element Symbols" context="#pop!ScriptTagClose" String="&lt;/(?=script\b)" insensitive="true"/>
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+      </context>
+      <context name="Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="Value NQ">
+        <DetectChar attribute="Value" context="Value DQ" char="&quot;"/>
+        <DetectChar attribute="Value" context="Value SQ" char="'"/>
+        <DetectSpaces/>
+      </context>
+      <context name="Value NQ" attribute="Other Text" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <!-- '{' and '}' are valid, but used with twig -->
+        <RegExpr attribute="Value" String="[^&gt;&lt;&quot;'&amp;\s=`{}]+"/>
+        <IncludeRules context="FindEntityRefs"/>
+        <AnyChar attribute="Error" String="&quot;'`="/>
+        <AnyChar attribute="Value" String="{}"/>
+      </context>
+      <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+        <DetectChar attribute="Value" context="#pop#pop" char="&quot;"/>
+        <IncludeRules context="FindEntityRefs"/>
+      </context>
+      <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+        <DetectChar attribute="Value" context="#pop#pop" char="'"/>
+        <IncludeRules context="FindEntityRefs"/>
+      </context>
+      <!-- Read content from the "lang" attribute to change the language to
+       highlight in the <style> tag. The default language is CSS. -->
+      <context name="Style-Type" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Attribute" context="#pop!Style-Type Value" char="="/>
+      </context>
+      <context name="Style-Type Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Value">
+        <DetectSpaces/>
+        <!-- SASS -->
+        <StringDetect attribute="Value" context="#pop#pop!SASS" String="&quot;sass&quot;"/>
+        <StringDetect attribute="Value" context="#pop#pop!SASS" String="'sass'"/>
+        <!-- SCSS -->
+        <StringDetect attribute="Value" context="#pop#pop!SCSS" String="&quot;scss&quot;"/>
+        <StringDetect attribute="Value" context="#pop#pop!SCSS" String="'scss'"/>
+      </context>
+      <context name="SASS" attribute="Error" lineEndContext="#stay">
+        <DetectChar attribute="Element Symbols" context="SASS content" char="&gt;"/>
+        <IncludeRules context="DefaultCSS"/>
+      </context>
+      <context name="SASS content" attribute="Other Text" lineEndContext="#stay">
+        <IncludeRules context="Default CSS content"/>
+        <IncludeRules context="##SASS" includeAttrib="true"/>
+      </context>
+      <context name="SCSS" attribute="Error" lineEndContext="#stay">
+        <DetectChar attribute="Element Symbols" context="SCSS content" char="&gt;"/>
+        <IncludeRules context="DefaultCSS"/>
+      </context>
+      <context name="SCSS content" attribute="Other Text" lineEndContext="#stay">
+        <IncludeRules context="Default CSS content"/>
+        <IncludeRules context="##SCSS" includeAttrib="true"/>
+      </context>
+      <!-- Read content from the "lang" attribute to change the language to
+       highlight in the <script> tag. The default language is JavaScript. -->
+      <context name="Script-Type" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Attribute" context="#pop!Script-Type Value" char="="/>
+      </context>
+      <context name="Script-Type Value" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Value">
+        <DetectSpaces/>
+        <!-- TypeScript -->
+        <StringDetect attribute="Value" context="#pop#pop!TypeScript" String="&quot;ts&quot;"/>
+        <StringDetect attribute="Value" context="#pop#pop!TypeScript" String="'ts'"/>
+      </context>
+      <context name="TypeScript" attribute="Error" lineEndContext="#stay">
+        <DetectChar attribute="Element Symbols" context="TypeScript content" char="&gt;"/>
+        <IncludeRules context="DefaultJS"/>
+      </context>
+      <context name="TypeScript content" attribute="Other Text" lineEndContext="#stay">
+        <IncludeRules context="Default JS content"/>
+        <IncludeRules context="Normal##TypeScript" includeAttrib="true"/>
+      </context>
+    </contexts>
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsNormal"/>
+      <itemData name="Other Text" defStyleNum="dsNormal" spellChecking="false"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="Element" defStyleNum="dsKeyword" spellChecking="false"/>
+      <itemData name="Element Symbols" defStyleNum="dsDataType" spellChecking="false"/>
+      <itemData name="Attribute" defStyleNum="dsOthers" spellChecking="false"/>
+      <itemData name="Attribute Separator" defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Value" defStyleNum="dsString" spellChecking="false"/>
+      <itemData name="EntityRef" defStyleNum="dsDecVal" spellChecking="false"/>
+      <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="multiLine" start="&lt;!--" end="--&gt;" region="comment"/>
+    </comments>
+  </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
diff --git a/xml/xml.xml b/xml/xml.xml
--- a/xml/xml.xml
+++ b/xml/xml.xml
@@ -1,49 +1,89 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
-	<!-- names must start with a letter, ideogram or underscore. \w matches any
-		 word character *or* a number, hence the lookahead -->
-	<!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">
-	<!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
+  <!ENTITY name    "[[:alpha:]_:][\w.:_-]*">
+  <!ENTITY entref  "&amp;(?:#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
 ]>
-<language name="XML" version="14" kateversion="5.0" section="Markup" extensions="*.docbook;*.xml;*.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
+<language name="XML" version="27" kateversion="5.62" section="Markup" extensions="*.page;*.docbook;*.xml;*ui.rc;*.daml;*.rdf;*.rss;*.xspf;*.xsd;*.svg;*.ui;*.kcfg;*.qrc;*.wsdl;*.scxml;*.xbel;*.dae;*.sch;*.brd;*.fb2" mimetype="text/xml;text/book;text/daml;text/rdf;application/rss+xml;application/xspf+xml;image/svg+xml;application/x-designer;application/x-xbel;application/xml;application/scxml+xml;application/vnd.oasis.opendocument.text-flat-xml;application/vnd.oasis.opendocument.graphics-flat-xml;application/vnd.oasis.opendocument.presentation-flat-xml;application/vnd.oasis.opendocument.spreadsheet-flat-xml;application/gpx+xml;application/x-fictionbook+xml" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl)" license="LGPL">
 
+<!-- https://www.w3.org/TR/xml/ -->
+
+<!--
+  This file also serves as the basis for generating XSLT syntax.
+  Comments beginning with "XSLT:" are used by data/generators/generate-xslt.pl
+  to add specific rules based on the rule in the following line.
+
+  - 'XSLT: keytags': insert xslt functions.
+  - 'XSLT: copy': duplicate a context and modify the duplicated context.
+      The rules of the duplicated context also refer to an XSLT Context
+      (e.g <RegExpr context="#pop!Attribute" String="..."/> becomes
+      <RegExpr context="#pop!XSLT_Attribute" String="..."/>).
+  - 'XSLT: xattr': insert xslt attribute rule.
+  - 'XSLT: xvalue': insert xslt value rule.
+  - 'XSLT: nochange': Do not modify the following rule (only in a XSLT: copy).
+  - 'XSLT: attrvalue': change attribute="Value" to attribute="Attribute Value".
+  - 'XSLT: xpathDQ': insert xpathDQ rule.
+  - 'XSLT: xpathSQ': insert xpathSQ rule.
+-->
+
 <highlighting>
 <contexts>
   <context name="Start" attribute="Normal Text" lineEndContext="#stay">
-    <IncludeRules context="FindXML" />
+    <IncludeRules context="FindText" />
+    <IncludeRules context="FindElement" />
   </context>
 
-  <context name="FindXML" attribute="Normal Text" lineEndContext="#stay">
+  <context name="FindText" attribute="Normal Text" lineEndContext="#stay">
     <DetectSpaces />
     <DetectIdentifier />
+    <Int />
+  </context>
+
+  <context name="FindElement" attribute="Normal Text" lineEndContext="#stay">
     <RegExpr attribute="Element Symbols" context="ElementTagName" String="&lt;(?=(&name;))" beginRegion="element" />
-    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <RegExpr attribute="Element Symbols" context="El End TagName" String="&lt;/(?=(&name;))" endRegion="element" />
+    <IncludeRules context="FindComment" />
     <StringDetect attribute="CDATA" context="CDATAStart" String="&lt;![CDATA[" lookAhead="true" />
     <RegExpr attribute="Doctype Symbols" context="DoctypeTagName" String="&lt;!(?=DOCTYPE(\s|$))" beginRegion="doctype" />
-    <IncludeRules context="FindProcessingInstruction" />
     <IncludeRules context="FindEntityRefs" />
+    <IncludeRules context="FindProcessingInstruction" />
+    <IncludeRules context="FindError" />
   </context>
 
+  <context name="FindError" attribute="Other Text" lineEndContext="#stay">
+    <IncludeRules context="FindReservedChar" />
+    <StringDetect attribute="Error" String="]]>" />
+  </context>
+
+  <context name="FindComment" attribute="Other Text" lineEndContext="#stay">
+    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+  </context>
+
   <context name="FindEntityRefs" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
+  </context>
+
+  <context name="FindReservedChar" attribute="Other Text" lineEndContext="#stay">
     <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
   </context>
 
   <context name="FindPEntityRefs" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
     <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
-    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
+    <AnyChar attribute="Error" context="#stay" String="&amp;%&lt;" />
   </context>
 
 
   <context name="Comment" attribute="Comment" lineEndContext="#stay">
     <DetectSpaces />
-    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
-    <RegExpr attribute="Error" context="#stay" String="-(?:\-(?!-&gt;))+" />
+    <StringDetect context="EndComment" String="--" lookAhead="1"/>
     <IncludeRules context="##Comments" />
     <DetectIdentifier />
   </context>
+  <context name="EndComment" attribute="Comment" lineEndContext="#pop" fallthroughContext="#pop">
+    <StringDetect attribute="Comment" context="#pop#pop" String="-->" endRegion="comment" />
+    <DetectChar attribute="Error" char="-" />
+  </context>
 
   <context name="CDATAStart" attribute="Other Text" lineEndContext="#pop">
     <StringDetect attribute="CDATA Symbols" context="#stay" String="&lt;![" beginRegion="cdata" />
@@ -54,13 +94,12 @@
     <DetectSpaces />
     <DetectIdentifier />
     <StringDetect attribute="CDATA Symbols" context="#pop" String="]]&gt;" endRegion="cdata" />
-    <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
   </context>
 
   <context name="FindProcessingInstruction" attribute="Other Text" lineEndContext="#stay">
     <RegExpr attribute="PI Symbols" context="PI TagName" String="&lt;\?(?=([\w:_-]*))" beginRegion="pi" />
   </context>
-  <context name="PI TagName" attribute="Other Text" lineEndContext="#pop!PI" fallthrough="true" fallthroughContext="#pop!PI">
+  <context name="PI TagName" attribute="Other Text" lineEndContext="#pop!PI" fallthroughContext="#pop!PI">
     <RegExpr attribute="Processing Instruction" context="#pop!PI-XML" String="xml(?=\s|$)" insensitive="true" />
     <StringDetect attribute="Processing Instruction" context="#pop!PI" String="%1" dynamic="true" />
   </context>
@@ -69,14 +108,15 @@
   </context>
   <context name="PI-XML" attribute="Other Text" lineEndContext="#stay">
     <IncludeRules context="PI" />
-    <RegExpr attribute="Attribute" context="#stay" String="(?:^|\s+)&name;" />
+    <DetectSpaces attribute="Other Text"/>
     <DetectChar attribute="Attribute Separator" context="Value" char="=" />
+    <RegExpr attribute="Attribute" context="#stay" String="(?:^|(?&lt;=\s))&name;" />
   </context>
 
   <context name="DoctypeTagName" attribute="Other Text" lineEndContext="#pop">
     <StringDetect attribute="Doctype" context="#pop!DoctypeVariableName" String="DOCTYPE" />
   </context>
-  <context name="DoctypeVariableName" attribute="Other Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Doctype">
+  <context name="DoctypeVariableName" attribute="Other Text" lineEndContext="#stay" fallthroughContext="#pop!Doctype">
     <DetectSpaces />
     <RegExpr attribute="Doctype Name" context="#pop!Doctype" String="&name;" />
   </context>
@@ -86,18 +126,20 @@
   </context>
 
   <context name="Doctype Internal Subset" attribute="Other Text" lineEndContext="#stay">
+    <DetectSpaces />
     <DetectChar attribute="Doctype Symbols" context="#pop" char="]" endRegion="int_subset" />
     <RegExpr attribute="Doctype Symbols" context="Doctype Markupdecl TagName" String="&lt;!(?=(ELEMENT|ENTITY|ATTLIST|NOTATION)\b)" />
-    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
+    <IncludeRules context="FindComment" />
     <IncludeRules context="FindProcessingInstruction" />
     <IncludeRules context="FindPEntityRefs" />
   </context>
 
   <context name="Doctype Markupdecl TagName" attribute="Other Text" lineEndContext="#pop">
-    <StringDetect attribute="Doctype" context="#pop!Doctype Markupdecl VariableName" String="%1" dynamic="true" />
+    <DetectIdentifier attribute="Doctype" context="#pop!Doctype Markupdecl VariableName" />
   </context>
-  <context name="Doctype Markupdecl VariableName" attribute="Other Text" lineEndContext="#pop!Doctype Markupdecl" fallthrough="true" fallthroughContext="#pop!Doctype Markupdecl">
+  <context name="Doctype Markupdecl VariableName" attribute="Other Text" lineEndContext="#pop!Doctype Markupdecl" fallthroughContext="#pop!Doctype Markupdecl">
     <DetectSpaces />
+    <DetectChar attribute="Doctype Symbols" char="%"/>
     <RegExpr attribute="Doctype Name" context="#pop!Doctype Markupdecl" String="&name;" />
   </context>
   <context name="Doctype Markupdecl" attribute="Other Text" lineEndContext="#stay">
@@ -117,54 +159,115 @@
   </context>
 
   <context name="ElementTagName" attribute="Other Text" lineEndContext="#pop!Element">
+    <!-- XSLT: keytags -->
     <StringDetect attribute="Element" context="#pop!Element" String="%1" dynamic="true" />
   </context>
-  <context name="Element" attribute="Other Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1="&gt;" endRegion="element" />
-    <DetectChar attribute="Element Symbols" context="El Content" char="&gt;" />
-    <RegExpr attribute="Attribute" context="Attribute" String="(?:^|\s+)&name;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
+  <!-- XSLT: copy -->
+  <context name="Element" attribute="Other Text" lineEndContext="#stay" fallthroughContext="ElementCommonError">
+    <Detect2Chars attribute="Element Symbols" context="#pop" char="/" char1=">" endRegion="element" />
+    <DetectChar attribute="Element Symbols" context="#pop" char=">" />
+    <DetectSpaces attribute="Other Text"/>
+    <!-- XSLT: xattr -->
+    <RegExpr attribute="Attribute" context="Attribute" String="(?:^|(?&lt;=\s))&name;" />
 
-  <context name="El Content" attribute="Other Text" lineEndContext="#stay">
-    <RegExpr attribute="Element Symbols" context="El End TagName" String="&lt;/(?=(&name;))" />
-    <IncludeRules context="FindXML" />
+    <!-- the following rules limit the number of characters or lines marked as an error,
+      which can become very large -->
+    <!-- assume that '>' will be typed afterwards -->
+    <DetectChar attribute="Error" context="#pop" char="/" endRegion="element" />
+    <!-- assume no attribute name, but value -->
+    <DetectChar attribute="Error" context="Value" char="=" />
+    <!-- assume attribute preceded by an invalid character, e.g. <tag foo="x"invalid="y"> -->
+    <!-- XSLT: xattr -->
+    <RegExpr attribute="Error" context="Attribute" String="&name;" />
   </context>
 
   <context name="El End TagName" attribute="Other Text" lineEndContext="#pop!El End">
-    <StringDetect attribute="Element" context="#pop!El End" String="%1" dynamic="true" />
+    <!-- XSLT: keytags -->
+    <StringDetect attribute="Element" context="El End" String="%1" dynamic="true" />
   </context>
   <context name="El End" attribute="Other Text" lineEndContext="#stay">
-    <DetectChar attribute="Element Symbols" context="#pop#pop#pop" char="&gt;" endRegion="element" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+    <DetectChar attribute="Element Symbols" context="#pop#pop" char=">" />
+    <DetectSpaces attribute="Other Text"/>
+    <IncludeRules context="ElementCommonError"/>
   </context>
 
+  <!-- XSLT: copy -->
   <context name="Attribute" attribute="Other Text" lineEndContext="#stay">
     <DetectChar attribute="Attribute Separator" context="#pop!Value" char="=" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+    <DetectSpaces attribute="Other Text"/>
+
+    <!-- the following rules limit the number of characters or lines marked as an error,
+      which can become very large -->
+    <!-- XSLT: xvalue -->
+    <DetectChar attribute="Error" context="Value DQ" char="&quot;" />
+    <!-- XSLT: xvalue -->
+    <DetectChar attribute="Error" context="Value SQ" char="&apos;" />
+    <IncludeRules context="FindAttributeCommonError"/>
   </context>
 
+  <!-- XSLT: copy -->
   <context name="Value" attribute="Other Text" lineEndContext="#stay">
+    <!-- XSLT: xvalue -->
     <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
+    <!-- XSLT: xvalue -->
     <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
+    <DetectSpaces attribute="Other Text"/>
+    <IncludeRules context="FindAttributeCommonError"/>
   </context>
 
+  <!-- XSLT: copy -->
+  <context name="FindAttributeCommonError" attribute="Error">
+    <!-- attribute without value -->
+    <DetectChar attribute="Error" context="#pop#pop" char=">" />
+    <StringDetect attribute="Error" context="#pop#pop" String="/>" endRegion="element" />
+    <!-- attribute without value, assume that '>' will be typed afterwards -->
+    <DetectChar attribute="Error" context="#pop#pop" char="/" endRegion="element" />
+    <!-- next word is an attribute -->
+    <!-- XSLT: xattr -->
+    <RegExpr attribute="Error" context="#pop!Attribute" String="&name;(?=\s*=)" />
+    <!-- XSLT: nochange -->
+    <IncludeRules context="ElementCommonError"/>
+  </context>
+
+  <context name="ElementCommonError" attribute="Error">
+    <!-- mark a "word" in error -->
+    <RegExpr attribute="Error" context="#pop#pop" String="[-\w.:_=]+|[^-\w.:_=/&lt;>\s]+[-\w.:_]*|/>|[^&lt;]" />
+    <!-- assume that '>' will be typed afterwards and find a new element -->
+    <!-- XSLT: keytags -->
+    <RegExpr attribute="Error" context="#pop#pop!Element" String="&lt;&name;" />
+    <StringDetect attribute="Error" context="#pop#pop!Comment" String="&lt;!--" beginRegion="comment" />
+    <StringDetect attribute="Error" context="#pop#pop!CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+    <DetectChar attribute="Error" context="#pop#pop" char="&lt;" />
+  </context>
+
+  <!-- XSLT: attrvalue -->
   <context name="Value DQ" attribute="Value" lineEndContext="#stay">
+    <!-- XSLT: xpathDQ -->
     <DetectChar attribute="Value" context="#pop#pop" char="&quot;" />
-    <IncludeRules context="FindEntityRefs" />
+    <IncludeRules context="ValueQ" />
   </context>
 
+  <!-- XSLT: attrvalue -->
   <context name="Value SQ" attribute="Value" lineEndContext="#stay">
+    <!-- XSLT: xpathSQ -->
     <DetectChar attribute="Value" context="#pop#pop" char="&apos;" />
+    <IncludeRules context="ValueQ" />
+  </context>
+
+  <!-- XSLT: attrvalue -->
+  <context name="ValueQ" attribute="Value" lineEndContext="#stay">
+    <DetectIdentifier attribute="Value" />
+    <DetectSpaces attribute="Value" />
+    <Int attribute="Value" />
     <IncludeRules context="FindEntityRefs" />
+    <IncludeRules context="FindReservedChar" />
   </context>
 
 </contexts>
 <itemDatas>
   <itemData name="Normal Text"     defStyleNum="dsNormal" />
   <itemData name="Other Text"      defStyleNum="dsNormal" />
-  <itemData name="Comment"         defStyleNum="dsComment" spellChecking="false" />
+  <itemData name="Comment"         defStyleNum="dsComment" spellChecking="true" />
   <itemData name="CDATA"           defStyleNum="dsBaseN"    bold="1" italic="0" spellChecking="false" />
   <itemData name="CDATA Symbols"   defStyleNum="dsBaseN"    bold="0" italic="0" spellChecking="false" />
   <itemData name="Processing Instruction" defStyleNum="dsFunction" bold="1" italic="0" spellChecking="false" />
diff --git a/xml/xorg.xml b/xml/xorg.xml
--- a/xml/xorg.xml
+++ b/xml/xorg.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <language name="x.org Configuration" section="Configuration" extensions="xorg.conf" mimetype="" version="4" kateversion="5.0" author="Jan Janssen (medhefgo@web.de)" license="LGPL">
 
 <highlighting>
diff --git a/xml/xslt.xml b/xml/xslt.xml
--- a/xml/xslt.xml
+++ b/xml/xslt.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
+<!DOCTYPE language
 [
   <!ENTITY qname   "[A-Za-z_:][\w.:_-]*">
 	<!ENTITY name    "(?![0-9])[\w_:][\w.:_-]*">
diff --git a/xml/xul.xml b/xml/xul.xml
--- a/xml/xul.xml
+++ b/xml/xul.xml
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-	<!ENTITY name    "[A-Za-z_:][\w.:_-]*">
-	<!ENTITY entref  "&amp;(#[0-9]+|#[xX][0-9A-Fa-f]+|&name;);">
-]>
-<language name="XUL" version="10" kateversion="5.0" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">
+<!DOCTYPE language>
+<language name="XUL" version="11" kateversion="5.62" section="Markup" extensions="*.xul;*.xbl" mimetype="text/xul" casesensitive="1" indenter="xml" author="Wilbert Berendsen (wilbert@kde.nl), Anders Lund (anders@alweb.dk), Joseph Wenninger (jowenn@kde.org), Whitehawk Stormchaser (zerokode@gmx.net), Marc Dassonneville (marc.dassonneville@gmail.com)" license="LGPL">
 
 <highlighting>
    <list name="keywords">
@@ -148,7 +144,6 @@
       <item>background</item>
       <item>below</item>
       <item>bgColor</item>
-      <item>border</item>
       <item>big</item>
       <item>blink</item>
       <item>blur</item>
@@ -383,7 +378,6 @@
       <item>visibility</item>
       <item>vlinkColor</item>
       <item>vspace</item>
-      <item>width</item>
       <item>watch</item>
       <item>which</item>
       <item>width</item>
@@ -395,114 +389,14 @@
     </list>
 <contexts>
   <context name="Start" attribute="Normal Text" lineEndContext="#stay">
-    <IncludeRules context="FindXML" />
-  </context>
-
-  <context name="FindXML" attribute="Normal Text" lineEndContext="#stay">
     <DetectSpaces />
-    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
-    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
-    <RegExpr attribute="Doctype" context="Doctype" String="&lt;!DOCTYPE\s+" beginRegion="doctype" />
-    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
-    <RegExpr attribute="Element" context="Element" String="&lt;&name;" beginRegion="element" />
-    <IncludeRules context="FindEntityRefs" />
     <DetectIdentifier />
-  </context>
-
-  <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
-    <AnyChar attribute="Error" context="#stay" String="&amp;&lt;" />
-  </context>
-
-  <context name="FindPEntityRefs" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="EntityRef" context="#stay" String="&entref;" />
-    <RegExpr attribute="PEntityRef" context="#stay" String="%&name;;" />
-    <AnyChar attribute="Error" context="#stay" String="&amp;%" />
-  </context>
-
-
-  <context name="Comment" attribute="Comment" lineEndContext="#stay">
-    <DetectSpaces />
-    <StringDetect attribute="Comment" context="#pop" String="--&gt;" endRegion="comment" />
-    <RegExpr attribute="Error" context="#stay" String="-(-(?!-&gt;))+" />
-    <IncludeRules context="##Comments" />
-    <DetectIdentifier />
-  </context>
-
-  <context name="PI" attribute="Normal Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Processing Instruction" context="#pop" char="?" char1="&gt;" endRegion="pi" />
-  </context>
-
-  <context name="Doctype" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="&gt;" endRegion="doctype" />
-    <DetectChar attribute="Doctype" context="Doctype Internal Subset" char="[" beginRegion="int_subset" />
-  </context>
-
-  <context name="Doctype Internal Subset" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="]" endRegion="int_subset" />
-    <RegExpr attribute="Doctype" context="Doctype Markupdecl" String="&lt;!(ELEMENT|ENTITY|ATTLIST|NOTATION)\b" />
-    <StringDetect attribute="Comment" context="Comment" String="&lt;!--" beginRegion="comment" />
-    <RegExpr attribute="Processing Instruction" context="PI" String="&lt;\?[\w:_-]*" beginRegion="pi" />
-    <IncludeRules context="FindPEntityRefs" />
-  </context>
-
-  <context name="Doctype Markupdecl" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Doctype" context="#pop" char="&gt;" />
-    <DetectChar attribute="Value" context="Doctype Markupdecl DQ" char="&quot;" />
-    <DetectChar attribute="Value" context="Doctype Markupdecl SQ" char="&apos;" />
-  </context>
-
-  <context name="Doctype Markupdecl DQ" attribute="Value" lineEndContext="#stay">
-    <DetectChar attribute="Value" context="#pop" char="&quot;" />
-    <IncludeRules context="FindPEntityRefs" />
-  </context>
-
-  <context name="Doctype Markupdecl SQ" attribute="Value" lineEndContext="#stay">
-    <DetectChar attribute="Value" context="#pop" char="&apos;" />
-    <IncludeRules context="FindPEntityRefs" />
-  </context>
-
-  <context name="Element" attribute="Normal Text" lineEndContext="#stay">
-    <Detect2Chars attribute="Element" context="#pop" char="/" char1="&gt;" endRegion="element" />
-    <DetectChar attribute="Element" context="El Content" char="&gt;" />
-    <RegExpr attribute="Attribute" context="Attribute" String="^&name;|\s+&name;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="El Content" attribute="Normal Text" lineEndContext="#stay">
-    <RegExpr attribute="Element" context="El End" String="&lt;/&name;" />
-    <IncludeRules context="FindXML" />
-  </context>
-
-  <context name="El End" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Element" context="#pop#pop#pop" char="&gt;" endRegion="element" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="Attribute" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Attribute" context="Value" char="=" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="Value" attribute="Normal Text" lineEndContext="#stay">
-    <DetectChar attribute="Value" context="Value DQ" char="&quot;" />
-    <DetectChar attribute="Value" context="Value SQ" char="&apos;" />
-    <RegExpr attribute="Error" context="#stay" String="\S" />
-  </context>
-
-  <context name="Value DQ" attribute="Value" lineEndContext="#stay">
-    <DetectChar attribute="Value" context="#pop#pop#pop" char="&quot;" />
-    <IncludeRules context="FindEntityRefs" />
-  </context>
-
-  <context name="Value SQ" attribute="Value" lineEndContext="#stay">
-    <DetectChar attribute="Value" context="#pop#pop#pop" char="&apos;" />
-    <IncludeRules context="FindEntityRefs" />
+    <StringDetect attribute="CDATA" context="CDATA" String="&lt;![CDATA[" beginRegion="cdata" />
+    <IncludeRules context="##XML" />
   </context>
 
   <context name="CDATA" attribute="Normal Text" lineEndContext="#stay">
      <StringDetect attribute="CDATA" context="#pop" String="]]&gt;" endRegion="cdata" />
-     <StringDetect attribute="EntityRef" context="#stay" String="]]&amp;gt;" />
      <DetectSpaces/>
      <StringDetect attribute="Region Marker" context="region_marker" String="//BEGIN" beginRegion="Region1"/>
      <StringDetect attribute="Region Marker" context="region_marker" String="//END" endRegion="Region1"/>
@@ -545,6 +439,7 @@
      <DetectSpaces />
      <Detect2Chars attribute="Comment" context="#pop" char="*" char1="/" endRegion="JSBlockComment"/>
      <IncludeRules context="##Comments" />
+     <DetectIdentifier />
   </context>
   
   <context attribute="Regular Expression" lineEndContext="#stay" name="Regular Expression">
@@ -555,7 +450,7 @@
      <RegExpr attribute="Pattern Internal Operator" context="#stay" String="\\.|\$(?=/)" />
      <AnyChar attribute="Pattern Internal Operator" context="#stay" String="?+*()|" />
   </context>
-  <context attribute="Normal Text" lineEndContext="#stay" name="(Internal regex catch)" fallthrough="true" fallthroughContext="#pop">
+  <context attribute="Normal Text" lineEndContext="#stay" name="(Internal regex catch)" fallthroughContext="#pop">
      <DetectSpaces attribute="Normal Text" context="#stay" />
      <RegExpr attribute="Regular Expression" context="#pop" String="//(?=;)" />
      <Detect2Chars attribute="Comment" context="JSComment" char="/" char1="/" />
@@ -566,16 +461,14 @@
      <RegExpr attribute="Pattern Character Class" context="#stay" String="\\[\[\]]" />
      <DetectChar attribute="Pattern Character Class" context="#pop#pop" char="]" />
   </context>
-  <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthrough="true" fallthroughContext="Regular Expression">
+  <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(regex caret first check)" fallthroughContext="Regular Expression">
      <DetectChar attribute="Pattern Internal Operator" context="Regular Expression" char="^" />
   </context>
-  <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthrough="true" fallthroughContext="Regular Expression Character Class">
+  <context attribute="Pattern Internal Operator" lineEndContext="#pop" name="(charclass caret first check)" fallthroughContext="Regular Expression Character Class">
      <DetectChar attribute="Pattern Internal Operator" context="Regular Expression Character Class" char="^" />
   </context>
   
-  <context name="region_marker" attribute="Region Marker" lineEndContext="#pop" >
-     <DetectIdentifier />
-     <DetectSpaces />
+  <context name="region_marker" attribute="Region Marker" lineEndContext="#pop">
   </context>
 
 </contexts>
@@ -583,14 +476,6 @@
   <itemData name="Normal Text" defStyleNum="dsNormal" />
   <itemData name="Comment" defStyleNum="dsComment" />
   <itemData name="CDATA" defStyleNum="dsBaseN" bold="1" />
-  <itemData name="Processing Instruction" defStyleNum="dsKeyword" />
-  <itemData name="Doctype" defStyleNum="dsDataType" bold="1" />
-  <itemData name="Element" defStyleNum="dsKeyword" />
-  <itemData name="Attribute" defStyleNum="dsOthers" />
-  <itemData name="Value" defStyleNum="dsString" />
-  <itemData name="EntityRef" defStyleNum="dsDecVal" />
-  <itemData name="PEntityRef" defStyleNum="dsDecVal" />
-  <itemData name="Error" defStyleNum="dsError" />
 
   <itemData name="Keyword"      defStyleNum="dsKeyword"/>
   <itemData name="Function" defStyleNum="dsFunction"/>
diff --git a/xml/yacc.xml b/xml/yacc.xml
--- a/xml/yacc.xml
+++ b/xml/yacc.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd">
+<!DOCTYPE language>
 <!--
 ========================================================================
 YACC.XML supports syntax highlighting for Yacc/Bison source under Kate.
@@ -32,7 +32,7 @@
 
 ========================================================================
 -->
-<language name="Yacc/Bison" version="9" kateversion="5.0" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
+<language name="Yacc/Bison" version="9" kateversion="5.79" section="Sources" extensions="*.y;*.yy;*.ypp;*.y++" mimetype="text/x-yacc;text/x-bison" priority="5" author="Jan Villat (jan.villat@net2000.ch)" license="LGPL">
 
 <highlighting>
 <contexts>
@@ -112,7 +112,7 @@
     <IncludeRules context="Symbol-Variable" />
     <IncludeRules context="##C++" />
   </context>
-  <context name="Code-Symbols End" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Percent Command In">
+  <context name="Code-Symbols End" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop!Percent Command In">
     <IncludeRules context="Comment" />
     <DetectSpaces />
     <DetectChar attribute="Normal Text" context="#pop" char=";" lookAhead="true" />
@@ -145,7 +145,7 @@
   </context>
   <!-- The Bison parser allows to have ';' followed by '|', without the rule ending.
        The problem here is that the ';' char has endRegion="rule" (although it is not very relevant). -->
-  <context name="Rule End" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop">
+  <context name="Rule End" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop">
     <DetectSpaces />
     <DetectChar attribute="Normal Text" context="#stay" char=";" />
     <DetectChar attribute="Normal Text" context="#pop" char="|" />
@@ -231,10 +231,10 @@
     <DetectChar attribute="Directive" context="Dol" char="$" />
     <RegExpr attribute="Directive" context="#stay" String="@\$?(?:\d+|[A-Za-z_]\w*)?" />
   </context>
-  <context name="Dol" attribute="Normal Text" fallthrough="true" fallthroughContext="DolEnd" lineEndContext="#stay">
+  <context name="Dol" attribute="Normal Text" fallthroughContext="DolEnd" lineEndContext="#stay">
     <RegExpr attribute="Data Type" context="DolEnd" String="&lt;[^&gt;]+&gt;" />
   </context>
-  <context name="DolEnd" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop#pop">
+  <context name="DolEnd" attribute="Normal Text" lineEndContext="#stay" fallthroughContext="#pop#pop">
     <RegExpr attribute="Directive" context="#pop#pop" String="@?\d+" />
     <DetectChar attribute="Directive" context="#pop#pop" char="$" />
     <DetectIdentifier attribute="Directive" context="#pop#pop" />
diff --git a/xml/yaml.xml b/xml/yaml.xml
--- a/xml/yaml.xml
+++ b/xml/yaml.xml
@@ -1,641 +1,820 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-  <!ENTITY null "(?:null|Null|NULL|~)">
-  <!ENTITY bool "(?:y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)">
-
-  <!ENTITY int         "(?:0|[\-\+]?[1-9][0-9_]*)">
-  <!ENTITY intOther    "[\-\+]?0(?:x_*[0-9a-fA-F][0-9a-fA-F_]*|o?_*[0-7][0-7_]*|b_*[01][01_]*)"> <!-- Hex, Octal, Binary -->
-  <!ENTITY intBase60   "[\-\+]?[1-9][0-9_]*(?:\:[0-5]?[0-9])+">
-  <!ENTITY allInt      "(?:&intBase60;|&intOther;|&int;)">
-
-  <!ENTITY float       "[\-\+]?(?:[0-9][0-9_]*\.[0-9\._]*|\._*[0-9][0-9\._]*)(?:[eE][\-\+]?[0-9]+)?">
-  <!ENTITY floatExp    "[\-\+]?[0-9][0-9_]*[eE][\-\+]?[0-9]+">
-  <!ENTITY floatBase60 "[\-\+]?[0-9][0-9_]*(?:\:[0-5]?[0-9])+\.[0-9_]*">
-  <!ENTITY inf         "[\-\+]?\.(?:inf|Inf|INF)\b">
-  <!ENTITY nan         "\.(?:nan|NaN|NAN)\b">
-  <!ENTITY allFloat    "(?:&float;|&floatExp;|&floatBase60;|&inf;|&nan;)">
-
-  <!ENTITY endValue       "(?:\s*$|\s+#)">
-  <!ENTITY endValueInline "\s*[:,\[\]\{\}]">
-  <!ENTITY space          "[ ]">
-
-  <!-- Key quoted -->
-  <!ENTITY keyDQ          "&quot;(?:\\.|[^&quot;])+&quot;\s*">
-  <!ENTITY keySQ          "'(?:[^']|'')+'\s*">
-  <!-- Literal/folded operator -->
-  <!ENTITY literalOp      "[\|&gt;][\-\+]?">
-  <!-- Key after "?" or "-", used to detect literal/folded operator -->
-  <!ENTITY keyAfterOp     "(?:[^&quot;'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)">
-
-  <!ENTITY dataTypes      "!!\S+">
-  <!ENTITY alias          "&amp;\S+">
-  <!ENTITY reference      "\*\S+">
-
-  <!ENTITY dpointsHashAttrPreInline1 "[^\s&quot;'#\-,\}\s][^:#,\}]*(?=\:(?:\s|$))">
-  <!ENTITY dpointsHashAttrPreInline2 "\-(?:[^\s:#,\}][^:#,\}]*)?(?=\:(?:\s|$))">
-  <!ENTITY dpointsHashAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
-  <!ENTITY dpointsHashAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
-
-  <!ENTITY dpointsListAttrPreInline1 "[^&quot;'#\-,\]\s][^:#,\]]*(?=\:(?:\s|$))">
-  <!ENTITY dpointsListAttrPreInline2 "\-(?:[^\s:#,\]][^:#,\]]*)?(?=\:(?:\s|$))">
-  <!ENTITY dpointsListAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
-  <!ENTITY dpointsListAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
-
-  <!ENTITY dpointsAttrPre1 "[^&quot;'#\-\s][^:#]*(?=\:(?:\s|$))">
-  <!ENTITY dpointsAttrPre2 "\-(?:[^\s:#][^:#]*)?(?=\:(?:\s|$))">
-  <!ENTITY dpointsAttrPre3 "&keyDQ;(?=\:(?:\s|$))">
-  <!ENTITY dpointsAttrPre4 "&keySQ;(?=\:(?:\s|$))">
-
-]>
-
-<!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->
-<!-- Modifications (YAML 1.2), values & support for literal/folded style:
-       Nibaldo González S. <nibgonz@gmail.com>
-       These modifications are under the MIT license. //-->
-<language name="YAML" version="10" kateversion="5.0" section="Markup"
-          extensions="*.yaml;*.yml" mimetype="text/yaml" priority="9"
-          author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">
-  <highlighting>
-    <contexts>
-      <context attribute="Attribute" lineEndContext="#stay" name="normal" >
-        <StringDetect attribute="Document Header" context="header" String="---" column="0"/>
-        <RegExpr attribute="End of Document" context="EOD" String="^\.\.\.$" column="0"/>
-        <DetectChar attribute="Directive" context="directive" char="%" column="0"/>
-
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-
-        <!-- Literal/Folded Style -->
-        <IncludeRules context="find-literal-block" />
-
-        <RegExpr attribute="Operator" firstNonSpace="true" context="dash" String="\-(?=\s|$)" />
-        <DetectChar attribute="Operator" firstNonSpace="true" context="mapping-key" char="?" />
-
-        <DetectChar attribute="Operator" firstNonSpace="true" context="list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" firstNonSpace="true" context="hash" char="{" beginRegion="Hash" />
-
-        <RegExpr attribute="Data Types" firstNonSpace="true" context="after-data" String="&dataTypes;" />
-        <RegExpr attribute="Alias" firstNonSpace="true" context="after-data" String="&alias;" />
-        <RegExpr attribute="Reference" firstNonSpace="true" context="after-data" String="&reference;" />
-
-        <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&dpointsAttrPre1;|&dpointsAttrPre2;|&dpointsAttrPre3;|&dpointsAttrPre4;"/>
-        <RegExpr attribute="Key Points Operator" context="attribute-pre" String=":(?=\s|$)"/>
-
-        <DetectChar attribute="String" firstNonSpace="true" context="string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" firstNonSpace="true" context="stringx" char="&quot;" beginRegion="String" />
-        <IncludeRules context="values-firstnonspace" />
-        <DetectSpaces/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="mapping-key" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
-        <DetectSpaces />
-        <RegExpr attribute="Operator" context="#pop!dash" String="\-(?=\s|$)" />
-        <RegExpr attribute="Data Types" context="#pop!after-data" String="&dataTypes;" />
-        <RegExpr attribute="Alias" context="#pop!after-data" String="&alias;" />
-        <RegExpr attribute="Reference" context="#pop!after-data" String="&reference;" />
-
-        <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
-        <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="#pop!stringx" char="&quot;" beginRegion="String" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="dash" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-        <DetectSpaces/>
-        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
-        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
-        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
-        <IncludeRules context="values" />
-        <DetectChar attribute="Operator" context="#pop!mapping-key" char="?" />
-        <RegExpr attribute="Operator" context="#stay" String="\-(?=\s|$)" />
-
-        <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
-        <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="#pop!stringx" char="&quot;" beginRegion="String" />
-      </context>
-
-      <!-- Highlight lists, hashes and strings after a data type, reference or alias -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="after-data" fallthrough="true" fallthroughContext="#pop">
-        <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
-        <DetectSpaces />
-        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
-        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
-        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
-
-        <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
-        <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
-      </context>
-
-      <context attribute="Document Header" lineEndContext="#pop" name="header">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-        <RegExpr attribute="Literal/Folded Operator" context="header-literal-operator" String="\s&literalOp;(?=&endValue;)" lookAhead="true" />
-      </context>
-      <context attribute="Document Header" lineEndContext="#pop#pop" name="header-literal-operator" fallthrough="true" fallthroughContext="#pop">
-        <DetectSpaces />
-        <RegExpr attribute="Literal/Folded Operator" context="#pop#pop!literal-block-simple" String="&literalOp;" beginRegion="Literal" />
-      </context>
-
-      <context attribute="End of Document" lineEndContext="#stay" name="EOD">
-      </context>
-
-      <context attribute="Directive" lineEndContext="#pop" name="directive">
-      </context>
-
-      <context attribute="Attribute" lineEndContext="#pop#pop" name="attribute">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-      </context>
-
-      <context attribute="Attribute" lineEndContext="#stay" name="list-attribute-inline">
-        <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",]" />
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-      </context>
-      <context attribute="Attribute" lineEndContext="#stay" name="hash-attribute-inline">
-        <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",}" />
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-      </context>
-
-      <!-- Attribute -->
-      <context attribute="Attribute" lineEndContext="#pop" name="dpoints-attribute-pre" fallthrough="true" fallthroughContext="#pop!attribute-pre">
-        <DetectChar attribute="Key Points Operator" context="#pop!attribute-pre" char=":" /> <!-- Highlight two points after Key -->
-      </context>
-      <context attribute="Attribute" lineEndContext="#pop" name="attribute-pre" fallthrough="true" fallthroughContext="attribute">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-        <DetectSpaces/>
-        <DetectChar attribute="Operator" context="#stay" char="?" />
-        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
-        <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
-        <DetectChar attribute="String" context="attribute-string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="attribute-stringx" char="&quot;" beginRegion="String" />
-        <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
-        <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
-        <RegExpr attribute="Alias" context="attribute" String="&alias;" />
-        <RegExpr attribute="Reference" context="attribute" String="&reference;" />
-        <IncludeRules context="values" />
-        <RegExpr attribute="Literal/Folded Operator" context="#stay" String="&literalOp;(?=&endValue;)" />
-      </context>
-
-      <context attribute="Attribute" lineEndContext="#pop" name="default-attribute-pre-inline">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-        <DetectSpaces/>
-
-        <DetectChar attribute="Operator" context="#stay" char="?" />
-        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
-        <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
-        <DetectChar attribute="String" context="attribute-string-inline" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="attribute-stringx-inline" char="&quot;" beginRegion="String" />
-        <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
-        <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
-      </context>
-
-      <!-- Attribute Inline, Within List -->
-      <context attribute="Attribute" lineEndContext="#pop" name="dpoints-list-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!list-attribute-pre-inline">
-        <DetectChar attribute="Key Points Operator" context="#pop!list-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
-      </context>
-      <context attribute="Attribute" lineEndContext="#pop" name="list-attribute-pre-inline" fallthrough="true" fallthroughContext="list-attribute-inline">
-        <IncludeRules context="default-attribute-pre-inline" />
-        <RegExpr attribute="Alias" context="list-attribute-inline" String="&alias;" />
-        <RegExpr attribute="Reference" context="list-attribute-inline" String="&reference;" />
-
-        <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",]" />
-        <IncludeRules context="values-inline" />
-      </context>
-
-      <!-- Attribute Inline, Within Hash -->
-      <context attribute="Attribute" lineEndContext="#pop" name="dpoints-hash-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!hash-attribute-pre-inline">
-        <DetectChar attribute="Key Points Operator" context="#pop!hash-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
-      </context>
-      <context attribute="Attribute" lineEndContext="#pop" name="hash-attribute-pre-inline" fallthrough="true" fallthroughContext="hash-attribute-inline">
-        <IncludeRules context="default-attribute-pre-inline" />
-        <RegExpr attribute="Alias" context="hash-attribute-inline" String="&alias;" />
-        <RegExpr attribute="Reference" context="hash-attribute-inline" String="&reference;" />
-
-        <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",}" />
-        <IncludeRules context="values-inline" />
-      </context>
-
-      <!-- List -->
-      <!-- Context "find-values-list" highlights values and then sends to "list-element" -->
-      <context attribute="List" lineEndContext="#stay" name="list" fallthrough="true" fallthroughContext="#pop!find-values-list" noIndentationBasedFolding="true">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-        <DetectSpaces />
-        <DetectChar attribute="Operator" context="#pop!find-values-list" char="?" />
-      </context>
-      <context attribute="List" lineEndContext="#stay" name="list-element" noIndentationBasedFolding="true">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-
-        <DetectChar attribute="Operator" context="#pop" char="]" endRegion="List" />
-        <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
-
-        <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&dpointsListAttrPreInline1;|&dpointsListAttrPreInline2;|&dpointsListAttrPreInline3;|&dpointsListAttrPreInline4;"/>
-        <RegExpr attribute="Key Points Operator" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />
-
-        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
-        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
-        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
-        <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
-
-        <DetectChar attribute="Operator" context="#pop!list" char="," />
-        <IncludeRules context="values-list" />
-      </context>
-
-      <!-- Hash -->
-      <context attribute="Hash" lineEndContext="#stay" name="hash" fallthrough="true" fallthroughContext="#pop!hash-element" noIndentationBasedFolding="true">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-        <DetectSpaces />
-        <DetectChar attribute="Operator" context="#pop!hash-element" char="?" />
-      </context>
-      <context attribute="Hash" lineEndContext="#stay" name="hash-element" noIndentationBasedFolding="true">
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-        <DetectSpaces/>
-
-        <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&dpointsHashAttrPreInline1;|&dpointsHashAttrPreInline2;|&dpointsHashAttrPreInline3;|&dpointsHashAttrPreInline4;"/>
-        <RegExpr attribute="Key Points Operator" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>
-
-        <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash" />
-        <DetectChar attribute="Operator" context="#pop!hash" char="," />
-
-        <!-- This improves highlighting in keys with multiple lines -->
-        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
-        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
-        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
-        <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
-      </context>
-
-      <!-- Strings -->
-      <context attribute="String" lineEndContext="#stay" name="attribute-string" noIndentationBasedFolding="true">
-        <DetectIdentifier />
-        <IncludeRules context="escaped-char-singleq" />
-        <DetectChar attribute="String" context="attribute-end" char="'" endRegion="String" />
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="attribute-stringx" noIndentationBasedFolding="true">
-        <DetectIdentifier />
-        <IncludeRules context="escaped-char-doubleq" />
-        <DetectChar attribute="String" context="attribute-end" char="&quot;" endRegion="String" />
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="attribute-string-inline" noIndentationBasedFolding="true">
-          <DetectIdentifier />
-          <IncludeRules context="escaped-char-singleq" />
-          <DetectChar attribute="String" context="attribute-end-inline" char="'" endRegion="String" />
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="attribute-stringx-inline" noIndentationBasedFolding="true">
-          <DetectIdentifier />
-          <IncludeRules context="escaped-char-doubleq" />
-          <DetectChar attribute="String" context="attribute-end-inline" char="&quot;" endRegion="String" />
-      </context>
-
-      <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end">
-          <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-          <DetectSpaces attribute="Normal Text" context="#stay"/>
-      </context>
-
-      <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end-inline">
-          <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
-          <DetectSpaces attribute="Normal Text" context="#stay"/>
-          <AnyChar attribute="String" context="#pop#pop#pop"  lookAhead="true" String="}]"/>
-          <DetectChar attribute="Operator" context="#pop#pop#pop" lookAhead="true" char="," />
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="string" noIndentationBasedFolding="true">
-        <DetectIdentifier />
-        <IncludeRules context="escaped-char-singleq" />
-        <DetectChar attribute="String" context="#pop" char="'" endRegion="String" />
-      </context>
-
-      <context attribute="String" lineEndContext="#stay" name="stringx" noIndentationBasedFolding="true">
-        <DetectIdentifier />
-        <IncludeRules context="escaped-char-doubleq" />
-        <DetectChar attribute="String" context="#pop" char="&quot;" endRegion="String" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-doubleq">
-        <RegExpr attribute="Escaped Character" context="#stay" String="\\(?:[\s0abtnvfre&quot;/\\N_Lp]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-singleq">
-        <Detect2Chars attribute="Escaped Character" context="#stay" char="'" char1="'" />
-      </context>
-
-      <context attribute="Comment" lineEndContext="#pop" name="comment">
-        <DetectSpaces />
-        <IncludeRules context="##Comments" />
-      </context>
-
-      <!-- Values -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="values">
-        <RegExpr attribute="Null" context="#stay" String="&null;(?=&endValue;)"/>
-        <RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValue;)"/>
-        <RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValue;)"/>
-        <RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValue;)"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="values-firstnonspace">
-        <RegExpr attribute="Null" firstNonSpace="true" context="#stay" String="&null;(?=&endValue;)"/>
-        <RegExpr attribute="Boolean" firstNonSpace="true" context="#stay" String="&bool;(?=&endValue;)"/>
-        <RegExpr attribute="Float" firstNonSpace="true" context="#stay" String="&allFloat;(?=&endValue;)"/>
-        <RegExpr attribute="Integer" firstNonSpace="true" context="#stay" String="&allInt;(?=&endValue;)"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="values-inline">
-        <RegExpr attribute="Null" context="#stay" String="&null;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValueInline;|&endValue;)"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="values-list">
-        <RegExpr attribute="Null" context="#stay" String="(?:\s|^)&null;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Boolean" context="#stay" String="(?:\s|^)&bool;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Float" context="#stay" String="(?:\s|^)&allFloat;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Integer" context="#stay" String="(?:\s|^)&allInt;(?=&endValueInline;|&endValue;)"/>
-      </context>
-      <!-- If the value is found immediately at the beginning of the list item -->
-      <context attribute="Normal Text" lineEndContext="#pop!list-element" name="find-values-list" fallthrough="true" fallthroughContext="#pop!list-element">
-        <RegExpr attribute="Null" context="#pop!list-element" String="&null;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Boolean" context="#pop!list-element" String="&bool;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Float" context="#pop!list-element" String="&allFloat;(?=&endValueInline;|&endValue;)"/>
-        <RegExpr attribute="Integer" context="#pop!list-element" String="&allInt;(?=&endValueInline;|&endValue;)"/>
-      </context>
-
-      <!-- Literal/Folded Style: http://yaml.org/spec/1.2/spec.html#id2795688 -->
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="find-literal-block">
-        <!-- Do not allow indentation with tabs: -->
-        <RegExpr attribute="Alert" context="#stay" column="0"
-                 String="^&space;*\t+\s*(?=(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
-
-        <!-- CASE 1: The literal/folded operator is the first character of a line.
-             The text after a space is considered literal.
-             Ex:
-             > |
-             >  ^Start the literal text
-        -->
-        <RegExpr attribute="Literal/Folded Operator" context="literal-block-simple" column="0"
-                 String="^&literalOp;(?=&endValue;)" beginRegion="Literal" />
-
-        <!-- CASE 2: Only the literal/folded operator is present in a line, after a space (the indentation
-             is captured). The text with the same indentation of the operator will be highlighted as literal.
-             Ex:
-             >  key:
-             >    |
-             >    ^Start the literal text
-
-             However, in this case, the correct way is to use the indentation of the block, not the
-             indentation of the the operator. The problem is that it is difficult to capture.
-             >  key1:
-             >   key2:
-             >    key3:
-             >          |
-             >     ^Block indentation (correct literal text)
-        -->
-        <RegExpr attribute="Literal/Folded Operator" context="literal-block-only-operator" column="0"
-                 String="^(&space;+)&literalOp;(?=&endValue;)" beginRegion="Literal" />
-
-        <!-- CASE 3: There is a Key before the literal/folded operator (Key indentation is captured).
-             The text with the Key's indentation plus a space is considered literal.
-             Ex:
-             >    key: |
-             >     ^Start the literal text
-             >  key: !!type >-
-             >   ^Start the folded text
-        -->
-        <RegExpr attribute="Key Points Operator" context="literal-block-key" column="0"
-                 String="^(&space;*)\:(?=\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
-        <RegExpr attribute="Key" context="literal-block-key" column="0"
-                 String="^(&space;*)(?:[^&quot;'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)(?=\:\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?&literalOp;&endValue;)" />
-
-        <!-- CASE 4: Is there an operator "?" or "-" at the beginning of the line.
-             NOTE: Nested characters "-" and "?" are considered as part of the indentation.
-             Therefore, the indentation of the Key or the last operator "?" or "-" is captured.
-             Ex:
-             >  ? |
-             >   ^Start the literal Text
-             >  ? - - |
-             >       ^Start the literal text
-             >  - Key: |
-             >     ^Start the literal text
-             >  ? - - - - Key: |
-             >             ^Start the literal text
-        -->
-        <RegExpr context="start-literal-block-withdash" lookAhead="true" column="0"
-                 String="^&space;*(?:\?&space;*|\-&space;+){1,6}(?:(?:&keyDQ;|&keySQ;|[^#\-\?\s]|\-[^\s#])(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|&lt;&gt;&quot;'])?)?&literalOp;&endValue;" />
-
-        <!-- CASE 5: Literal/folded operator after a data type or other content.
-             Ex:
-             >  !!type |
-             >   ^Start the literal text
-             >  key1:
-             >   key2:
-             >    !!type |
-             >    ^Start the literal text
-        -->
-        <RegExpr context="start-literal-block-other" lookAhead="true" column="0"
-                 String="^&space;*(?:(?:[&amp;\*]|!!)\S+\s+)+&literalOp;&endValue;" />
-      </context>
-
-      <!-- If the line with the literal operator starts with the "-" or "?" operator.
-           NOTE: The indentation capture is limited to 6 nested operators. -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-withdash" noIndentationBasedFolding="true">
-        <!-- With Key: Capture the Key indentation -->
-        <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s2" String="^(&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s7" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
-        <!-- Without Key: Capture the indentation of the last operator "?" or "-" -->
-        <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s1" String="^(&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s2" String="^(&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
-        <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
-      </context>
-      <!-- Capture the indentation of data type, reference or alias  -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-other" noIndentationBasedFolding="true">
-        <!-- The text with the same indentation will be considered literal -->
-        <RegExpr attribute="Data Types" context="#pop!literal-block-after-data" String="^(&space;+)&dataTypes;" column="0" />
-        <RegExpr attribute="Alias" context="#pop!literal-block-after-data" String="^(&space;+)&alias;" column="0" />
-        <RegExpr attribute="Reference" context="#pop!literal-block-after-data" String="^(&space;+)&reference;" column="0" />
-        <!-- The text after a space will be considered literal (empty text is captured) -->
-        <RegExpr attribute="Data Types" context="#pop!literal-block-withdash-s1" String="^()&dataTypes;" column="0" />
-        <RegExpr attribute="Alias" context="#pop!literal-block-withdash-s1" String="^()&alias;" column="0" />
-        <RegExpr attribute="Reference" context="#pop!literal-block-withdash-s1" String="^()&reference;" column="0" />
-      </context>
-
-      <!-- Highlight data/attribute before the literal operator (Note that if there is a line
-           break within a string or bracket, the literal line will not be highlighted). -->
-      <context attribute="Attribute" lineEndContext="#pop#pop" name="before-literal-operator" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Operator" context="#pop!end-literal-operator" String="&literalOp;(?=&endValue;)" beginRegion="Literal" />
-
-        <RegExpr attribute="Error" context="#pop#pop" String="(?:[&amp;\*]|!!)\S*&literalOp;(?=&endValue;)" />
-        <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
-        <RegExpr attribute="Alias" context="#stay" String="&alias;" />
-        <RegExpr attribute="Reference" context="#stay" String="&reference;" />
-
-        <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
-        <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
-        <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
-        <DetectChar attribute="String" context="stringx" char="&quot;" beginRegion="String" />
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="dpoints-key-before-literal-operator" fallthrough="true" fallthroughContext="#pop#pop" noIndentationBasedFolding="true">
-        <DetectChar attribute="Key Points Operator" context="#pop!key-before-literal-operator" char=":" />
-      </context>
-      <context attribute="Attribute" lineEndContext="#pop#pop" name="key-before-literal-operator" noIndentationBasedFolding="true">
-        <IncludeRules context="before-literal-operator" />
-        <DetectChar attribute="Operator" context="#stay" char="?" />
-      </context>
-      <context attribute="Attribute" lineEndContext="#pop" name="end-literal-operator" noIndentationBasedFolding="true">
-        <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
-      </context>
-
-      <!-- Common rules for the content of the literal blocks -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-default" noIndentationBasedFolding="true">
-        <!-- End literal/folded block -->
-        <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <!-- Find literal/folded operator -->
-        <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="literal-block-key-default" noIndentationBasedFolding="true">
-        <!-- End literal/folded block -->
-        <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <!-- Detect Key before the literal/folded operator -->
-        <RegExpr attribute="Key" context="dpoints-key-before-literal-operator" String="&keyAfterOp;(?=:\s)" />
-        <RegExpr attribute="Normal Text" context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
-      </context>
-
-      <!-- Content of the literal block: -->
-
-      <!-- If the literal operator is starting the line (after a space, use block indentation) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-only-operator" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />
-
-        <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />
-        <RegExpr context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
-      </context>
-      <!-- If the literal operator is the first character of a line (or after header) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-simple" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^\s.*$" column="0" />
-
-        <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />
-      </context>
-      <!-- If there is a data type or other content before the liretal operator (use block indentation) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-after-data" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />
-
-        <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
-      </context>
-      <!-- If there is a key before the literal operator -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />
-
-        <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
-        <!-- Attribute of the Key (the Key was previously highlighted) -->
-        <RegExpr attribute="Key Points Operator" context="key-before-literal-operator" String=":\s" />
-        <RegExpr context="key-before-literal-operator" String="\S" lookAhead="true" />
-      </context>
-
-      <!-- If there are dashes/"?" before the literal operator -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s1" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-default" />
-      </context>
-      <!-- If there are dashes/"?" and a Key before the literal operator -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-key-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-key-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-key-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-key-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-key-default" />
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s7" dynamic="true" noIndentationBasedFolding="true">
-        <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6%7&space;{6}\s.*$" dynamic="true" column="0" />
-        <IncludeRules context="literal-block-key-default" />
-      </context>
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text" defStyleNum="dsAttribute" />
-      <itemData name="Attribute" defStyleNum="dsAttribute" />
-      <itemData name="List" defStyleNum="dsAttribute" />
-      <itemData name="Hash" defStyleNum="dsAttribute" />
-      <itemData name="Comment" defStyleNum="dsComment" />
-      <itemData name="End of Document" defStyleNum="dsComment" />
-      <itemData name="Document Header" defStyleNum="dsPreprocessor" />
-      <itemData name="Data Types" defStyleNum="dsOthers" />
-      <itemData name="Alias" defStyleNum="dsOthers" />
-      <itemData name="Reference" defStyleNum="dsOthers" />
-      <itemData name="Key" defStyleNum="dsFunction" bold="1" />
-      <itemData name="Directive" defStyleNum="dsPreprocessor" />
-      <itemData name="Key Points Operator" defStyleNum="dsKeyword" />
-      <itemData name="Operator" defStyleNum="dsKeyword" />
-      <itemData name="String" defStyleNum="dsString" />
-      <itemData name="Escaped Character" defStyleNum="dsSpecialChar" />
-      <itemData name="Literal/Folded Operator" defStyleNum="dsChar" bold="1" />
-      <itemData name="Literal/Folded Block" defStyleNum="dsNormal" />
-      <itemData name="Null" defStyleNum="dsChar" />
-      <itemData name="Boolean" defStyleNum="dsChar" />
-      <itemData name="Integer" defStyleNum="dsDecVal" />
-      <itemData name="Float" defStyleNum="dsFloat" />
-      <itemData name="Error" defStyleNum="dsError" />
-      <itemData name="Alert" defStyleNum="dsAlert" backgroundColor="#EF9A9A" />
-    </itemDatas>
-  </highlighting>
-
-  <general>
-    <folding indentationsensitive="1" />
-    <emptyLines>
-      <emptyLine regexpr="(?:\s+|\s*#.*)"/>
-    </emptyLines>
-    <comments>
-      <comment name="singleLine" start="#" position="afterwhitespace" />
+<!DOCTYPE language
+[
+  <!--
+  https://yaml.org/spec/1.2.2/#1032-tag-resolution with extensions
+  -->
+
+  <!ENTITY tab            "&#9;">
+
+  <!-- For correct highlight range between selected brackets... -->
+  <!ENTITY listOpen "[">
+  <!ENTITY listClose "]">
+  <!ENTITY hashOpen "{">
+  <!ENTITY hashClose "}">
+
+  <!--
+  @{ Literal
+  -->
+  <!ENTITY null "(?:null|Null|NULL|~)">
+  <!ENTITY bool "(?:y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)">
+
+  <!ENTITY int         "[1-9](?:_*+[0-9]++)*+">
+  <!-- Hex, Octal, Binary -->
+  <!ENTITY intOther    "0(?:x(?:_*+[0-9a-fA-F]++)++|o(?:_*+[0-7]++)++|(?:_*+[0-7]++)*+|b(?:_*+[01]++)++)">
+  <!ENTITY intBase60   "[1-9][0-9_]*(?::[0-5]?[0-9])+">
+  <!ENTITY allInt      "[-+]?(?:&intBase60;|&intOther;|&int;)">
+
+  <!ENTITY date           "[0-9]{4}-[0-9]{2}-[0-9]{2}">
+  <!ENTITY time           "[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]*)?">
+  <!ENTITY time_canonical "T&time;Z?">
+  <!ENTITY time_iso8601   "t&time;(?:[-+][0-9]+(?::[0-9]{2})?)?">
+  <!ENTITY time_spaced    " +&time;(?: +[-+][0-9]+)?">
+  <!ENTITY timestamp      "&date;(?:&time_canonical;|&time_iso8601;|&time_spaced;)?">
+
+  <!ENTITY floatExp    "(?:[eE][-+]?[0-9]+)">
+  <!ENTITY float1      "[0-9][0-9_]*+(?:&floatExp;|\.(?:_*+[0-9]++)*+(?:_*+&floatExp;)?)">
+  <!ENTITY float2      "\._*+[0-9]++(?:_*+[0-9]++)*+(?:_*+&floatExp;)?">
+  <!ENTITY floatBase60 "[0-9][0-9_]*(?::[0-5]?[0-9])+\.(?:_*+[0-9]++)*+">
+  <!ENTITY inf         "\.(?:inf|Inf|INF)">
+  <!ENTITY nan         "\.(?:nan|NaN|NAN)">
+  <!ENTITY allFloat    "(?:[-+]?(?:&float1;|&float2;|&floatBase60;|&inf;)|&nan;)">
+
+  <!ENTITY firstLitChar "nN~yYnNtTfFoO-+0123456789.">
+
+  <!-- Key quoted -->
+  <!ENTITY keyDQ          '"(?:\\.|[^"])*+"'>
+  <!ENTITY keySQ          "'(?:[^']|'')*+'">
+
+  <!ENTITY endValue       "(?:$|\s++(?:#|$))">
+  <!ENTITY inlineSep      "[,\[\]{}]|:(?:\s|$)">
+  <!ENTITY endValueInline "(?:$|&inlineSep;|\s++(?:#|$|&inlineSep;))">
+  <!--
+  @} Literal
+  -->
+
+  <!--
+  @{ Key attribute
+  - key: value
+    ~~~
+  -->
+  <!ENTITY keyPlainData             "(?:[^: \t]++|:(?! |$)|[\t ]++(?!#))">
+  <!ENTITY listKeyPlainData "(?:[^,{}\[\]?: \t]++|:(?! |$)|[\t ]++(?!#)|[?](?! |$))">
+  <!ENTITY keyPlain "&keyPlainData;++">
+  <!ENTITY isKeyPoint "(?=:(?: |$))">
+  <!ENTITY isPlain "(?!['&quot;&#37;\&listClose;\&hashClose;])">
+  <!ENTITY keyAttr "(?:&keyDQ;[\t ]*+|&keySQ;[\t ]*+|&isPlain;&keyPlain;)?+&isKeyPoint;">
+
+  <!-- string attributes in a list or hash have an optional space after ':' (json compatibility) -->
+  <!ENTITY keyAttrDQEnd  '"[\t ]*+&isKeyPoint;'>
+  <!ENTITY jsonAttrDQEnd '"[\t ]*+(?=:)'>
+  <!ENTITY keyAttrSQEnd  "'[\t ]*+&isKeyPoint;">
+  <!ENTITY jsonAttrSQEnd "'[\t ]*+(?=:)">
+  <!ENTITY keyDQWithEscape  '"[^"\\]*+(?:&keyAttrDQEnd;|(?=\\.(\\.|[^"])*+&keyAttrDQEnd;))'>
+  <!ENTITY jsonDQWithEscape '"[^"\\]*+(?:&jsonAttrDQEnd;|(?=\\.(\\.|[^"])*+&jsonAttrDQEnd;))'>
+  <!ENTITY keySQWithEscape  "'[^']*+(?:&keyAttrSQEnd;|(?=''(?:[^']|'')*+&keyAttrSQEnd;))">
+  <!ENTITY jsonSQWithEscape "'[^']*+(?:&jsonAttrSQEnd;|(?=''(?:[^']|'')*+&jsonAttrSQEnd;))">
+
+  <!ENTITY keyAttrWithEscape  "&keyDQWithEscape;|&keySQWithEscape;|&isPlain;&keyPlainData;++&isKeyPoint;">
+  <!ENTITY jsonAttrWithEscape "&jsonDQWithEscape;|&jsonSQWithEscape;|&isPlain;&listKeyPlainData;++&isKeyPoint;">
+  <!--
+  @} Key attribute
+  -->
+
+  <!-- Detect indentation with at most 4 symbols:
+       >  - - - - key: value
+          ~ ~ ~ ~ symbols
+
+  Indentation level:
+
+  - -   key: value
+          value
+      # ^ final indent
+  - -   value
+       value
+  # ^ final indent
+  - -   |
+              line 1
+               line 2
+           # ^ final indent
+  # ^ minimal final indent
+
+  Captures spaces at the start of a line as well as spaces between -, : and ?.
+  The captures between symbols are in 2 parts:
+  - a single space which replaces the symbol in the dynamic construction rules
+  - and the spaces which follow
+
+     -   -   - bla
+  ~~~         capture 1
+      ~   ~   capture 2 and 4
+       ~~  ~~ capture 3 and 5
+     ^   ^    replaced with capture 2 and 4 for dynamic indent
+
+  The empty capture at the end is necessary to ensure
+  that the number of captures is always at least 9.
+  Otherwise, %N in dynamic rules are not replaced with empty string. -->
+  <!ENTITY spaceAndOpPrefix "^( ++)(?![|>&#37;])&afterSpaceLookAheadPrefix;">
+  <!ENTITY spaceAndOpNewPrefix "^( ++)&afterSpaceLookAheadPrefix;">
+  <!ENTITY afterSpaceLookAheadPrefix "(?=[-:?](?: |$)|&keyAttrOrSeq;)&lookAheadPrefix;()">
+  <!ENTITY opPrefix "^(?=[-:?](?: |$)|(?!---(?:$| )|\.\.\.(?:$| ))&keyAttr;)()&lookAheadPrefix;.()">
+  <!ENTITY keyAttrOrSeq "(?:[\&listOpen;\&hashOpen;]|&keyAttr;)">
+  <!ENTITY noLastAttrOp  "[-:?]( )( *+)(?=[-:?](?: |$))">
+  <!ENTITY tooManySym    "[-:?] ++[-:?](?: |$)">
+  <!ENTITY noLastAttrOps "(?:&noLastAttrOp;(?:&noLastAttrOp;(?:&noLastAttrOp;)?+)?+)?+">
+  <!ENTITY lookAheadPrefix "(?=&noLastAttrOps;(?!&tooManySym;)(?:(?:[-:?]( ))?+( *+)&keyAttrOrSeq;)?+)">
+  <!ENTITY indent  "&#37;1&#37;2&#37;2&#37;3&#37;4&#37;4&#37;5&#37;6&#37;6&#37;7&#37;8&#37;8&#37;9 ">
+
+  <!ENTITY newValueContexts "BlockPrefix!ValueTextIndent!ExplicitValueIndent!ExplicitKeyTextIndent!KeyOrValueIndent!KeyOrValue">
+]>
+
+<!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->
+<!-- Modifications (YAML 1.2), values & support for literal/folded style:
+       Nibaldo González S. <nibgonz@gmail.com>
+       These modifications are under the MIT license. //-->
+<!-- https://yaml.org/spec/1.2.2/#chapter-4-syntax-conventions -->
+<language name="YAML" alternativeNames="YML" version="18" kateversion="6.22" section="Markup"
+          extensions="*.yaml;*.yml;.clang-format;.clang-tidy;metadata;*.ksy" mimetype="text/yaml;application/buildstream+yaml" priority="9"
+          author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">
+  <highlighting>
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="normal" fallthroughContext="Lvl0Text">
+        <IncludeRules context="FindSingleComment"/>
+
+        <RegExpr attribute="Normal Text" context="&newValueContexts;" String="&spaceAndOpPrefix;" column="0"/>
+        <AnyChar lookAhead="1" context="FindSpaces" String=" &tab;"/>
+        <RegExpr lookAhead="1" context="&newValueContexts;" String="&opPrefix;" column="0"/>
+
+        <AnyChar lookAhead="1" context="Lvl0Prefix" String="*!&amp;"/>
+        <IncludeRules context="FindSeq"/>
+        <IncludeRules context="FindStr"/>
+        <AnyChar attribute="Literal/Folded Operator" context="Lvl0BlockPrefix!BlockHeader" String="|>" beginRegion="Block"/>
+        <DetectChar attribute="Directive" context="Directive" char="%" column="0"/>
+        <AnyChar lookAhead="1" context="Lvl0MaybeHeader" String="-" column="0"/>
+        <AnyChar lookAhead="1" context="Lvl0SymIndent" String=":?"/>
+        <AnyChar lookAhead="1" context="Lvl0MaybeEOD" String="." column="0"/>
+        <AnyChar attribute="Error" context="Lvl0Text" String="%&listClose;&hashClose;"/>
+        <AnyChar lookAhead="1" context="Lvl0Literal" String="&firstLitChar;"/>
+      </context>
+
+      <context name="FindSeq" attribute="Normal Text">
+        <DetectChar attribute="Operator" context="List" char="&listOpen;" beginRegion="List"/>
+        <DetectChar attribute="Operator" context="Hash" char="&hashOpen;" beginRegion="Hash"/>
+      </context>
+
+      <context name="FindStr" attribute="Normal Text">
+        <DetectChar attribute="String" context="StringSq" char="'" beginRegion="String"/>
+        <DetectChar attribute="String" context="StringDq" char='"' beginRegion="String"/>
+      </context>
+
+
+      <!--
+      @{ No indented text
+
+      Normally, `lineEndContext` should be set to `#stay`,
+      but this prevents the embedding of code blocks such as Markdown:
+
+      ```
+      text
+      continuation (LvL0 context)
+      ``` <- continuation also (LvL0 context, no top level context),
+
+      This is not compliant and displays incorrectly in some cases:
+
+      ```
+      text
+      [ a # should be text, not a list
+      ```
+      -->
+      <context name="Lvl0Prefix" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="Lvl0Text">
+        <DetectSpaces/>
+        <IncludeRules context="FindMarker"/>
+        <IncludeRules context="FindSeq"/>
+        <IncludeRules context="FindStr"/>
+        <DetectChar attribute="Comment" context="#pop!comment" char="#"/>
+        <AnyChar lookAhead="1" context="#pop!Lvl0Literal" String="&firstLitChar;"/>
+        <AnyChar attribute="Literal/Folded Operator" context="#pop!Lvl0BlockPrefix!BlockHeader" String="|>" beginRegion="Block"/>
+      </context>
+
+      <context name="Lvl0Literal" attribute="Attribute" lineEndContext="#pop" fallthroughContext="Lvl0Text">
+        <RegExpr attribute="Integer" context="#pop!Lvl0Text" String="&allInt;(?=&endValue;)"/>
+        <RegExpr attribute="Boolean" context="#pop!Lvl0Text" String="&bool;(?=&endValue;)"/>
+        <RegExpr attribute="Float" context="#pop!Lvl0Text" String="&allFloat;(?=&endValue;)"/>
+        <RegExpr attribute="Null" context="#pop!Lvl0Text" String="&null;(?=&endValue;)"/>
+        <RegExpr attribute="Timestamp" context="#pop!Lvl0Text" String="&timestamp;(?=&endValue;)"/>
+      </context>
+
+      <context name="Lvl0Text" attribute="Attribute" lineEndContext="#pop">
+        <StringDetect attribute="Comment" context="#pop!comment" String="#" column="0"/>
+        <StringDetect attribute="Comment" context="#pop!comment" String=" #"/>
+        <StringDetect attribute="Comment" context="#pop!comment" String="&tab;#"/>
+        <StringDetect attribute="Error" String=": "/>
+        <StringDetect attribute="Error" String=":&tab;"/>
+        <LineContinue attribute="Error" char=":"/>
+      </context>
+
+      <context name="Lvl0SymIndent" attribute="Normal Text" fallthroughContext="#pop" lineEndContext="#pop">
+        <DetectSpaces/>
+        <StringDetect attribute="Operator" String="- "/>
+        <StringDetect attribute="Operator" String="-&tab;"/>
+        <StringDetect attribute="Operator" String="? "/>
+        <StringDetect attribute="Operator" String="?&tab;"/>
+        <StringDetect attribute="Key Points Operator" String=": "/>
+        <StringDetect attribute="Key Points Operator" String=":&tab;"/>
+        <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineOp" char="-"/>
+        <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineOp" char="?"/>
+        <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineKpOp" char=":"/>
+        <RegExpr attribute="Key" String="&keyAttrWithEscape;" context="#pop"/>
+      </context>
+      <context name="Lvl0SymIndentEndLineOp" attribute="Attribute">
+        <AnyChar attribute="Operator" context="#pop#pop" String="?-"/>
+      </context>
+      <context name="Lvl0SymIndentEndLineKpOp" attribute="Attribute">
+        <StringDetect attribute="Operator" context="#pop#pop" String=":"/>
+      </context>
+
+      <context name="Lvl0MaybeHeader" attribute="Attribute" fallthroughContext="#pop!Lvl0Text">
+        <RegExpr attribute="Document Header" context="#pop" String="^---( +|$)" column="0"/>
+        <RegExpr attribute="Integer" context="#pop!Lvl0Text" String="&allInt;(?=&endValue;)"/>
+        <RegExpr attribute="Float" context="#pop!Lvl0Text" String="&allFloat;(?=&endValue;)"/>
+        <StringDetect attribute="Operator" context="#pop!Lvl0SymIndent" String="- "/>
+        <StringDetect attribute="Operator" context="#pop!Lvl0SymIndent" String="-&tab;"/>
+        <LineContinue lookAhead="1" context="Lvl0SymIndentEndLineOp" char="-"/>
+      </context>
+
+      <context name="Lvl0MaybeEOD" attribute="Attribute" fallthroughContext="#pop!Lvl0Text">
+        <RegExpr attribute="End of Document" context="#pop!EOD" String="^\.\.\.($| +(?=#|$))" column="0"/>
+        <RegExpr attribute="Float" context="#pop!Lvl0Text" String="&allFloat;(?=&endValue;)"/>
+      </context>
+      <!--
+      @} No indented text
+      -->
+
+
+      <!--
+      @{ Find whitespace
+      -->
+      <context name="FindSpaces" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+        <StringDetect attribute="Normal Text" String=" "/>
+        <StringDetect attribute="Alert" String="&tab;"/>
+      </context>
+
+      <context name="FindBlankLine" attribute="Attribute">
+        <RegExpr String="^\s+(?=#|$)" column="0"/>
+      </context>
+      <!--
+      @} Find whitespace
+      -->
+
+
+      <!--
+      @{ # ...
+      -->
+      <context attribute="Comment" lineEndContext="#pop" name="comment">
+        <DetectSpaces/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier/>
+      </context>
+
+      <context name="FindSingleComment" attribute="Attribute">
+        <DetectChar attribute="Comment" context="comment" char="#"/>
+      </context>
+      <!--
+      @} # ...
+      -->
+
+
+      <!--
+      @{ '...'
+      -->
+      <context name="StringSq" attribute="String" noIndentationBasedFolding="true">
+        <StringDetect attribute="Escaped Character" String="''"/>
+        <DetectChar attribute="String" context="#pop" char="'" endRegion="String"/>
+      </context>
+
+      <context name="StringSqAsKey" attribute="Key" noIndentationBasedFolding="true">
+        <StringDetect attribute="Escaped Character" String="''"/>
+        <DetectChar attribute="Key" context="#pop" char="'" endRegion="String"/>
+      </context>
+      <!--
+      @} '...'
+      -->
+
+
+      <!--
+      @{ "..."
+      -->
+      <context name="StringDq" attribute="String" noIndentationBasedFolding="true">
+        <DetectChar lookAhead="true" context="EscapeDq" char="\"/>
+        <DetectChar attribute="String" context="#pop" char="&quot;" endRegion="String"/>
+      </context>
+
+      <context name="StringDqAsKey" attribute="Key" noIndentationBasedFolding="true">
+        <DetectChar lookAhead="true" context="EscapeDq" char="\"/>
+        <DetectChar attribute="Key" context="#pop" char="&quot;" endRegion="String"/>
+      </context>
+
+      <context name="EscapeDq" attribute="Normal Text">
+        <RegExpr attribute="Escaped Character" context="#pop" String="\\([0abtnvfre &tab;&quot;/\\N_LP]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|$)"/>
+        <RegExpr attribute="Error" context="#pop" String="\\(?:x[a-fA-F0-9]?|u[a-fA-F0-9]{0,3}|U[a-fA-F0-9]{0,7})?"/>
+      </context>
+      <!--
+      @} "..."
+      -->
+
+
+      <!--
+      @{ KeyOrValue
+        - ? xxx
+        ~~~~
+        key:
+        ~~~~
+      -->
+      <context name="KeyOrValueIndent" attribute="Normal Text" fallthroughContext="#pop#pop#pop#pop#pop">
+        <IncludeRules context="FindSingleComment"/>
+        <RegExpr attribute="Normal Text" context="#pop#pop#pop#pop#pop!&newValueContexts;" String="&spaceAndOpNewPrefix;" column="0"/>
+        <IncludeRules context="FindBlankLine"/>
+        <StringDetect context="KeyOrValue" String="&indent;" dynamic="1" column="0"/>
+      </context>
+
+      <context name="KeyOrValue" attribute="Normal Text" lineEndContext="#pop"  fallthroughContext="#pop#pop#pop#pop!ValueText">
+        <IncludeRules context="KeyOrValueCommonBase"/>
+        <RegExpr attribute="Key" String="&keyAttrWithEscape;" context="#pop#pop#pop!KeyOrValueKey"/>
+        <IncludeRules context="KeyOrValueCommonStr"/>
+        <AnyChar lookAhead="1" String="-:?" context="KeyOrValueMaybeOp"/>
+        <AnyChar lookAhead="1" context="#pop#pop#pop#pop!ValueLiteral" String="&firstLitChar;"/>
+        <AnyChar attribute="Error" context="#pop#pop#pop#pop!ValueText" String="%&listClose;&hashClose;"/>
+      </context>
+
+      <context name="KeyOrValueAsKey" attribute="Normal Text" lineEndContext="#pop"  fallthroughContext="#pop#pop!ExplicitKeyText">
+        <IncludeRules context="KeyOrValueCommonBase"/>
+        <IncludeRules context="KeyOrValueCommonStr"/>
+        <AnyChar String="-:?" lookAhead="1" context="KeyOrValueAsKeyMaybeOp"/>
+        <AnyChar attribute="Error" context="#pop#pop!ExplicitKeyText" String="%&listClose;&hashClose;"/>
+      </context>
+
+      <context name="KeyOrValueKey" attribute="Key" fallthroughContext="StringDqAsKey!EscapeDq">
+        <StringDetect String=":" attribute="Key Points Operator" context="#pop!ExplicitValuePrefix"/>
+        <DetectSpaces attribute="Key"/>
+        <StringDetect attribute="Escaped Character" context="StringSqAsKey" String="''"/>
+      </context>
+
+      <context name="KeyOrValueMaybeOp" attribute="Attribute">
+        <IncludeRules context="KeyOrValueOp"/>
+        <AnyChar lookAhead="1" context="#pop#pop#pop#pop!ValueLiteral" String="-"/>
+        <AnyChar String="-:?" context="#pop#pop#pop#pop#pop!ValueText"/>
+      </context>
+
+      <context name="KeyOrValueAsKeyMaybeOp" attribute="Attribute">
+        <IncludeRules context="KeyOrValueOp"/>
+        <AnyChar String="-:?" context="#pop#pop#pop!ExplicitKeyText"/>
+      </context>
+
+      <context name="KeyOrValueOp" attribute="Attribute">
+        <LineContinue attribute="Operator" context="#pop#pop" char="-"/>
+        <LineContinue attribute="Operator" context="#pop#pop" char="?"/>
+        <LineContinue attribute="Key Points Operator" context="#pop#pop" char=":"/>
+      </context>
+
+      <context name="KeyOrValueCommonBase" attribute="Attribute">
+        <StringDetect attribute="Operator" String="- "/>
+        <StringDetect attribute="Key Points Operator" context="#pop!KeyOrValue" String=": "/>
+        <StringDetect attribute="Key Points Operator" context="#pop!KeyOrValue" String=":&tab;"/>
+        <StringDetect attribute="Operator" context="#pop!KeyOrValueAsKey" String="? "/>
+        <StringDetect attribute="Operator" context="#pop!KeyOrValueAsKey" String="?&tab;"/>
+
+        <IncludeRules context="FindSpaces"/>
+
+        <DetectChar attribute="Comment" context="#pop!comment" char="#"/>
+
+        <IncludeRules context="FindMarker"/>
+
+        <DetectChar attribute="Operator" context="ValueSepOrRoot!List" char="&listOpen;" beginRegion="List"/>
+        <DetectChar attribute="Operator" context="ValueSepOrRoot!Hash" char="&hashOpen;" beginRegion="Hash"/>
+
+        <AnyChar attribute="Literal/Folded Operator" context="#pop#pop#pop#pop#pop!BlockHeader" String="|>" beginRegion="Block"/>
+      </context>
+
+      <context name="KeyOrValueCommonStr" attribute="Attribute">
+        <DetectChar attribute="String" context="ValueSepOrRoot!StringSq" char="'" beginRegion="String"/>
+        <DetectChar attribute="String" context="ValueSepOrRoot!StringDq" char='"' beginRegion="String"/>
+      </context>
+
+      <context name="ValueSepOrRoot" attribute="Attribute" lineEndContext="#pop#pop#pop#pop#pop#pop#pop" fallthroughContext="#pop">
+        <DetectSpaces/>
+        <DetectChar attribute="Comment" context="#pop#pop#pop#pop#pop#pop#pop!comment" char="#"/>
+        <StringDetect attribute="Key Points Operator" context="#pop#pop#pop#pop!ExplicitValuePrefix" String=": "/>
+        <StringDetect attribute="Key Points Operator" context="#pop#pop#pop#pop!ExplicitValuePrefix" String=":&tab;"/>
+        <LineContinue attribute="Key Points Operator" context="#pop#pop#pop#pop" char=":"/>
+      </context>
+      <!--
+      @} KeyOrValue
+      -->
+
+
+      <!--
+      @{ marker (alias, reference, tag)
+      https://yaml.org/spec/1.2.2/#6821-tag-handles
+      https://yaml.org/spec/1.2.2/#692-node-anchors
+      https://yaml.org/spec/1.2.2/#71-alias-nodes
+      -->
+      <context name="FindMarker" attribute="Attribute">
+        <DetectChar char="*" attribute="Reference" context="Reference"/>
+        <DetectChar char="&amp;" attribute="Alias" context="Alias"/>
+        <DetectChar char="!" context="Tag" lookAhead="1"/>
+      </context>
+
+      <!-- &alias -->
+      <context name="Alias" attribute="Alias" lineEndContext="#pop">
+        <AnyChar String=" &tab;,[]{}:" lookAhead="1" context="#pop"/>
+      </context>
+
+      <!-- *ref -->
+      <context name="Reference" attribute="Reference" lineEndContext="#pop">
+        <IncludeRules context="Alias"/>
+      </context>
+
+      <context name="Tag" attribute="Attribute">
+        <!-- ns_word_char = [-0-9a-zA-Z] -->
+        <!-- named tag: !ns_word_char!ns_tag_char -->
+        <!-- primary tag: !ns_tag_char -->
+        <!-- secondary tag: !!ns_tag_char -->
+        <!-- verbatim tag: !<ns_tag_char> -->
+        <StringDetect String="!!" attribute="Data Types" context="SecondaryTag"/>
+        <StringDetect String="!&lt;" attribute="Tag" context="VerbatimTag"/>
+        <StringDetect String="!" attribute="Tag" context="PrimaryTag"/>
+      </context>
+      <context name="FindTagError" attribute="Tag">
+        <StringDetect String="!!" attribute="Error" context="#pop!SecondaryTag"/>
+        <StringDetect String="!&lt;" attribute="Error" context="#pop!VerbatimTag"/>
+        <StringDetect String="!" attribute="Error" context="#pop!PrimaryTag"/>
+      </context>
+      <context name="PrimaryTag" attribute="Tag" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <IncludeRules context="ns_tag_char"/>
+        <DetectChar char="!" attribute="Tag" context="#pop!NamedTag"/>
+      </context>
+      <context name="NamedTag" attribute="Tag" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <IncludeRules context="ns_tag_char"/>
+        <IncludeRules context="FindTagError"/>
+      </context>
+      <context name="SecondaryTag" attribute="Data Types" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <IncludeRules context="ns_tag_char"/>
+        <IncludeRules context="FindTagError"/>
+      </context>
+      <context name="VerbatimTag" attribute="Tag" lineEndContext="#pop#pop" fallthroughContext="#pop#pop">
+        <IncludeRules context="ns_tag_char"/>
+        <DetectChar char=">" attribute="Tag" context="#pop#pop"/>
+        <IncludeRules context="FindTagError"/>
+      </context>
+      <context name="ns_tag_char" attribute="Tag">
+        <!-- ns_tag_char + "^," -->
+        <AnyChar String="-0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz%#;/?:@&amp;=+$_.~*'()^,"/>
+      </context>
+      <!--
+      @} marker (alias, reference, tag)
+      -->
+
+
+      <!--
+      @{ | and >
+      https://yaml.org/spec/1.2.2/#812-literal-style
+      https://yaml.org/spec/1.2.2/#813-folded-style
+
+      ```yaml
+      - key:
+              |
+           text
+      # ^ final indent (for current indent)
+        # ^ final indent for block (last space)
+      ```
+
+      ```yaml
+              |
+           text
+        # ^ final indent for block (last space)
+      ```
+      -->
+      <!-- |1+ # dsds
+            ~~~~~~~~~
+      -->
+      <context name="BlockHeader" attribute="Error" lineEndContext="#pop" fallthroughContext="BlockHeaderNoText">
+        <AnyChar attribute="Literal/Folded Operator" String="-+123456789"/>
+      </context>
+      <context name="BlockHeaderNoText" attribute="Error" lineEndContext="#pop#pop">
+        <DetectSpaces attribute="Literal/Folded Operator"/>
+        <DetectChar attribute="Comment" context="#pop#pop!comment" char="#"/>
+      </context>
+
+      <context name="BlockPrefix" attribute="Literal/Folded Block" fallthroughContext="BlockEnd" noIndentationBasedFolding="true">
+        <IncludeRules context="FindEmptyLine"/>
+        <RegExpr context="BlockIndent!BlockText" String="^(&indent; *)" dynamic="1" column="0"/>
+      </context>
+
+      <context name="Lvl0BlockPrefix" attribute="Literal/Folded Block" fallthroughContext="BlockEnd" noIndentationBasedFolding="true">
+        <IncludeRules context="FindEmptyLine"/>
+        <RegExpr context="BlockIndent!BlockText" String="^( +)" column="0"/>
+      </context>
+
+      <context name="BlockIndent" attribute="Literal/Folded Block" fallthroughContext="#pop!BlockEnd" noIndentationBasedFolding="true">
+        <StringDetect context="BlockText" String="%1" dynamic="1"/>
+        <IncludeRules context="FindEmptyLine"/>
+      </context>
+
+      <context name="BlockText" attribute="Literal/Folded Block" lineEndContext="#pop">
+      </context>
+
+      <context name="BlockEnd" attribute="Literal/Folded Block">
+        <RegExpr lookAhead="1" context="#pop#pop" String="." endRegion="Block"/>
+      </context>
+
+      <context name="FindEmptyLine" attribute="Attribute">
+        <RegExpr String="^\s+$" column="0"/>
+      </context>
+      <!--
+      @} | and >
+      -->
+
+
+      <!--
+      @{ Value
+
+                   (fallthrough) -> root
+                         ^
+                        / \
+         "ValueTextIndent!ExplicitValueIndent"
+          ^         |            |          ^
+      (endline)  (indent)     (indent)  (endline)
+          |         v            v          |
+          \____ ValueText <~.  ExplicitValuePrefix
+                 |          |          |
+           (fallthrough)    |    (fallthrough)
+                 v          |          v
+               root         +~~~~ ValueLiteral
+                            |          |
+                            \___ (fallthrough)
+      -->
+      <context name="ExplicitValueIndent" attribute="Normal Text" fallthroughContext="#pop#pop#pop">
+        <IncludeRules context="FindSingleComment"/>
+        <RegExpr attribute="Normal Text" context="#pop#pop#pop!&newValueContexts;" String="&spaceAndOpNewPrefix;" column="0"/>
+        <IncludeRules context="FindBlankLine"/>
+        <StringDetect context="ExplicitValuePrefix" String="&indent;" dynamic="1" column="0"/>
+      </context>
+
+      <context name="ExplicitValuePrefix" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop#pop!ValueText">
+        <DetectSpaces/>
+        <IncludeRules context="FindMarker"/>
+        <DetectChar attribute="Comment" context="#pop!comment" char="#"/>
+
+        <IncludeRules context="FindStr"/>
+        <IncludeRules context="FindSeq"/>
+        <AnyChar attribute="Literal/Folded Operator" context="#pop#pop#pop!BlockHeader" String="|>" beginRegion="Block"/>
+
+        <StringDetect attribute="Operator" String="- "/>
+        <StringDetect attribute="Operator" String="? "/>
+        <StringDetect attribute="Operator" String="?&tab;"/>
+        <LineContinue context="#pop" attribute="Operator" char="?"/>
+        <LineContinue context="#pop" attribute="Operator" char="-"/>
+        <AnyChar lookAhead="1" context="#pop#pop!ValueLiteral" String="&firstLitChar;"/>
+        <AnyChar attribute="Error" context="#pop#pop!ValueText" String="%&listClose;&hashClose;"/>
+      </context>
+
+
+      <context name="ValueLiteral" attribute="Attribute" fallthroughContext="#pop!ValueText">
+        <RegExpr attribute="Integer" context="#pop!ValueText" String="&allInt;(?=&endValue;)"/>
+        <RegExpr attribute="Boolean" context="#pop!ValueText" String="&bool;(?=&endValue;)"/>
+        <RegExpr attribute="Float" context="#pop!ValueText" String="&allFloat;(?=&endValue;)"/>
+        <RegExpr attribute="Null" context="#pop!ValueText" String="&null;(?=&endValue;)"/>
+        <RegExpr attribute="Timestamp" context="#pop!ValueText" String="&timestamp;(?=&endValue;)"/>
+      </context>
+
+
+      <context name="ValueTextIndent" attribute="Attribute" fallthroughContext="#pop#pop">
+        <DetectChar attribute="Comment" context="#pop#pop!comment" char="#"/>
+        <IncludeRules context="FindBlankLine"/>
+        <StringDetect context="ValueText" String="&indent;" dynamic="1" column="0"/>
+      </context>
+
+      <context name="ValueText" attribute="Attribute" lineEndContext="#pop">
+        <StringDetect attribute="Comment" context="#pop#pop#pop!comment" String="#" column="0"/>
+        <StringDetect attribute="Comment" context="#pop#pop#pop!comment" String=" #"/>
+        <StringDetect attribute="Comment" context="#pop#pop#pop!comment" String="&tab;#"/>
+        <StringDetect attribute="Error" context="#pop#pop#pop" String=": "/>
+        <StringDetect attribute="Error" context="#pop#pop#pop" String=":&tab;"/>
+        <LineContinue attribute="Error" context="#pop#pop#pop" char=":"/>
+      </context>
+      <!--
+      @} Value
+      -->
+
+
+      <!--
+      @{ Key
+
+      '? ' key
+      -->
+      <context name="ExplicitKeyTextIndent" attribute="Key" fallthroughContext="#pop#pop#pop#pop#pop">
+        <DetectChar attribute="Comment" context="#pop#pop#pop#pop#pop!comment" char="#"/>
+        <IncludeRules context="FindBlankLine"/>
+        <StringDetect context="ExplicitKeyText" String="&indent;" dynamic="1" column="0"/>
+      </context>
+
+      <context name="ExplicitKeyText" attribute="Key" lineEndContext="#pop">
+        <StringDetect context="#pop#pop#pop#pop#pop#pop!comment" String="#" column="0"/>
+        <StringDetect context="#pop#pop#pop#pop#pop#pop!comment" String=" #"/>
+        <StringDetect context="#pop#pop#pop#pop#pop#pop!comment" String="&tab;#"/>
+        <StringDetect attribute="Key Points Operator" context="#pop#pop!ExplicitValuePrefix" String=": "/>
+        <StringDetect attribute="Key Points Operator" context="#pop#pop!ExplicitValuePrefix" String=":&tab;"/>
+        <LineContinue lookAhead="1" context="ValueOnKeyOp" char=":"/>
+      </context>
+
+      <context name="ValueOnKeyOp" attribute="Attribute">
+        <StringDetect String=":" attribute="Key Points Operator" context="#pop#pop#pop!ExplicitValuePrefix"/>
+      </context>
+      <!--
+      @} Key
+      -->
+
+
+      <!--
+      @{ List and Hash
+      -->
+
+      <!-- [ ... ] -->
+      <context name="List" attribute="List" fallthroughContext="ListValue" noIndentationBasedFolding="true">
+        <DetectChar attribute="Operator" context="#pop" char="&listClose;" endRegion="List"/>
+        <IncludeRules context="ElementCommon"/>
+        <AnyChar attribute="Error" String=">|%&hashClose;"/>
+      </context>
+
+      <!-- { ... } -->
+      <context name="Hash" attribute="Hash" fallthroughContext="HashValue" noIndentationBasedFolding="true">
+        <DetectChar attribute="Operator" context="#pop" char="&hashClose;" endRegion="Hash"/>
+        <IncludeRules context="ElementCommon"/>
+        <AnyChar attribute="Error" String=">|%&listClose;"/>
+      </context>
+
+      <context name="ElementCommon" attribute="List">
+        <DetectSpaces/>
+        <DetectChar attribute="Operator" char=","/>
+        <IncludeRules context="FindSingleComment"/>
+        <IncludeRules context="FindSeq"/>
+        <IncludeRules context="FindMarker"/>
+        <StringDetect attribute="Operator" context="ListAttr" String=": "/>
+        <StringDetect attribute="Operator" context="ListAttr" String=":&tab;"/>
+        <LineContinue attribute="Operator" context="ListAttr" char=":"/>
+
+        <RegExpr attribute="Key" context="ListKey" String="&jsonAttrWithEscape;"/>
+
+        <IncludeRules context="FindStr"/>
+
+        <StringDetect attribute="Operator" context="ListExplicitKey" String="? "/>
+        <StringDetect attribute="Operator" context="ListExplicitKey" String="?&tab;"/>
+        <LineContinue attribute="Operator" context="ListExplicitKey" char="?"/>
+
+        <IncludeRules context="FindDashError"/>
+      </context>
+
+      <!-- [ - value ] / [ key: - value ] / { - value } / { key: - value }
+             ~                  ~             ~                  ~
+      -->
+      <context name="FindDashError" attribute="Error" noIndentationBasedFolding="true">
+        <StringDetect attribute="Error" String="- "/>
+        <StringDetect attribute="Error" String="-&tab;"/>
+        <LineContinue attribute="Error" char="-"/>
+      </context>
+
+      <!-- [ ? key ] / { ? key }
+               ~~~         ~~~
+      -->
+      <context name="ListExplicitKey" attribute="Key" fallthroughContext="ListExplicitKeyName" noIndentationBasedFolding="true">
+        <DetectSpaces/>
+        <IncludeRules context="FindMarker"/>
+        <IncludeRules context="FindDashError"/>
+        <AnyChar lookAhead="1" context="#pop" String=",[]{}'&quot;"/>
+        <AnyChar attribute="Error" String=">|"/>
+      </context>
+
+      <context name="ListExplicitKeyName" attribute="Key" noIndentationBasedFolding="true">
+        <StringDetect attribute="Comment" context="#pop#pop!comment" String="#" column="0"/>
+        <StringDetect attribute="Comment" context="#pop#pop!comment" String=" #"/>
+        <StringDetect attribute="Comment" context="#pop#pop!comment" String="&tab;#"/>
+        <AnyChar lookAhead="1" context="#pop#pop" String=",[]{}"/>
+        <StringDetect attribute="Operator" context="#pop#pop!ListAttr" String=": "/>
+        <StringDetect attribute="Operator" context="#pop#pop!ListAttr" String=":&tab;"/>
+        <LineContinue attribute="Operator" context="#pop#pop!ListAttr" char=":"/>
+        <StringDetect attribute="Error" context="#pop" String="? "/>
+        <StringDetect attribute="Error" context="#pop" String="?&tab;"/>
+        <LineContinue attribute="Error" context="#pop" char="?"/>
+      </context>
+
+      <!-- [ key: value ] / { key: value }
+                ~                ~
+      -->
+      <context name="ListKey" attribute="Key" fallthroughContext="StringDqAsKey!EscapeDq" noIndentationBasedFolding="true">
+        <StringDetect String=":" attribute="Key Points Operator" context="#pop!ListAttr"/>
+        <DetectSpaces attribute="Key"/>
+        <StringDetect attribute="Escaped Character" context="StringSqAsKey" String="''"/>
+      </context>
+
+      <!-- [ value ]
+             ~~~~~
+      -->
+      <context name="ListValue" attribute="List" fallthroughContext="ListValueText" noIndentationBasedFolding="true">
+        <IncludeRules context="ListExplicitKey"/>
+        <RegExpr attribute="Integer" context="#pop" String="&allInt;(?=&endValueInline;)"/>
+        <RegExpr attribute="Boolean" context="#pop" String="&bool;(?=&endValueInline;)"/>
+        <RegExpr attribute="Float" context="#pop" String="&allFloat;(?=&endValueInline;)"/>
+        <RegExpr attribute="Null" context="#pop" String="&null;(?=&endValueInline;)"/>
+        <RegExpr attribute="Timestamp" context="#pop" String="&timestamp;(?=&endValueInline;)"/>
+      </context>
+
+      <context name="ListValueText" attribute="List" noIndentationBasedFolding="true">
+        <StringDetect attribute="Comment" context="#pop#pop!comment" String="#" column="0"/>
+        <StringDetect attribute="Comment" context="#pop#pop!comment" String=" #"/>
+        <StringDetect attribute="Comment" context="#pop#pop!comment" String="&tab;#"/>
+        <AnyChar lookAhead="1" context="#pop#pop" String=",[]{}"/>
+        <StringDetect attribute="Error" context="#pop#pop!ListAttr" String=": "/>
+        <StringDetect attribute="Error" context="#pop#pop!ListAttr" String=":&tab;"/>
+        <LineContinue attribute="Error" context="#pop#pop!ListAttr" char=":"/>
+        <StringDetect attribute="Error" context="#pop#pop!ListExplicitKey" String="? "/>
+        <StringDetect attribute="Error" context="#pop#pop!ListExplicitKey" String="?&tab;"/>
+        <LineContinue attribute="Error" context="#pop#pop!ListExplicitKey" char="?"/>
+      </context>
+
+      <!-- { value }
+             ~~~~~
+      -->
+      <context name="HashValue" attribute="Hash" fallthroughContext="HashValueText" noIndentationBasedFolding="true">
+        <IncludeRules context="ListExplicitKey"/>
+      </context>
+      <context name="HashValueText" attribute="Hash" noIndentationBasedFolding="true">
+        <IncludeRules context="ListValueText"/>
+      </context>
+
+      <!-- [ key: value ] / { key: value }
+                  ~~~~~            ~~~~~
+      -->
+      <context name="ListAttr" attribute="Attribute" fallthroughContext="ListAttrText" noIndentationBasedFolding="true">
+        <IncludeRules context="ListValue"/>
+      </context>
+
+      <context name="ListAttrText" attribute="Attribute" noIndentationBasedFolding="true">
+        <IncludeRules context="ListValueText"/>
+      </context>
+      <!--
+      @} List and Hash
+      -->
+
+
+      <context attribute="Error" lineEndContext="#stay" name="EOD">
+        <DetectChar attribute="Comment" context="#pop!comment" char="#"/>
+        <DetectChar attribute="Error" context="#pop!List" char="&listOpen;" beginRegion="List"/>
+        <DetectChar attribute="Error" context="#pop!Hash" char="&hashOpen;" beginRegion="Hash"/>
+        <DetectChar attribute="Error" context="#pop!StringSq" char="'" beginRegion="String"/>
+        <DetectChar attribute="Error" context="#pop!StringDq" char='"' beginRegion="String"/>
+      </context>
+
+      <context attribute="Directive" lineEndContext="#pop" name="Directive">
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text" defStyleNum="dsAttribute"/>
+      <itemData name="Attribute" defStyleNum="dsAttribute"/>
+      <itemData name="List" defStyleNum="dsAttribute"/>
+      <itemData name="Hash" defStyleNum="dsAttribute"/>
+      <itemData name="Comment" defStyleNum="dsComment"/>
+      <itemData name="End of Document" defStyleNum="dsComment"/>
+      <itemData name="Document Header" defStyleNum="dsPreprocessor"/>
+      <itemData name="Data Types" defStyleNum="dsOthers"/>
+      <itemData name="Tag" defStyleNum="dsOthers"/>
+      <itemData name="Alias" defStyleNum="dsOthers"/>
+      <itemData name="Reference" defStyleNum="dsOthers"/>
+      <itemData name="Key" defStyleNum="dsFunction" bold="1"/>
+      <itemData name="Directive" defStyleNum="dsPreprocessor"/>
+      <itemData name="Key Points Operator" defStyleNum="dsKeyword"/>
+      <itemData name="Operator" defStyleNum="dsKeyword"/>
+      <itemData name="String" defStyleNum="dsString"/>
+      <itemData name="Escaped Character" defStyleNum="dsSpecialChar"/>
+      <itemData name="Literal/Folded Operator" defStyleNum="dsChar" bold="1"/>
+      <itemData name="Literal/Folded Block" defStyleNum="dsNormal"/>
+      <itemData name="Null" defStyleNum="dsChar"/>
+      <itemData name="Boolean" defStyleNum="dsChar"/>
+      <itemData name="Integer" defStyleNum="dsDecVal"/>
+      <itemData name="Float" defStyleNum="dsFloat"/>
+      <itemData name="Timestamp" defStyleNum="dsBaseN"/>
+      <itemData name="Error" defStyleNum="dsError"/>
+      <itemData name="Alert" defStyleNum="dsAlert" backgroundColor="#EF9A9A"/>
+    </itemDatas>
+  </highlighting>
+
+  <general>
+    <folding indentationsensitive="1"/>
+    <emptyLines>
+      <emptyLine regexpr="(?:\s+|\s*#.*)"/>
+    </emptyLines>
+    <comments>
+      <comment name="singleLine" start="#" position="afterwhitespace"/>
     </comments>
     <keywords casesensitive="1"/>
   </general>
diff --git a/xml/zig.xml b/xml/zig.xml
new file mode 100644
--- /dev/null
+++ b/xml/zig.xml
@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language [
+    <!ENTITY bin_int "(?:[01]+(?:_[01]+)*)">
+    <!ENTITY oct_int "(?:[0-7]+(?:_[0-7]+)*)">
+    <!ENTITY dec_int "(?:[0-9]+(?:_[0-9]+)*)">
+    <!ENTITY hex_int "(?:[0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*)">
+    <!ENTITY exp_float "(?:[eE][+-]?&dec_int;)">
+    <!ENTITY exp_hexfloat "(?:[pP][-+]?&dec_int;)">
+]>
+<language name="Zig" section="Sources" version="4" kateversion="5.62" indenter="cstyle" extensions="*.zig" mimetype="text/x-zig" priority="1" author="Waqar Ahmed (waqar.17a@gmail.com)" license="MIT">
+    <highlighting>
+        <list name="keywords">
+            <item>addrspace</item>
+            <item>align</item>
+            <item>and</item>
+            <item>anyframe</item>
+            <item>anytype</item>
+            <item>asm</item>
+            <item>callconv</item>
+            <item>enum</item>
+            <item>error</item>
+            <item>export</item>
+            <item>fn</item>
+            <item>inline</item>
+            <item>noalias</item>
+            <item>nosuspend</item>
+            <item>noinline</item>
+            <item>opaque</item>
+            <item>or</item>
+            <item>orelse</item>
+            <item>packed</item>
+            <item>pub</item>
+            <item>resume</item>
+            <item>linksection</item>
+            <item>struct</item>
+            <item>suspend</item>
+            <item>test</item>
+            <item>union</item>
+            <item>unreachable</item>
+            <item>usingnamespace</item>
+        </list>
+        <list name="controlflow">
+            <item>while</item>
+            <item>try</item>
+            <item>switch</item>
+            <item>return</item>
+            <item>for</item>
+            <item>if</item>
+            <item>continue</item>
+            <item>else</item>
+            <item>break</item>
+            <item>catch</item>
+            <item>defer</item>
+            <item>errdefer</item>
+        </list>
+        <list name="types">
+            <item>i8</item>
+            <item>u8</item>
+            <item>i16</item>
+            <item>u16</item>
+            <item>i32</item>
+            <item>u32</item>
+            <item>i64</item>
+            <item>u64</item>
+            <item>i128</item>
+            <item>u128</item>
+            <item>isize</item>
+            <item>usize</item>
+            <item>c_short</item>
+            <item>c_ushort</item>
+            <item>c_int</item>
+            <item>c_uint</item>
+            <item>c_long</item>
+            <item>c_ulong</item>
+            <item>c_longlong</item>
+            <item>c_ulonglong</item>
+            <item>c_longdouble</item>
+            <item>f16</item>
+            <item>f32</item>
+            <item>f64</item>
+            <item>f80</item>
+            <item>f128</item>
+            <item>bool</item>
+            <item>anyopaque</item>
+            <item>void</item>
+            <item>noreturn</item>
+            <item>type</item>
+            <item>anyerror</item>
+            <item>comptime_int</item>
+            <item>comptime_float</item>
+        </list>
+        <list name="modifiers">
+            <item>async</item>
+            <item>await</item>
+            <item>const</item>
+            <item>threadlocal</item>
+            <item>extern</item>
+            <item>allowzero</item>
+            <item>comptime</item>
+            <item>var</item>
+            <item>volatile</item>
+        </list>
+        <list name="literals">
+            <item>false</item>
+            <item>null</item>
+            <item>true</item>
+            <item>undefined</item>
+        </list>
+        <list name="builtin_functions">
+            <item>@addrSpaceCast</item>
+            <item>@addWithOverflow</item>
+            <item>@alignCast</item>
+            <item>@alignOf</item>
+            <item>@as</item>
+            <item>@atomicLoad</item>
+            <item>@atomicRmw</item>
+            <item>@atomicStore</item>
+            <item>@bitCast</item>
+            <item>@bitOffsetOf</item>
+            <item>@boolToInt</item>
+            <item>@bitSizeOf</item>
+            <item>@breakpoint</item>
+            <item>@mulAdd</item>
+            <item>@byteSwap</item>
+            <item>@bitReverse</item>
+            <item>@offsetOf</item>
+            <item>@call</item>
+            <item>@cDefine</item>
+            <item>@cImport</item>
+            <item>@cInclude</item>
+            <item>@clz</item>
+            <item>@cmpxchgStrong</item>
+            <item>@cmpxchgWeak</item>
+            <item>@compileError</item>
+            <item>@compileLog</item>
+            <item>@ctz</item>
+            <item>@cUndef</item>
+            <item>@cVaArg</item>
+            <item>@cVaCopy</item>
+            <item>@cVaEnd</item>
+            <item>@cVaStart</item>
+            <item>@divExact</item>
+            <item>@divFloor</item>
+            <item>@divTrunc</item>
+            <item>@embedFile</item>
+            <item>@enumToInt</item>
+            <item>@errorName</item>
+            <item>@errorReturnTrace</item>
+            <item>@errorToInt</item>
+            <item>@errSetCast</item>
+            <item>@export</item>
+            <item>@extern</item>
+            <item>@fence</item>
+            <item>@field</item>
+            <item>@fieldParentPtr</item>
+            <item>@floatCast</item>
+            <item>@floatToInt</item>
+            <item>@frameAddress</item>
+            <item>@hasDecl</item>
+            <item>@hasField</item>
+            <item>@import</item>
+            <item>@intCast</item>
+            <item>@intToEnum</item>
+            <item>@intToError</item>
+            <item>@intToFloat</item>
+            <item>@intToPtr</item>
+            <item>@max</item>
+            <item>@memcpy</item>
+            <item>@memset</item>
+            <item>@min</item>
+            <item>@wasmMemorySize</item>
+            <item>@wasmMemoryGrow</item>
+            <item>@mod</item>
+            <item>@mulWithOverflow</item>
+            <item>@panic</item>
+            <item>@popCount</item>
+            <item>@prefetch</item>
+            <item>@ptrCast</item>
+            <item>@ptrToInt</item>
+            <item>@rem</item>
+            <item>@returnAddress</item>
+            <item>@select</item>
+            <item>@setAlignStack</item>
+            <item>@setCold</item>
+            <item>@setEvalBranchQuota</item>
+            <item>@setFloatMode</item>
+            <item>@setRuntimeSafety</item>
+            <item>@shlExact</item>
+            <item>@shlWithOverflow</item>
+            <item>@shrExact</item>
+            <item>@shuffle</item>
+            <item>@sizeOf</item>
+            <item>@splat</item>
+            <item>@reduce</item>
+            <item>@src</item>
+            <item>@sqrt</item>
+            <item>@sin</item>
+            <item>@cos</item>
+            <item>@tan</item>
+            <item>@exp</item>
+            <item>@exp2</item>
+            <item>@log</item>
+            <item>@log2</item>
+            <item>@log10</item>
+            <item>@fabs</item>
+            <item>@floor</item>
+            <item>@ceil</item>
+            <item>@trunc</item>
+            <item>@round</item>
+            <item>@subWithOverflow</item>
+            <item>@tagName</item>
+            <item>@This</item>
+            <item>@truncate</item>
+            <item>@Type</item>
+            <item>@typeInfo</item>
+            <item>@typeName</item>
+            <item>@TypeOf</item>
+            <item>@unionInit</item>
+            <item>@Vector</item>
+        </list>
+        <contexts>
+            <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+                <DetectSpaces/>
+                <Detect2Chars char="/" char1="/" attribute="Comment" context="Comment"/>
+                <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;+,-/.*&lt;=&gt;?|~^"/>
+                <AnyChar context="Number" String="0123456789" lookAhead="1"/>
+                <DetectChar attribute="String" context="DoubleQuoteString" char="&quot;"/>
+                <DetectChar attribute="Character" context="SingleQuoteString" char="'"/>
+                <Detect2Chars char="\" char1="\" attribute="String" context="Multiline String"/>
+                <keyword String="keywords" attribute="Keyword" context="#stay"/>
+                <keyword String="types" attribute="Type" context="#stay"/>
+                <keyword attribute="Constant" context="#stay" String="literals"/>
+                <keyword attribute="Builtin Functions" context="#stay" String="builtin_functions"/>
+                <keyword attribute="Control Flow" context="#stay" String="controlflow"/>
+                <keyword attribute="Modifiers" context="#stay" String="modifiers"/>
+                <WordDetect attribute="Self Variable" String="self"/>
+                <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="Brace1" />
+                <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="Brace1" />
+                <!-- <AnyChar context="SpecialType" String="iu" lookAhead="1"/> -->
+                <DetectIdentifier/>
+            </context>
+            <!-- Strings -->
+            <context attribute="String" lineEndContext="#pop" name="DoubleQuoteString">
+                <DetectChar context="EscapeChar" char="\" lookAhead="1"/>
+                <DetectChar attribute="String" context="#pop" char="&quot;"/>
+            </context>
+            <context attribute="Character" lineEndContext="#pop" name="SingleQuoteString">
+                <DetectChar context="EscapeChar" char="\" lookAhead="1"/>
+                <DetectChar attribute="Character" context="#pop" char="'"/>
+            </context>
+            <context attribute="String" lineEndContext="#pop" name="Multiline String"/>
+            <context attribute="String Char" lineEndContext="#pop" name="EscapeChar">
+                <RegExpr attribute="String Char" context="#pop" String="\\([nrt'&quot;\\]|x[0-9a-fA-F]{2}|u\{[0-9a-fA-F]+\})"/>
+                <RegExpr attribute="Error" context="#pop" String="\\(x[0-9a-fA-F]?|u\{[0-9a-fA-F]{0,8}\}?)?"/>
+            </context>
+            <!-- Comment -->
+            <context attribute="Comment" lineEndContext="#pop" name="Comment">
+                <DetectSpaces attribute="Comment"/>
+                <IncludeRules context="##Comments"/>
+                <DetectIdentifier attribute="Comment"/>
+            </context>
+            <!-- Integer / Float -->
+            <context name="Number" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr attribute="Float" context="#pop!SuffixNumber" String="&dec_int;(\.&dec_int;&exp_float;?|&exp_float;)"/>
+                <RegExpr attribute="Decimal" context="#pop!SuffixNumber" String="0(?=[^xob]|$)|(?=0[xob])|&dec_int;"/>
+                <RegExpr attribute="Hex Float" context="#pop!SuffixNumber" String="0x&hex_int;(\.&hex_int;&exp_hexfloat;?|&exp_hexfloat;)"/>
+                <RegExpr attribute="Hex" context="#pop!SuffixNumber" String="0x&hex_int;"/>
+                <RegExpr attribute="Octal" context="#pop!SuffixNumber" String="0o&oct_int;"/>
+                <RegExpr attribute="Binary" context="#pop!SuffixNumber" String="0b&bin_int;"/>
+                <DetectChar attribute="Decimal" context="#pop!SuffixNumber" char="0"/>
+            </context>
+            <context name="SuffixNumber" attribute="Normal Text" lineEndContext="#pop" fallthroughContext="#pop">
+                <StringDetect attribute="Symbol" String=".." context="#pop"/> <!-- in `[0..a]` -->
+                <AnyChar attribute="Error" String=".0123456789" context="#pop"/>
+                <DetectIdentifier attribute="Error" context="#pop"/>
+            </context>
+            <!-- Integer type -->
+            <!-- i or u followed by digits. The maximum allowed bit-width of an integer type is 65535 -->
+            <!--<context name="SpecialType" attribute="Normal Text" lineEndContext="#pop">
+                <RegExpr attribute="Type" context="#pop" String="\b[ui]([0-9]{1,4}|[1-5][0-9]{4}|6([0-4][0-9]{3}|5([0-4][0-9]{2}|5([0-2][0-9]|3[0-5]))))\b"/>
+                <DetectIdentifier attribute="Normal Text" context="#pop"/>
+            </context>-->
+        </contexts>
+        <itemDatas>
+            <itemData name="Normal Text" defStyleNum="dsNormal"/>
+            <itemData name="Self Variable" defStyleNum="dsVariable" spellChecking="false"/>
+            <itemData name="Keyword" defStyleNum="dsKeyword" spellChecking="false"/>
+            <itemData name="Type" defStyleNum="dsDataType" spellChecking="false"/>
+            <itemData name="Builtin Functions" defStyleNum="dsBuiltIn" spellChecking="false"/>
+            <itemData name="Constant" defStyleNum="dsConstant" spellChecking="false"/>
+            <itemData name="Control Flow" defStyleNum="dsControlFlow" spellChecking="false"/>
+            <itemData name="Modifiers" defStyleNum="dsAttribute" spellChecking="false"/>
+            <itemData name="Comment" defStyleNum="dsComment" spellChecking="true"/>
+            <itemData name="Binary" defStyleNum="dsBaseN" spellChecking="false"/>
+            <itemData name="Octal" defStyleNum="dsBaseN" spellChecking="false"/>
+            <itemData name="Hex" defStyleNum="dsBaseN" spellChecking="false"/>
+            <itemData name="Decimal" defStyleNum="dsDecVal" spellChecking="false"/>
+            <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+            <itemData name="Hex Float" defStyleNum="dsFloat" spellChecking="false"/>
+            <itemData name="String" defStyleNum="dsString"/>
+            <itemData name="String Char" defStyleNum="dsSpecialChar"/>
+            <itemData name="Character" defStyleNum="dsChar" spellChecking="false"/>
+            <itemData name="Symbol" defStyleNum="dsOperator" spellChecking="false"/>
+            <itemData name="Error" defStyleNum="dsError" spellChecking="false"/>
+        </itemDatas>
+    </highlighting>
+    <general>
+        <comments>
+            <comment name="singleLine" start="//"/>
+        </comments>
+        <keywords casesensitive="true"/>
+    </general>
+</language>
+<!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->
diff --git a/xml/zsh.xml b/xml/zsh.xml
--- a/xml/zsh.xml
+++ b/xml/zsh.xml
@@ -1,2038 +1,2987 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE language SYSTEM "language.dtd"
-[
-        <!ENTITY tab      "&#009;">
-        <!ENTITY funcname "[^&_fragpathseps;=]*+">
-        <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
-        <!ENTITY eos      "(?=$|[ &tab;])">                 <!-- eol or space following -->
-        <!ENTITY eoexpr   "(?=$|[ &tab;&lt;>|&amp;;)])">
-
-        <!ENTITY substseps  "${}'&quot;`\\">
-        <!ENTITY symbolseps "&lt;>|&amp;;()">
-        <!ENTITY wordseps   " &tab;&symbolseps;">
-        <!ENTITY wordseps_or_extglog " &tab;>|&amp;;)`"> <!-- wordseps without < and ( -->
-
-        <!ENTITY _fragpathseps  "*?#^~[&wordseps;&substseps;">
-        <!ENTITY _fragpathnosep "(?:&_brace_noexpansion;)?+">
-        <!ENTITY path        "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">
-        <!ENTITY fragpath    "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">
-        <!ENTITY fragpathesc "\\.(?:[^&_fragpathseps;/]*+(?:\\.|&_brace_noexpansion;)?+)*+">
-        <!ENTITY opt         "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">
-        <!ENTITY assumepath  "/&path;|(?=[*?#^~([]|&lt;[0-9]*-[0-9]*>)">
-        <!ENTITY pathpart    "(?:~(?:/&path;|(?=[&wordseps;]|$))|&fragpath;(?:&assumepath;|(?=&fragpathesc;&assumepath;))|\.\.?(?=[&wordseps;]|$))">
-
-        <!ENTITY _braceexpansion_spe     " &tab;&lt;>|&amp;;{}\\`'&quot;$">
-        <!ENTITY _brace_noexpansion      "\{[^&_braceexpansion_spe;,]*+\}">
-        <!ENTITY _braceexpansion_var     "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">
-        <!ENTITY _braceexpansion_string  "'[^']*'|&quot;([^&quot;\`]*+|`[^`]*`)*+&quot;">
-        <!ENTITY _braceexpansion_elems   "\\.|`[^`]*`|&_braceexpansion_string;|&_braceexpansion_var;|&_brace_noexpansion;">
-        <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">
-        <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">
-        <!ENTITY braceexpansion "{&_braceexpansion;">
-
-        <!ENTITY _bracerangevar "\$([#+^=~]*([_a-zA-Z0-9]+|[*@#])(\[((\$[#+^=~]*)?([-+_a-zA-Z0-9]+|[*@])|$#)\])?|#|'(\\.|[^'\\])')">
-        <!ENTITY _bracerangeoperand "-?([0-9]+|[a-zA-Z!#$&#37;*+,-./:=?@^_~]|&_bracerangevar;|\\.|'[^'\\]'|&quot;(\\.|[^&quot;\\`])&quot;|`[^`]*`)">
-        <!ENTITY bracerangeexpansion "{(?=&_bracerangeoperand;\.\.&_bracerangeoperand;(\.\.-?([0-9]+|&_bracerangevar;))?})">
-
-        <!ENTITY nobraceexpansion "(?:{([^&_braceexpansion_spe;/{},]++|(?R))+?})+">
-        <!ENTITY nogroupend "(?:}+(?:[^&_fragpathseps;]|(?=[}$'&quot;`\\])))">
-
-        <!-- glob with |, ( or spaces is a pattern -->
-        <!ENTITY _ispattern_ugN "[ug][0123456789]+">
-        <!ENTITY _ispattern_ugeP "[ugeP](?:&_ispattern_ugeP_0;|&_ispattern_ugeP_1;|&_ispattern_ugeP_2;|&_ispattern_ugeP_3;|&_ispattern_ugeP_4;|(?=\|))">
-        <!ENTITY _ispattern_ugeP_0    ":(?:[^:'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?::|(?=[|()]))">
-        <!ENTITY _ispattern_ugeP_1   "\[(?:[^]'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?:\](?=[|()]))">
-        <!ENTITY _ispattern_ugeP_2    "{(?:[^}'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?:}(?=[|()]))">
-        <!ENTITY _ispattern_ugeP_3 "&lt;(?:[^>'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?:>|(?=[|()]))">
-        <!ENTITY _ispattern_ugeP_4  "([^&wordseps;{}'&quot;`\\])(?:(?:(?!\1)[^'`&quot;\\\1|()])*+(?:&_ispattern_q;)?)*(?:\1|(?=[|()]))">
-        <!ENTITY _ispattern_dq "&quot;(?:[^&quot;\\`]*+(?:`[^`]`|\\.)?)*&quot;">
-        <!ENTITY _ispattern_q "\\.|'[^']*'|`[^`]`|&_ispattern_dq;">
-        <!ENTITY _ispattern_check "(?:\)(?:[^ &tab;}&lt;>|&amp;;)]|&nogroupend;)|[ &tab;|(]|$)">
-        <!ENTITY ispattern "(?:[^ &tab;\\'&quot;|()`ugeP]*+(?:&_ispattern_ugN;|&_ispattern_ugeP;|&_ispattern_q;)?)*&_ispattern_check;">
-
-        <!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">
-
-        <!ENTITY arithmetic_as_subshell "\(((?:[^`'&quot;()$]++|\$\{[^`'&quot;(){}$]+\}|\$(?=[^{`'&quot;()])|`[^`]*+`|\((?1)(?:[)]|(?=['&quot;])))++)(?:[)](?=$|[^)])|[&quot;'])">
-
-        <!ENTITY int "(?:[0-9]++[_0-9]*+)">
-        <!ENTITY exp "(?:[eE][-+]?&int;)">
-]>
-<language name="Zsh" version="26" kateversion="5.79" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
-
-  <highlighting>
-    <list name="keywords">
-      <item>continue</item>
-      <item>break</item>
-      <item>case</item>
-      <item>do</item>
-      <item>done</item>
-      <item>elif</item>
-      <item>else</item>
-      <item>end</item>
-      <item>esac</item>
-      <item>fi</item>
-      <item>for</item>
-      <item>foreach</item>
-      <item>function</item>
-      <item>if</item>
-      <item>in</item>
-      <item>repeat</item>
-      <item>return</item>
-      <item>select</item>
-      <item>then</item>
-      <item>until</item>
-      <item>while</item>
-    </list>
-
-<list name="builtins"><!-- see man zshbuiltins -->
-	<item>-</item>
-	<item>.</item>
-	<item>:</item>
-	<item>alias</item>
-	<item>autoload</item>
-	<item>bg</item>
-	<item>bindkey</item>
-	<item>builtin</item>
-	<item>bye</item>
-	<item>cap</item>
-	<item>cd</item>
-	<item>chdir</item>
-	<item>clone</item>
-	<item>command</item>
-	<item>comparguments</item>
-	<item>compcall</item>
-	<item>compctl</item>
-	<item>compdescribe</item>
-	<item>compfiles</item>
-	<item>compgroups</item>
-	<item>compquote</item>
-	<item>comptags</item>
-	<item>comptry</item>
-	<item>compvalues</item>
-	<item>coproc</item>
-	<item>dirs</item>
-	<item>disable</item>
-	<item>disown</item>
-	<item>echo</item>
-	<item>echotc</item>
-	<item>echoti</item>
-	<item>emulate</item>
-	<item>enable</item>
-	<item>eval</item>
-	<item>exec</item>
-	<item>exit</item>
-	<item>false</item>
-	<item>fc</item>
-	<item>fg</item>
-	<item>functions</item>
-	<item>getcap</item>
-	<item>hash</item>
-	<item>history</item>
-	<item>jobs</item>
-	<item>kill</item>
-	<item>limit</item>
-	<item>log</item>
-	<item>logout</item>
-	<item>nocorrect</item>
-	<item>noglob</item>
-	<item>popd</item>
-	<item>print</item>
-	<item>printf</item>
-	<item>pushd</item>
-	<item>pushln</item>
-	<item>pwd</item>
-	<item>r</item>
-	<item>rehash</item>
-	<item>sched</item>
-	<item>set</item>
-	<item>setcap</item>
-	<item>setopt</item>
-	<item>shift</item>
-	<item>source</item>
-	<item>stat</item>
-	<item>suspend</item>
-	<item>test</item>
-	<item>times</item>
-	<item>trap</item>
-	<item>true</item>
-	<item>ttyctl</item>
-	<item>type</item>
-	<item>ulimit</item>
-	<item>umask</item>
-	<item>unalias</item>
-	<item>unfunction</item>
-	<item>unhash</item>
-	<item>unlimit</item>
-	<item>unset</item>
-	<item>unsetopt</item>
-	<item>vared</item>
-	<item>wait</item>
-	<item>whence</item>
-	<item>where</item>
-	<item>which</item>
-	<item>zcompile</item>
-	<item>zformat</item>
-	<item>zftp</item>
-	<item>zle</item>
-	<item>zmodload</item>
-	<item>zparseopts</item>
-	<item>zprof</item>
-	<item>zpty</item>
-	<item>zregexparse</item>
-	<item>zsocket</item>
-	<item>zstyle</item>
-	<item>ztcp</item>
-    </list>
-
-    <list name="builtins_var">
-	<item>declare</item>
-	<item>export</item>
-	<item>float</item>
-	<item>getln</item>
-	<item>getopts</item>
-	<item>integer</item>
-	<item>let</item>
-	<item>local</item>
-	<item>read</item>
-	<item>readonly</item>
-	<item>typeset</item>
-	<item>unset</item>
-    </list>
-
-    <list name="unixcommands">
-      <include>unixcommands##Bash</include>
-    </list>
-
-    <contexts>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Comment" context="Comment" char="#"/>
-        <!-- start expression in double parentheses -->
-        <Detect2Chars context="ExprDblParenOrSubShell" char="(" char1="(" lookAhead="1"/>
-        <!-- start a subshell -->
-        <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell"/>
-        <!-- start expression in single/double brackets -->
-        <DetectChar context="MaybeBracketExpression" char="[" lookAhead="1"/>
-        <!-- start a group command or BraceExpansion with { -->
-        <DetectChar attribute="Keyword" context="Group" char="{"/>
-
-        <!-- handle ` -->
-        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
-
-        <!-- &> redirections -->
-        <Detect2Chars attribute="Redirection" context="Prefix&amp;>" char="&amp;" char1=">"/>
-        <Detect2Chars attribute="Control" context="#stay" char="&amp;" char1="!"/>
-
-        <!-- handle branche conditions -->
-        <Detect2Chars attribute="Control" context="#stay" char="&amp;" char1="&amp;"/>
-        <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/>
-
-        <!-- handle &, |, ; -->
-        <AnyChar attribute="Control" context="#stay" String="&amp;|;"/>
-
-        <!-- handle variable assignments -->
-        <RegExpr attribute="Variable" context="VarAssign" String="&varname;(?=\+?=|\[(?:$|[^]]))|[0-9]+(?=\+?=)"/>
-        <!-- handle keywords -->
-        <keyword context="DispatchKeyword" String="keywords" lookAhead="1"/>
-        <!-- handle commands that have variable names as argument -->
-        <keyword attribute="Builtin" context="VarName" String="builtins_var" lookAhead="1"/>
-        <WordDetect attribute="Builtin" context="#stay" String="noglob"/>
-        <!-- mark function definitions without function keyword -->
-        <RegExpr attribute="Function" context="#stay" String="&funcname;[ &tab;]*\(\)"/>
-        <keyword attribute="Builtin" context="CommandArgs" String="builtins"/>
-        <keyword attribute="Command" context="CommandArgs" String="unixcommands"/>
-
-        <!-- handle redirection -->
-        <AnyChar context="CommandMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/>
-
-        <DetectChar attribute="Error" context="#stay" char=")"/>
-        <DetectChar context="MaybeGroupEnd" char="}" lookAhead="1"/>
-
-        <LineContinue attribute="Escape" context="#stay"/>
-
-        <Detect2Chars attribute="Expression" context="#stay" char="!" char1=" "/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroupEnd">
-        <RegExpr context="#pop!Command" String="&nogroupend;" lookAhead="1"/>
-        <DetectChar attribute="Error" context="#pop" char="}"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">
-        <!-- start expression in double brackets -->
-        <RegExpr attribute="Keyword" context="#pop!ExprDblBracket" String="\[\[(?=$|[ &tab;(])" beginRegion="expression"/>
-        <!-- start expression in single brackets -->
-        <RegExpr attribute="Builtin" context="#pop!ExprBracket" String="\[&eos;" beginRegion="expression"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeRedirection" fallthroughContext="#pop!Command">
-        <IncludeRules context="FindRedirection"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="Return" fallthroughContext="#pop">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <Int attribute="Number" context="#stay"/>
-      </context>
-      <!-- Comment consumes shell comments till EOL -->
-      <context attribute="Comment" lineEndContext="#pop" name="Comment">
-        <DetectSpaces attribute="Comment"/>
-        <IncludeRules context="##Comments"/>
-        <DetectIdentifier attribute="Comment" context="#stay"/>
-      </context>
-
-      <!-- Group is called after a { is encountered -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="Group" fallthroughContext="Command">
-        <DetectChar attribute="Keyword" context="#pop!GroupEnd" char="}"/>
-        <IncludeRules context="Start"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="GroupEnd" fallthroughContext="#pop!CommandArgs">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <WordDetect attribute="Control Flow" context="#pop" String="always"/>
-      </context>
-
-      <context attribute="OtherCommand" lineEndContext="#pop" name="Command">
-        <DetectSpaces attribute="Normal Text" context="#pop!CommandArgs"/>
-        <DetectIdentifier attribute="OtherCommand" context="#stay"/>
-        <DetectChar context="CommandVariables" char="$" lookAhead="1"/>
-        <IncludeRules context="FindStrings"/>
-        <Detect2Chars attribute="Control" context="#pop" char="&amp;" char1="&amp;"/>
-        <Detect2Chars attribute="Control" context="#pop" char="|" char1="|"/>
-        <DetectChar attribute="Control" context="#pop" char="|"/>
-        <AnyChar context="#pop" String=";)`" lookAhead="1"/>
-        <AnyChar context="#pop!CommandArgs" String="&amp;&lt;>" lookAhead="1"/>
-        <!-- start expression in double parentheses -->
-        <Detect2Chars attribute="Error" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>
-        <!-- start a subshell -->
-        <DetectChar attribute="Error" context="#pop!SubShell" char="(" beginRegion="subshell"/>
-        <DetectChar context="CommandAssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar context="CommandMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar context="CommandMaybeGroupEnd" char="}" lookAhead="1"/>
-      </context>
-      <context attribute="Command" lineEndContext="#pop" name="CommandVariables">
-        <IncludeRules context="DispatchVariables"/>
-        <DetectChar attribute="OtherCommand" context="#pop" char="$"/>
-      </context>
-      <context attribute="OtherCommand" lineEndContext="#pop" name="CommandAssumeEscape">
-        <LineContinue attribute="Escape" context="#pop"/>
-        <RegExpr attribute="OtherCommand" context="#pop" String="\\."/>
-      </context>
-      <context attribute="OtherCommand" lineEndContext="#pop" name="CommandMaybeBraceExpansion">
-        <IncludeRules context="DispatchBraceExpansion"/>
-        <DetectChar attribute="OtherCommand" context="#pop" char="{"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeGroupEnd">
-        <RegExpr attribute="OtherCommand" context="#pop" String="&nogroupend;+"/>
-        <DetectChar context="#pop#pop" char="}" lookAhead="1"/>
-      </context>
-
-      <context attribute="Variable" lineEndContext="#pop" name="DispatchVariables">
-        <IncludeRules context="DispatchSubstVariables"/>
-        <IncludeRules context="DispatchStringVariables"/>
-        <IncludeRules context="DispatchVarNameVariables"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="DispatchSubstVariables">
-        <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/>
-        <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="DispatchStringVariables">
-        <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/>
-        <Detect2Chars attribute="String Transl." context="#pop!StringDQ" char="$" char1="&quot;"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="DispatchVarNameVariables">
-        <Detect2Chars context="#pop!VarNameSpe" char="$" char1="#" lookAhead="1"/>
-        <RegExpr attribute="Variable" context="#pop!AfterVarName" String="\$(?:&varname;|[0-9]+|[-*@?$!])"/>
-        <Detect2Chars context="#pop!VarNameSpe" char="$" char1="~" lookAhead="1"/>
-        <Detect2Chars context="#pop!VarNameSpe" char="$" char1="=" lookAhead="1"/>
-        <Detect2Chars context="#pop!VarNameSpe" char="$" char1="^" lookAhead="1"/>
-        <Detect2Chars context="#pop!VarNameSpe" char="$" char1="+" lookAhead="1"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="VarNameSpe">
-        <DetectChar attribute="Variable" context="#pop!VarNameSpeParam" char="$"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="VarNameSpeParam">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" char="#"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam+" char="+"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam" String="~=^"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="VarNameSubstLen" fallthroughContext="#pop!AfterVarName">
-        <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/>
-        <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/>
-        <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="#~=^+{}[]:-/$"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="VarNameParam" fallthroughContext="#pop!AfterVarName">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" char="#"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam+" char="+"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="^=~"/>
-        <IncludeRules context="VarNameSubstLen"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#pop" name="VarNameParam+" fallthroughContext="#pop">
-        <IncludeRules context="VarNameSubstLen"/>
-      </context>
-
-      <!-- called as soon as $xxx is encoutered -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="AfterVarName" fallthroughContext="#pop">
-        <DetectChar context="VarNameDispatchModifiers" char=":" lookAhead="1"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameDispatchModifiers" fallthroughContext="#pop#pop">
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="a"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="A"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="c"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="e"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_h" char=":" char1="h"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="l"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="p"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="P"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="q"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="Q"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="r"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_s" char=":" char1="s"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop!VarNameModifier_h" char=":" char1="t"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="u"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="x"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=":" char1="&amp;"/>
-        <StringDetect attribute="Parameter Expansion" context="#pop!VarNameModifier_s" String=":gs"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameModifier_h" fallthroughContext="#pop">
-        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
-      </context>
-      <context attribute="Parameter Expansion Operator" lineEndContext="#pop#pop" name="VarNameModifier_s" fallthroughContext="#pop#pop">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Str" char="/"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#pop#pop" name="VarNameModifier_s_Str">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char="/"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;"/>
-        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#pop#pop" name="VarNameModifier_s_Rep">
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>
-        <AnyChar context="#pop#pop" String=" &tab;&lt;>|&amp;;()" lookAhead="1"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="CommandBackq" fallthroughContext="Command">
-        <DetectChar attribute="Backquote" context="#pop!CommandArgs" char="`"/>
-        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
-        <IncludeRules context="Start"/>
-      </context>
-      <!-- CommentBackq consumes shell comments till EOL or a backquote -->
-      <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
-        <DetectChar context="#pop" char="`" lookAhead="1"/>
-        <IncludeRules context="Comment"/>
-      </context>
-
-      <!-- CommandArgs matches the items after a command -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs" fallthroughContext="CommandArg">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-
-        <!-- &> redirections -->
-        <Detect2Chars attribute="Redirection" context="Prefix&amp;>" char="&amp;" char1=">"/>
-
-        <!-- handle &, |, ;, ` -->
-        <AnyChar context="#pop" String="&amp;|;`" lookAhead="1"/>
-
-        <!-- handle process subst -->
-        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="=" char1="("/>
-        <!-- handle redirection -->
-        <AnyChar context="CommandArgMaybeRedirection" String="&gt;&lt;0123456789" lookAhead="1"/>
-
-        <DetectChar context="#pop" char=")" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="CommandArg" fallthroughContext="#pop!NormalOption">
-        <!-- In command arguments, do not allow comments after escaped characters.
-             This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->
-        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
-        <Detect2Chars attribute="Option" context="#pop!LongOption" char="-" char1="-"/>
-        <DetectChar attribute="Option" context="#pop!ShortOption" char="-"/>
-        <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgMaybeRedirection" fallthroughContext="#pop!NormalOption">
-        <IncludeRules context="FindRedirection"/>
-      </context>
-
-      <context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop">
-        <DetectChar attribute="Path" context="PathThenPop" char="/"/>
-        <IncludeRules context="LongOption"/>
-      </context>
-      <context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop">
-        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
-        <DetectChar attribute="Operator" context="#pop!NormalOption" char="="/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSingleGlob"/>
-        <IncludeRules context="FindGlobAny"/>
-        <AnyChar context="#pop!NormalOption" String="({}&lt;" lookAhead="1"/>
-        <RegExpr attribute="Option" context="#stay" String="&opt;"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="NormalOption" fallthroughContext="#pop">
-        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <DetectChar attribute="Glob" context="PathThenPop" char="[" lookAhead="1"/>
-        <DetectChar context="ExprGlobParenThenPath" char="(" lookAhead="1"/>
-        <IncludeRules context="FindPathThenPop"/>
-        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
-        <IncludeRules context="FindNormalTextOption"/>
-        <DetectChar context="MaybeGlobRangeOrPop" char="&lt;" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="NormalOptionRecBrace">
-        <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSingleGlob"/>
-        <IncludeRules context="FindGlobAny"/>
-        <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>
-        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar attribute="Normal Text" context="#pop" char="}"/>
-        <DetectChar context="MaybeGlobRangeOrPop" char="&lt;" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeGroupEnd">
-        <IncludeRules context="FindNoGroupEndThenPop"/>
-        <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindNoGroupEndThenPop">
-        <RegExpr context="#pop" String="&nogroupend;"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalTextOption">
-        <RegExpr attribute="Normal Text" context="#stay" String="([^[&wordseps;&substseps;]+|&nogroupend;)+"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeBraceExpansion">
-        <IncludeRules context="DispatchBraceExpansion"/>
-        <DetectChar attribute="Normal Text" context="#pop!NormalOptionRecBrace" char="{"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="AssumeEscape">
-        <LineContinue attribute="Escape" context="#pop"/>
-        <RegExpr attribute="Escape" context="#pop" String="\\."/>
-      </context>
-
-<!-- ====== The following rulessets are meant to be included ======== -->
-
-      <!-- FindRedirection consumes shell redirection -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindRedirection">
-        <RegExpr attribute="File Descriptor" context="#pop!AssumeRedirection" String="[0-9]++(?=[&lt;>])"/>
-        <IncludeRules context="AssumeRedirection"/>
-      </context>
-
-      <!-- DispatchBraceExpansion consumes brace expansions -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchBraceExpansion">
-        <RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/>
-        <IncludeRules context="IncBraceExpansion"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchPathBraceExpansion">
-        <RegExpr context="#pop!PathBraceExpansion" String="&braceexpansion;" lookAhead="1"/>
-        <IncludeRules context="IncBraceExpansion"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="IncBraceExpansion">
-        <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="&bracerangeexpansion;"/>
-        <RegExpr context="#pop" String="&nobraceexpansion;"/>
-      </context>
-
-      <!-- FindPathThenPop consumes path -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPop">
-        <AnyChar attribute="Glob" context="PathThenPop" String="?*#^"/>
-        <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/>
-        <DetectChar attribute="Glob" context="PathThenPop" char="~"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop#pop" name="IncPath">
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSingleGlob"/>
-        <IncludeRules context="FindGlobAny"/>
-        <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>
-        <RegExpr attribute="Path" context="#stay" String="&path;"/>
-        <DetectChar context="MaybeGlobRangeOrPop" char="&lt;" lookAhead="1"/>
-        <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop">
-        <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
-        <IncludeRules context="IncPath"/>
-        <DetectChar context="PathMaybeGroupEnd" char="}" lookAhead="1"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop" name="PathRecBrace">
-        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
-        <IncludeRules context="IncPath"/>
-        <DetectChar attribute="Path" context="#pop" char="}"/>
-      </context>
-      <context attribute="Glob" lineEndContext="#stay" name="MaybeGlobRangeOrPop" fallthroughContext="#pop#pop">
-        <IncludeRules context="FindGlobRangeThenPop"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop" name="PathMaybeBraceExpansion">
-        <IncludeRules context="DispatchPathBraceExpansion"/>
-        <DetectChar attribute="Path" context="#pop!PathRecBrace" char="{"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop" name="PathMaybeGroupEnd">
-        <IncludeRules context="FindNoGroupEndThenPop"/>
-        <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>
-      </context>
-      <context attribute="Glob" lineEndContext="#stay" name="FindGlobRangeThenPop">
-        <RegExpr attribute="Glob" context="#pop!InGlobRange" String="&lt;(?=[0-9]*-[0-9]*>)"/>
-      </context>
-      <context attribute="Number" lineEndContext="#stay" name="InGlobRange">
-        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
-        <DetectChar attribute="Glob" context="#stay" char="-"/>
-        <DetectChar attribute="Glob" context="#pop" char=">"/>
-      </context>
-
-      <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}-->
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue">
-        <AnyChar attribute="Glob" context="PathThenPopInAlternateValue" String="?*#^~|"/>
-        <Detect2Chars context="PathThenPopInAlternateValue" char="(" char1="#" lookAhead="1"/>
-        <AnyChar context="PathThenPopInAlternateValue" String="[(" lookAhead="1"/>
-        <RegExpr attribute="Path" context="PathThenPopInAlternateValue" String="&pathpart;"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop" name="PathThenPopInAlternateValue">
-        <AnyChar context="#pop" String="&wordseps_or_extglog;}" lookAhead="1"/>
-        <IncludeRules context="IncPath"/>
-      </context>
-
-      <context attribute="Glob" lineEndContext="#stay" name="FindGlobAny">
-        <DetectChar attribute="Glob" context="GlobAnyFlag" char="["/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAnyFlag" fallthroughContext="#pop!GlobAny">
-        <DetectChar attribute="Glob Flag" context="#pop!GlobAny" char="^"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAny">
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar attribute="Glob Flag" context="#stay" char="-"/>
-        <Detect2Chars attribute="Glob" context="GlobClass" char="[" char1=":"/>
-        <DetectChar attribute="Glob" context="#pop" char="]"/>
-      </context>
-      <context attribute="Glob" lineEndContext="#pop#pop" name="GlobClass">
-        <Detect2Chars attribute="Glob" context="#pop" char=":" char1="]"/>
-        <DetectChar attribute="Error" context="#pop" char="]"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#stay" name="FindSingleGlob">
-        <AnyChar attribute="Glob" context="#stay" String="?*#^~"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#stay" name="FindGlobPattern">
-        <AnyChar attribute="Glob" context="#stay" String="?*#^~|"/>
-        <IncludeRules context="FindGlobAny"/>
-        <IncludeRules context="FindGroupPattern"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#stay" name="FindPattern">
-        <IncludeRules context="FindGlobPattern"/>
-        <DetectChar context="GlobRangeOrError" char="&lt;" lookAhead="1"/>
-      </context>
-      <context attribute="Glob" lineEndContext="#stay" name="GlobRangeOrError">
-        <IncludeRules context="FindGlobRangeThenPop"/>
-        <DetectChar attribute="Error" context="#pop" char="&lt;"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#stay" name="FindSubPattern">
-        <IncludeRules context="FindGlobPattern"/>
-        <DetectChar context="GlobRangeOrPattern" char="&lt;" lookAhead="1"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="GlobRangeOrPattern">
-        <IncludeRules context="FindGlobRangeThenPop"/>
-        <DetectChar attribute="Pattern" context="#pop" char="&lt;"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#stay" name="FindStringDQPattern">
-        <IncludeRules context="FindGlobPattern"/>
-        <DetectChar context="GlobRangeOrStringDQ" char="&lt;" lookAhead="1"/>
-      </context>
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobRangeOrStringDQ">
-        <IncludeRules context="FindGlobRangeThenPop"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="&lt;"/>
-      </context>
-
-      <context attribute="Glob Flag" lineEndContext="#stay" name="FindGroupPattern">
-        <Detect2Chars attribute="Glob Flag" context="GlobPatFlag" char="(" char1="#"/>
-        <DetectChar attribute="Glob" context="ExtGlobPattern" char="("/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPattern">
-        <DetectChar attribute="Glob" context="#pop" char=")"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSubPattern"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPatternThenPath">
-        <DetectChar attribute="Glob" context="#pop!PathThenPop" char=")"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSubPattern"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop">
-        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-        <DetectChar attribute="Operator" context="#pop!Assign" char="="/>
-        <Detect2Chars attribute="Operator" context="#pop!Assign" char="+" char1="="/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword">
-        <!-- match do and if blocks -->
-        <Detect2Chars attribute="Control Flow" context="#pop!NotCond" char="i" char1="f" beginRegion="if"/>
-        <Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/>
-        <StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/>
-        <Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/>
-        <!-- handle while/until as a special case -->
-        <StringDetect attribute="Control Flow" context="#pop!NotCond" String="while"/>
-        <StringDetect attribute="Control Flow" context="#pop!NotCond" String="until"/>
-        <!-- handle for as a special case -->
-        <StringDetect attribute="Control Flow" context="#pop!Foreach" String="foreach"/>
-        <StringDetect attribute="Control Flow" context="#pop!For" String="for"/>
-        <!-- handle select as a special case -->
-        <StringDetect attribute="Control Flow" context="#pop!Select" String="select"/>
-        <StringDetect attribute="Control Flow" context="#pop!Repeat" String="repeat"/>
-        <!-- handle case as a special case -->
-        <StringDetect attribute="Control Flow" context="#pop!Case" String="case" beginRegion="case"/>
-        <!-- handle functions with function keyword before keywords -->
-        <StringDetect attribute="Keyword" context="#pop!FunctionDef" String="function"/>
-        <StringDetect attribute="Control Flow" context="#pop!Return" String="return"/>
-        <!-- not a keyword in this context -->
-        <Detect2Chars attribute="Error" context="#pop" char="i" char1="n"/>
-        <StringDetect attribute="Error" context="#pop" String="esac"/>
-        <!-- handle keywords -->
-        <DetectIdentifier attribute="Control Flow" context="#pop"/>
-      </context>
-
-      <!-- if ! ... and while ! ... -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="NotCond" fallthroughContext="#pop">
-        <DetectSpaces attribute="Normal Text" context="#pop!NotCond2"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="NotCond2" fallthroughContext="#pop">
-        <Detect2Chars attribute="Expression" context="#pop" char="!" char1="&tab;"/>
-        <Detect2Chars attribute="Expression" context="#pop" char="!" char1=" "/>
-        <LineContinue attribute="Expression" context="#pop" char="!"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="Foreach" fallthroughContext="#pop">
-        <LineContinue attribute="Escape" context="#stay"/>
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectIdentifier attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ForeachWord" fallthroughContext="NormalOption">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Control" context="#stay" char=";"/>
-        <DetectChar attribute="Keyword" context="#pop" char=")"/>
-        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
-        <AnyChar attribute="Control" context="#stay" String="&symbolseps;"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop">
-        <LineContinue attribute="Escape" context="#stay"/>
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>
-        <DetectIdentifier attribute="Normal Text" context="#stay"/>
-        <Detect2Chars attribute="Keyword" context="#pop!ForArithmeticExpr" char="(" char1="("/>
-        <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="ForArithmeticExpr">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Control" context="#stay" char=";"/>
-        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="Select" fallthroughContext="#pop">
-        <LineContinue attribute="Escape" context="#stay"/>
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectIdentifier attribute="Normal Text" context="#pop!SelectIn"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="SelectIn" fallthroughContext="#pop">
-        <LineContinue attribute="Escape" context="#stay"/>
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="Repeat" fallthroughContext="#pop!RepeatArithmeticExpr">
-        <LineContinue attribute="Escape" context="#stay"/>
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="RepeatArithmeticExpr">
-        <DetectSpaces attribute="Normal Text" context="#pop"/>
-        <DetectChar attribute="Control" context="#pop" char=";"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-
-      <!-- &> and &>> redirection -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="Prefix&amp;>" fallthroughContext="#pop!FdRedirection">
-        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>
-        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>
-        <AnyChar attribute="Redirection" context="#pop!WordRedirection" String=">|!"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="AssumeRedirection">
-        <!-- handle output redirection -->
-        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>|"/>
-        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>!"/>
-        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&amp;|"/>
-        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&amp;!"/>
-        <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String=">>("/>
-        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/>
-        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>
-        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>
-        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&amp;|"/>
-        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&amp;!"/>
-        <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&amp;"/>
-        <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/>
-        <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/>
-        <!-- handle input redirection -->
-        <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="&lt;" char1="("/>
-        <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String="&lt;&lt;("/>
-        <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="&lt;&lt;&lt;"/>
-        <!-- handle here document -->
-        <Detect2Chars context="#pop!HereDoc" char="&lt;" char1="&lt;" lookAhead="1"/>
-        <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="&lt;" char1="&amp;"/>
-        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="&lt;" char1=">"/>
-        <IncludeRules context="FindGlobRangeThenPop"/>
-        <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">
-        <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">
-        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <RegExpr attribute="Path" context="PathThenPop" String="&path;"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">
-        <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">
-        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="CloseFile" fallthroughContext="#pop">
-        <DetectChar attribute="Keyword" context="#pop" char="-"/>
-      </context>
-
-      <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">
-        <RegExpr attribute="Redirection" context="HereDocIQ"  String="&lt;&lt;-[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>
-        <RegExpr attribute="Redirection" context="HereDocINQ" String="&lt;&lt;-[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/>
-        <RegExpr attribute="Redirection" context="HereDocQ"   String="&lt;&lt;[ &tab;]*&heredocq;(?=[ &tab;]*$)"/>
-        <RegExpr attribute="Redirection" context="HereDocNQ"  String="&lt;&lt;[ &tab;]*([^&wordseps;]+)(?=[ &tab;]*$)"/>
-
-        <RegExpr context="HereDocIQCmd"  String="(&lt;&lt;-[ &tab;]*&heredocq;)" lookAhead="1"/>
-        <RegExpr context="HereDocINQCmd" String="(&lt;&lt;-[ &tab;]*([^&wordseps;]+))" lookAhead="1"/>
-        <RegExpr context="HereDocQCmd"   String="(&lt;&lt;[ &tab;]*&heredocq;)" lookAhead="1"/>
-        <RegExpr context="HereDocNQCmd"  String="(&lt;&lt;[ &tab;]*([^&wordseps;]+))" lookAhead="1"/>
-
-        <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;"/><!-- always met -->
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="Command">
-        <IncludeRules context="Start"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQ" dynamic="1" fallthroughContext="HereDocText">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="1" fallthroughContext="HereDocText">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="1" fallthroughContext="HereDocText">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="1" fallthroughContext="HereDocText">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">
-        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="1"/>
-        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/>
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">
-      </context>
-
-      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocSubstitutions">
-        <DetectChar context="HereDocVariables" char="$" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-      </context>
-      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocVariables">
-        <IncludeRules context="DispatchSubstVariables"/>
-        <IncludeRules context="DispatchVarNameVariables"/>
-        <DetectChar attribute="Here Doc" context="#pop" char="$"/>
-      </context>
-
-      <!-- VarName consumes spare variable names and assignments -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="VarName">
-        <StringDetect attribute="Builtin" context="#pop!BuiltinGetopts" String="getopts"/>
-        <StringDetect attribute="Builtin" context="#pop!BuiltinLet" String="let"/>
-        <DetectIdentifier attribute="Builtin" context="#pop!VarNameArgs"/>
-        <AnyChar attribute="Builtin" context="#pop!VarNameArgs" String=".:-"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArgs" fallthroughContext="#pop!CommandArgs">
-        <DetectSpaces attribute="Normal Text" context="VarNameArg"/>
-        <LineContinue attribute="Escape" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameArg" fallthroughContext="#pop!VarNameArg2">
-        <!-- In command arguments, do not allow comments after escaped characters.
-             This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->
-        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
-        <AnyChar attribute="Option" context="#pop!ShortOption" String="-+"/>
-        <DetectChar attribute="Keyword" context="#pop!VarNameArg2" char="="/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArg2" fallthroughContext="#pop!NormalOption">
-        <DetectChar attribute="Variable" context="Subscript" char="["/>
-        <DetectChar attribute="Operator" context="Assign" char="="/>
-        <DetectChar attribute="Variable" context="AssignArray" char="("/>
-        <DetectIdentifier attribute="Variable" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetopts" fallthroughContext="#pop!CommandArgs">
-        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsOpt"/>
-        <LineContinue attribute="Escape" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinGetoptsOpt" fallthroughContext="#pop!BuiltinGetoptsOpt2">
-        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
-        <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsOpt2" fallthroughContext="#pop!NormalOption">
-        <DetectChar attribute="Operator" context="#stay" char=":"/>
-        <DetectIdentifier attribute="Normal Text" context="#stay" />
-        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsVar"/>
-        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
-        <AnyChar attribute="Normal Text" context="#stay" String="/%.0123456789"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsVar" fallthroughContext="#pop!CommandArgs">
-        <DetectIdentifier attribute="Variable" context="#pop!CommandArgs"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLet" fallthroughContext="#pop!CommandArgs">
-        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinLetArgs"/>
-        <LineContinue attribute="Escape" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgs" fallthroughContext="BuiltinLetArg">
-        <AnyChar context="BuiltinLetArgsNumber" String="0123456789" lookAhead="1"/>
-        <IncludeRules context="CommandArgs"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgsNumber" fallthroughContext="#pop!BuiltinLetArg">
-        <IncludeRules context="FindRedirection"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinLetArg" fallthroughContext="#pop!BuiltinLetExpr">
-        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
-        <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetExpr" fallthroughContext="#pop!NormalOption">
-        <DetectIdentifier attribute="Variable" context="#stay" />
-        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
-        <AnyChar attribute="Operator" context="#stay" String="+-!%=^:"/>
-        <AnyChar context="Number" String="0123456789." lookAhead="1"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-        <IncludeRules context="FindWord"/>
-        <Detect2Chars attribute="BaseN" context="NoPrefix" char="#" char1="#"/>
-        <DetectChar attribute="Error" context="#stay" char="#"/>
-        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
-      </context>
-
-      <!-- ProcessSubst handles <(command) and >(command) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst" fallthroughContext="Command">
-        <DetectChar attribute="Redirection" context="#pop" char=")"/>
-        <IncludeRules context="Start"/>
-      </context>
-
-      <!-- StringSQ consumes anything till ' -->
-      <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
-        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
-      </context>
-
-      <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
-        <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;"/>
-        <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>
-        <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-      </context>
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">
-        <IncludeRules context="DispatchSubstVariables"/>
-        <IncludeRules context="DispatchVarNameVariables"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>
-      </context>
-      <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">
-        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="&quot;"/>
-        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="\"/>
-        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/>
-        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/>
-        <LineContinue attribute="String Escape" context="#pop"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="\"/>
-      </context>
-
-      <!-- RegularBackq consumes anything till ` -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command">
-        <DetectChar attribute="Backquote" context="#pop" char="`"/>
-        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
-        <IncludeRules context="Start"/>
-      </context>
-
-      <!-- StringEsc eats till ', but escaping many characters -->
-      <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">
-        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
-        <RegExpr attribute="String Escape" context="#stay" String="\\(?:[abefnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|c.)"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">
-        <IncludeRules context="FindStrings"/>
-        <DetectChar context="RegularVariable" char="$" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="RegularVariable">
-        <IncludeRules context="DispatchVariables"/>
-        <DetectChar attribute="Normal Text" context="#pop" char="$"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="FindStrings">
-        <DetectChar attribute="String SingleQ" context="StringSQ" char="'"/>
-        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;"/>
-      </context>
-
-      <!-- SubstCommand is called after a $( is encountered -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand" fallthroughContext="Command">
-        <DetectChar attribute="Parameter Expansion" context="#pop" char=")" endRegion="subshell"/>
-        <IncludeRules context="Start"/>
-      </context>
-
-      <!-- VarBraceStart is called as soon as ${ is encoutered -->
-      <context attribute="Variable" lineEndContext="#pop" name="VarBraceStart" fallthroughContext="#pop!CheckVarAlt">
-        <DetectChar attribute="Parameter Expansion" context="#pop!VarFlags" char="("/>
-        <IncludeRules context="VarFlagsVar"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#stay" name="VarBraceStartRecursive" fallthroughContext="#pop#pop!CheckVarAlt">
-        <Detect2Chars attribute="Parameter Expansion" context="VarBraceStart" char="$" char1="{"/>
-        <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>
-        <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>
-        <DetectChar attribute="Error" context="#pop" char="$"/>
-      </context>
-      <context attribute="Error" lineEndContext="#stay" name="VarError">
-        <DetectChar attribute="Variable" context="#pop" char="}"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="CheckVarAlt" fallthroughContext="#pop!VarError">
-        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>
-        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="%" char1="%"/>
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#" char1="#"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" String="#%"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValuePrefix" char=":"/>
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/" char1="/"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>
-      </context>
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="AlternateValuePrefix" fallthroughContext="#pop!VarSub">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?|*^"/>
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="="/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>
-
-        <!-- Modifiers -->
-        <AnyChar attribute="Parameter Expansion" context="#pop!VarBraceModifiers" String="aAcehlpPqQrsg&amp;tux" lookAhead="1"/>
-      </context>
-
-      <!-- called as soon as ${xxx:y (with y a modifier) is encoutered -->
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifiers">
-        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>
-        <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/>
-        <DetectChar attribute="Parameter Expansion" context="VarBraceModifier_s" char="s"/>
-        <Detect2Chars attribute="Parameter Expansion" context="VarBraceModifier_s" char="g" char1="s"/>
-      </context>
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_h" fallthroughContext="#pop">
-        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
-      </context>
-
-      <!-- called as soon as ${xxx:s and ${xxx:gs is encoutered -->
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_s">
-        <DetectChar attribute="Error" context="#pop#pop" char="}"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Str" char="/"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarBraceModifier_s_Str">
-        <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char="/"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar attribute="String SingleQ" context="RecursiveVarBraceModifier_s" char="{"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="RecursiveVarBraceModifier_s">
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar attribute="String SingleQ" context="#pop" char="}"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarBraceModifier_s_Rep">
-        <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>
-        <DetectChar attribute="String SingleQ" context="RecursiveVarBraceModifier_s" char="{"/>
-      </context>
-
-      <!-- called as soon as ${xxx: is encoutered -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarSub">
-        <DetectChar attribute="Variable" context="#pop" char="}"/>
-        <AnyChar context="VarOffset" String="0123456789" lookAhead="1"/>
-        <AnyChar attribute="Operator" context="#stay" String="+-!~*/%&lt;>=&amp;^|"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>
-        <DetectChar context="VarVariables" char="$" lookAhead="1"/>
-        <IncludeRules context="FindStrings"/>
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-      </context>
-      <context attribute="Command" lineEndContext="#pop" name="VarVariables">
-        <IncludeRules context="DispatchVariables"/>
-        <DetectChar attribute="Error" context="#pop" char="$"/>
-      </context>
-      <context attribute="Number" lineEndContext="#pop" name="VarOffset" fallthroughContext="#pop">
-        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>
-        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>
-        <AnyChar attribute="Number" context="#stay" String="0123456789_"/>
-        <DetectChar attribute="Base" context="#stay" char="#"/>
-      </context>
-
-      <!-- called as soon as ${xxx:-, etc are encoutered -->
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternateValue">
-        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
-        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindPathThenPopInAlternateValue"/>
-      </context>
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternateValue">
-        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindPathThenPopInAlternateValue"/>
-      </context>
-
-      <!-- called as soon as ${xxx%, etc are encoutered -->
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternatePatternValue">
-        <DetectChar attribute="String DoubleQ" context="RecursiveAlternatePatternValue" char="{"/>
-        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindStringDQPattern"/>
-      </context>
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternatePatternValue">
-        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
-        <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindStringDQPattern"/>
-      </context>
-
-      <!-- called as soon as ${xxx/ ${xxx// ${xxx:/ are encoutered -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarBraceSubst" fallthroughContext="#pop!VarBraceSubstPat">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" char="#" char1="%"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" String="#%"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="VarBraceSubstPat">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="/"/>
-        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
-        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSubPattern"/>
-        <DetectIdentifier attribute="Pattern" context="#stay"/>
-      </context>
-
-      <!-- called as soon as ${( is encoutered -->
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlags">
-        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNR"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="sjgZ_"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_l" String="lrI"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlagsSubs" char="p"/>
-
-        <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>
-        <DetectChar attribute="Error" context="#pop" char="}"/>
-      </context>
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlagsSubs">
-        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNRp"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="gZ"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_ps" String="sj_"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_pl" String="lrI"/>
-
-        <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>
-        <DetectChar attribute="Error" context="#pop" char="}"/>
-      </context>
-      <context attribute="Variable" lineEndContext="#stay" name="VarFlagsVar" fallthroughContext="#pop!CheckVarAlt">
-        <DetectChar context="VarBraceStartRecursive" char="$" lookAhead="1"/>
-        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#+^=~"/>
-        <DetectIdentifier attribute="Variable" context="#pop!CheckVarAlt"/>
-        <AnyChar attribute="Variable" context="#pop!CheckVarAlt" String="*@?$-"/>
-        <Int attribute="Variable" context="#pop!CheckVarAlt" additionalDeliminator="#~=^+{}[]:-/$"/>
-        <Detect2Chars context="#pop!VarSubShell" char="!" char1="}" lookAhead="1"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="!"/>
-      </context>
-
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarSubShell">
-        <DetectChar attribute="Variable" context="#pop!CheckVarAlt" char="!"/>
-      </context>
-
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_s">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s[" char="["/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s&lt;" char="&lt;"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s{" char="{"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s(" char="("/>
-        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_sx" String="(.)"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s[">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s&lt;">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s{">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s(">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_sx">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[" char="["/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l&lt;" char="&lt;"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{" char="{"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(" char="("/>
-        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lx" String="(.)"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l[">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[s" char="]" char1="["/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l&lt;">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l&lt;s" char=">" char1="&lt;"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l{">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{s" char="}" char1="{"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l(">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(s" char=")" char1="("/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_lx">
-        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lxs" String="(%1)%1" dynamic="1"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l[s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l&lt;s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="&lt;"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l{s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l(s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_lxs">
-        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
-      </context>
-
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_ps">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps[" char="["/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps&lt;" char="&lt;"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps{" char="{"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps(" char="("/>
-        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_psx" String="(.)"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps[">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
-        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\])"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps&lt;">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
-        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=>)"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps{">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
-        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=})"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps(">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
-        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\))"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_psx">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
-        <RegExpr attribute="Variable" context="#stay" String="\$(?!%1)(?:[A-Za-z_](?:(?!%1)[A-Za-z0-9_])*+|(?:(?!%1)[0-9])++)(?=%1)" dynamic="1"/>
-        <RegExpr attribute="String SingleQ" context="#stay" String="[^%1]+" dynamic="1"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[" char="["/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl&lt;" char="&lt;"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{" char="{"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(" char="("/>
-        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plx" String="(.)"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl[">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[s" char="]" char1="["/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl&lt;">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl&lt;s" char=">" char1="&lt;"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl{">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{s" char="}" char1="{"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl(">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(s" char=")" char1="("/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_plx">
-        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plxs" String="(%1)%1" dynamic="1"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl[s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>
-        <IncludeRules context="VarFlag_ps["/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl&lt;s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="&lt;"/>
-        <IncludeRules context="VarFlag_ps&lt;"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl{s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>
-        <IncludeRules context="VarFlag_ps{"/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl(s">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>
-        <IncludeRules context="VarFlag_ps("/>
-      </context>
-      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_plxs">
-        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>
-        <IncludeRules context="VarFlag_psx"/>
-      </context>
-
-      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">
-        <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>
-      </context>
-      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion2">
-        <DetectChar attribute="Operator" context="#stay" char=","/>
-        <DetectChar attribute="Escape" context="#pop" char="}"/>
-        <DetectChar context="EscapeMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
-        <DetectChar context="BraceExpansionVariables" char="$" lookAhead="1"/>
-        <IncludeRules context="FindStrings"/>
-        <IncludeRules context="FindPattern"/>
-      </context>
-      <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">
-        <IncludeRules context="DispatchBraceExpansion"/>
-        <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>
-      </context>
-      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansionVariables">
-        <IncludeRules context="DispatchVariables"/>
-        <DetectChar attribute="Escape" context="#pop" char="$"/>
-      </context>
-
-      <context attribute="Escape" lineEndContext="#pop" name="PathBraceExpansion">
-        <DetectChar attribute="Escape" context="#pop!PathBraceExpansion2" char="{"/>
-      </context>
-      <context attribute="Path" lineEndContext="#pop" name="PathBraceExpansion2">
-        <DetectChar attribute="Operator" context="#stay" char=","/>
-        <DetectChar attribute="Escape" context="#pop" char="}"/>
-        <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindPattern"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="SequenceExpression">
-        <AnyChar attribute="Number" context="#stay" String="0123456789-"/>
-        <IncludeRules context="FindWord"/>
-        <Detect2Chars attribute="Escape" context="#stay" char="." char1="."/>
-        <DetectChar attribute="Escape" context="#pop" char="}"/>
-      </context>
-
-<!-- ====== These are the contexts that can be branched to ======= -->
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenOrSubShell">
-        <RegExpr attribute="Keyword" context="#pop!SubShell" String="\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>
-        <Detect2Chars attribute="Keyword" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>
-      </context>
-      <!-- ExprDblParen consumes an expression started in command mode till )) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression"/>
-        <IncludeRules context="FindExprDblParen"/>
-        <!-- ((cmd
-              ) # jump to SubShell context -->
-        <DetectChar attribute="Keyword" context="#pop!SubShell" char=")" endRegion="expression" beginRegion="subshell"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblParen">
-        <Detect2Chars attribute="Control" context="#stay" char="&amp;" char1="&amp;"/>
-        <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/>
-        <AnyChar attribute="Operator" context="#stay" String="+-!~*/%&lt;>=&amp;^|?:"/>
-        <DetectChar attribute="Control" context="#stay" char=","/>
-        <DetectChar attribute="Normal Text" context="ExprSubDblParen" char="("/>
-        <AnyChar context="Number" String="0123456789." lookAhead="1"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-        <IncludeRules context="FindWord"/>
-        <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>
-        <Detect2Chars attribute="BaseN" context="NoPrefix" char="#" char1="#"/>
-        <DetectChar attribute="Error" context="#stay" char="#"/>
-        <DetectIdentifier attribute="Variable" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubDblParen">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
-        <IncludeRules context="FindExprDblParen"/>
-      </context>
-      <context attribute="Error" lineEndContext="#pop" name="MaybeArithmeticBrace">
-        <IncludeRules context="DispatchBraceExpansion"/>
-        <DetectChar attribute="Error" context="#pop" char="{"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="NoPrefix" fallthroughContext="#pop">
-        <DetectChar context="AssumeEscape" char="\"/>
-        <RegExpr attribute="Number" context="#pop" String="[^][()]"/>
-      </context>
-
-      <context attribute="Number" lineEndContext="#pop" name="Number">
-        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>
-        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>
-        <RegExpr attribute="Base" context="#pop!BaseN" String="[1-9][0-9_]*+#"/>
-        <RegExpr attribute="Number" context="#pop" String="&int;(\.(&int;&exp;?+|&exp;)?|&exp;)?|\.&int;&exp;?"/>
-        <DetectChar attribute="Operator" context="#pop" char="."/>
-      </context>
-      <context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop">
-        <RegExpr attribute="Hex" context="#pop" String="[0-9a-fA-F_]+"/>
-      </context>
-      <context attribute="BaseN" lineEndContext="#pop" name="BaseN" fallthroughContext="#pop">
-        <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubstOrSubstCommand">
-        <RegExpr attribute="Parameter Expansion" context="#pop!SubstCommand" String="\$\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>
-        <StringDetect attribute="Parameter Expansion" context="#pop!ExprDblParenSubst" String="$((" beginRegion="expression"/>
-      </context>
-      <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <Detect2Chars attribute="Variable" context="#pop" char=")" char1=")" endRegion="expression"/>
-        <IncludeRules context="FindExprDblParen"/>
-        <!-- $((cmd
-              ) # jump to SubstCommand context -->
-        <DetectChar attribute="Parameter Expansion" context="#pop!SubstCommand" char=")" endRegion="expression" beginRegion="subshell"/>
-      </context>
-
-      <!-- ExprBracket consumes an expression till ] -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket" fallthroughContext="#pop!ExprBracketNot">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <IncludeRules context="FindExprBracketEnd"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketNot" fallthroughContext="#pop!ExprBracketParam1">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam1"/>
-        <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1=" " lookAhead="1"/>
-        <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1="&tab;" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketTestMaybeNot">
-        <DetectChar attribute="Expression" context="#pop" char="!"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam1" fallthroughContext="ExprBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam2"/>
-        <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>
-        <IncludeRules context="FindExprBracketEnd"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValue">
-        <AnyChar context="#pop" String=" &tab;" lookAhead="1"/>
-        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindGlobAny"/>
-        <IncludeRules context="FindPathThenPop"/>
-        <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueRecBrace">
-        <AnyChar context="#pop#pop" String=" &tab;" lookAhead="1"/>
-        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindGlobAny"/>
-        <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar attribute="Normal Text" context="#pop" char="}"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueMaybeBraceExpansion">
-        <IncludeRules context="DispatchBraceExpansion"/>
-        <DetectChar attribute="Normal Text" context="#pop!ExprBracketValueRecBrace" char="{"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="ExprBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/>
-        <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/>
-        <IncludeRules context="FindExprBracketEnd"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="ExprBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/>
-        <IncludeRules context="FindExprBracketEnd"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketFinal" fallthroughContext="ExprBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <IncludeRules context="FindExprBracketEnd"/>
-        <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\][^ &tab;])++" endRegion="expression"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd">
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[ &tab;;|&amp;&lt;>)]))" endRegion="expression"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">
-        <RegExpr attribute="Expression" context="#pop" String="-[abcdefghknoprstuvwxzLOGNS](?=[ &tab;]|$)"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!ExprBracketValue">
-        <RegExpr attribute="Expression" context="#pop" String="(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=[ &tab;]|$)"/>
-      </context>
-
-
-      <!-- ExprDblBracket consumes an expression till ]] -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <IncludeRules context="FindExprDblBracketEnd"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketNot" fallthroughContext="#pop!ExprDblBracketParam1">
-        <DetectChar context="ExprDblBracketTestMaybeNot" char="!" lookAhead="1"/>
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprDblBracketParam1">
-        <RegExpr attribute="Expression" context="#pop" String="!(?=$|[ &tab;(])"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="#pop!ExprDblBracketParam1_2">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1_2" fallthroughContext="ExprDblBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>
-        <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/>
-        <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
-        <DetectChar context="ExprDblBracketSubValue" char="(" lookAhead="1"/>
-        <IncludeRules context="FindExprDblBracketEnd"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValue">
-        <IncludeRules context="TestMaybeUnary"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketSubValue" fallthroughContext="#pop">
-        <DetectChar attribute="Operator" context="ExprDblBracketNot" char="("/>
-        <DetectChar attribute="Operator" context="#pop" char=")"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValue">
-        <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
-        <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>
-        <AnyChar attribute="Error" context="#stay" String="&amp;;|"/>
-        <AnyChar context="#pop" String=" &tab;)" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSingleGlob"/>
-        <IncludeRules context="FindGlobAny"/>
-        <IncludeRules context="FindGroupPattern"/>
-        <DetectChar context="MaybeGlobRangeOrPop" char="&lt;" lookAhead="1"/>
-        <DetectChar context="#pop" char="&gt;" lookAhead="1"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_2">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_2" fallthroughContext="ExprDblBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
-        <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/>
-        <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
-        <IncludeRules context="FindExprDblBracketEnd"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValue">
-        <IncludeRules context="TestMaybeBinary"/>
-        <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~(?=[ &tab;(]|$)"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_2">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop!ExprDblBracketFinal" name="ExprDblBracketParam3_2" fallthroughContext="ExprDblBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
-        <IncludeRules context="FindExprDblBracketEnd"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="ExprDblBracketValue">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <IncludeRules context="FindExprDblBracketEnd"/>
-        <RegExpr attribute="Error" context="#pop" String="(?:[^] &tab;]++|\](?:[^]]|\][^ &tab;]))++" endRegion="expression"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblBracketEnd">
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar context="#pop" char=")" lookAhead="1"/>
-        <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
-        <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/>
-        <RegExpr attribute="Keyword" context="#pop" String="\]\](?=($|[ &tab;;|&amp;)]))" endRegion="expression"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex" fallthroughContext="#pop!Regex">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="Regex">
-        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
-        <DetectChar attribute="Operator" context="#pop" char=")"/>
-        <Detect2Chars attribute="Operator" context="RegexChar" char="[" char1="^"/>
-        <DetectChar attribute="Operator" context="RegexChar" char="["/>
-        <IncludeRules context="FindRegex"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="ExprDblBracketSubRegex">
-        <DetectSpaces attribute="Pattern" context="#stay"/>
-        <DetectChar attribute="Operator" context="#pop" char=")"/>
-        <Detect2Chars attribute="Operator" context="RegexSubChar" char="[" char1="^"/>
-        <DetectChar attribute="Operator" context="RegexSubChar" char="["/>
-        <IncludeRules context="FindRegex"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#stay" name="FindRegex">
-        <DetectChar attribute="Operator" context="ExprDblBracketSubRegex" char="("/>
-        <DetectChar attribute="Escape" context="RegexEscape" char="\"/>
-        <DetectChar attribute="Parameter Expansion" context="RegexDup" char="{"/>
-        <AnyChar attribute="Glob" context="#stay" String="^?+*.|"/>
-        <IncludeRules context="FindStrings"/>
-        <DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables">
-        <IncludeRules context="DispatchVariables"/>
-        <DetectChar attribute="Operator" context="#pop" char="$"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="RegexEscape">
-        <RegExpr attribute="Escape" context="#pop" String="x[0-9a-fA-F]{1,2}|[0-7]{1,3}|."/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="RegexDup">
-        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=","/>
-        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#pop" name="RegexSubChar" fallthroughContext="#pop!RegexSubInChar">
-        <AnyChar attribute="Pattern" context="#pop!RegexSubInChar" String="-]"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#pop" name="RegexSubInChar">
-        <DetectSpaces attribute="Pattern" context="#stay"/>
-        <IncludeRules context="RegexInChar"/>
-      </context>
-
-      <context attribute="Pattern" lineEndContext="#pop" name="RegexChar" fallthroughContext="#pop!RegexInChar">
-        <AnyChar attribute="Pattern" context="#pop!RegexInChar" String="-]"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#pop" name="RegexInChar">
-        <Detect2Chars context="RegexInCharEnd" char="-" char1="]" lookAhead="1"/>
-        <DetectChar attribute="Operator" context="#stay" char="-"/>
-        <DetectChar attribute="Escape" context="RegexEscape" char="\"/>
-        <DetectChar context="RegexCharClassSelect" char="[" lookAhead="1"/>
-        <DetectChar attribute="Operator" context="#pop" char="]"/>
-        <AnyChar context="#pop" String="() &tab;" lookAhead="1"/>
-      </context>
-      <context attribute="Operator" lineEndContext="#stay" name="RegexInCharEnd">
-        <DetectChar attribute="Pattern" context="#stay" char="-"/>
-        <DetectChar attribute="Operator" context="#pop#pop" char="]"/>
-      </context>
-      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClassSelect">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCharClass" char="[" char1=":"/>
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCollatingSymbols" char="[" char1="."/>
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexEquivalenceClass" char="[" char1="="/>
-        <DetectChar attribute="Pattern" context="#pop" char="["/>
-      </context>
-
-      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClass">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char=":" char1="]"/>
-        <DetectChar attribute="Error" context="#pop" char="]"/>
-      </context>
-      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCollatingSymbols">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="." char1="]"/>
-        <DetectChar attribute="Error" context="#pop" char="]"/>
-      </context>
-      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexEquivalenceClass">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="=" char1="]"/>
-        <DetectChar attribute="Error" context="#pop" char="]"/>
-      </context>
-
-      <!-- SubShell consumes shell input till ) -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command">
-        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/>
-        <IncludeRules context="Start"/>
-      </context>
-
-      <!-- Assign consumes an expression till EOL or whitespace -->
-      <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!RegularAssign">
-        <DetectChar attribute="Variable" context="#pop!AssignArray" char="("/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="RegularAssign" fallthroughContext="#pop">
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-        <IncludeRules context="NormalOption"/>
-      </context>
-
-      <!-- AssignArray consumes everything till ), marking assignments -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Comment" context="Comment" char="#"/>
-        <DetectChar attribute="Variable" context="#pop" char=")"/>
-        <DetectChar context="AssignArrayKey" char="[" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/>
-        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKey" fallthroughContext="#pop">
-        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-        <DetectChar attribute="Variable" context="#pop" char="="/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="AssignArrayBackq" fallthroughContext="Command">
-        <DetectChar attribute="Backquote" context="#pop!NormalOption" char="`"/>
-        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
-        <IncludeRules context="Start"/>
-      </context>
-
-      <!-- Subscript consumes anything till ], marks as Variable -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="Subscript2">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
-        <AnyChar attribute="Number" context="#stay" String="0123456789-"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="Subscript2">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=","/>
-        <IncludeRules context="FindGroupPattern"/>
-        <IncludeRules context="FindStrings"/>
-        <DetectChar context="VariableOrSubscriptPos" char="$" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <AnyChar attribute="Operator" context="#pop" String="@+-!~*/%&lt;>=&amp;^|?:"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#pop" name="VariableOrSubscriptPos">
-        <IncludeRules context="DispatchVariables"/>
-        <DetectChar attribute="Number" context="#pop" char="$"/>
-      </context>
-
-      <!-- FunctionDef consumes a name, possibly with (), marks as Function -->
-      <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthroughContext="#pop">
-        <Detect2Chars attribute="Operator" context="#pop" char="(" char1=")"/>
-        <DetectSpaces attribute="Normal Text" context="FunctionNameStart"/>
-      </context>
-      <context attribute="Function" lineEndContext="#pop" name="FunctionNameStart" fallthroughContext="#pop!FunctionName">
-        <AnyChar context="#pop#pop" String="&symbolseps;#" lookAhead="1"/>
-        <DetectChar context="FunctionNameStartMaybeBraceExpansion" char="{" lookAhead="1"/>
-      </context>
-      <context attribute="Function" lineEndContext="#pop" name="FunctionName">
-        <AnyChar context="#pop" String=" &tab;(" lookAhead="1"/>
-        <IncludeRules context="FindWord"/>
-        <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
-      </context>
-      <context attribute="Function" lineEndContext="#pop" name="FunctionNameRecBrace" fallthroughContext="#pop">
-        <IncludeRules context="FindWord"/>
-        <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>
-        <DetectChar attribute="Function" context="#pop" char="}"/>
-      </context>
-      <context attribute="Function" lineEndContext="#pop" name="FunctionNameStartMaybeBraceExpansion">
-        <IncludeRules context="DispatchBraceExpansion"/>
-        <DetectChar attribute="Keyword" context="#pop#pop#pop!Group" char="{"/>
-      </context>
-      <context attribute="Function" lineEndContext="#pop" name="FunctionNameMaybeBraceExpansion">
-        <IncludeRules context="DispatchBraceExpansion"/>
-        <DetectChar attribute="Function" context="#pop!FunctionNameRecBrace" char="{"/>
-      </context>
-
-      <!-- Case is called after the case keyword is encoutered. We handle this because of
-           the lonely closing parentheses that would otherwise disturb the expr matching -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="Case">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Keyword" context="#pop!CaseAlt" char="{"/>
-        <WordDetect attribute="Keyword" context="#pop!CaseIn" String="in"/>
-        <IncludeRules context="FindWord"/>
-        <DetectIdentifier attribute="Normal Text" context="#stay"/>
-      </context>
-
-      <!-- CaseIn is called when the construct 'case ... in' has been found. -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Keyword" context="CaseClosedPattern" char="("/>
-        <DetectChar attribute="Comment" context="Comment" char="#"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="CasePattern">
-        <WordDetect attribute="Control Flow" context="#pop#pop" String="esac" endRegion="case"/>
-        <IncludeRules context="CaseClosedPattern"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="CaseClosedPattern">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Keyword" context="#pop!CaseExpr" char=")" beginRegion="caseexpr"/>
-        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
-        <DetectChar attribute="Keyword" context="#stay" char="|"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindPattern"/>
-        <DetectIdentifier attribute="Pattern" context="#stay"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#stay" name="CaseAlt" fallthroughContext="CasePattern">
-        <DetectSpaces attribute="Normal Text" context="#stay"/>
-        <DetectChar attribute="Keyword" context="CasePattern" char="("/>
-        <DetectChar attribute="Keyword" context="#pop!CaseAltEnd" char="}" endRegion="caseexpr" lookAhead="1"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="CaseAltEnd">
-        <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="case"/>
-      </context>
-
-      <!-- CaseExpr eats shell input till ;; / ;& / ;| -->
-      <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr" fallthroughContext="Command">
-        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="|" endRegion="caseexpr"/>
-        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1=";" endRegion="caseexpr"/>
-        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="&amp;" endRegion="caseexpr"/>
-        <WordDetect context="#pop" String="esac" endRegion="caseexpr" lookAhead="1"/>
-        <DetectChar context="#pop" char="}" lookAhead="1"/>
-        <IncludeRules context="Start"/>
-      </context>
-
-      <!-- ExprGlobParen is called after a ( is encountered in a argument -->
-      <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParen" fallthroughContext="#pop">
-        <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlag" char="(" char1="#"/>
-        <RegExpr attribute="Glob" context="#pop!ExtGlobPattern" String="\((?=&ispattern;)"/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>
-      </context>
-      <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParenThenPath" fallthroughContext="#pop">
-        <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlagThenPath" char="(" char1="#"/>
-        <RegExpr attribute="Glob" context="#pop!ExtGlobPatternThenPath" String="\((?=&ispattern;)"/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>
-      </context>
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier">
-        <AnyChar attribute="Glob Flag" context="#stay" String="/F.@=p*%bcrwxAIERWXsStUG^-MTNDn"/>
-        <AnyChar attribute="Glob Flag" context="GlobQualifier_e" String="eP"/>
-        <AnyChar attribute="Glob Flag" context="GlobQualifier_u" String="ug"/>
-        <AnyChar attribute="Glob Flag" context="GlobQualifier_a" String="amc"/>
-        <AnyChar attribute="Glob Flag" context="GlobQualifier_o" String="oO"/>
-        <DetectChar attribute="Glob Flag" context="GlobQualifier_f" char="f"/>
-        <DetectChar attribute="Glob Flag" context="GlobQualifier_+" char="+"/>
-        <DetectChar attribute="Glob Flag" context="GlobQualifier_d" char="d"/>
-        <DetectChar attribute="Glob Flag" context="GlobQualifier_L" char="L"/>
-        <DetectChar attribute="Glob Flag" context="GlobQualifier_Y" char="Y"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
-
-        <DetectChar attribute="Operator" context="#stay" char=","/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier" char=":"/>
-        <DetectChar attribute="Glob Flag" context="#pop" char=")"/>
-      </context>
-
-      <context attribute="Normal Text" lineEndContext="#pop" name="GlobQualifier_o" fallthroughContext="#pop">
-        <AnyChar attribute="Normal Text" context="#stay" String="nLlamcdN"/>
-      </context>
-
-      <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_Y" fallthroughContext="#pop">
-        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
-      </context>
-
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_L" fallthroughContext="#pop">
-        <AnyChar attribute="Normal Text" context="#stay" String="kKmMpPgGtT"/>
-        <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>
-      </context>
-
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_a" fallthroughContext="#pop">
-        <AnyChar attribute="Normal Text" context="#stay" String="Mwhmsd"/>
-        <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>
-      </context>
-
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_+" fallthroughContext="#pop">
-        <RegExpr attribute="Function" context="#pop" String="[^&_fragpathseps;=,\[]+"/>
-      </context>
-
-      <context attribute="Path" lineEndContext="#pop" name="GlobQualifier_d">
-        <AnyChar context="#pop" String=")," lookAhead="1"/>
-      </context>
-
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_u">
-        <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="0123456789"/>
-        <IncludeRules context="GlobQualifier_e"/>
-      </context>
-
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_f" fallthroughContext="#pop">
-        <AnyChar attribute="Number" context="#pop!GlobQualifier_fo" String="0123456789=+-"/>
-        <DetectChar attribute="Glob" context="#pop!GlobQualifier_fo" char="?"/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f[" char="["/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f&lt;" char="&lt;"/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f{" char="{"/>
-        <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_fx" String="(.)"/>
-      </context>
-      <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_fo" fallthroughContext="#pop">
-        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
-        <DetectChar attribute="Glob" context="#stay" char="?"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f[">
-        <DetectChar attribute="Operator" context="#stay" char=","/>
-        <DetectChar attribute="Glob Flag" context="#pop" char="]"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f&lt;">
-        <DetectChar attribute="Operator" context="#stay" char=","/>
-        <DetectChar attribute="Glob Flag" context="#pop" char=">"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f{">
-        <DetectChar attribute="Operator" context="#stay" char=","/>
-        <DetectChar attribute="Glob Flag" context="#pop" char="}"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_fx">
-        <DetectChar attribute="Operator" context="#stay" char=","/>
-        <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>
-      </context>
-
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_e" fallthroughContext="#pop">
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e[" char="["/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e&lt;" char="&lt;"/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e{" char="{"/>
-        <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_ex" String="(.)"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="IncGlobQualifier_e">
-        <IncludeRules context="FindStrings"/>
-        <DetectChar context="RegularVariable" char="$" lookAhead="1"/>
-        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e[">
-        <DetectChar attribute="Glob Flag" context="#pop" char="]"/>
-        <IncludeRules context="IncGlobQualifier_e"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e&lt;">
-        <DetectChar attribute="Glob Flag" context="#pop" char=">"/>
-        <IncludeRules context="IncGlobQualifier_e"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e{">
-        <DetectChar attribute="Glob Flag" context="#pop" char="}"/>
-        <IncludeRules context="IncGlobQualifier_e"/>
-      </context>
-      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_ex">
-        <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>
-        <IncludeRules context="IncGlobQualifier_e"/>
-      </context>
-
-      <!-- GlobPatFlag is called after a (# is encountered -->
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlag" fallthroughContext="#pop">
-        <IncludeRules context="IncGlobPatFlag"/>
-        <DetectChar attribute="Glob Flag" context="#pop" char=")"/>
-      </context>
-      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlagThenPath" fallthroughContext="#pop">
-        <IncludeRules context="IncGlobPatFlag"/>
-        <DetectChar attribute="Glob Flag" context="#pop!PathThenPop" char=")"/>
-      </context>
-      <context attribute="Glob Flag" lineEndContext="#pop" name="IncGlobPatFlag" fallthroughContext="#pop">
-        <AnyChar attribute="Glob Flag" context="#stay" String="ilIbBcmMaseuU,"/>
-        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
-        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="q"/>
-      </context>
-
-      <!-- GlobModifier is called after a : is encountered in a GlobQualifier -->
-      <context attribute="Parameter Expansion" lineEndContext="#pop" name="GlobModifier">
-        <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=":"/>
-        <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/>
-        <DetectChar attribute="Parameter Expansion" context="GlobModifier_s" char="s"/>
-        <Detect2Chars attribute="Parameter Expansion" context="GlobModifier_s" char="g" char1="s"/>
-        <DetectChar attribute="Glob Flag" context="#pop" char=")"/>
-      </context>
-      <context attribute="Parameter Expansion" lineEndContext="#stay" name="GlobModifier_s" fallthroughContext="#pop">
-        <DetectChar attribute="Error" context="#pop#pop" char=")"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_PatPrefix" char="/"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="GlobModifier_s_PatPrefix" fallthroughContext="#pop!GlobModifier_s_Pat">
-        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Pat" char="#" char1="%"/>
-        <AnyChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Pat" String="#%"/>
-      </context>
-      <context attribute="Pattern" lineEndContext="#stay" name="GlobModifier_s_Pat">
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char="/"/>
-        <IncludeRules context="FindWord"/>
-        <IncludeRules context="FindSubPattern"/>
-        <DetectChar attribute="Error" context="#pop#pop" char=")"/>
-      </context>
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobModifier_s_Rep">
-        <DetectChar attribute="Glob Flag" context="#pop#pop" char=")"/>
-        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>
-        <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RecursiveRep" char="("/>
-        <IncludeRules context="FindWord"/>
-      </context>
-      <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobModifier_s_RecursiveRep">
-        <DetectChar attribute="String DoubleQ" context="#pop" char=")"/>
-        <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RecursiveRep" char="("/>
-        <IncludeRules context="FindWord"/>
-      </context>
-
-    </contexts>
-
-    <itemDatas>
-      <itemData name="Normal Text"    defStyleNum="dsNormal"/>
-      <itemData name="Comment"        defStyleNum="dsComment"/>
-      <itemData name="Keyword"        defStyleNum="dsKeyword"/>
-      <itemData name="Control"        defStyleNum="dsKeyword"/>
-      <itemData name="Control Flow"   defStyleNum="dsControlFlow"/>
-      <itemData name="Builtin"        defStyleNum="dsBuiltIn"/>
-      <itemData name="Command"        defStyleNum="dsFunction"/>
-      <itemData name="OtherCommand"   defStyleNum="dsExtension"/>
-      <itemData name="Redirection"    defStyleNum="dsOperator"/>
-      <itemData name="Escape"         defStyleNum="dsDataType"/>
-      <itemData name="String SingleQ" defStyleNum="dsString"/>
-      <itemData name="String DoubleQ" defStyleNum="dsString"/>
-      <itemData name="Here Doc"       defStyleNum="dsString"/>
-      <itemData name="Backquote"      defStyleNum="dsKeyword"/>
-      <itemData name="String Transl." defStyleNum="dsString"/>
-      <itemData name="String Escape"  defStyleNum="dsDataType"/>
-      <itemData name="Variable"       defStyleNum="dsVariable"/>
-      <itemData name="Expression"     defStyleNum="dsOthers"/>
-      <itemData name="Function"       defStyleNum="dsFunction"/>
-      <itemData name="Pattern"        defStyleNum="dsSpecialString"/>
-      <itemData name="Path"           defStyleNum="dsNormal"/>
-      <itemData name="Glob"           defStyleNum="dsPreprocessor"/>
-      <itemData name="Glob Flag"      defStyleNum="dsOperator"/>
-      <itemData name="Option"         defStyleNum="dsAttribute"/>
-      <itemData name="Hex"            defStyleNum="dsBaseN"/>
-      <itemData name="Number"         defStyleNum="dsDecVal"/>
-      <itemData name="Base"           defStyleNum="dsDataType"/>
-      <itemData name="BaseN"          defStyleNum="dsBaseN"/>
-      <itemData name="File Descriptor" defStyleNum="dsDecVal"/>
-      <itemData name="Parameter Expansion" defStyleNum="dsVariable"/>
-      <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator"/>
-      <itemData name="Operator"       defStyleNum="dsOperator"/>
-      <itemData name="Error"          defStyleNum="dsError"/>
-    </itemDatas>
-  </highlighting>
-  <general>
-    <comments>
-      <comment name="singleLine" start="#"/>
+<!DOCTYPE language
+[
+        <!ENTITY ws      " &tab;">
+        <!ENTITY tab      "&#009;">
+        <!ENTITY funcname "[^&_fragpathseps;=]*+">
+        <!ENTITY varname  "[A-Za-z_][A-Za-z0-9_]*">
+        <!ENTITY eos      "(?=$|[&ws;])">                 <!-- eol or space following -->
+        <!ENTITY eoexpr   "(?=$|[&ws;&lt;>|&amp;;)])">
+
+        <!ENTITY substseps  "${}'&quot;`\\">
+        <!ENTITY symbolseps "&lt;>|&amp;;()">
+        <!ENTITY wordseps   "&ws;&symbolseps;">
+        <!ENTITY wordseps_or_extglog "&ws;>|&amp;;)`"> <!-- wordseps without < and ( -->
+        <!ENTITY symbolseps_without_parens "&lt;>|&amp;;">
+        <!ENTITY wordseps_without_parens   "&ws;&symbolseps_without_parens;">
+
+        <!ENTITY bq_string  "`[^`]*+`">
+        <!ENTITY sq_string  "'[^']*+'">
+        <!ENTITY dq_string  "&quot;(?:[^&quot;\\`]*+|&bq_string;|\\.)*+&quot;">
+        <!ENTITY strings    "(?:&sq_string;|&dq_string;|&bq_string;)">
+
+        <!ENTITY simpleglob "*?#^~">
+        <!ENTITY globrange  "&lt;[0-9]*-[0-9]*>">
+        <!ENTITY globany    "\[(?:[^&wordseps;&quot;'`\\\[\]]+|\\.|&strings;|\[:\w+:\]|\[)*\]">
+
+        <!ENTITY _fragpathseps  "&simpleglob;[&wordseps;&substseps;">
+        <!ENTITY _fragpathnosep "(?:&_brace_noexpansion;)?+">
+        <!ENTITY path        "(?:[^&_fragpathseps;]*+&_fragpathnosep;)*+">
+        <!ENTITY fragpath    "(?:[^&_fragpathseps;/]*+&_fragpathnosep;)*+">
+        <!ENTITY fragpathesc "\\.(?:[^&_fragpathseps;/]*+(?:\\.|&_brace_noexpansion;)?+)*+">
+        <!ENTITY opt         "(?:[^&_fragpathseps;=/]*+&_fragpathnosep;)*+">
+        <!ENTITY assumepath  "/&path;|(?=[&simpleglob;([]|&globrange;)">
+        <!ENTITY pathpart    "(?:~(?:/&path;|(?=[&wordseps;]|$))|&fragpath;(?:&assumepath;|(?=&fragpathesc;&assumepath;))|\.\.?(?=[&wordseps;]|$))">
+
+        <!-- Path only with / -->
+        <!ENTITY path_with_sep_text  "[^[&wordseps;'&quot;`\\/]">
+        <!ENTITY path_with_sep_text2 "[^[()&lt;>'&quot;`\\/]">
+        <!ENTITY path_with_sep_expr  "\\.|&strings;|&globany;|&globrange;">
+        <!ENTITY path_with_sep_spe   "(~|\.\.?)($|[/&ws;&lt;>|&amp;;)])">
+        <!ENTITY path_with_sep_sub   "\((&path_with_sep_text2;++|&path_with_sep_expr;)*+(\)|(?=/))">
+        <!ENTITY path_with_sep "/|&path_with_sep_spe;|(&path_with_sep_text;++|&path_with_sep_expr;|&path_with_sep_sub;)*+/">
+
+        <!ENTITY _braceexpansion_spe     "&ws;&lt;>|&amp;;{}\\`'&quot;$">
+        <!ENTITY _brace_noexpansion      "\{[^&_braceexpansion_spe;,]*+\}">
+        <!ENTITY _braceexpansion_var     "\$(?:\{[^\[\]&_braceexpansion_spe;]*+(?:\[[*@a-zA-Z0-9]\])\})?">
+        <!ENTITY _braceexpansion_elems   "\\.|&strings;|&_braceexpansion_var;|&_brace_noexpansion;">
+        <!ENTITY _braceexpansion_consume "&_braceexpansion_elems;|{(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_elems;)*?}|(?R)?+">
+        <!ENTITY _braceexpansion "(?:[^&_braceexpansion_spe;,]++|&_braceexpansion_consume;)*?,(?:[^&_braceexpansion_spe;]++|&_braceexpansion_consume;)*?}">
+        <!ENTITY braceexpansion "{&_braceexpansion;">
+
+        <!ENTITY _bracerangevar "\$([#+^=~]*([_a-zA-Z0-9]+|[*@#])(\[((\$[#+^=~]*)?([-+_a-zA-Z0-9]+|[*@])|$#)\])?|#|'(\\.|[^'\\])')">
+        <!ENTITY _bracerangeoperand "-?([0-9]+|[a-zA-Z!#$&#37;*+,-./:=?@^_~]|&_bracerangevar;|\\.|'[^'\\]'|&quot;(\\.|[^&quot;\\`])&quot;|`[^`]*`)">
+        <!ENTITY bracerangeexpansion "{(?=&_bracerangeoperand;\.\.&_bracerangeoperand;(\.\.-?([0-9]+|&_bracerangevar;))?})">
+
+        <!ENTITY nobraceexpansion "(?:{([^&_braceexpansion_spe;/{},]++|(?R))+?})+">
+        <!ENTITY nogroupend "(?:}+(?:[^&_fragpathseps;]|(?=[}$'&quot;`\\])))">
+
+        <!-- glob with |, ( or spaces is a pattern -->
+        <!ENTITY _ispattern_ugN "[ug][0123456789]+">
+        <!ENTITY _ispattern_ugeP "[ugeP](?:&_ispattern_ugeP_0;|&_ispattern_ugeP_1;|&_ispattern_ugeP_2;|&_ispattern_ugeP_3;|&_ispattern_ugeP_4;|(?=\|))">
+        <!ENTITY _ispattern_ugeP_0    ":(?:[^:'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?::|(?=[|()]))">
+        <!ENTITY _ispattern_ugeP_1   "\[(?:[^]'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?:\](?=[|()]))">
+        <!ENTITY _ispattern_ugeP_2    "{(?:[^}'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?:}(?=[|()]))">
+        <!ENTITY _ispattern_ugeP_3 "&lt;(?:[^>'`&quot;\\|()]*+(?:&_ispattern_q;)?)*(?:>|(?=[|()]))">
+        <!ENTITY _ispattern_ugeP_4  "([^&wordseps;{}'&quot;`\\])(?:(?:(?!\1)[^'`&quot;\\\1|()])*+(?:&_ispattern_q;)?)*(?:\1|(?=[|()]))">
+        <!ENTITY _ispattern_q "\\.|&strings;">
+        <!ENTITY _ispattern_check "(?:\)(?:[^&ws;}&lt;>|&amp;;)]|&nogroupend;)|[&ws;|(]|$)">
+        <!ENTITY ispattern "(?:[^&ws;\\'&quot;|()`ugeP]*+(?:&_ispattern_ugN;|&_ispattern_ugeP;|&_ispattern_q;)?)*&_ispattern_check;">
+
+        <!ENTITY heredocq "(?|&quot;([^&quot;]+)&quot;|'([^']+)'|\\(.[^&wordseps;&substseps;]*))">
+
+        <!ENTITY arithmetic_as_subshell "\(((?:[^`'&quot;()$]++|\$\{[^`'&quot;(){}$]+\}|\$(?=[^{`'&quot;()])|&bq_string;|\((?1)(?:[)]|(?=['&quot;])))++)(?:[)](?=$|[^)])|[&quot;'])">
+
+        <!ENTITY unary_operators  "-[abcdefghknoprstuvwxzLOGNS](?=\\?$|[&ws;])">
+        <!ENTITY binary_operators "(?:-(?:e[fq]|[nolg]t|[nlg]e)|==?|!=)(?=\\?$|[&ws;])">
+
+        <!ENTITY dblbracket_close "\]\](?=($|[&ws;;|&amp;)]))">
+
+        <!ENTITY int "(?:[0-9]++[_0-9]*+)">
+        <!ENTITY exp "(?:[eE][-+]?_*+&int;)">
+
+        <!ENTITY escaped_ch "(?:[abeEfnrtv\\']|[0-7]{1,3}|x[A-Fa-f0-9]{1,2}|u[A-Fa-f0-9]{1,4}|U[A-Fa-f0-9]{1,8}|c.)">
+
+        <!-- just to make highlight range between selected bracket work well -->
+        <!ENTITY paren_open "(">
+        <!ENTITY paren_close ")">
+        <!ENTITY brace_open "{">
+        <!ENTITY brace_close "}">
+        <!ENTITY bracket_open "[">
+        <!ENTITY bracket_close "]">
+
+        <!ENTITY arithmetic_op "+-!~*/&#37;&lt;>=&amp;^|?:">
+]>
+
+<!--
+https://zsh.sourceforge.io/releases.html
+current: 5.9
+-->
+
+<language name="Zsh" version="38" kateversion="6.22" section="Scripts" extensions="*.sh;*.zsh;.zshrc;.zprofile;.zlogin;.zlogout;.profile" mimetype="application/x-shellscript;text/x-shellscript" casesensitive="1" author="Jonathan Poelen (jonathan.poelen@gmail.com)" license="MIT">
+
+  <highlighting>
+    <list name="keywords">
+      <item>continue</item>
+      <item>break</item>
+      <item>case</item>
+      <item>do</item>
+      <item>done</item>
+      <item>elif</item>
+      <item>else</item>
+      <item>end</item>
+      <item>esac</item>
+      <item>fi</item>
+      <item>for</item>
+      <item>foreach</item>
+      <item>function</item>
+      <item>if</item>
+      <item>in</item>
+      <item>repeat</item>
+      <item>return</item>
+      <item>select</item>
+      <item>then</item>
+      <item>until</item>
+      <item>while</item>
+    </list>
+
+<list name="builtins"><!-- see man zshbuiltins -->
+	<item>-</item>
+	<item>.</item>
+	<item>:</item>
+	<item>alias</item>
+	<item>autoload</item>
+	<item>bg</item>
+	<item>bindkey</item>
+	<item>builtin</item>
+	<item>bye</item>
+	<item>cap</item>
+	<item>cd</item>
+	<item>chdir</item>
+	<item>clone</item>
+	<item>command</item>
+	<item>comparguments</item>
+	<item>compcall</item>
+	<item>compctl</item>
+	<item>compdescribe</item>
+	<item>compfiles</item>
+	<item>compgroups</item>
+	<item>compquote</item>
+	<item>comptags</item>
+	<item>comptry</item>
+	<item>compvalues</item>
+	<item>coproc</item>
+	<item>dirs</item>
+	<item>disable</item>
+	<item>disown</item>
+	<item>echo</item>
+	<item>echotc</item>
+	<item>echoti</item>
+	<item>emulate</item>
+	<item>enable</item>
+	<item>eval</item>
+	<item>exec</item>
+	<item>exit</item>
+	<item>false</item>
+	<item>fc</item>
+	<item>fg</item>
+	<item>functions</item>
+	<item>getcap</item>
+	<item>hash</item>
+	<item>history</item>
+	<item>jobs</item>
+	<item>kill</item>
+	<item>limit</item>
+	<item>log</item>
+	<item>logout</item>
+	<item>nocorrect</item>
+	<item>noglob</item>
+	<item>popd</item>
+	<item>print</item>
+	<item>printf</item>
+	<item>pushd</item>
+	<item>pushln</item>
+	<item>pwd</item>
+	<item>r</item>
+	<item>rehash</item>
+	<item>sched</item>
+	<item>set</item>
+	<item>setcap</item>
+	<item>setopt</item>
+	<item>shift</item>
+	<item>source</item>
+	<item>stat</item>
+	<item>suspend</item>
+	<item>test</item>
+	<item>times</item>
+	<item>trap</item>
+	<item>true</item>
+	<item>ttyctl</item>
+	<item>type</item>
+	<item>ulimit</item>
+	<item>umask</item>
+	<item>unalias</item>
+	<item>unfunction</item>
+	<item>unhash</item>
+	<item>unlimit</item>
+	<item>unset</item>
+	<item>unsetopt</item>
+	<item>vared</item>
+	<item>wait</item>
+	<item>whence</item>
+	<item>where</item>
+	<item>which</item>
+	<item>zcompile</item>
+	<item>zformat</item>
+	<item>zftp</item>
+	<item>zle</item>
+	<item>zmodload</item>
+	<item>zparseopts</item>
+	<item>zprof</item>
+	<item>zpty</item>
+	<item>zregexparse</item>
+	<item>zsocket</item>
+	<item>zstyle</item>
+	<item>ztcp</item>
+    </list>
+
+    <list name="builtins_var">
+	<item>declare</item>
+	<item>export</item>
+	<item>float</item>
+	<item>getln</item>
+	<item>getopts</item>
+	<item>integer</item>
+	<item>let</item>
+	<item>local</item>
+	<item>read</item>
+	<item>readonly</item>
+	<item>typeset</item>
+	<item>unset</item>
+    </list>
+
+    <list name="unixcommands">
+      <include>unixcommands##Bash</include>
+    </list>
+
+    <contexts>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Start" fallthroughContext="Command">
+        <IncludeRules context="FindSpaceAndComment"/>
+        <!-- start expression in double parentheses -->
+        <Detect2Chars context="ExprDblParenOrSubShell" char="(" char1="(" lookAhead="1"/>
+        <!-- start a subshell -->
+        <DetectChar attribute="Keyword" context="SubShell" char="(" beginRegion="subshell"/>
+        <!-- start expression in single/double brackets -->
+        <DetectChar context="MaybeBracketExpression" char="[" lookAhead="1"/>
+        <!-- start a group command or BraceExpansion with { -->
+        <DetectChar attribute="Keyword" context="Group" char="{" beginRegion="group"/>
+
+        <!-- handle ` -->
+        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
+
+        <!-- &> redirections -->
+        <Detect2Chars attribute="Redirection" context="Prefix&amp;>" char="&amp;" char1=">"/>
+        <Detect2Chars attribute="Control" context="#stay" char="&amp;" char1="!"/>
+
+        <!-- handle branch conditions || && -->
+        <IncludeRules context="FindBranchCondition"/>
+
+        <!-- handle &, |, ; -->
+        <AnyChar attribute="Control" context="#stay" String="&amp;|;"/>
+
+        <!-- handle variable assignments -->
+        <RegExpr attribute="Variable" context="VarAssign" String="&varname;(?=\+?=|\[(?:$|[^]]))|[0-9]+(?=\+?=)"/>
+        <!-- handle keywords -->
+        <keyword context="DispatchKeyword" String="keywords" lookAhead="1"/>
+        <!-- handle commands that have variable names as argument -->
+        <keyword attribute="Builtin" context="VarName" String="builtins_var" lookAhead="1"/>
+        <WordDetect attribute="Builtin" context="#stay" String="noglob"/>
+        <WordDetect attribute="Builtin" context="#stay" String="coproc"/>
+        <!-- mark function definitions without function keyword -->
+        <RegExpr attribute="Function" context="#stay" String="&funcname;[&ws;]*\(\)"/>
+        <keyword attribute="Builtin" context="CommandArgs" String="builtins"/>
+        <keyword attribute="Command" context="CommandArgs" String="unixcommands"/>
+
+        <!-- handle redirection -->
+        <AnyChar context="CommandMaybeRedirection" String="&lt;&gt;0123456789" lookAhead="1"/>
+
+        <DetectChar attribute="Error" context="#stay" char=")"/>
+        <DetectChar context="MaybeGroupEnd" char="}" lookAhead="1"/>
+
+        <LineContinue attribute="Escape" context="#stay"/>
+
+        <Detect2Chars attribute="Expression" context="#stay" char="!" char1=" "/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeGroupEnd">
+        <RegExpr context="#pop!Command" String="&nogroupend;" lookAhead="1"/>
+        <DetectChar attribute="Error" context="#pop" char="}"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeBracketExpression" fallthroughContext="#pop!Command">
+        <!-- start expression in double brackets -->
+        <RegExpr attribute="Keyword" context="#pop!ExprDblBracket" String="\[\[(?=$|[&ws;(])" beginRegion="expression"/>
+        <!-- start expression in single brackets -->
+        <RegExpr attribute="Builtin" context="#pop!ExprBracket" String="\[&eos;" beginRegion="expression"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeRedirection" fallthroughContext="#pop!Command">
+        <IncludeRules context="FindRedirection"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="Return" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <Int attribute="Number" context="#stay"/>
+      </context>
+      <!-- Comment consumes shell comments till EOL -->
+      <context attribute="Comment" lineEndContext="#pop" name="Comment">
+        <DetectSpaces attribute="Comment"/>
+        <IncludeRules context="##Comments"/>
+        <DetectIdentifier attribute="Comment" context="#stay"/>
+      </context>
+
+      <!-- Group is called after a { is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Group" fallthroughContext="Command">
+        <DetectChar attribute="Keyword" context="#pop!GroupEnd" char="}" endRegion="group"/>
+        <IncludeRules context="Start"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="GroupEnd" fallthroughContext="#pop!CommandArgs">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Control Flow" context="#pop" String="always"/>
+      </context>
+
+      <context attribute="OtherCommand" lineEndContext="#pop" name="Command">
+        <DetectSpaces attribute="Normal Text" context="#pop!CommandArgs"/>
+        <DetectIdentifier attribute="OtherCommand" context="#stay"/>
+        <IncludeRules context="FindVariableOrCurrentStyle"/>
+        <IncludeRules context="FindStrings"/>
+        <Detect2Chars attribute="Control" context="#pop" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#pop" char="|" char1="|"/>
+        <DetectChar attribute="Control" context="#pop" char="|"/>
+        <AnyChar context="#pop" String=";)`" lookAhead="1"/>
+        <AnyChar context="#pop!CommandArgs" String="&amp;&lt;>" lookAhead="1"/>
+        <!-- start expression in double parentheses -->
+        <Detect2Chars attribute="Error" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>
+        <!-- start a subshell -->
+        <DetectChar attribute="Error" context="#pop!SubShell" char="(" beginRegion="subshell"/>
+        <DetectChar context="CommandAssumeEscape" char="\" lookAhead="1"/>
+        <DetectChar context="CommandMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="CommandMaybeGroupEnd" char="}" lookAhead="1"/>
+      </context>
+      <context attribute="OtherCommand" lineEndContext="#pop" name="CommandAssumeEscape">
+        <LineContinue attribute="Escape" context="#pop"/>
+        <RegExpr attribute="OtherCommand" context="#pop" String="\\."/>
+      </context>
+      <context attribute="OtherCommand" lineEndContext="#pop" name="CommandMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="OtherCommand" context="#pop" char="{"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandMaybeGroupEnd">
+        <RegExpr attribute="OtherCommand" context="#pop" String="&nogroupend;+"/>
+        <DetectChar context="#pop#pop" char="}" lookAhead="1"/>
+      </context>
+
+      <!-- $... -->
+      <context attribute="Variable" lineEndContext="#pop" name="DispatchVariables">
+        <IncludeRules context="DispatchSubstVariables"/>
+        <IncludeRules context="DispatchStringVariables"/>
+        <IncludeRules context="DispatchVarNameVariables"/>
+      </context>
+
+      <!-- ${var}
+           ~~
+      -->
+      <context attribute="Variable" lineEndContext="#pop" name="DispatchSubstVariables">
+        <Detect2Chars attribute="Parameter Expansion" context="#pop!VarBraceStart" char="$" char1="{"/>
+        <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>
+        <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>
+        <StringDetect attribute="Parameter Expansion" context="#pop!ExprBracketSubst" String="$[" beginRegion="expression"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketSubst">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="]" endRegion="expression"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+
+      <!-- $'...'
+           ~~
+      -->
+      <context attribute="Variable" lineEndContext="#pop" name="DispatchStringVariables">
+        <Detect2Chars attribute="String SingleQ" context="#pop!StringEsc" char="$" char1="'"/>
+      </context>
+
+      <!-- $var $1 $* etc
+           ~    ~  ~
+      -->
+      <context attribute="Variable" lineEndContext="#pop" name="DispatchVarNameVariables">
+        <RegExpr attribute="Dollar Prefix" context="#pop!VarNamePrefixedWithDollar" String="\$(?=&varname;|[-*@?$!#~=^+0-9])"/>
+      </context>
+      <context attribute="Variable" lineEndContext="#pop" name="VarNamePrefixedWithDollar">
+        <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/>
+        <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="$"/>
+        <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" String="#+"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameParam" String="~=^"/>
+      </context>
+      <context attribute="Variable" lineEndContext="#pop" name="VarNameSubstLen" fallthroughContext="#pop!AfterVarName">
+        <DetectIdentifier attribute="Variable" context="#pop!AfterVarName"/>
+        <AnyChar attribute="Variable" context="#pop!AfterVarName" String="-*@?$!"/>
+        <Int attribute="Variable" context="#pop!AfterVarName" additionalDeliminator="#~=^+{}[]:-/$"/>
+      </context>
+      <context attribute="Variable" lineEndContext="#pop" name="VarNameParam" fallthroughContext="#pop!AfterVarName">
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarNameSubstLen" String="#+"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="^=~"/>
+        <IncludeRules context="VarNameSubstLen"/>
+      </context>
+
+      <!-- called as soon as $xxx is encoutered
+        $var:... $var[xxx]:...
+            ~        ~    ~
+      -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="AfterVarName" fallthroughContext="#pop">
+        <DetectChar context="VarNameDispatchModifiers" char=":" lookAhead="1"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AfterVarNameSubscript!Subscript" char="["/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="AfterVarNameSubscript" fallthroughContext="#pop">
+        <DetectChar context="VarNameDispatchModifiers" char=":" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameDispatchModifiers" fallthroughContext="#pop#pop">
+        <StringDetect attribute="Parameter Expansion" String=":a"/>
+        <StringDetect attribute="Parameter Expansion" String=":A"/>
+        <StringDetect attribute="Parameter Expansion" String=":c"/>
+        <StringDetect attribute="Parameter Expansion" String=":e"/>
+        <StringDetect attribute="Parameter Expansion" String=":h"/>
+        <StringDetect attribute="Parameter Expansion" String=":l"/>
+        <StringDetect attribute="Parameter Expansion" String=":p"/>
+        <StringDetect attribute="Parameter Expansion" String=":P"/>
+        <StringDetect attribute="Parameter Expansion" String=":q"/>
+        <StringDetect attribute="Parameter Expansion" String=":Q"/>
+        <StringDetect attribute="Parameter Expansion" String=":r"/>
+        <StringDetect attribute="Parameter Expansion" context="VarNameModifier_s" String=":s"/>
+        <StringDetect attribute="Parameter Expansion" String=":t"/>
+        <StringDetect attribute="Parameter Expansion" String=":u"/>
+        <StringDetect attribute="Parameter Expansion" context="VarNameModifier_s" String=":gs"/>
+        <StringDetect String=":f" context="VarNameModifier_fFwW_Check" lookAhead="1"/>
+        <StringDetect String=":F" context="VarNameModifier_fFwW_Check" lookAhead="1"/>
+        <StringDetect String=":w" context="VarNameModifier_fFwW_Check" lookAhead="1"/>
+        <StringDetect String=":W" context="VarNameModifier_fFwW_Check" lookAhead="1"/>
+      </context>
+
+
+      <!-- $var:s/../....
+                 ~~~~~...
+      -->
+      <context attribute="Parameter Expansion Operator" lineEndContext="#pop#pop#pop" name="VarNameModifier_s" fallthroughContext="#pop#pop#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_Str" char="/"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_StrSQ_Sep" char="'"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_StrDQ_Sep" char='"'/>
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_C_Rep!VarNameModifier_s_C_Str" String="([^&wordseps;\[\]{}\\])"/>
+      </context>
+      <!-- By default the left-hand side of substitutions are character strings,
+      but pattern with HIST_SUBST_PATTERN option. Assume no option. -->
+      <!-- $var:s/../....
+                  ~~~
+      -->
+      <context attribute="Verbatim String" lineEndContext="#pop#pop" name="VarNameModifier_s_Str">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char="/"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="String SingleQ" context="VarNameModifier_s_StrSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarNameModifier_s_StrDQ" char='"'/>
+        <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>
+      </context>
+      <!-- #pop -> is VarNameModifier_s_C_Rep -->
+      <context attribute="Verbatim String" lineEndContext="#pop#pop#pop" name="VarNameModifier_s_C_Str">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <IncludeRules context="FindEscape"/>
+        <!-- The string should stop if capture $1 is found,
+        but there is no way to propagate the capture. -->
+        <IncludeRules context="FindStrings"/>
+        <AnyChar context="#pop#pop#pop" String="&wordseps;" lookAhead="1"/>
+      </context>
+      <!-- $var:s/..'../..'..  $var:s/..'..'../..
+                    ~~~~                ~~~~
+      -->
+      <context attribute="String SingleQ" name="VarNameModifier_s_StrSQ">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
+        <LineContinue attribute="Escape"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_Rep!VarNameModifier_s_RepSQ" char="/"/>
+      </context>
+      <!-- $var:s'..'..
+                 ~~~~
+      -->
+      <context attribute="String SingleQ" name="VarNameModifier_s_StrSQ_Sep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char="'"/>
+        <LineContinue attribute="Escape"/>
+      </context>
+      <!-- $var:s/.."../.."..  $var:s/..".."../..
+                    ~~~~                ~~~~
+      -->
+      <context attribute="String DoubleQ" name="VarNameModifier_s_StrDQ">
+        <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarNameModifier_s_Rep!VarNameModifier_s_RepDQ" char="/"/>
+      </context>
+      <!-- $var:s".."..
+                 ~~~~
+      -->
+      <context attribute="String DoubleQ" name="VarNameModifier_s_StrDQ_Sep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarNameModifier_s_Rep" char='"'/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+      <!-- $var:s/../....
+                     ~~..
+      -->
+      <context attribute="Replacement String" lineEndContext="#pop#pop" name="VarNameModifier_s_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="/"/>
+        <!-- FindWord with a search for '/' in single and double quoted string -->
+        <DetectChar attribute="String SingleQ" context="VarNameModifier_s_RepSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarNameModifier_s_RepDQ" char="&quot;"/>
+        <IncludeRules context="VarNameModifier_s_Rep_Common"/>
+      </context>
+      <context attribute="Replacement String" lineEndContext="#pop#pop" name="VarNameModifier_s_C_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <!-- The string should stop if capture $1 is found,
+        but there is no way to propagate the capture. -->
+        <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>
+        <IncludeRules context="VarNameModifier_s_Rep_Common"/>
+      </context>
+      <context attribute="Replacement String" name="FindVarNameModifier_s_C_RepQ">
+        <DetectChar attribute="String SingleQ" context="VarNameModifier_s_C_RepSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarNameModifier_s_C_RepDQ" char="&quot;"/>
+      </context>
+      <context attribute="Replacement String" lineEndContext="#pop#pop" name="VarNameModifier_s_Rep_Common">
+        <IncludeRules context="FindVariable"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <IncludeRules context="FindEscape"/>
+        <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>
+      </context>
+      <!-- $var:s/../..'../'..  $var:s/../..'..'..
+                       ~~~~                 ~~~~
+      -->
+      <context attribute="String SingleQ" name="VarNameModifier_s_RepSQ">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop#pop!StringSQ" char="/"/>
+        <IncludeRules context="VarNameModifier_s_C_RepSQ"/>
+      </context>
+      <context attribute="String SingleQ" name="VarNameModifier_s_C_RepSQ">
+        <IncludeRules context="StringSQ"/>
+        <!-- When no HIST_SUBST_PATTERN -->
+        <DetectChar attribute="Builtin" char="&amp;"/>
+        <StringDetect attribute="String Escape" String="\&amp;"/>
+      </context>
+      <!-- $var:s/../.."../"..  $var:s/../..".."..
+                       ~~~~                 ~~~~
+      -->
+      <context attribute="String DoubleQ" name="VarNameModifier_s_RepDQ">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop#pop!StringDQ" char="/"/>
+        <IncludeRules context="VarNameModifier_s_C_RepDQ"/>
+      </context>
+      <context attribute="String DoubleQ" name="VarNameModifier_s_C_RepDQ">
+        <!-- When no HIST_SUBST_PATTERN -->
+        <StringDetect attribute="String Escape" String="\&amp;"/>
+        <IncludeRules context="StringDQ"/>
+        <!-- When no HIST_SUBST_PATTERN -->
+        <DetectChar attribute="Builtin" char="&amp;"/>
+      </context>
+
+
+      <!-- $var:fwh
+               ~..
+      -->
+      <context attribute="Normal Text" name="VarNameModifier_fFwW_Check" fallthroughContext="#pop#pop#pop">
+        <RegExpr attribute="Parameter Expansion" context="VarNameModifier_fFwW" String=":(?=(?:[fw]|[FW](?:&strings;|\([^&paren_close;&symbolseps;]*+\)|\{[^&brace_close;&wordseps;]*+\}|\[[^&bracket_close;&wordseps;]*+\]|([^&wordseps;{}])(?:[^&quot;'`\s&wordseps;]|&strings;)*?\1))+(?:[aAcehlpPqQrstu]|gs))|"/>
+      </context>
+      <!-- $var:fW(2)h
+                ~~   ~
+      -->
+      <context attribute="Normal Text" name="VarNameModifier_fFwW" lineEndContext="#pop#pop#pop#pop">
+        <AnyChar attribute="Parameter Expansion" String="fw"/>
+        <DetectChar attribute="Parameter Expansion" context="VarNameModifier_F" char="F"/>
+        <DetectChar attribute="Parameter Expansion" context="VarNameModifier_W" char="W"/>
+        <AnyChar attribute="Parameter Expansion" context="#pop#pop" String="aAcehlpPqQrtu"/>
+        <StringDetect attribute="Parameter Expansion" context="#pop#pop!VarNameModifier_s" String=":s"/>
+        <StringDetect attribute="Parameter Expansion" context="#pop#pop!VarNameModifier_s" String=":gs"/>
+      </context>
+      <!-- $var:F(expr)h
+                 ~~~~~~
+      -->
+      <context attribute="Normal Text" name="VarNameModifier_F" lineEndContext="#pop#pop#pop#pop#pop">
+        <IncludeRules context="FindStringsThenPop"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamColon" char=":"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamParen" char="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamBracket" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="ArithmeticParamBrace" char="{"/>
+        <RegExpr attribute="Parameter Expansion Operator" context="ArithmeticParamDyn" String="(.)"/>
+      </context>
+      <context attribute="Normal Text" name="ArithmeticParamParen" lineEndContext="#pop#pop">
+        <IncludeRules context="VerbatimParamParen"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="ArithmeticParamBracket" lineEndContext="#pop#pop">
+        <IncludeRules context="VerbatimParamBracket"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="ArithmeticParamBrace" lineEndContext="#pop#pop">
+        <IncludeRules context="VerbatimParamBrace"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="ArithmeticParamColon" lineEndContext="#pop#pop">
+        <IncludeRules context="VerbatimParamColon"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="ArithmeticParamDyn" lineEndContext="#pop#pop">
+        <IncludeRules context="VerbatimParamDyn"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <!-- $var:W(xxx)h
+                 ~~~~~
+      -->
+      <context attribute="Normal Text" name="VarNameModifier_W" lineEndContext="#pop#pop#pop#pop#pop">
+        <IncludeRules context="FindStringsThenPop"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamColon" char=":"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamParen" char="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamBracket" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="VerbatimParamBrace" char="{"/>
+        <RegExpr attribute="Parameter Expansion Operator" context="VerbatimParamDyn" String="(.)"/>
+      </context>
+      <context attribute="Verbatim String" name="VerbatimParamParen" lineEndContext="#pop#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=")"/>
+      </context>
+      <context attribute="Verbatim String" name="VerbatimParamBracket" lineEndContext="#pop#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>
+      </context>
+      <context attribute="Verbatim String" name="VerbatimParamBrace" lineEndContext="#pop#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="}"/>
+      </context>
+      <context attribute="Verbatim String" name="VerbatimParamColon" lineEndContext="#pop#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=":"/>
+      </context>
+      <context attribute="Verbatim String" name="VerbatimParamDyn" lineEndContext="#pop#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="1" dynamic="1"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="CommandBackq" fallthroughContext="Command">
+        <DetectChar attribute="Backquote" context="#pop!CommandArgs" char="`"/>
+        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
+        <IncludeRules context="Start"/>
+      </context>
+      <!-- CommentBackq consumes shell comments till EOL or a backquote -->
+      <context attribute="Comment" lineEndContext="#pop" name="CommentBackq">
+        <DetectChar context="#pop" char="`" lookAhead="1"/>
+        <IncludeRules context="Comment"/>
+      </context>
+
+      <!-- CommandArgs matches the items after a command -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgs" fallthroughContext="CommandArg">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+
+        <!-- &> redirections -->
+        <Detect2Chars attribute="Redirection" context="Prefix&amp;>" char="&amp;" char1=">"/>
+
+        <!-- handle &, |, ;, ` -->
+        <AnyChar context="#pop" String="&amp;|;`" lookAhead="1"/>
+
+        <!-- handle process subst -->
+        <Detect2Chars attribute="Redirection" context="ProcessSubst" char="=" char1="("/>
+        <!-- handle redirection -->
+        <AnyChar context="CommandArgMaybeRedirection" String="&gt;&lt;0123456789" lookAhead="1"/>
+
+        <DetectChar context="#pop" char=")" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="CommandArg" fallthroughContext="#pop!NormalOption">
+        <!-- In command arguments, do not allow comments after escaped characters.
+             This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->
+        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
+        <Detect2Chars attribute="Option" context="#pop!LongOption" char="-" char1="-"/>
+        <DetectChar attribute="Option" context="#pop!ShortOption" char="-"/>
+        <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CommandArgMaybeRedirection" fallthroughContext="#pop!NormalOption">
+        <IncludeRules context="FindRedirection"/>
+      </context>
+
+      <context attribute="Option" lineEndContext="#pop" name="ShortOption" fallthroughContext="#pop">
+        <DetectChar attribute="Path" context="PathThenPop" char="/"/>
+        <IncludeRules context="LongOption"/>
+      </context>
+      <context attribute="Option" lineEndContext="#pop" name="LongOption" fallthroughContext="#pop">
+        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
+        <DetectChar attribute="Operator" context="#pop!NormalOption" char="="/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSingleGlob"/>
+        <IncludeRules context="FindGlobAny"/>
+        <AnyChar context="#pop!NormalOption" String="({}&lt;" lookAhead="1"/>
+        <RegExpr attribute="Option" context="#stay" String="&opt;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NormalOption" fallthroughContext="#pop">
+        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar attribute="Glob" context="PathThenPop" char="[" lookAhead="1"/>
+        <DetectChar context="ExprGlobParenThenPath" char="(" lookAhead="1"/>
+        <IncludeRules context="FindPathThenPop"/>
+        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
+        <IncludeRules context="FindNormalTextOption"/>
+        <DetectChar context="MaybeGlobRangeOrPop" char="&lt;" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="NormalOptionRecBrace">
+        <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSingleGlob"/>
+        <IncludeRules context="FindGlobAny"/>
+        <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>
+        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="}"/>
+        <DetectChar context="MaybeGlobRangeOrPop" char="&lt;" lookAhead="1"/>
+        <DetectIdentifier/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeGroupEnd">
+        <IncludeRules context="FindNoGroupEndThenPop"/>
+        <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindNoGroupEndThenPop">
+        <RegExpr context="#pop" String="&nogroupend;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindNormalTextOption">
+        <RegExpr attribute="Normal Text" context="#stay" String="([^[&wordseps;&substseps;]+|&nogroupend;)+"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NormalOptionMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Normal Text" context="#pop!NormalOptionRecBrace" char="{"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindEscape">
+        <DetectChar context="AssumeEscape" char="\" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssumeEscape">
+        <LineContinue attribute="Escape" context="#pop"/>
+        <RegExpr attribute="Escape" context="#pop" String="\\."/>
+      </context>
+
+<!-- ====== The following rulessets are meant to be included ======== -->
+
+      <!-- FindRedirection consumes shell redirection -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindRedirection">
+        <RegExpr attribute="File Descriptor" context="#pop!AssumeRedirection" String="[0-9]++(?=[&lt;>])"/>
+        <IncludeRules context="AssumeRedirection"/>
+      </context>
+
+      <!-- DispatchBraceExpansion consumes brace expansions -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchBraceExpansion">
+        <RegExpr context="#pop!BraceExpansion" String="&braceexpansion;" lookAhead="1"/>
+        <IncludeRules context="IncBraceExpansion"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchPathBraceExpansion">
+        <RegExpr context="#pop!PathBraceExpansion" String="&braceexpansion;" lookAhead="1"/>
+        <IncludeRules context="IncBraceExpansion"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="IncBraceExpansion">
+        <RegExpr attribute="Escape" context="#pop!SequenceExpression" String="&bracerangeexpansion;"/>
+        <RegExpr context="#pop" String="&nobraceexpansion;"/>
+      </context>
+
+      <!-- FindPathThenPop consumes path -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPop">
+        <AnyChar attribute="Glob" context="PathThenPop" String="?*#^"/>
+        <RegExpr attribute="Path" context="PathThenPop" String="&pathpart;"/>
+        <DetectChar attribute="Glob" context="PathThenPop" char="~"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop#pop" name="IncPath">
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSingleGlob"/>
+        <IncludeRules context="FindGlobAny"/>
+        <DetectChar context="ExprGlobParen" char="(" lookAhead="1"/>
+        <RegExpr attribute="Path" context="#stay" String="&path;"/>
+        <DetectChar context="MaybeGlobRangeOrPop" char="&lt;" lookAhead="1"/>
+        <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop#pop" name="PathThenPop">
+        <AnyChar context="#pop#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
+        <IncludeRules context="IncPath"/>
+        <DetectChar context="PathMaybeGroupEnd" char="}" lookAhead="1"/>
+        <DetectIdentifier attribute="Path"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="PathRecBrace">
+        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
+        <IncludeRules context="IncPath"/>
+        <DetectChar attribute="Path" context="#pop" char="}"/>
+        <DetectIdentifier attribute="Path"/>
+      </context>
+      <context attribute="Glob" lineEndContext="#stay" name="MaybeGlobRangeOrPop" fallthroughContext="#pop#pop">
+        <IncludeRules context="FindGlobRangeThenPop"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="PathMaybeBraceExpansion">
+        <IncludeRules context="DispatchPathBraceExpansion"/>
+        <DetectChar attribute="Path" context="#pop!PathRecBrace" char="{"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="PathMaybeGroupEnd">
+        <IncludeRules context="FindNoGroupEndThenPop"/>
+        <DetectChar context="#pop#pop#pop" char="}" lookAhead="1"/>
+      </context>
+      <context attribute="Glob" lineEndContext="#stay" name="FindGlobRangeThenPop">
+        <RegExpr attribute="Glob" context="#pop!InGlobRange" String="&lt;(?=[0-9]*-[0-9]*>)"/>
+      </context>
+      <context attribute="Number" lineEndContext="#stay" name="InGlobRange">
+        <IncludeRules context="FindDigit"/>
+        <DetectChar attribute="Glob" context="#stay" char="-"/>
+        <DetectChar attribute="Glob" context="#pop" char=">"/>
+      </context>
+
+      <!-- FindPathThenPopInAlternateValue consumes path in ${xx:here}-->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindPathThenPopInAlternateValue">
+        <AnyChar attribute="Glob" context="PathThenPopInAlternateValue" String="&simpleglob;|"/>
+        <Detect2Chars context="PathThenPopInAlternateValue" char="(" char1="#" lookAhead="1"/>
+        <AnyChar context="PathThenPopInAlternateValue" String="[(" lookAhead="1"/>
+        <RegExpr attribute="Path" context="PathThenPopInAlternateValue" String="&pathpart;"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="PathThenPopInAlternateValue">
+        <AnyChar context="#pop" String="&wordseps_or_extglog;}" lookAhead="1"/>
+        <IncludeRules context="IncPath"/>
+        <DetectIdentifier/>
+      </context>
+
+      <!-- [a-Z]
+           ~
+      -->
+      <context attribute="Glob" lineEndContext="#stay" name="FindGlobAny">
+        <DetectChar attribute="Glob" context="GlobAnyFlag" char="["/>
+      </context>
+      <!-- [^a-Z]
+            ~
+      -->
+      <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAnyFlag" fallthroughContext="#pop!GlobAnyNoClose">
+        <AnyChar attribute="Glob Flag" context="#pop!GlobAnyNoClose" String="!^"/>
+      </context>
+      <!-- []a-Z] [^]a-Z] [-a-Z] [^-a-Z]
+            ~       ~      ~       ~
+      -->
+      <context attribute="Glob" lineEndContext="#pop#pop" name="GlobAnyNoClose" fallthroughContext="#pop!GlobAny">
+        <AnyChar attribute="String SingleQ" context="#pop!GlobAny" String="]-"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#pop" name="GlobAny">
+        <DetectIdentifier attribute="String SingleQ"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="Glob Flag" context="#stay" char="-"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar attribute="Glob" context="#pop" char="]"/>
+        <Detect2Chars attribute="Glob" context="GlobClass" char="[" char1=":"/>
+        <IncludeRules context="FindVariableOrCurrentStyle"/>
+        <DetectChar context="GlobAnyMaybeNumRange" char="&lt;" lookAhead="1"/>
+        <!-- some characters are prohibited, but it depends on the context of use
+        ${s/[...]/}, [[ $foo = [...] ]], [[ $foo = ( [...] ) ]], etc
+        -->
+      </context>
+      <!-- [abc<0-9>def<ghi]
+               ~~~~~   ~
+      -->
+      <context attribute="String SingleQ" name="GlobAnyMaybeNumRange">
+        <!-- [<0-9>] is quivalent to [-09\<\>], not [0-9\<\>]
+                ~ not a Glob Flag
+        -->
+        <RegExpr attribute="String SingleQ" context="#pop" String="&lt;[0-9]*-[0-9]*>"/>
+        <DetectChar context="#pop" char="&lt;"/>
+      </context>
+      <context attribute="Glob" lineEndContext="#pop#pop" name="GlobClass">
+        <DetectIdentifier attribute="Pattern"/>
+        <Detect2Chars attribute="Glob" context="#pop" char=":" char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindSingleGlob">
+        <AnyChar attribute="Glob" context="#stay" String="&simpleglob;"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindGlobPattern">
+        <AnyChar attribute="Glob" context="#stay" String="&simpleglob;|"/>
+        <IncludeRules context="FindGlobAny"/>
+        <IncludeRules context="FindGroupPattern"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindPattern">
+        <IncludeRules context="FindGlobPattern"/>
+        <IncludeRules context="FindGlobRangeOrError"/>
+      </context>
+      <context attribute="Glob" lineEndContext="#stay" name="FindGlobRangeOrError">
+        <DetectChar context="GlobRangeOrError" char="&lt;" lookAhead="1"/>
+      </context>
+      <context attribute="Glob" lineEndContext="#stay" name="GlobRangeOrError">
+        <IncludeRules context="FindGlobRangeThenPop"/>
+        <DetectChar attribute="Error" context="#pop" char="&lt;"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindSubPattern">
+        <IncludeRules context="FindGlobPattern"/>
+        <DetectChar context="GlobRangeOrPattern" char="&lt;" lookAhead="1"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="GlobRangeOrPattern">
+        <IncludeRules context="FindGlobRangeThenPop"/>
+        <DetectChar attribute="Pattern" context="#pop" char="&lt;"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindStringDQPattern">
+        <IncludeRules context="FindGlobPattern"/>
+        <DetectChar context="GlobRangeOrStringDQ" char="&lt;" lookAhead="1"/>
+      </context>
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="GlobRangeOrStringDQ">
+        <IncludeRules context="FindGlobRangeThenPop"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="&lt;"/>
+      </context>
+
+      <context attribute="Glob Flag" lineEndContext="#stay" name="FindGroupPattern">
+        <Detect2Chars attribute="Glob Flag" context="GlobPatFlag" char="(" char1="#"/>
+        <DetectChar attribute="Glob" context="ExtGlobPattern" char="("/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPattern">
+        <DetectChar attribute="Glob" context="#pop" char=")"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSubPattern"/>
+        <DetectIdentifier attribute="Pattern"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="ExtGlobPatternThenPath">
+        <DetectChar attribute="Glob" context="#pop!PathThenPop" char=")"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSubPattern"/>
+        <DetectIdentifier attribute="Pattern"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarAssign" fallthroughContext="#pop">
+        <IncludeRules context="FindSubscript"/>
+        <DetectChar attribute="Operator" context="#pop!Assign" char="="/>
+        <Detect2Chars attribute="Operator" context="#pop!Assign" char="+" char1="="/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="DispatchKeyword">
+        <!-- match do and if blocks -->
+        <Detect2Chars attribute="Control Flow" context="#pop!NotCond" char="i" char1="f" beginRegion="if"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char="f" char1="i" endRegion="if"/>
+        <StringDetect attribute="Control Flow" context="#pop" String="done" endRegion="do"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char="d" char1="o" beginRegion="do"/>
+        <!-- handle while/until as a special case -->
+        <StringDetect attribute="Control Flow" context="#pop!NotCond" String="while"/>
+        <StringDetect attribute="Control Flow" context="#pop!NotCond" String="until"/>
+        <!-- handle for as a special case -->
+        <StringDetect attribute="Control Flow" context="#pop!Foreach" String="foreach"/>
+        <StringDetect attribute="Control Flow" context="#pop!For" String="for"/>
+        <!-- handle select as a special case -->
+        <StringDetect attribute="Control Flow" context="#pop!Select" String="select"/>
+        <StringDetect attribute="Control Flow" context="#pop!Repeat" String="repeat"/>
+        <!-- handle case as a special case -->
+        <StringDetect attribute="Control Flow" context="#pop!Case" String="case" beginRegion="case"/>
+        <!-- handle functions with function keyword before keywords -->
+        <StringDetect attribute="Keyword" context="#pop!FunctionDef" String="function"/>
+        <StringDetect attribute="Control Flow" context="#pop!Return" String="return"/>
+        <!-- not a keyword in this context -->
+        <Detect2Chars attribute="Error" context="#pop" char="i" char1="n"/>
+        <StringDetect attribute="Error" context="#pop" String="esac"/>
+        <!-- handle keywords -->
+        <DetectIdentifier attribute="Control Flow" context="#pop"/>
+      </context>
+
+      <!-- if ! ... and while ! ... -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="NotCond" fallthroughContext="#pop">
+        <DetectSpaces attribute="Normal Text" context="#pop!NotCond2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="NotCond2" fallthroughContext="#pop">
+        <Detect2Chars attribute="Expression" context="#pop" char="!" char1="&tab;"/>
+        <Detect2Chars attribute="Expression" context="#pop" char="!" char1=" "/>
+        <LineContinue attribute="Expression" context="#pop" char="!"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Foreach" fallthroughContext="#pop">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ForeachWord" fallthroughContext="NormalOption">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Control" context="#stay" char=";"/>
+        <DetectChar attribute="Keyword" context="#pop" char=")"/>
+        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
+        <AnyChar attribute="Control" context="#stay" String="&symbolseps;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="For" fallthroughContext="#pop">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay"/>
+        <Detect2Chars attribute="Keyword" context="#pop!ForArithmeticExpr" char="(" char1="("/>
+        <DetectChar attribute="Keyword" context="#pop!ForeachWord" char="("/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ForArithmeticExpr">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Control" context="#stay" char=";"/>
+        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Select" fallthroughContext="#pop">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectIdentifier attribute="Normal Text" context="#pop!SelectIn"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="SelectIn" fallthroughContext="#pop">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <WordDetect attribute="Keyword" context="#pop!CommandArgs" String="in"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="Repeat" fallthroughContext="#pop!RepeatArithmeticExpr">
+        <LineContinue attribute="Escape" context="#stay"/>
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="RepeatArithmeticExpr">
+        <DetectSpaces attribute="Normal Text" context="#pop"/>
+        <DetectChar attribute="Control" context="#pop" char=";"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+
+      <!-- &> and &>> redirection -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="Prefix&amp;>" fallthroughContext="#pop!FdRedirection">
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>
+        <AnyChar attribute="Redirection" context="#pop!WordRedirection" String=">|!"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssumeRedirection">
+        <!-- handle output redirection -->
+        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>|"/>
+        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>!"/>
+        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&amp;|"/>
+        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">>&amp;!"/>
+        <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String=">>("/>
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1=">"/>
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="|"/>
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char=">" char1="!"/>
+        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&amp;|"/>
+        <StringDetect attribute="Redirection" context="#pop!WordRedirection" String=">&amp;!"/>
+        <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char=">" char1="&amp;"/>
+        <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char=">" char1="("/>
+        <DetectChar attribute="Redirection" context="#pop!WordRedirection" char=">"/>
+        <!-- handle input redirection -->
+        <Detect2Chars attribute="Redirection" context="#pop!ProcessSubst" char="&lt;" char1="("/>
+        <StringDetect attribute="Redirection" context="#pop!ProcessSubst" String="&lt;&lt;("/>
+        <StringDetect attribute="Redirection" context="#pop!StringRedirection" String="&lt;&lt;&lt;"/>
+        <!-- handle here document -->
+        <Detect2Chars context="#pop!HereDoc" char="&lt;" char1="&lt;" lookAhead="1"/>
+        <Detect2Chars attribute="Redirection" context="#pop!FdRedirection" char="&lt;" char1="&amp;"/>
+        <Detect2Chars attribute="Redirection" context="#pop!WordRedirection" char="&lt;" char1=">"/>
+        <IncludeRules context="FindGlobRangeThenPop"/>
+        <DetectChar attribute="Redirection" context="#pop!WordRedirection" char="&lt;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection" fallthroughContext="#pop!FdRedirection2">
+        <DetectSpaces attribute="Normal Text" context="#pop!FdRedirection2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FdRedirection2" fallthroughContext="#pop!WordRedirection2">
+        <RegExpr attribute="File Descriptor" context="#pop!CloseFile" String="[0-9]+(?=-?&eoexpr;)"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection" fallthroughContext="#pop!WordRedirection2">
+        <DetectSpaces attribute="Normal Text" context="#pop!WordRedirection2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="WordRedirection2" fallthroughContext="#pop">
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <RegExpr attribute="Path" context="PathThenPop" String="&path;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection" fallthroughContext="#pop!StringRedirection2">
+        <DetectSpaces attribute="Normal Text" context="#pop!StringRedirection2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="StringRedirection2">
+        <AnyChar context="#pop" String="&wordseps;`" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <DetectIdentifier attribute="Normal Text"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="CloseFile" fallthroughContext="#pop">
+        <DetectChar attribute="Keyword" context="#pop" char="-"/>
+      </context>
+
+      <!-- HereDoc consumes Here-documents. It is called at the beginning of the "<<" construct. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="HereDoc">
+        <RegExpr attribute="Redirection" context="HereDocIQ"  String="&lt;&lt;-[&ws;]*&heredocq;(?=[&ws;]*$)"/>
+        <RegExpr attribute="Redirection" context="HereDocINQ" String="&lt;&lt;-[&ws;]*([^&wordseps;]+)(?=[&ws;]*$)"/>
+        <RegExpr attribute="Redirection" context="HereDocQ"   String="&lt;&lt;[&ws;]*&heredocq;(?=[&ws;]*$)"/>
+        <RegExpr attribute="Redirection" context="HereDocNQ"  String="&lt;&lt;[&ws;]*([^&wordseps;]+)(?=[&ws;]*$)"/>
+
+        <RegExpr context="HereDocIQCmd"  String="(&lt;&lt;-[&ws;]*&heredocq;)" lookAhead="1"/>
+        <RegExpr context="HereDocINQCmd" String="(&lt;&lt;-[&ws;]*([^&wordseps;]+))" lookAhead="1"/>
+        <RegExpr context="HereDocQCmd"   String="(&lt;&lt;[&ws;]*&heredocq;)" lookAhead="1"/>
+        <RegExpr context="HereDocNQCmd"  String="(&lt;&lt;[&ws;]*([^&wordseps;]+))" lookAhead="1"/>
+
+        <Detect2Chars attribute="Redirection" context="#pop"  char="&lt;" char1="&lt;"/><!-- always met -->
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="HereDocRemainder" fallthroughContext="CommandArg">
+        <AnyChar context="ZshOneLine" String="&amp;|;`" lookAhead="1"/>
+        <IncludeRules context="CommandArgs"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ZshOneLine" fallthroughContext="Command">
+        <IncludeRules context="Start"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQ" dynamic="1" fallthroughContext="HereDocText">
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%1$" dynamic="1" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQ" dynamic="1" fallthroughContext="HereDocSubstitutions">
+        <IncludeRules context="HereDocQ" />
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQ" dynamic="1" fallthroughContext="HereDocText">
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%1$" dynamic="1" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQ" dynamic="1" fallthroughContext="HereDocSubstitutions">
+        <IncludeRules context="HereDocIQ" />
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocCmd">
+        <!-- Only if the redirect is before the command, but as this is too complicated,
+             check if the redirect is at the beginning of the line. -->
+        <StringDetect attribute="Redirection" context="ZshOneLine" String="%1" dynamic="true" firstNonSpace="1"/>
+        <StringDetect attribute="Redirection" context="HereDocRemainder" String="%1" dynamic="true"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocQCmd" dynamic="1" fallthroughContext="HereDocText">
+        <IncludeRules context="HereDocCmd"/>
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^%2$" dynamic="1" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocNQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">
+        <IncludeRules context="HereDocQCmd"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocIQCmd" dynamic="1" fallthroughContext="HereDocText">
+        <IncludeRules context="HereDocCmd"/>
+        <RegExpr attribute="Redirection" context="#pop#pop" String="^\t*%2$" dynamic="1" column="0"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#stay" name="HereDocINQCmd" dynamic="1" fallthroughContext="HereDocSubstitutions">
+        <IncludeRules context="HereDocIQCmd"/>
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocText">
+      </context>
+
+      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocSubstitutions">
+        <DetectSpaces attribute="Here Doc"/>
+        <DetectIdentifier attribute="Here Doc"/>
+        <DetectChar context="HereDocVariables" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+      <context attribute="Here Doc" lineEndContext="#pop" name="HereDocVariables">
+        <IncludeRules context="DispatchSubstVariables"/>
+        <IncludeRules context="DispatchVarNameVariables"/>
+        <DetectChar attribute="Here Doc" context="#pop" char="$"/>
+      </context>
+
+      <!-- VarName consumes spare variable names and assignments -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarName">
+        <StringDetect attribute="Builtin" context="#pop!BuiltinGetopts" String="getopts"/>
+        <StringDetect attribute="Builtin" context="#pop!BuiltinLet" String="let"/>
+        <DetectIdentifier attribute="Builtin" context="#pop!VarNameArgs"/>
+        <AnyChar attribute="Builtin" context="#pop!VarNameArgs" String=".:-"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArgs" fallthroughContext="#pop!CommandArgs">
+        <DetectSpaces attribute="Normal Text" context="VarNameArg"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="VarNameArg" fallthroughContext="#pop!VarNameArg2">
+        <!-- In command arguments, do not allow comments after escaped characters.
+             This avoids highlighting comments within paths or other text. Ex: pathtext\ #no\ comment -->
+        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
+        <AnyChar attribute="Option" context="#pop!ShortOption" String="-+"/>
+        <DetectChar attribute="Keyword" context="#pop!VarNameArg2" char="="/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VarNameArg2" fallthroughContext="#pop!NormalOption">
+        <DetectChar attribute="Variable" context="Subscript" char="["/>
+        <DetectChar attribute="Operator" context="Assign" char="="/>
+        <DetectChar attribute="Variable" context="AssignArray" char="("/>
+        <DetectIdentifier attribute="Variable" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetopts" fallthroughContext="#pop!CommandArgs">
+        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsOpt"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinGetoptsOpt" fallthroughContext="#pop!BuiltinGetoptsOpt2">
+        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
+        <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsOpt2" fallthroughContext="#pop!NormalOption">
+        <DetectChar attribute="Operator" context="#stay" char=":"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay" />
+        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinGetoptsVar"/>
+        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
+        <AnyChar attribute="Normal Text" context="#stay" String="/%.0123456789"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinGetoptsVar" fallthroughContext="#pop!CommandArgs">
+        <DetectIdentifier attribute="Variable" context="#pop!CommandArgs"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLet" fallthroughContext="#pop!CommandArgs">
+        <DetectSpaces attribute="Normal Text" context="#pop!BuiltinLetArgs"/>
+        <LineContinue attribute="Escape" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgs" fallthroughContext="BuiltinLetArg">
+        <AnyChar context="BuiltinLetArgsNumber" String="0123456789" lookAhead="1"/>
+        <IncludeRules context="CommandArgs"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetArgsNumber" fallthroughContext="#pop!BuiltinLetArg">
+        <IncludeRules context="FindRedirection"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop#pop" name="BuiltinLetArg" fallthroughContext="#pop!BuiltinLetExpr">
+        <DetectChar context="#pop#pop" char="#" lookAhead="1"/>
+        <DetectChar attribute="Keyword" context="#pop!NormalOption" char="="/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="BuiltinLetExpr" fallthroughContext="#pop!NormalOption">
+        <DetectIdentifier attribute="Variable"/>
+        <AnyChar context="#pop" String="&wordseps_or_extglog;" lookAhead="1"/>
+        <AnyChar attribute="Operator" context="#stay" String="+-!%=^:"/>
+        <IncludeRules context="FindNumber"/>
+        <IncludeRules context="FindSubscript"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindToNum"/>
+        <DetectChar attribute="Control" char=","/>
+        <DetectChar context="NormalOptionMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
+      </context>
+
+      <!-- ProcessSubst handles <(command) and >(command) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ProcessSubst" fallthroughContext="Command">
+        <DetectChar attribute="Redirection" context="#pop" char=")"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- StringSQ consumes anything till ' -->
+      <context attribute="String SingleQ" lineEndContext="#stay" name="StringSQ">
+        <DetectSpaces attribute="String SingleQ"/>
+        <DetectIdentifier attribute="String SingleQ"/>
+        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
+      </context>
+
+      <!-- StringDQ consumes anything till ", substitutes vars and expressions -->
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQ">
+        <DetectSpaces attribute="String DoubleQ"/>
+        <DetectIdentifier attribute="String DoubleQ"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="&quot;"/>
+        <DetectChar context="StringDQEscape" char="\" lookAhead="1"/>
+        <DetectChar context="StringDQDispatchVariables" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+      </context>
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="StringDQDispatchVariables">
+        <IncludeRules context="DispatchSubstVariables"/>
+        <IncludeRules context="DispatchVarNameVariables"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="$"/>
+      </context>
+      <context attribute="String DoubleQ" lineEndContext="#pop" name="StringDQEscape">
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="&quot;"/>
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="\"/>
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="`"/>
+        <Detect2Chars attribute="String Escape" context="#pop" char="\" char1="$"/>
+        <LineContinue attribute="String Escape" context="#pop"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="\"/>
+      </context>
+
+      <!-- RegularBackq consumes anything till ` -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="RegularBackq" fallthroughContext="Command">
+        <DetectChar attribute="Backquote" context="#pop" char="`"/>
+        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- StringEsc eats till ', but escaping many characters -->
+      <context attribute="String SingleQ" lineEndContext="#stay" name="StringEsc">
+        <DetectSpaces attribute="String SingleQ"/>
+        <DetectIdentifier attribute="String SingleQ"/>
+        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
+        <RegExpr attribute="String Escape" context="#stay" String="\\&escaped_ch;?"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindSpaceAndComment">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindWord">
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindVariable"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+
+      <!-- $foo ${foo} $((...)) $(...) -->
+      <context attribute="Command" lineEndContext="#pop" name="FindVariableOrCurrentStyle">
+        <DetectChar context="VariableOrCurrentStyle" char="$" lookAhead="1"/>
+      </context>
+      <context attribute="Command" lineEndContext="#pop" name="VariableOrCurrentStyle">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar context="#pop" char="$"/>
+      </context>
+      <!-- $foo ${foo} $((...)) $(...) -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindVariable">
+        <DetectChar context="RegularVariable" char="$" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="RegularVariable">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="$"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindStrings">
+        <DetectChar attribute="String SingleQ" context="StringSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindStringsThenPop">
+        <DetectChar attribute="String SingleQ" context="#pop!StringSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="#pop!StringDQ" char="&quot;"/>
+      </context>
+
+      <!-- SubstCommand is called after a $( is encountered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubstCommand" fallthroughContext="Command">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char=")" endRegion="subshell"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- VarBraceStart is called as soon as ${ is encoutered -->
+      <context attribute="Variable" lineEndContext="#pop!VarCmd" name="VarBraceStart" fallthroughContext="#pop!CheckVarAlt">
+        <DetectChar attribute="Parameter Expansion" context="#pop!VarFlags" char="("/>
+        <AnyChar attribute="Parameter Expansion" context="#pop!VarCmd" String="&ws;|"/>
+        <DetectChar attribute="Normal Text" context="#pop!VarCmdVar" char="{"/>
+        <IncludeRules context="VarFlagsVar"/>
+      </context>
+      <context attribute="Variable" lineEndContext="#stay" name="VarBraceStartRecursive" fallthroughContext="#pop#pop!CheckVarAlt">
+        <Detect2Chars attribute="Parameter Expansion" context="VarBraceStart" char="$" char1="{"/>
+        <StringDetect context="#pop!ExprDblParenSubstOrSubstCommand" String="$((" lookAhead="1"/>
+        <Detect2Chars attribute="Parameter Expansion" context="#pop!SubstCommand" char="$" char1="(" beginRegion="subshell"/>
+        <DetectChar attribute="Error" context="#pop" char="$"/>
+      </context>
+      <context attribute="Error" lineEndContext="#stay" name="VarError">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="CheckVarAlt" fallthroughContext="#pop!VarError">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[@]"/>
+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="[*]"/>
+        <IncludeRules context="FindSubscript"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="%" char1="%"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#" char1="#"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" String="#%"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValuePrefix" char=":"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/" char1="/"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop!VarSub" name="AlternateValuePrefix" fallthroughContext="#pop!VarSub">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="^" char1="^"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternatePatternValue" char="#"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" String="-+=?|*^"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char=":" char1="="/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubst" char="/"/>
+        <IncludeRules context="VarBraceModifierOrArithmetic"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop!VarSub" name="VarBraceModifierOrArithmetic" fallthroughContext="#pop!VarSub">
+        <AnyChar context="#pop!VarBraceModifiers" String="aAcehlpPqQrsg&amp;tufFwW" lookAhead="1"/>
+        <DetectIdentifier attribute="Error" context="#pop!VarBraceModifiers"/>
+      </context>
+
+      <!-- ${var:h:s/...}
+                 ~~~
+      -->
+      <context attribute="Error" lineEndContext="#stay" name="VarBraceModifiers" fallthroughContext="VarBraceModifierNext">
+        <AnyChar attribute="Parameter Expansion" context="VarBraceModifierNext" String="aAcelpPqQr&amp;u"/>
+        <AnyChar attribute="Parameter Expansion" context="VarBraceModifier_h" String="ht"/>
+        <AnyChar attribute="Parameter Expansion" String="fw"/>
+        <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_s" String="s"/>
+        <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_s" String="gs"/>
+        <StringDetect attribute="Parameter Expansion" context="VarBraceModifierNext" String="g&amp;"/>
+        <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_W" String="W"/>
+        <StringDetect attribute="Parameter Expansion" context="VarBraceModifier_F" String="F"/>
+        <!-- TODO ${a:2:2:a} VarSub amène à VarSub or VarBraceModifierNext quand : (pas plus de 2)-->
+      </context>
+      <context attribute="Error" lineEndContext="#stay" name="VarBraceModifierNext">
+        <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="&brace_close;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=":"/>
+        <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>
+      </context>
+
+      <!-- ${var:h3}  ${var:t11}
+                  ~          ~~
+      -->
+      <context attribute="Parameter Expansion" lineEndContext="#pop!VarBraceModifierNext" name="VarBraceModifier_h" fallthroughContext="#pop!VarBraceModifierNext">
+        <IncludeRules context="FindDigit"/>
+      </context>
+
+
+      <!-- ${var:s/../....}
+                  ~~~~~...
+      -->
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarBraceModifier_s" fallthroughContext="#pop!VarBraceModifierNext">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Str" char="/"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_StrSQ_Sep" char="'"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_StrDQ_Sep" char='"'/>
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_C_Rep!VarBraceModifier_s_C_Str" String="([^&symbolseps;\[\]{}\\])"/>
+      </context>
+      <context attribute="Verbatim String" name="VarBraceModifier_End">
+        <AnyChar context="#pop!VarBraceModifierNext" String="&symbolseps;&brace_close;" lookAhead="1"/>
+      </context>
+      <context attribute="Verbatim String" name="VarBraceModifier_End2">
+        <AnyChar context="#pop#pop!VarBraceModifierNext" String="&symbolseps;&brace_close;" lookAhead="1"/>
+      </context>
+      <!-- By default the left-hand side of substitutions are character strings,
+      but pattern with HIST_SUBST_PATTERN option. Assume no option. -->
+      <!-- ${var:s/../....}
+                   ~~~
+      -->
+      <context attribute="Verbatim String" name="VarBraceModifier_s_Str">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char="/"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_StrSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_StrDQ" char='"'/>
+        <DetectChar attribute="Verbatim String" context="VarBraceModifier_s_StrSQ!VarBraceModifier_s_StrDQ_to_Rep!VarBraceModifier_s_Str_Recursive" char="{"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>
+      </context>
+      <context attribute="Verbatim String" name="VarBraceModifier_s_Str_Recursive">
+        <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_StrSQ_Recursive" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_StrDQ_Recursive" char='"'/>
+        <DetectChar attribute="Verbatim String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!VarBraceModifier_s_Str_Recursive" char="{"/>
+        <DetectChar context="#pop#pop#pop" char="}"/>
+      </context>
+      <!-- #pop -> is VarBraceModifier_s_C_Rep -->
+      <context attribute="Verbatim String" name="VarBraceModifier_s_C_Str">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <IncludeRules context="FindEscape"/>
+        <!-- The string should stop if capture $1 is found,
+        but there is no way to propagate the capture. -->
+        <IncludeRules context="FindStrings"/>
+        <DetectChar attribute="Verbatim String" context="VarBraceModifier_s_C_Str_Recursive" char="{"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop#pop#pop" char="}"/>
+      </context>
+      <context attribute="Verbatim String" name="VarBraceModifier_s_C_Str_Recursive">
+        <IncludeRules context="FindEscape"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar attribute="Verbatim String" context="VarBraceModifier_s_C_Str_Recursive" char="{"/>
+        <DetectChar context="#pop" char="}"/>
+      </context>
+      <!-- ${var:s/..'../..'..}  ${var:s/..'..'../..}
+                     ~~~~                  ~~~~
+      -->
+      <context attribute="String SingleQ" name="VarBraceModifier_s_StrSQ">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
+        <LineContinue attribute="Escape"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarBraceModifier_s_Rep!VarBraceModifier_s_RepSQ" char="/"/>
+      </context>
+      <context attribute="Error" name="Modifier_s_Str_to_Parent">
+        <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>
+      </context>
+      <context attribute="String SingleQ" name="VarBraceModifier_s_StrSQ_Recursive">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
+        <LineContinue attribute="Escape"/>
+        <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>
+      </context>
+      <!-- ${var:s'..'..}
+                  ~~~~
+      -->
+      <context attribute="Verbatim String" name="VarBraceModifier_s_StrSQ_Sep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char="'"/>
+        <LineContinue attribute="Escape"/>
+      </context>
+      <!-- ${var:s/.."../.."..}  ${var:s/..".."../..}
+                     ~~~~                  ~~~~
+      -->
+      <context attribute="String DoubleQ" name="VarBraceModifier_s_StrDQ">
+        <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!VarBraceModifier_s_Rep!VarBraceModifier_s_RepDQ" char="/"/>
+      </context>
+      <context attribute="Error" name="VarBraceModifier_s_StrDQ_to_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop!VarBraceModifier_s_Rep!VarBraceModifier_s_RepDQ" char="/"/>
+      </context>
+      <context attribute="String DoubleQ" name="VarBraceModifier_s_StrDQ_Recursive">
+        <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar context="#pop#pop" char="/" lookAhead="1"/>
+      </context>
+      <!-- ${var:s".."..}
+                  ~~~~
+      -->
+      <context attribute="String DoubleQ" name="VarBraceModifier_s_StrDQ_Sep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifier_s_Rep" char='"'/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+      <!-- ${var:s/../....}
+                      ~~..
+      -->
+      <context attribute="Replacement String" name="VarBraceModifier_s_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifierNext" char="/"/>
+        <!-- FindWord with a search for '/' in single and double quoted string -->
+        <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_RepSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_RepDQ" char="&quot;"/>
+        <DetectChar attribute="Replacement String" context="VarBraceModifier_s_RepSQ!VarBraceModifier_s_RepDQ_to_End!VarBraceModifier_s_Rep_Recursive" char="&brace_open;"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <IncludeRules context="VarBraceModifier_End"/>
+      </context>
+      <context attribute="Replacement String" name="VarBraceModifier_s_Rep_Recursive">
+        <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>
+        <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_RepSQ_Recursive" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_RepDQ_Recursive" char='"'/>
+        <DetectChar attribute="Replacement String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!VarBraceModifier_s_Rep_Recursive" char="{"/>
+        <DetectChar context="#pop#pop#pop" char="}"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>
+      </context>
+      <context attribute="Replacement String" name="VarBraceModifier_s_C_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifierNext" char="1" dynamic="1"/>
+        <!-- The string should stop if capture $1 is found,
+        but there is no way to propagate the capture. -->
+        <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>
+        <DetectChar attribute="Replacement String" context="VarBraceModifier_s_C_Rep_Recursive" char="&brace_open;"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <IncludeRules context="VarBraceModifier_End"/>
+      </context>
+      <context attribute="Replacement String" name="VarBraceModifier_s_C_Rep_Recursive">
+        <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <DetectChar attribute="Replacement String" context="VarBraceModifier_s_C_Rep_Recursive" char="{"/>
+        <DetectChar context="#pop" char="}"/>
+        <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>
+      </context>
+      <context attribute="Replacement String" name="VarBraceModifier_s_Rep_Common">
+        <IncludeRules context="FindVariable"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <IncludeRules context="FindEscape"/>
+        <IncludeRules context="FindSingleGlob"/>
+        <IncludeRules context="FindGlobRangeOrError"/>
+      </context>
+      <!-- ${var:s/../..'../'..}  ${var:s/../..'..'..}
+                        ~~~~                   ~~~~
+      -->
+      <context attribute="String SingleQ" name="VarBraceModifier_s_RepSQ">
+        <IncludeRules context="VarNameModifier_s_C_RepSQ"/>
+        <DetectChar attribute="Error" context="#pop#pop!VarBraceModifierNext!StringSQ" char="/"/>
+      </context>
+      <context attribute="String SingleQ" name="VarBraceModifier_s_RepSQ_Recursive">
+        <IncludeRules context="VarNameModifier_s_C_RepSQ"/>
+        <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>
+      </context>
+      <!-- ${var:s/../.."../"..}  ${var:s/../..".."..}
+                        ~~~~                   ~~~~
+      -->
+      <context attribute="String DoubleQ" name="VarBraceModifier_s_RepDQ">
+        <IncludeRules context="VarNameModifier_s_C_RepDQ"/>
+        <DetectChar attribute="Error" context="#pop#pop!VarBraceModifierNext!StringDQ" char="/"/>
+      </context>
+      <context attribute="String DoubleQ" name="VarBraceModifier_s_RepDQ_Recursive">
+        <IncludeRules context="VarNameModifier_s_C_RepDQ"/>
+        <DetectChar context="#pop#pop" char="/" lookAhead="1"/>
+      </context>
+      <context attribute="String DoubleQ" name="VarBraceModifier_s_RepDQ_to_End">
+        <DetectChar attribute="Error" context="#pop#pop#pop!VarBraceModifierNext!StringDQ" char="/"/>
+      </context>
+
+
+      <!-- ${var:F(expr)h}
+                  ~~~~~~
+      -->
+      <context attribute="Normal Text" name="VarBraceModifier_F" lineEndContext="BraceArithmeticParamNL" fallthroughContext="#pop!VarBraceModifierNext">
+        <IncludeRules context="FindStringsThenPop"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamColon" char=":"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamParen" char="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamBracket" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceArithmeticParamBrace" char="{"/>
+        <RegExpr attribute="Parameter Expansion Operator" context="BraceArithmeticParamDyn" String="([^&symbolseps;])"/>
+      </context>
+      <context attribute="Normal Text" name="BraceArithmeticParamParen">
+        <IncludeRules context="BraceVerbatimParamParen"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="BraceArithmeticParamBracket">
+        <IncludeRules context="BraceVerbatimParamBracket"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="BraceArithmeticParamBrace">
+        <IncludeRules context="BraceVerbatimParamBrace"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="BraceArithmeticParamColon">
+        <IncludeRules context="BraceVerbatimParamColon"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="BraceArithmeticParamDyn">
+        <IncludeRules context="BraceVerbatimParamDyn"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <!-- ${var:F
+                  ^ new line -> BraceArithmeticParamNL
+      arithmetic or empty line
+                              ^ new line -> BraceArithmeticParamNL2
+      }
+      -->
+      <context attribute="Normal Text" name="BraceArithmeticParamNL" lineEmptyContext="#pop!BraceArithmeticParamNL2" fallthroughContext="#pop!BraceArithmeticParamNL2">
+      </context>
+      <context attribute="Normal Text" name="BraceArithmeticParamNL2" lineEndContext="#pop#pop">
+        <IncludeRules context="BraceVerbatimParamNL2"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <!-- ${var:W(xxx)h}
+                  ~~~~~
+      -->
+      <context attribute="Normal Text" name="VarBraceModifier_W" lineEndContext="BraceVerbatimParamNL" fallthroughContext="#pop!VarBraceModifierNext">
+        <IncludeRules context="FindStringsThenPop"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamColon" char=":"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamParen" char="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamBracket" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="BraceVerbatimParamBrace" char="{"/>
+        <RegExpr attribute="Parameter Expansion Operator" context="BraceVerbatimParamDyn" String="([^&symbolseps;])"/>
+      </context>
+      <context attribute="Verbatim String" name="BraceVerbatimParamParen">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=")"/>
+        <IncludeRules context="VarBraceModifier_End2"/>
+      </context>
+      <context attribute="Verbatim String" name="BraceVerbatimParamBracket">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>
+        <IncludeRules context="VarBraceModifier_End2"/>
+      </context>
+      <context attribute="Verbatim String" name="BraceVerbatimParamBrace">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="}"/>
+        <IncludeRules context="VarBraceModifier_End2"/>
+      </context>
+      <context attribute="Verbatim String" name="BraceVerbatimParamColon">
+        <IncludeRules context="VarBraceModifier_End2"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=":"/>
+      </context>
+      <context attribute="Verbatim String" name="BraceVerbatimParamDyn">
+        <IncludeRules context="VarBraceModifier_End2"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="1" dynamic="1"/>
+      </context>
+      <!-- ${var:W
+                  ^ new line -> BraceVerbatimParamNL
+      sep or empty line
+                       ^ new line -> BraceVerbatimParamNL2
+      }
+      -->
+      <context attribute="Verbatim String" name="BraceVerbatimParamNL" lineEmptyContext="#pop!BraceVerbatimParamNL2" fallthroughContext="#pop!BraceVerbatimParamNL2">
+      </context>
+      <context attribute="Verbatim String" name="BraceVerbatimParamNL2" lineEndContext="#pop#pop">
+        <IncludeRules context="VarBraceModifier_End2"/>
+      </context>
+
+
+      <!-- called as soon as ${xxx: is encoutered and followed by a arithmetic context (not modifier, etc) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarSub">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarBraceModifierOrArithmetic" char=":"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+
+      <!-- called as soon as ${xxx:-, etc are encoutered -->
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternateValue">
+        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindPathThenPopInAlternateValue"/>
+        <DetectIdentifier attribute="String DoubleQ"/>
+      </context>
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternateValue">
+        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindPathThenPopInAlternateValue"/>
+        <DetectIdentifier attribute="String DoubleQ"/>
+      </context>
+
+      <!-- called as soon as ${xxx%, etc are encoutered -->
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="AlternatePatternValue">
+        <DetectChar attribute="String DoubleQ" context="RecursiveAlternatePatternValue" char="{"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindStringDQPattern"/>
+        <DetectIdentifier attribute="String DoubleQ"/>
+      </context>
+      <context attribute="String DoubleQ" lineEndContext="#stay" name="RecursiveAlternatePatternValue">
+        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
+        <DetectChar attribute="String DoubleQ" context="#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindStringDQPattern"/>
+        <DetectIdentifier attribute="String DoubleQ"/>
+      </context>
+
+      <!-- called as soon as ${xxx/ ${xxx// ${xxx:/ are encoutered -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarBraceSubst" fallthroughContext="#pop!VarBraceSubstPat">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" char="#" char1="%"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#pop!VarBraceSubstPat" String="#%"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="VarBraceSubstPat">
+        <DetectChar attribute="Parameter Expansion Operator" context="VarBraceSubstRep" char="/"/>
+        <DetectChar attribute="String DoubleQ" context="RecursiveAlternateValue" char="{"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSubPattern"/>
+        <DetectIdentifier attribute="Pattern"/>
+      </context>
+      <!-- ${foo/.../...}
+                     ~~~~
+      -->
+      <context attribute="Replacement String" lineEndContext="#stay" name="VarBraceSubstRep">
+        <DetectChar attribute="Replacement String" context="VarBraceSubstRepRec" char="{"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+      </context>
+      <context attribute="Replacement String" lineEndContext="#stay" name="VarBraceSubstRepRec">
+        <DetectChar attribute="Replacement String" context="VarBraceSubstRepRec" char="{"/>
+        <DetectChar attribute="Replacement String" context="#pop" char="}"/>
+        <IncludeRules context="FindWord"/>
+      </context>
+
+      <!-- called as soon as ${( is encoutered -->
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlags">
+        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#%*q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNR"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="sjgZ_"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_l" String="lrI"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlagsSubs" char="p"/>
+
+        <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>
+        <DetectChar attribute="Error" context="#pop" char="}"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlagsSubs">
+        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#q@AabcCDefFikLnoOPqQ+-tuUvVwWXz0~mSBEMNRp"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_s" String="gZ"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_ps" String="sj_"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="VarFlag_pl" String="lrI"/>
+
+        <DetectChar attribute="Parameter Expansion" context="#pop!VarFlagsVar" char=")"/>
+        <DetectChar attribute="Error" context="#pop" char="}"/>
+      </context>
+      <context attribute="Variable" lineEndContext="#stay" name="VarFlagsVar" fallthroughContext="#pop!CheckVarAlt">
+        <DetectChar context="VarBraceStartRecursive" char="$" lookAhead="1"/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <DetectChar attribute="String DoubleQ" context="StringDQ" char="&quot;"/>
+        <AnyChar attribute="Parameter Expansion Operator" context="#stay" String="#+^=~"/>
+        <DetectIdentifier attribute="Variable" context="#pop!CheckVarAlt"/>
+        <AnyChar attribute="Variable" context="#pop!CheckVarAlt" String="*@?$-"/>
+        <Int attribute="Variable" context="#pop!CheckVarAlt" additionalDeliminator="#~=^+{}[]:-/$"/>
+        <Detect2Chars context="#pop!VarSubShell" char="!" char1="}" lookAhead="1"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!AlternateValue" char="!"/>
+      </context>
+
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarSubShell">
+        <DetectChar attribute="Variable" context="#pop!CheckVarAlt" char="!"/>
+      </context>
+
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_s">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s[" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s&lt;" char="&lt;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s{" char="{"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_s(" char="("/>
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_sx" String="(.)"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s[">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s&lt;">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s{">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_s(">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_sx">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l&lt;" char="&lt;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{" char="{"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(" char="("/>
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lx" String="(.)"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l[">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l[s" char="]" char1="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l&lt;">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l&lt;s" char=">" char1="&lt;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l{">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l{s" char="}" char1="{"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_l(">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_l(s" char=")" char1="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_lx">
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_lxs" String="(%1)%1" dynamic="1"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l[s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l&lt;s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="&lt;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l{s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_l(s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_lxs">
+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+      </context>
+
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="VarFlag_ps">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps[" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps&lt;" char="&lt;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps{" char="{"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_ps(" char="("/>
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_psx" String="(.)"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps[">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\])"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps&lt;">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
+        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=>)"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps{">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
+        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=})"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_ps(">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
+        <RegExpr attribute="Variable" context="#stay" String="\$(&varname;|[0-9]+)(?=\))"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_psx">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <RegExpr attribute="Variable" context="#stay" String="\$(?!%1)(?:[A-Za-z_](?:(?!%1)[A-Za-z0-9_])*+|(?:(?!%1)[0-9])++)(?=%1)" dynamic="1"/>
+        <RegExpr attribute="String SingleQ" context="#stay" String="[^%1]+" dynamic="1"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl&lt;" char="&lt;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{" char="{"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(" char="("/>
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plx" String="(.)"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl[">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl[s" char="]" char1="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl&lt;">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl&lt;s" char=">" char1="&lt;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=">"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl{">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl{s" char="}" char1="{"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="}"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_pl(">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!VarFlag_pl(s" char=")" char1="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=")"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarFlag_plx">
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!VarFlag_plxs" String="(%1)%1" dynamic="1"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl[s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="]" char1="["/>
+        <IncludeRules context="VarFlag_ps["/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl&lt;s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=">" char1="&lt;"/>
+        <IncludeRules context="VarFlag_ps&lt;"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl{s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char="}" char1="{"/>
+        <IncludeRules context="VarFlag_ps{"/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_pl(s">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#stay" char=")" char1="("/>
+        <IncludeRules context="VarFlag_ps("/>
+      </context>
+      <context attribute="String SingleQ" lineEndContext="#stay" name="VarFlag_plxs">
+        <StringDetect attribute="Parameter Expansion Operator" context="#stay" String="%1%1" dynamic="1"/>
+        <IncludeRules context="VarFlag_psx"/>
+      </context>
+
+      <!-- brace command substitution:
+        ${|cmd} ${ cmd }
+           ~~~~    ~~~~~
+      -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="VarCmd" fallthroughContext="Command">
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+        <IncludeRules context="Start"/>
+      </context>
+      <!-- ${{param} cmd}
+             ~~~~~~~
+      -->
+      <context attribute="Variable" lineEndContext="#stay" name="VarCmdVar">
+        <DetectChar attribute="Normal Text" context="VarCmdCheckSpace" char="}"/>
+        <AnyChar attribute="Error" context="#pop!VarCmd" String="&ws;"/>
+        <IncludeRules context="FindSubscript"/>
+      </context>
+      <context attribute="Variable" lineEndContext="#pop#pop!VarCmd" name="VarCmdCheckSpace">
+        <DetectChar attribute="Normal Text" context="#pop#pop!VarCmd" char=" "/>
+        <DetectChar attribute="Parameter Expansion" context="#pop#pop" char="}"/>
+        <RegExpr attribute="Error" context="#pop#pop!VarCmd" String="."/>
+      </context>
+
+      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion">
+        <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>
+      </context>
+      <context attribute="Escape" lineEndContext="#pop" name="BraceExpansion2">
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Escape" context="#pop" char="}"/>
+        <DetectChar context="EscapeMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="Backquote" context="CommandBackq" char="`"/>
+        <IncludeRules context="FindVariableOrCurrentStyle"/>
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindPattern"/>
+        <DetectIdentifier attribute="Escape"/>
+      </context>
+      <context attribute="Escape" lineEndContext="#pop" name="EscapeMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Escape" context="#pop!BraceExpansion2" char="{"/>
+      </context>
+
+      <context attribute="Escape" lineEndContext="#pop" name="PathBraceExpansion">
+        <DetectChar attribute="Escape" context="#pop!PathBraceExpansion2" char="{"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="PathBraceExpansion2">
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Escape" context="#pop" char="}"/>
+        <DetectChar context="PathMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindPattern"/>
+        <DetectIdentifier attribute="Path"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="SequenceExpression">
+        <AnyChar attribute="Number" context="#stay" String="0123456789-"/>
+        <IncludeRules context="FindWord"/>
+        <Detect2Chars attribute="Escape" context="#stay" char="." char1="."/>
+        <DetectChar attribute="Escape" context="#pop" char="}"/>
+      </context>
+
+<!-- ====== These are the contexts that can be branched to ======= -->
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenOrSubShell">
+        <RegExpr attribute="Keyword" context="#pop!SubShell" String="\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>
+        <Detect2Chars attribute="Keyword" context="#pop!ExprDblParen" char="(" char1="(" beginRegion="expression"/>
+      </context>
+      <!-- ExprDblParen consumes an expression started in command mode till )) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParen">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <Detect2Chars attribute="Keyword" context="#pop" char=")" char1=")" endRegion="expression"/>
+        <IncludeRules context="FindExprDblParen"/>
+        <!-- ((cmd
+              ) # jump to SubShell context -->
+        <DetectChar attribute="Keyword" context="#pop!SubShell" char=")" endRegion="expression" beginRegion="subshell"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblParen">
+        <DetectChar attribute="Normal Text" context="ExprSubDblParen" char="("/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprSubDblParen">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Normal Text" context="#pop" char=")"/>
+        <IncludeRules context="FindExprDblParen"/>
+      </context>
+      <context attribute="Error" lineEndContext="#pop" name="MaybeArithmeticBrace">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Error" context="#pop" char="{"/>
+      </context>
+
+      <context attribute="Number" name="FindBranchCondition">
+        <Detect2Chars attribute="Control" context="#stay" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#stay" char="|" char1="|"/>
+      </context>
+
+      <context attribute="Number" name="FindArithmetic">
+        <IncludeRules context="FindBranchCondition"/>
+        <AnyChar attribute="Operator" String="&arithmetic_op;"/>
+        <IncludeRules context="FindNumber"/>
+        <IncludeRules context="FindSubscript"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindToNum"/>
+        <DetectChar attribute="Control" char=","/>
+        <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>
+        <DetectIdentifier attribute="Variable"/>
+      </context>
+
+      <context attribute="Number" name="FindToNum">
+        <Detect2Chars attribute="Base" context="ChToNum" char="#" char1="#"/>
+        <DetectChar attribute="Base" context="MaybeOutputBase" char="#"/>
+      </context>
+      <!-- ##c in ((##c)) -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="ChToNum" fallthroughContext="#pop">
+        <LineContinue attribute="Escape"/>
+        <!-- '##\)' is ok, but not '##\(' -->
+        <RegExpr attribute="BaseN" context="#pop" String="[^\[\]()\\$^]|\$(?=$|\)|[^+=:#^~+$@*'?{(\w])|\^?\\(&escaped_ch;|[^\[\]\(])|\^[^\[\]()\\]|\^(?=[)])"/>
+      </context>
+      <!-- #n in ((#n)) -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="MaybeOutputBase" fallthroughContext="#pop">
+        <AnyChar attribute="BaseN" String="0123456789_"/>
+      </context>
+
+      <context attribute="Number" name="FindDigit">
+        <AnyChar attribute="Number" context="#stay" String="0123456789"/>
+      </context>
+
+      <context attribute="Number" name="FindNumber">
+        <AnyChar context="Number" String="0123456789." lookAhead="1"/>
+      </context>
+      <context attribute="Number" lineEndContext="#pop" name="Number">
+        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="x"/>
+        <Detect2Chars attribute="Hex" context="#pop!Hex" char="0" char1="X"/>
+        <RegExpr attribute="Base" context="#pop!BaseN" String="[1-9][0-9_]*+#"/>
+        <RegExpr attribute="Number" context="#pop" String="&int;(\._*+(&int;&exp;?+|&exp;)?|&exp;)?|\._*+&int;&exp;?"/>
+        <DetectChar attribute="Operator" context="#pop" char="."/>
+      </context>
+      <context attribute="Hex" lineEndContext="#pop" name="Hex" fallthroughContext="#pop">
+        <RegExpr attribute="Hex" context="#pop" String="[0-9a-fA-F_]+"/>
+      </context>
+      <context attribute="BaseN" lineEndContext="#pop" name="BaseN" fallthroughContext="#pop">
+        <RegExpr attribute="BaseN" context="#pop" String="[0-9a-zA-Z@_]+"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubstOrSubstCommand">
+        <RegExpr attribute="Parameter Expansion" context="#pop!SubstCommand" String="\$\((?=&arithmetic_as_subshell;)|" beginRegion="subshell"/>
+        <StringDetect attribute="Parameter Expansion" context="#pop!ExprDblParenSubst" String="$((" beginRegion="expression"/>
+      </context>
+      <!-- ExprDblParenSubst like ExprDblParen but matches )) as Variable -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblParenSubst">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <Detect2Chars attribute="Parameter Expansion" context="#pop" char=")" char1=")" endRegion="expression"/>
+        <IncludeRules context="FindExprDblParen"/>
+        <!-- $((cmd
+              ) # jump to SubstCommand context -->
+        <DetectChar attribute="Parameter Expansion" context="#pop!SubstCommand" char=")" endRegion="expression" beginRegion="subshell"/>
+      </context>
+
+      <!-- ExprBracket consumes an expression till ] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracket" fallthroughContext="#pop!ExprBracketNot">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketNot" fallthroughContext="#pop!ExprBracketParam1">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam1"/>
+        <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1=" " lookAhead="1"/>
+        <Detect2Chars attribute="Expression" context="ExprBracketTestMaybeNot" char="!" char1="&tab;" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketTestMaybeNot">
+        <DetectChar attribute="Expression" context="#pop" char="!"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam1" fallthroughContext="ExprBracketValue">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam2"/>
+        <DetectChar context="TestMaybeUnary" char="-" lookAhead="1"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValue">
+        <AnyChar context="#pop" String="&ws;" lookAhead="1"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindGlobAny"/>
+        <IncludeRules context="FindPathThenPop"/>
+        <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
+        <DetectIdentifier attribute="Normal Text"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueRecBrace">
+        <AnyChar context="#pop#pop" String="&ws;" lookAhead="1"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindGlobAny"/>
+        <DetectChar context="ExprBracketValueMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="}"/>
+        <DetectIdentifier attribute="Normal Text"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprBracketValueMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Normal Text" context="#pop!ExprBracketValueRecBrace" char="{"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2" fallthroughContext="#pop!ExprBracketParam2_Value">
+        <LineContinue attribute="Escape" context="SkipSpaces"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketParam2_Value" fallthroughContext="ExprBracketValue">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketParam3"/>
+        <AnyChar context="TestMaybeBinary" String="-=!" lookAhead="1"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3" fallthroughContext="#pop!ExprBracketParam3_Value">
+        <LineContinue attribute="Escape" context="SkipSpaces"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="ExprBracketFinal" name="ExprBracketParam3_Value" fallthroughContext="ExprBracketValue">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprBracketFinal"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprBracketFinal" fallthroughContext="ExprBracketValue">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprBracketEnd"/>
+        <RegExpr attribute="Expression" context="#pop!ExprBracket" String="-[ao]&eos;"/>
+        <RegExpr attribute="Error" context="#pop" String="(?:[^]&ws;]++|\][^&ws;])++" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprBracketEnd">
+        <IncludeRules context="FindEscape"/>
+        <RegExpr attribute="Builtin" context="#pop" String="\](?=($|[&ws;;|&amp;&lt;>)]))" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary" fallthroughContext="#pop!ExprBracketValue">
+        <RegExpr attribute="Expression" context="#pop#pop!ExprBracketParam2" String="&unary_operators;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary" fallthroughContext="#pop!ExprBracketValue">
+        <RegExpr attribute="Expression" context="#pop" String="&binary_operators;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="SkipSpaces" fallthroughContext="#pop">
+        <DetectSpaces context="#pop"/>
+      </context>
+
+
+      <!-- ExprDblBracket consumes an expression till ]] -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracket" fallthroughContext="#pop!ExprDblBracketNot">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketNot" fallthroughContext="#pop!ExprDblBracketParam1">
+        <DetectChar context="ExprDblBracketTestMaybeNot" char="!" lookAhead="1"/>        <IncludeRules context="FindSpaceAndComment"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketTestMaybeNot" fallthroughContext="#pop#pop!ExprDblBracketParam1">
+        <RegExpr attribute="Expression" context="#pop" String="!(?=$|[&ws;(])"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1" fallthroughContext="#pop!ExprDblBracketParam1_2">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam1_2" fallthroughContext="ExprDblBracketValueText">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam2"/>
+        <DetectChar context="TestMaybeUnary2" char="-" lookAhead="1"/>
+        <DetectChar context="ExprDblBracketSubValue" char="(" lookAhead="1"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeUnary2" fallthroughContext="#pop!ExprDblBracketValueText">
+        <RegExpr attribute="Expression" context="#pop!ExprDblBracketUnary" String="&unary_operators;(?!\s+(?:=~|&binary_operators;))"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketUnary" fallthroughContext="#pop!ExprDblBracketValueText">
+        <IncludeRules context="FindSpaceAndComment"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketSubValue" fallthroughContext="#pop">
+        <DetectChar attribute="Operator" context="ExprDblBracketNot" char="("/>
+        <DetectChar attribute="Operator" context="#pop" char=")"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText" fallthroughContext="#pop!ExprDblBracketValueText2">
+        <Detect2Chars context="#pop!ExprDblBracketValueTextMaybeEnd" char="]" char1="]" lookAhead="1"/>
+        <IncludeRules context="FindExprDblBracketValueTextPath"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="FindExprDblBracketValueTextPath">
+        <RegExpr context="#pop!ExprDblBracketValueTextPath" String="&path_with_sep;|" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeEnd">
+        <RegExpr attribute="Keyword" context="#pop#pop" String="&dblbracket_close;" endRegion="expression"/>
+        <IncludeRules context="FindExprDblBracketValueTextPath"/>
+        <Detect2Chars context="#pop!ExprDblBracketValueText2" char="]" char1="]" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueText2">
+        <DetectIdentifier/>
+        <AnyChar String="*?+@~^:%+-/,"/>
+        <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>
+        <AnyChar context="#pop" String="&ws;)" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindGroupPattern"/>
+        <AnyChar attribute="Error" context="#stay" String="&amp;;|"/>
+        <DetectChar context="ExprDblBracketValueTextMaybeRange" char="&lt;" lookAhead="1"/>
+        <DetectChar attribute="Expression" context="#pop!ExprDblBracketValuePattern" char=">"/>
+      </context>
+      <context attribute="Path" lineEndContext="#pop" name="ExprDblBracketValueTextPath">
+        <IncludeRules context="ExprDblBracketValueText2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValueTextMaybeRange">
+        <RegExpr context="#pop" String="&globrange;"/>
+        <DetectChar attribute="Expression" context="#pop#pop!ExprDblBracketValuePattern" char="&lt;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern" fallthroughContext="#pop!ExprDblBracketValuePattern2">
+        <RegExpr context="ExprDblBracketValuePatternPath" String="&path_with_sep;|" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePatternPath" fallthroughContext="#pop!PathThenPop">
+        <DetectChar attribute="Path" context="#pop!PathThenPop" char="~"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="ExprDblBracketValuePattern2">
+        <DetectIdentifier attribute="Normal Text"/>
+        <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#pop#pop!ExprDblBracket" char="|" char1="|"/>
+        <AnyChar context="#pop" String="&ws;)" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSingleGlob"/>
+        <IncludeRules context="FindGlobAny"/>
+        <IncludeRules context="FindGroupPattern"/>
+        <IncludeRules context="FindGlobRangeOrError"/>
+        <AnyChar attribute="Error" context="#stay" String=">&amp;|;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2" fallthroughContext="#pop!ExprDblBracketParam2_2">
+        <IncludeRules context="FindSpaceAndComment"/>
+        <LineContinue attribute="Escape"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam2_2" fallthroughContext="ExprDblBracketValuePattern">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
+        <AnyChar context="TestMaybeBinary2" String="-=!" lookAhead="1"/>
+        <AnyChar attribute="Expression" context="#pop!ExprDblBracketParam3Spe" String="&lt;>"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="TestMaybeBinary2" fallthroughContext="#pop!ExprDblBracketValuePattern">
+        <IncludeRules context="TestMaybeBinary"/>
+        <RegExpr attribute="Expression" context="#pop#pop!ExprDblBracketRegex" String="=~&eos;"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3Spe" fallthroughContext="#pop!ExprDblBracketParam3">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketParam3"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketParam3" fallthroughContext="#pop!ExprDblBracketParam3_2">
+        <IncludeRules context="ExprDblBracketParam2"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop!ExprDblBracketFinal" name="ExprDblBracketParam3_2" fallthroughContext="ExprDblBracketValuePattern">
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketFinal" fallthroughContext="ExprDblBracketValuePattern">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <IncludeRules context="FindExprDblBracketEnd"/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+        <RegExpr attribute="Error" context="#pop" String="(?:[^]&ws;]++|\](?:[^]]|\][^&ws;]))++" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="FindExprDblBracketEnd">
+        <IncludeRules context="FindEscape"/>
+        <DetectChar context="#pop" char=")" lookAhead="1"/>
+        <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="&amp;" char1="&amp;"/>
+        <Detect2Chars attribute="Control" context="#pop!ExprDblBracket" char="|" char1="|"/>
+        <RegExpr attribute="Keyword" context="#pop" String="&dblbracket_close;" endRegion="expression"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="ExprDblBracketRegex" fallthroughContext="#pop!Regex">
+        <IncludeRules context="FindSpaceAndComment"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="Regex">
+        <DetectIdentifier attribute="Pattern"/>
+        <DetectSpaces attribute="Normal Text" context="#pop!ExprDblBracketFinal"/>
+        <DetectChar attribute="Operator" context="#pop" char=")"/>
+        <Detect2Chars attribute="Operator" context="RegexChar" char="[" char1="^"/>
+        <DetectChar attribute="Operator" context="RegexChar" char="["/>
+        <IncludeRules context="FindRegex"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="ExprDblBracketSubRegex">
+        <DetectIdentifier attribute="Pattern"/>
+        <DetectSpaces attribute="Pattern" context="#stay"/>
+        <DetectChar attribute="Operator" context="#pop" char=")"/>
+        <Detect2Chars attribute="Operator" context="RegexSubChar" char="[" char1="^"/>
+        <DetectChar attribute="Operator" context="RegexSubChar" char="["/>
+        <IncludeRules context="FindRegex"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#stay" name="FindRegex">
+        <DetectChar attribute="Operator" context="ExprDblBracketSubRegex" char="("/>
+        <DetectChar attribute="Escape" context="RegexEscape" char="\"/>
+        <DetectChar attribute="Parameter Expansion" context="RegexDup" char="{"/>
+        <AnyChar attribute="Glob" context="#stay" String="^?+*.|"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar context="RegexDispatchVariables" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="RegexDispatchVariables">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="Operator" context="#pop" char="$"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="RegexEscape">
+        <RegExpr attribute="Escape" context="#pop" String="x[0-9a-fA-F]{1,2}|[0-7]{1,3}|."/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="RegexDup">
+        <Int attribute="Number"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#stay" char=","/>
+        <DetectChar attribute="Parameter Expansion" context="#pop" char="}"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexSubChar" fallthroughContext="#pop!RegexSubInChar">
+        <AnyChar attribute="Pattern" context="#pop!RegexSubInChar" String="-]"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexSubInChar">
+        <DetectSpaces attribute="Pattern" context="#stay"/>
+        <IncludeRules context="RegexInChar"/>
+      </context>
+
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexChar" fallthroughContext="#pop!RegexInChar">
+        <AnyChar attribute="Pattern" context="#pop!RegexInChar" String="-]"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#pop" name="RegexInChar">
+        <Detect2Chars context="RegexInCharEnd" char="-" char1="]" lookAhead="1"/>
+        <DetectChar attribute="Operator" context="#stay" char="-"/>
+        <DetectChar attribute="Escape" context="RegexEscape" char="\"/>
+        <DetectChar context="RegexCharClassSelect" char="[" lookAhead="1"/>
+        <DetectChar attribute="Operator" context="#pop" char="]"/>
+        <AnyChar context="#pop" String="()&ws;" lookAhead="1"/>
+        <IncludeRules context="FindStrings"/>
+      </context>
+      <context attribute="Operator" lineEndContext="#stay" name="RegexInCharEnd">
+        <DetectChar attribute="Pattern" context="#stay" char="-"/>
+        <DetectChar attribute="Operator" context="#pop#pop" char="]"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClassSelect">
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCharClass" char="[" char1=":"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexCollatingSymbols" char="[" char1="."/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop!RegexEquivalenceClass" char="[" char1="="/>
+        <DetectChar attribute="Pattern" context="#pop" char="["/>
+      </context>
+
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCharClass">
+        <DetectIdentifier attribute="Parameter Expansion"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char=":" char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexCollatingSymbols">
+        <DetectIdentifier attribute="Parameter Expansion"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="." char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop#pop" name="RegexEquivalenceClass">
+        <DetectIdentifier attribute="Parameter Expansion"/>
+        <Detect2Chars attribute="Parameter Expansion Operator" context="#pop" char="=" char1="]"/>
+        <DetectChar attribute="Error" context="#pop" char="]"/>
+      </context>
+
+      <!-- SubShell consumes shell input till ) -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubShell" fallthroughContext="Command">
+        <DetectChar attribute="Keyword" context="#pop" char=")" endRegion="subshell"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- Assign consumes an expression till EOL or whitespace -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="Assign" fallthroughContext="#pop!RegularAssign">
+        <DetectChar attribute="Variable" context="#pop!AssignArray" char="("/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="RegularAssign" fallthroughContext="#pop">
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <IncludeRules context="NormalOption"/>
+      </context>
+
+      <!-- AssignArray consumes everything till ), marking assignments -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="AssignArray" fallthroughContext="NormalOption">
+        <IncludeRules context="FindSpaceAndComment"/>
+        <DetectChar attribute="Variable" context="#pop" char=")"/>
+        <DetectChar context="AssignArrayKey" char="[" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="AssignArrayBackq" char="`"/>
+        <DetectChar attribute="Control" context="#stay" char=";"/>
+        <AnyChar attribute="Error" context="#stay" String="&symbolseps;"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKey" fallthroughContext="#pop">
+        <DetectChar attribute="Parameter Expansion Operator" context="AssignArrayKeySubscript" char="["/>
+        <DetectChar attribute="Variable" context="#pop" char="="/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="AssignArrayBackq" fallthroughContext="Command">
+        <DetectChar attribute="Backquote" context="#pop!NormalOption" char="`"/>
+        <DetectChar attribute="Comment" context="CommentBackq" char="#"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- arr=([...]=...)
+                 ~~~
+      -->
+      <context attribute="Normal Text" lineEndContext="#pop" name="AssignArrayKeySubscript">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+        <DetectChar attribute="Control" context="#pop#pop" char=";"/>
+        <IncludeRules context="FindWord"/>
+        <AnyChar attribute="Error" context="#pop" String="&symbolseps;"/>
+      </context>
+
+      <!-- Subscript consumes anything till ], marks as Variable -->
+      <context attribute="Normal Text" name="FindSubscript">
+        <DetectChar attribute="Parameter Expansion Operator" context="Subscript" char="["/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="Subscript" fallthroughContext="SubscriptArithmetic">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="]"/>
+        <IncludeRules context="InSubscript"/>
+      </context>
+      <context attribute="Normal Text" name="InSubscript">
+        <DetectChar context="SubscriptMaybeFlag" char="(" lookAhead="1"/>
+        <!-- so that '-1' in '$var[-1]' is a number rather than an operator -->
+        <DetectChar attribute="Number" context="SubscriptArithmetic" char="-"/>
+        <LineContinue attribute="Escape"/>
+      </context>
+      <!-- $var[(flag)...]
+                ~
+      -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptMaybeFlag" fallthroughContext="#pop!SubscriptArithmetic">
+        <RegExpr attribute="Parameter Expansion" context="SubscriptFlag" String="\((?=(?:[wpfrRiIkKe]+|[snb](?::[^:]*:|\[[^&bracket_close;]*\]|\{[^&brace_close;]*\}|\([^&paren_close;]*\)|([^&paren_close;&brace_close;]).*?\1))+\))"/>
+      </context>
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="SubscriptFlag">
+        <DetectChar attribute="Parameter Expansion" context="SubscriptPattern" char=")"/>
+        <AnyChar attribute="Parameter Expansion" context="SubscriptFlagParam" String="snb"/>
+      </context>
+      <!-- $var[(s:flag:)...]
+                  ~
+      -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParam">
+        <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamReg" char=":"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamParen" char="&paren_open;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamBrace" char="&brace_open;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="SubscriptFlagParamBracket" char="&bracket_open;"/>
+        <RegExpr attribute="Parameter Expansion Operator" context="SubscriptFlagParamAny" String="(.)"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamReg">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=":"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamParen">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="&paren_close;"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamBrace">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="&brace_close;"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamBracket">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="&bracket_close;"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptFlagParamAny">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <!-- $var[(flag)...]
+                      ~~~
+      -->
+      <context attribute="Pattern" lineEndContext="#stay" name="SubscriptPattern">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop#pop" char="]"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop" char=","/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindSingleGlob"/>
+        <IncludeRules context="FindGlobAny"/>
+        <IncludeRules context="FindGroupPattern"/>
+      </context>
+      <!-- $var[...]
+                ~~~ math
+      Same as FindArithmetic, but with a difference for Operator, '$' and text
+      which are not variables in this context.
+      A text is a variable only with a non-associative array.
+      -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="SubscriptArithmetic">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>
+        <IncludeRules context="FindBranchCondition"/>
+        <AnyChar attribute="Operator" context="#pop" String="@&arithmetic_op;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=","/>
+        <IncludeRules context="FindNumber"/>
+        <IncludeRules context="FindSubscript"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar context="VariableOrSubscriptPos" char="$" lookAhead="1"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+        <IncludeRules context="FindEscape"/>
+        <IncludeRules context="FindToNum"/>
+        <DetectChar context="MaybeArithmeticBrace" char="{" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#pop" name="VariableOrSubscriptPos">
+        <IncludeRules context="DispatchVariables"/>
+        <DetectChar attribute="Number" context="#pop" char="$"/>
+      </context>
+
+      <!-- FunctionDef consumes a name, possibly with (), marks as Function -->
+      <context attribute="Function" lineEndContext="#pop" name="FunctionDef" fallthroughContext="#pop">
+        <Detect2Chars attribute="Operator" context="#pop" char="(" char1=")"/>
+        <DetectSpaces attribute="Normal Text" context="FunctionNameStart"/>
+      </context>
+      <context attribute="Function" lineEndContext="#pop" name="FunctionNameStart" fallthroughContext="#pop!FunctionName">
+        <AnyChar context="#pop#pop" String="&symbolseps;#" lookAhead="1"/>
+        <DetectChar context="FunctionNameStartMaybeBraceExpansion" char="{" lookAhead="1"/>
+      </context>
+      <context attribute="Function" lineEndContext="#pop" name="FunctionName">
+        <AnyChar context="#pop" String="&ws;(" lookAhead="1"/>
+        <IncludeRules context="FindWord"/>
+        <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar context="NormalOptionMaybeGroupEnd" char="}" lookAhead="1"/>
+        <DetectIdentifier attribute="Function"/>
+      </context>
+      <context attribute="Function" lineEndContext="#pop" name="FunctionNameRecBrace" fallthroughContext="#pop">
+        <IncludeRules context="FindWord"/>
+        <DetectChar context="FunctionNameMaybeBraceExpansion" char="{" lookAhead="1"/>
+        <DetectChar attribute="Function" context="#pop" char="}"/>
+        <DetectIdentifier attribute="Function"/>
+      </context>
+      <context attribute="Function" lineEndContext="#pop" name="FunctionNameStartMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Keyword" context="#pop#pop#pop!Group" char="{" beginRegion="group"/>
+      </context>
+      <context attribute="Function" lineEndContext="#pop" name="FunctionNameMaybeBraceExpansion">
+        <IncludeRules context="DispatchBraceExpansion"/>
+        <DetectChar attribute="Function" context="#pop!FunctionNameRecBrace" char="{" beginRegion="group"/>
+      </context>
+
+      <!-- Case is called after the case keyword is encoutered. We handle this because of
+           the lonely closing parentheses that would otherwise disturb the expr matching -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="Case">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="#pop!CaseAlt" char="{"/>
+        <WordDetect attribute="Keyword" context="#pop!CaseIn" String="in"/>
+        <IncludeRules context="FindWord"/>
+        <DetectIdentifier attribute="Normal Text" context="#stay"/>
+      </context>
+
+      <!-- CaseIn is called when the construct 'case ... in' has been found. -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseIn" fallthroughContext="CasePattern">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="CaseClosedPattern" char="("/>
+        <DetectChar attribute="Comment" context="Comment" char="#"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="CasePattern">
+        <WordDetect attribute="Control Flow" context="#pop#pop" String="esac" endRegion="case"/>
+        <IncludeRules context="CaseClosedPattern"/>
+      </context>
+      <context attribute="Pattern" lineEndContext="#stay" name="CaseClosedPattern">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="#pop!CaseExpr" char=")" beginRegion="caseexpr"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="Keyword" context="#stay" char="|"/>
+        <IncludeRules context="FindWord"/>
+        <IncludeRules context="FindPattern"/>
+        <DetectIdentifier attribute="Pattern" context="#stay"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseAlt" fallthroughContext="CasePattern">
+        <DetectSpaces attribute="Normal Text" context="#stay"/>
+        <DetectChar attribute="Keyword" context="CasePattern" char="("/>
+        <DetectChar attribute="Keyword" context="#pop!CaseAltEnd" char="}" endRegion="caseexpr" lookAhead="1"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseAltEnd">
+        <DetectChar attribute="Keyword" context="#pop" char="}" endRegion="case"/>
+      </context>
+
+      <!-- CaseExpr eats shell input till ;; / ;& / ;| -->
+      <context attribute="Normal Text" lineEndContext="#stay" name="CaseExpr" fallthroughContext="Command">
+        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="|" endRegion="caseexpr"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1=";" endRegion="caseexpr"/>
+        <Detect2Chars attribute="Control Flow" context="#pop" char=";" char1="&amp;" endRegion="caseexpr"/>
+        <WordDetect context="#pop" String="esac" endRegion="caseexpr" lookAhead="1"/>
+        <DetectChar context="#pop" char="}" lookAhead="1"/>
+        <IncludeRules context="Start"/>
+      </context>
+
+      <!-- ExprGlobParen is called after a ( is encountered in a argument -->
+      <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParen" fallthroughContext="#pop">
+        <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlag" char="(" char1="#"/>
+        <RegExpr attribute="Glob" context="#pop!ExtGlobPattern" String="\((?=&ispattern;)"/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>
+      </context>
+      <context attribute="Glob Flag" lineEndContext="#pop" name="ExprGlobParenThenPath" fallthroughContext="#pop">
+        <Detect2Chars attribute="Glob Flag" context="#pop!GlobPatFlagThenPath" char="(" char1="#"/>
+        <RegExpr attribute="Glob" context="#pop!ExtGlobPatternThenPath" String="\((?=&ispattern;)"/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="("/>
+      </context>
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier">
+        <AnyChar attribute="Glob Flag" context="#stay" String="/F.@=p*%bcrwxAIERWXsStUG^-MTNDn"/>
+        <AnyChar attribute="Glob Flag" context="GlobQualifier_e" String="eP"/>
+        <AnyChar attribute="Glob Flag" context="GlobQualifier_u" String="ug"/>
+        <AnyChar attribute="Glob Flag" context="GlobQualifier_a" String="amc"/>
+        <AnyChar attribute="Glob Flag" context="GlobQualifier_o" String="oO"/>
+        <DetectChar attribute="Glob Flag" context="GlobQualifier_f" char="f"/>
+        <DetectChar attribute="Glob Flag" context="GlobQualifier_+" char="+"/>
+        <DetectChar attribute="Glob Flag" context="GlobQualifier_d" char="d"/>
+        <DetectChar attribute="Glob Flag" context="GlobQualifier_L" char="L"/>
+        <DetectChar attribute="Glob Flag" context="GlobQualifier_Y" char="Y"/>
+        <IncludeRules context="FindSubscript"/>
+
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifiers" char=":"/>
+        <DetectChar attribute="Glob Flag" context="#pop" char=")"/>
+        <IncludeRules context="FindWord"/>
+      </context>
+
+      <context attribute="Normal Text" lineEndContext="#pop" name="GlobQualifier_o" fallthroughContext="#pop">
+        <AnyChar attribute="Normal Text" context="#stay" String="nLlamcdN"/>
+      </context>
+
+      <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_Y" fallthroughContext="#pop">
+        <IncludeRules context="FindDigit"/>
+      </context>
+
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_L" fallthroughContext="#pop">
+        <AnyChar attribute="Normal Text" context="#stay" String="kKmMpPgGtT"/>
+        <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>
+      </context>
+
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_a" fallthroughContext="#pop">
+        <AnyChar attribute="Normal Text" context="#stay" String="Mwhmsd"/>
+        <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="-+0123456789"/>
+      </context>
+
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_+" fallthroughContext="#pop">
+        <RegExpr attribute="Function" context="#pop" String="[^&_fragpathseps;=,\[]+"/>
+      </context>
+
+      <context attribute="Path" lineEndContext="#pop" name="GlobQualifier_d">
+        <AnyChar context="#pop" String=")," lookAhead="1"/>
+      </context>
+
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_u">
+        <AnyChar attribute="Number" context="#pop!GlobQualifier_Y" String="0123456789"/>
+        <IncludeRules context="GlobQualifier_e"/>
+      </context>
+
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_f" fallthroughContext="#pop">
+        <AnyChar attribute="Number" context="#pop!GlobQualifier_fo" String="0123456789=+-"/>
+        <DetectChar attribute="Glob" context="#pop!GlobQualifier_fo" char="?"/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f[" char="["/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f&lt;" char="&lt;"/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_f{" char="{"/>
+        <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_fx" String="(.)"/>
+      </context>
+      <context attribute="Number" lineEndContext="#pop" name="GlobQualifier_fo" fallthroughContext="#pop">
+        <IncludeRules context="FindDigit"/>
+        <DetectChar attribute="Glob" context="#stay" char="?"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f[">
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Glob Flag" context="#pop" char="]"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f&lt;">
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Glob Flag" context="#pop" char=">"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_f{">
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Glob Flag" context="#pop" char="}"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_fx">
+        <DetectChar attribute="Operator" context="#stay" char=","/>
+        <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>
+      </context>
+
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobQualifier_e" fallthroughContext="#pop">
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e[" char="["/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e&lt;" char="&lt;"/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier_e{" char="{"/>
+        <RegExpr attribute="Glob Flag" context="#pop!GlobQualifier_ex" String="(.)"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="IncGlobQualifier_e">
+        <IncludeRules context="FindStrings"/>
+        <IncludeRules context="FindVariable"/>
+        <DetectChar attribute="Backquote" context="RegularBackq" char="`"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e[">
+        <DetectChar attribute="Glob Flag" context="#pop" char="]"/>
+        <IncludeRules context="IncGlobQualifier_e"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e&lt;">
+        <DetectChar attribute="Glob Flag" context="#pop" char=">"/>
+        <IncludeRules context="IncGlobQualifier_e"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_e{">
+        <DetectChar attribute="Glob Flag" context="#pop" char="}"/>
+        <IncludeRules context="IncGlobQualifier_e"/>
+      </context>
+      <context attribute="Normal Text" lineEndContext="#stay" name="GlobQualifier_ex">
+        <DetectChar attribute="Glob Flag" context="#pop" char="1" dynamic="1"/>
+        <IncludeRules context="IncGlobQualifier_e"/>
+      </context>
+
+      <!-- GlobPatFlag is called after a (# is encountered -->
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlag" fallthroughContext="#pop">
+        <IncludeRules context="IncGlobPatFlag"/>
+        <DetectChar attribute="Glob Flag" context="#pop" char=")"/>
+      </context>
+      <context attribute="Glob Flag" lineEndContext="#pop" name="GlobPatFlagThenPath" fallthroughContext="#pop">
+        <IncludeRules context="IncGlobPatFlag"/>
+        <DetectChar attribute="Glob Flag" context="#pop!PathThenPop" char=")"/>
+      </context>
+      <context attribute="Glob Flag" lineEndContext="#pop" name="IncGlobPatFlag" fallthroughContext="#pop">
+        <AnyChar attribute="Glob Flag" context="#stay" String="ilIbBcmMaseuU,"/>
+        <IncludeRules context="FindDigit"/>
+        <DetectChar attribute="Glob Flag" context="#pop!GlobQualifier" char="q"/>
+      </context>
+
+      <!-- GlobModifier is called after a : is encountered in a GlobQualifier -->
+      <context attribute="Error" lineEndContext="#pop" name="GlobModifiers" fallthroughContext="GlobModifierNext">
+        <AnyChar attribute="Parameter Expansion" context="GlobModifierNext" String="aAcelpPqQrux"/>
+        <AnyChar attribute="Parameter Expansion" context="GlobModifier_h" String="ht"/>
+        <AnyChar attribute="Parameter Expansion" String="fw"/>
+        <StringDetect attribute="Parameter Expansion" context="GlobModifier_s" String="s"/>
+        <StringDetect attribute="Parameter Expansion" context="GlobModifier_s" String="gs"/>
+        <StringDetect attribute="Parameter Expansion" context="GlobModifierNext" String="\&amp;"/>
+        <StringDetect attribute="Parameter Expansion" context="GlobModifierNext" String="g\&amp;"/>
+        <StringDetect attribute="Parameter Expansion" context="GlobModifier_W" String="W"/>
+        <StringDetect attribute="Parameter Expansion" context="GlobModifier_F" String="F"/>
+      </context>
+      <context attribute="Error" lineEndContext="#pop#pop" name="GlobModifierNext">
+        <DetectChar attribute="Glob Flag" context="#pop#pop" char="&paren_close;"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char=":"/>
+        <AnyChar context="#pop#pop" String="&wordseps;" lookAhead="1"/>
+      </context>
+
+      <!-- *(:h3)  *(:t11)
+               ~       ~~
+      -->
+      <context attribute="Parameter Expansion" lineEndContext="#pop#pop" name="GlobModifier_h" fallthroughContext="#pop!GlobModifierNext">
+        <IncludeRules context="FindDigit"/>
+      </context>
+
+
+      <!-- *(#q:s/../....}
+                 ~~~~~...
+      -->
+      <context attribute="Parameter Expansion" lineEndContext="#stay" name="GlobModifier_s" fallthroughContext="#pop!GlobModifierNext">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Str" char="/"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_StrSQ_Sep" char="'"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_StrDQ_Sep" char='"'/>
+        <RegExpr attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_C_Rep!GlobModifier_s_C_Str" String="([^&symbolseps;\[\]{}\\])"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobModifier_End">
+        <AnyChar context="#pop!GlobModifierNext" String="&wordseps;&paren_close;" lookAhead="1"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobModifier_End2">
+        <AnyChar context="#pop#pop!GlobModifierNext" String="&wordseps;&paren_close;" lookAhead="1"/>
+      </context>
+      <!-- By default the left-hand side of substitutions are character strings,
+      but pattern with HIST_SUBST_PATTERN option. Assume no option. -->
+      <!-- *(#q:s/../....)
+                  ~~~
+      -->
+      <context attribute="Verbatim String" name="GlobModifier_s_Str">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char="/"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="String SingleQ" context="GlobModifier_s_StrSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="GlobModifier_s_StrDQ" char='"'/>
+        <DetectChar attribute="Verbatim String" context="GlobModifier_s_StrSQ!GlobModifier_s_StrDQ_to_Rep!GlobModifier_s_Str_Recursive" char="("/>
+        <DetectChar attribute="Glob Flag" context="#pop#pop" char=")"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobModifier_s_Str_Recursive">
+        <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_StrSQ_Recursive" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_StrDQ_Recursive" char='"'/>
+        <DetectChar attribute="Verbatim String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!GlobModifier_s_Str_Recursive" char="("/>
+        <DetectChar context="#pop#pop#pop" char=")"/>
+      </context>
+      <!-- #pop -> is GlobModifier_s_C_Rep -->
+      <context attribute="Verbatim String" name="GlobModifier_s_C_Str">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop" char="1" dynamic="1"/>
+        <IncludeRules context="FindEscape"/>
+        <!-- The string should stop if capture $1 is found,
+        but there is no way to propagate the capture. -->
+        <IncludeRules context="FindStrings"/>
+        <DetectChar attribute="Verbatim String" context="GlobModifier_s_C_Str_Recursive" char="("/>
+        <DetectChar attribute="Glob Flag" context="#pop#pop#pop" char=")"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobModifier_s_C_Str_Recursive">
+        <IncludeRules context="FindEscape"/>
+        <IncludeRules context="FindStrings"/>
+        <DetectChar attribute="Verbatim String" context="GlobModifier_s_C_Str_Recursive" char="("/>
+        <DetectChar context="#pop" char=")"/>
+      </context>
+      <!-- *(#q:s/..'../..'..}  *(#q:s/..'..'../..}
+                    ~~~~                 ~~~~
+      -->
+      <context attribute="String SingleQ" name="GlobModifier_s_StrSQ">
+        <DetectChar attribute="String SingleQ" context="#pop" char="'"/>
+        <LineContinue attribute="Escape"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!GlobModifier_s_Rep!GlobModifier_s_RepSQ" char="/"/>
+      </context>
+      <!-- *(#q:s'..'..}
+                 ~~~~
+      -->
+      <context attribute="Verbatim String" name="GlobModifier_s_StrSQ_Sep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char="'"/>
+        <LineContinue attribute="Escape"/>
+      </context>
+      <!-- *(#q:s/.."../.."..}  *(#q:s/..".."../..}
+                    ~~~~                 ~~~~
+      -->
+      <context attribute="String DoubleQ" name="GlobModifier_s_StrDQ">
+        <DetectChar attribute="String DoubleQ" context="#pop" char='"'/>
+        <IncludeRules context="FindEscape"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop!GlobModifier_s_Rep!GlobModifier_s_RepDQ" char="/"/>
+      </context>
+      <context attribute="Error" name="GlobModifier_s_StrDQ_to_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop#pop!GlobModifier_s_Rep!GlobModifier_s_RepDQ" char="/"/>
+      </context>
+      <!-- *(#q:s".."..}
+                 ~~~~
+      -->
+      <context attribute="String DoubleQ" name="GlobModifier_s_StrDQ_Sep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifier_s_Rep" char='"'/>
+        <IncludeRules context="FindEscape"/>
+      </context>
+      <!-- *(#q:s/../....}
+                     ~~..
+      -->
+      <context attribute="Replacement String" name="GlobModifier_s_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifierNext" char="/"/>
+        <!-- FindWord with a search for '/' in single and double quoted string -->
+        <DetectChar attribute="String SingleQ" context="GlobModifier_s_RepSQ" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="GlobModifier_s_RepDQ" char="&quot;"/>
+        <DetectChar attribute="Replacement String" context="GlobModifier_s_RepSQ!GlobModifier_s_RepDQ_to_End!GlobModifier_s_Rep_Recursive" char="&paren_open;"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <IncludeRules context="GlobModifier_End"/>
+      </context>
+      <context attribute="Replacement String" name="GlobModifier_s_Rep_Recursive">
+        <DetectChar context="#pop#pop#pop" char="/" lookAhead="1"/>
+        <DetectChar attribute="String SingleQ" context="VarBraceModifier_s_RepSQ_Recursive" char="'"/>
+        <DetectChar attribute="String DoubleQ" context="VarBraceModifier_s_RepDQ_Recursive" char='"'/>
+        <DetectChar attribute="Replacement String" context="Modifier_s_Str_to_Parent!Modifier_s_Str_to_Parent!GlobModifier_s_Rep_Recursive" char="("/>
+        <DetectChar context="#pop#pop#pop" char=")"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>
+      </context>
+      <context attribute="Replacement String" name="GlobModifier_s_C_Rep">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop!GlobModifierNext" char="1" dynamic="1"/>
+        <!-- The string should stop if capture $1 is found,
+        but there is no way to propagate the capture. -->
+        <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>
+        <DetectChar attribute="Replacement String" context="GlobModifier_s_C_Rep_Recursive" char="&paren_open;"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <IncludeRules context="GlobModifier_End"/>
+      </context>
+      <context attribute="Replacement String" name="GlobModifier_s_C_Rep_Recursive">
+        <IncludeRules context="FindVarNameModifier_s_C_RepQ"/>
+        <IncludeRules context="VarBraceModifier_s_Rep_Common"/>
+        <DetectChar attribute="Replacement String" context="GlobModifier_s_C_Rep_Recursive" char="("/>
+        <DetectChar context="#pop" char=")"/>
+        <AnyChar context="#pop" String="&symbolseps;" lookAhead="1"/>
+      </context>
+      <!-- *(#q:s/../..'../'..}  *(#q:s/../..'..'..}
+                       ~~~~                  ~~~~
+      -->
+      <context attribute="String SingleQ" name="GlobModifier_s_RepSQ">
+        <IncludeRules context="VarNameModifier_s_C_RepSQ"/>
+        <DetectChar attribute="Error" context="#pop#pop!GlobModifierNext!StringSQ" char="/"/>
+      </context>
+      <!-- *(#q:s/../.."../"..}  *(#q:s/../..".."..}
+                       ~~~~                  ~~~~
+      -->
+      <context attribute="String DoubleQ" name="GlobModifier_s_RepDQ">
+        <IncludeRules context="VarNameModifier_s_C_RepDQ"/>
+        <DetectChar attribute="Error" context="#pop#pop!GlobModifierNext!StringDQ" char="/"/>
+      </context>
+      <context attribute="String DoubleQ" name="GlobModifier_s_RepDQ_to_End">
+        <DetectChar attribute="Error" context="#pop#pop#pop!GlobModifierNext!StringDQ" char="/"/>
+      </context>
+
+
+      <!-- *(:F(expr)h)
+               ~~~~~~
+      -->
+      <context attribute="Normal Text" name="GlobModifier_F" lineEndContext="#pop!GlobModifierNext" fallthroughContext="#pop!GlobModifierNext">
+        <IncludeRules context="FindStringsThenPop"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamColon" char=":"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamParen" char="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamBracket" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobArithmeticParamBrace" char="{"/>
+        <RegExpr attribute="Parameter Expansion Operator" context="GlobArithmeticParamDyn" String="([^&symbolseps;])"/>
+      </context>
+      <context attribute="Normal Text" name="GlobArithmeticParamParen">
+        <IncludeRules context="GlobVerbatimParamParen"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="GlobArithmeticParamBracket">
+        <IncludeRules context="GlobVerbatimParamBracket"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="GlobArithmeticParamBrace">
+        <IncludeRules context="GlobVerbatimParamBrace"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="GlobArithmeticParamColon">
+        <IncludeRules context="GlobVerbatimParamColon"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <context attribute="Normal Text" name="GlobArithmeticParamDyn">
+        <IncludeRules context="GlobVerbatimParamDyn"/>
+        <IncludeRules context="FindArithmetic"/>
+      </context>
+      <!-- *(:W(xxx)h)
+               ~~~~~
+      -->
+      <context attribute="Normal Text" name="GlobModifier_W" lineEndContext="#pop!GlobModifierNext" fallthroughContext="#pop!GlobModifierNext">
+        <IncludeRules context="FindStringsThenPop"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamColon" char=":"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamParen" char="("/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamBracket" char="["/>
+        <DetectChar attribute="Parameter Expansion Operator" context="GlobVerbatimParamBrace" char="{"/>
+        <RegExpr attribute="Parameter Expansion Operator" context="GlobVerbatimParamDyn" String="([^&symbolseps;])"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobVerbatimParamParen">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=")"/>
+        <IncludeRules context="GlobModifier_End2"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobVerbatimParamBracket">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="]"/>
+        <IncludeRules context="GlobModifier_End2"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobVerbatimParamBrace">
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="}"/>
+        <IncludeRules context="GlobModifier_End2"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobVerbatimParamColon">
+        <IncludeRules context="GlobModifier_End2"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char=":"/>
+      </context>
+      <context attribute="Verbatim String" name="GlobVerbatimParamDyn">
+        <IncludeRules context="GlobModifier_End2"/>
+        <DetectChar attribute="Parameter Expansion Operator" context="#pop#pop" char="1" dynamic="1"/>
+      </context>
+
+    </contexts>
+
+    <itemDatas>
+      <itemData name="Normal Text"    defStyleNum="dsNormal"/>
+      <itemData name="Comment"        defStyleNum="dsComment"/>
+      <itemData name="Keyword"        defStyleNum="dsKeyword"       spellChecking="false"/>
+      <itemData name="Control"        defStyleNum="dsKeyword"       spellChecking="false"/>
+      <itemData name="Control Flow"   defStyleNum="dsControlFlow"   spellChecking="false"/>
+      <itemData name="Builtin"        defStyleNum="dsBuiltIn"       spellChecking="false"/>
+      <itemData name="Command"        defStyleNum="dsFunction"      spellChecking="false"/>
+      <itemData name="OtherCommand"   defStyleNum="dsExtension"     spellChecking="false"/>
+      <itemData name="Redirection"    defStyleNum="dsOperator"      spellChecking="false"/>
+      <itemData name="Escape"         defStyleNum="dsDataType"      spellChecking="false"/>
+      <itemData name="String SingleQ" defStyleNum="dsString"/>
+      <itemData name="String DoubleQ" defStyleNum="dsString"/>
+      <itemData name="Verbatim String" defStyleNum="dsVerbatimString" spellChecking="false"/>
+      <itemData name="Replacement String" defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="Here Doc"       defStyleNum="dsString"/>
+      <itemData name="Backquote"      defStyleNum="dsKeyword"       spellChecking="false"/>
+      <itemData name="String Escape"  defStyleNum="dsDataType"/>
+      <itemData name="Variable"       defStyleNum="dsVariable"      spellChecking="false"/>
+      <itemData name="Dollar Prefix"  defStyleNum="dsVariable"      spellChecking="false"/>
+      <itemData name="Expression"     defStyleNum="dsOthers"        spellChecking="false"/>
+      <itemData name="Function"       defStyleNum="dsFunction"      spellChecking="false"/>
+      <itemData name="Pattern"        defStyleNum="dsSpecialString" spellChecking="false"/>
+      <itemData name="Path"           defStyleNum="dsNormal"        spellChecking="false"/>
+      <itemData name="Glob"           defStyleNum="dsPreprocessor"  spellChecking="false"/>
+      <itemData name="Glob Flag"      defStyleNum="dsOperator"      spellChecking="false"/>
+      <itemData name="Option"         defStyleNum="dsAttribute"     spellChecking="false"/>
+      <itemData name="Hex"            defStyleNum="dsBaseN"         spellChecking="false"/>
+      <itemData name="Number"         defStyleNum="dsDecVal"        spellChecking="false"/>
+      <itemData name="Base"           defStyleNum="dsPreprocessor"  spellChecking="false"/>
+      <itemData name="BaseN"          defStyleNum="dsBaseN"         spellChecking="false"/>
+      <itemData name="File Descriptor" defStyleNum="dsDecVal"       spellChecking="false"/>
+      <itemData name="Parameter Expansion" defStyleNum="dsVariable" spellChecking="false"/>
+      <itemData name="Parameter Expansion Operator" defStyleNum="dsOperator" spellChecking="false"/>
+      <itemData name="Operator"       defStyleNum="dsOperator"      spellChecking="false"/>
+      <itemData name="Error"          defStyleNum="dsError"         spellChecking="false"/>
+    </itemDatas>
+  </highlighting>
+  <general>
+    <comments>
+      <comment name="singleLine" start="#" position="afterwhitespace"/>
     </comments>
     <keywords casesensitive="1" weakDeliminator="^%#[]$._:-/" additionalDeliminator="`"/>
   </general>
