diff --git a/bin/extract.hs b/bin/extract.hs
--- a/bin/extract.hs
+++ b/bin/extract.hs
@@ -1,67 +1,77 @@
 {-# LANGUAGE Arrows #-}
 
 import Data.Binary (encode)
-import Data.Either (partitionEithers)
-import Data.List (intercalate, isInfixOf)
+import Data.List (intercalate, isInfixOf, sortOn)
 import qualified Data.Text as Text
-import Skylighting.Parser (missingIncludes, parseSyntaxDefinition)
+import Skylighting.Loader (loadSyntaxesFromDir)
+import Skylighting.Parser (missingIncludes)
 import Skylighting.Types
 import System.Directory
 import System.Environment (getArgs)
 import System.Exit
 import System.IO (hPutStrLn, stderr)
 import System.FilePath
+import qualified Data.Map as M
 
 main :: IO ()
 main = do
   createDirectoryIfMissing True $ "src" </> "Skylighting" </> "Syntax"
   files <- getArgs
-  (errs, syntaxes) <- partitionEithers <$> mapM parseSyntaxDefinition files
-  mapM_ (hPutStrLn stderr) errs
-  mapM_ writeModuleFor syntaxes
+  res <- case files of
+           []  -> return $ Left "No directory specified"
+           [d] -> loadSyntaxesFromDir d
+           _   -> return $ Left "Too many directories specified"
+  case res of
+    Left err -> hPutStrLn stderr err >> exitWith (ExitFailure 1)
+    Right sm -> do
+      let syntaxes = sortOn sShortname $ M.elems sm
+      mapM_ writeModuleFor syntaxes
 
-  case missingIncludes syntaxes of
-       [] -> return ()
-       ns -> do
-         mapM_ (\(syn,dep) -> hPutStrLn stderr
-             ("Missing syntax definition: " ++ Text.unpack syn ++ " requires " ++
-               Text.unpack dep ++ " through IncludeRules.")) ns
-         hPutStrLn stderr "Fatal error."
-         exitWith (ExitFailure 1)
+      case missingIncludes syntaxes of
+           [] -> return ()
+           ns -> do
+             mapM_ (\(syn,dep) -> hPutStrLn stderr
+                 ("Missing syntax definition: " ++ Text.unpack syn ++
+                   " requires " ++
+                   Text.unpack dep ++ " through IncludeRules.")) ns
+             hPutStrLn stderr "Fatal error."
+             exitWith (ExitFailure 1)
 
-  putStrLn "Backing up skylighting.cabal to skylighting.cabal.orig"
-  copyFile "skylighting.cabal" "skylighting.cabal.orig"
+      putStrLn "Backing up skylighting.cabal to skylighting.cabal.orig"
+      copyFile "skylighting.cabal" "skylighting.cabal.orig"
 
-  putStrLn "Updating module list in skylighting.cabal"
-  cabalLines <- lines <$> readFile "skylighting.cabal.orig"
-  let (top, rest) = break ("other-modules:" `isInfixOf`) cabalLines
-  let (_, bottom) = span ("Skylighting.Syntax." `isInfixOf`) (drop 1 rest)
-  let modulenames = map (\s -> "Skylighting.Syntax." ++
-                          Text.unpack (sShortname s)) syntaxes
-  let autogens = map ((replicate 23 ' ') ++) modulenames
-  let newcabal = unlines $ top ++ ("  other-modules:" : autogens) ++ bottom
-  writeFile "skylighting.cabal" newcabal
+      putStrLn "Updating module list in skylighting.cabal"
+      cabalLines <- lines <$> readFile "skylighting.cabal.orig"
+      let (top, rest) = break ("other-modules:" `isInfixOf`) cabalLines
+      let (_, bottom) = span ("Skylighting.Syntax." `isInfixOf`) (drop 1 rest)
+      let modulenames = map (\s -> "Skylighting.Syntax." ++
+                              Text.unpack (sShortname s)) syntaxes
+      let autogens = map ((replicate 23 ' ') ++) modulenames
+      let newcabal = unlines $ top ++ ("  other-modules:" : autogens) ++
+                               bottom
+      writeFile "skylighting.cabal" newcabal
 
-  let ssyn = "src" </> "Skylighting" </> "Syntax.hs"
-  putStrLn $ "Writing " ++ ssyn
-  writeFile ssyn $ unlines (
-     [ "{-# LANGUAGE OverloadedStrings #-}"
-     , "-- | Provides syntax highlighting definitions."
-     , "-- THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT IT MANUALLY."
-     , "module Skylighting.Syntax (defaultSyntaxMap) where"
-     , "import qualified Data.Map as Map"
-     , "import Skylighting.Types" ] ++
-     [ "import qualified " ++ m | m <- modulenames ]
-     ++
-     [ ""
-     , "-- | Default mapping from short names to syntax definitions."
-     , "defaultSyntaxMap :: SyntaxMap"
-     , "defaultSyntaxMap = Map.fromList ["
-     ]) ++ "   " ++
-     (intercalate "\n  ,"
-       ["  (" ++ show (Text.unpack $ sName s) ++ ", "
-              ++ "Skylighting.Syntax." ++ Text.unpack (sShortname s) ++ ".syntax)"
-                  | s <- syntaxes ]) ++ " ]"
+      let ssyn = "src" </> "Skylighting" </> "Syntax.hs"
+      putStrLn $ "Writing " ++ ssyn
+      writeFile ssyn $ unlines (
+         [ "{-# LANGUAGE OverloadedStrings #-}"
+         , "-- | Provides syntax highlighting definitions."
+         , "-- THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT IT MANUALLY."
+         , "module Skylighting.Syntax (defaultSyntaxMap) where"
+         , "import qualified Data.Map as Map"
+         , "import Skylighting.Types" ] ++
+         [ "import qualified " ++ m | m <- modulenames ]
+         ++
+         [ ""
+         , "-- | Default mapping from short names to syntax definitions."
+         , "defaultSyntaxMap :: SyntaxMap"
+         , "defaultSyntaxMap = Map.fromList ["
+         ]) ++ "   " ++
+         (intercalate "\n  ,"
+           ["  (" ++ show (Text.unpack $ sName s) ++ ", "
+                  ++ "Skylighting.Syntax." ++ Text.unpack (sShortname s) ++
+                  ".syntax)"
+                      | s <- syntaxes ]) ++ " ]"
 
 writeModuleFor :: Syntax -> IO ()
 writeModuleFor syn = do
diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,5 +1,43 @@
 # Revision history for skylighting and skylighting-core
 
+## 0.12
+
+  * Properly handle include elements in keyword lists (#124).
+    A number of syntaxes (e.g. typescript, scala) include keyword
+    lists from other syntaxe,s and previously we weren't able to
+    handle this.
+
+    There are several pieces to this change.  We need to store lists
+    where other Syntaxes can look them up, so we add an `sLists`
+    field to `Syntax` [API change], and modify the parser to fill this.
+    We change lists so that their values are not just a `Text`, but a
+    `ListItem` that can either be a textual value or an include directive,
+    specifying a `ListName` (syntax name and list name).
+
+    The `Keyword` constructor for `Matcher` now takes, instead of a
+    `WordSet`, Either a `ListName` or a `WordSet` (API change).
+
+    Skylighting.Parser now exports `resolveKeywords` (API change),
+    which modifies all `Keyword` matchers in a syntax so that Left
+    values with a `ListName` become Right values with resolved `WordSet`s.
+    The tokenizer applies this function automatically to the SyntaxMap
+    given in Config.  But it is more efficient to do this conversion
+    just once, rather than every time `tokenize` is called. So we have
+    `loadSyntaxesFromDir` call it on the `SyntaxMap`.  With this
+    optimization, there is not an appreciable performance cost to the
+    changes described above.
+
+  * Skylighting.Regex: Fix bug with regexes like `a{10}b` (#133).
+    This requires exactly 10 a's; previously we interpreted it as
+    "at least 10."
+
+  * skylighting-extract: take a directory as argument rather than files.
+    This allows us to use `loadSyntaxesFromDir`.
+
+  * Update xml syntax definitions from upstream:
+    julia, cmake, cpp, isocpp, markdown, python, toml.
+
+
 ## 0.11
 
   * Skylighting.Regex: Support regex subroutines (#118).  For example,
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.11
+version:             0.12
 synopsis:            syntax highlighting library
 description:         Skylighting is a syntax highlighting library.
                      It derives its tokenizers from XML syntax
@@ -196,6 +196,7 @@
                        filepath,
                        text,
                        binary,
+                       containers,
                        directory
   if flag(executable)
     buildable:         True
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
@@ -99,7 +99,7 @@
     123 -> do
       let isDig x = x >= 48 && x < 58
       minn <- option Nothing $ readMay . U.toString <$> A.takeWhile isDig
-      maxn <- option Nothing $ char ',' *>
+      maxn <- option minn $ char ',' *>
                        (readMay . U.toString <$> A.takeWhile isDig)
       _ <- char '}'
       case (minn, maxn) of
diff --git a/src/Skylighting/Loader.hs b/src/Skylighting/Loader.hs
--- a/src/Skylighting/Loader.hs
+++ b/src/Skylighting/Loader.hs
@@ -12,7 +12,9 @@
 import System.Directory (listDirectory, doesFileExist)
 import System.FilePath ((</>), takeExtension)
 import Skylighting.Types (SyntaxMap, Syntax)
-import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition)
+import Skylighting.Parser (addSyntaxDefinition, parseSyntaxDefinition,
+                           resolveKeywords)
+import qualified Data.Map as M
 #if !MIN_VERSION_base(4,11,0)
 import Data.Semigroup
 #endif
@@ -44,7 +46,8 @@
             s <- ExceptT $ loadSyntaxFromFile file
             return $ addSyntaxDefinition s sMap
 
-    foldM loadSyntax mempty files
+    sm <- foldM loadSyntax mempty files
+    return $ M.map (resolveKeywords sm) sm
 
 syntaxFiles :: FilePath -> IO [FilePath]
 syntaxFiles dir = do
diff --git a/src/Skylighting/Parser.hs b/src/Skylighting/Parser.hs
--- a/src/Skylighting/Parser.hs
+++ b/src/Skylighting/Parser.hs
@@ -1,7 +1,10 @@
 {-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE FlexibleContexts #-}
+{-# LANGUAGE TupleSections #-}
 module Skylighting.Parser ( parseSyntaxDefinition
                           , parseSyntaxDefinitionFromText
                           , addSyntaxDefinition
+                          , resolveKeywords
                           , missingIncludes
                           ) where
 
@@ -24,6 +27,7 @@
 import Text.XML
 import qualified Control.Exception as E
 import Control.Monad.Except
+import Control.Monad.Identity
 
 -- | Adds a syntax definition to a syntax map,
 -- replacing any existing definition with the same name.
@@ -75,7 +79,9 @@
 parseSyntaxDefinition :: FilePath -> IO (Either String Syntax)
 parseSyntaxDefinition fp = do
   bs <- BL.readFile fp
-  return $ parseSyntaxDefinitionFromText fp (toTextLazy bs)
+  case parseText def (toTextLazy bs) of
+    Left e    -> return $ Left $ E.displayException e
+    Right doc -> runExceptT (documentToSyntax fp doc)
  where
   toTextLazy = TLE.decodeUtf8 . filterCRs . dropBOM
   dropBOM bs =
@@ -89,12 +95,38 @@
 parseSyntaxDefinitionFromText fp xml =
     case parseText def xml of
       Left e    -> Left $ E.displayException e
-      Right doc -> runExcept $ documentToSyntax fp doc
+      Right doc -> runIdentity $ runExceptT $ documentToSyntax fp doc
 
+-- | Resolve Keyword matchers that refer to lists; following up
+-- include directives in the syntax map and producing WordSets.
+resolveKeywords :: SyntaxMap -> Syntax -> Syntax
+resolveKeywords sm = goSyntax
+ where
+   goSyntax syntax = syntax{ sContexts = M.map (goContext (sLists syntax))
+                                                 (sContexts syntax) }
+   goContext lists context = context{ cRules = map (goRule lists)
+                                                 (cRules context) }
+   goRule lists rule =
+     case rMatcher rule of
+        Keyword kwattr (Left listname) ->
+          case M.lookup listname lists of
+            Nothing -> rule
+            Just lst -> rule{ rMatcher =
+             Keyword kwattr (Right (makeWordSet (keywordCaseSensitive kwattr)
+                                      (foldr goItem [] lst))) }
+        _ -> rule
+
+   goItem (Item t) ts = t:ts
+   goItem (IncludeList (syntaxname,listname)) ts =
+     case M.lookup syntaxname sm >>= M.lookup listname . sLists of
+       Nothing -> ts
+       Just lst -> foldr goItem ts lst
+
 -- | Parses an XML 'Document' as a 'Syntax' description.
-documentToSyntax :: FilePath -- ^ used for short name
+documentToSyntax :: Monad m
+                 => FilePath -- ^ used for short name
                  -> Document
-                 -> Except String Syntax
+                 -> ExceptT String m Syntax
 documentToSyntax fp Document{ documentRoot = rootEl } = do
   unless (elementName rootEl == "language") $
     throwError "Root element is not language"
@@ -134,6 +166,7 @@
            , sExtensions = words $ map (\c -> if c == ';' then ' ' else c)
                                  $ T.unpack
                                  $ getAttrValue "extensions" rootEl
+           , sLists      = lists
            , sContexts   = M.fromList
                   [(cName c, c) | c <- contexts]
            , sStartingContext = startingContext
@@ -155,16 +188,28 @@
 getTextContent el =
   mconcat [t | NodeContent t <- elementNodes el]
 
-getList :: Element -> Except String (Text, [Text])
+getList :: Monad m => Element -> ExceptT String m (Text, [ListItem])
 getList el = do
   case M.lookup "name" (elementAttributes el) of
     Nothing   -> throwError "No name attribute on list"
-    Just name ->
-      return (name, map (T.strip . getTextContent)
-                        (getElementsNamed "item" el))
+    Just name -> (name,) <$>
+                   mapM toListItem [el' | NodeElement el' <- elementNodes el]
+ where
+   toListItem el' = case elementName el' of
+                      "item"    -> return $ Item $ T.strip $ getTextContent el'
+                      "include" -> do
+                        let (syntaxname, listname) =
+                             case T.breakOn "##"
+                                   (T.strip (getTextContent el')) of
+                               (x ,y) | T.null y  -> ("", x)
+                                      | otherwise -> (T.drop 2 y, x)
+                        return $ IncludeList (syntaxname, listname)
+                      x -> throwError $ "Unknown element " ++ show x ++
+                                        " in list"
 
-getParser :: Bool -> Text -> ItemData -> M.Map Text [Text] -> KeywordAttr
-          -> Text -> Element -> Except String Rule
+getParser :: Monad m
+          => Bool -> Text -> ItemData -> M.Map Text [ListItem] -> KeywordAttr
+          -> Text -> Element -> ExceptT String m Rule
 getParser casesensitive syntaxname itemdatas lists kwattr cattr el = do
   let name = nameLocalName . elementName $ el
   let attribute = getAttrValue "attribute" el
@@ -201,10 +246,7 @@
                  "StringDetect" -> return $ StringDetect str
                  "WordDetect" -> return $ WordDetect str
                  "RegExpr" -> return $ re
-                 "keyword" -> return $ Keyword kwattr $
-                    maybe (makeWordSet True [])
-                      (makeWordSet (keywordCaseSensitive kwattr))
-                      (M.lookup str lists)
+                 "keyword" -> return $ Keyword kwattr (Left str)
                  "Int" -> return $ Int
                  "Float" -> return $ Float
                  "HlCOct" -> return $ HlCOct
@@ -237,13 +279,14 @@
                }
 
 
-getContext :: Bool
+getContext :: Monad m
+           => Bool
            -> Text
            -> ItemData
-           -> M.Map Text [Text]
+           -> M.Map Text [ListItem]
            -> KeywordAttr
            -> Element
-           -> Except String Context
+           -> ExceptT String m Context
 getContext casesensitive syntaxname itemDatas lists kwattr el = do
   let name = getAttrValue "name" el
   let attribute = getAttrValue "attribute" el
diff --git a/src/Skylighting/Tokenizer.hs b/src/Skylighting/Tokenizer.hs
--- a/src/Skylighting/Tokenizer.hs
+++ b/src/Skylighting/Tokenizer.hs
@@ -31,6 +31,7 @@
 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
@@ -133,13 +134,17 @@
 tokenize :: TokenizerConfig -> Syntax -> Text -> Either String [SourceLine]
 tokenize config syntax inp =
   eitherStack >>= \stack ->
-    case runTokenizerM action config (startingState stack) of
+    case runTokenizerM action
+            config{ syntaxMap = Map.map (resolveKeywords (syntaxMap config))
+                                          (syntaxMap 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) syntax of
+    eitherStack = case lookupContext (sStartingContext syntax)
+                         (resolveKeywords (syntaxMap config) syntax) of
                     Just c  -> Right $ ContextStack (c :| [])
                     Nothing -> Left "No starting context specified"
     startingState stack =
@@ -290,7 +295,10 @@
                 HlCStringChar -> withAttr attr $ parseCStringChar inp
                 HlCChar -> withAttr attr $ parseCChar inp
                 Float -> withAttr attr $ parseFloat inp
-                Keyword kwattr kws -> withAttr attr $ keyword kwattr kws inp
+                Keyword _kwattr (Left listname) ->
+                  throwError $ "Keyword with unresolved list " <> show listname
+                Keyword kwattr (Right kws) ->
+                  withAttr attr $ keyword kwattr kws inp
                 StringDetect s -> withAttr attr $
                                     stringDetect (rDynamic rule) (rCaseSensitive rule)
                                                  s inp
diff --git a/src/Skylighting/Types.hs b/src/Skylighting/Types.hs
--- a/src/Skylighting/Types.hs
+++ b/src/Skylighting/Types.hs
@@ -15,6 +15,7 @@
               , WordSet(..)
               , makeWordSet
               , inWordSet
+              , ListItem(..)
               , Matcher(..)
               , Rule(..)
               , Context(..)
@@ -104,7 +105,8 @@
   | StringDetect !Text
   | WordDetect !Text
   | RegExpr !RE
-  | Keyword KeywordAttr !(WordSet Text)
+  | Keyword !KeywordAttr (Either Text (WordSet Text))
+      -- Either Left list name (unresolved) or Right wordset (resolved)
   | Int
   | Float
   | HlCOct
@@ -143,12 +145,20 @@
 
 instance Binary Rule
 
+-- | A list item is either just a textual value or an included list.
+-- IncludeList (x,y) includes list y from syntax with full name x.
+data ListItem = Item !Text | IncludeList !(Text, Text)
+  deriving (Show, Eq, Ord, Read, Data, Typeable, Generic)
+
+instance Binary ListItem
+
 -- | A syntax corresponds to a complete Kate syntax description.
 -- The 'sShortname' field is derived from the filename.
 data Syntax = Syntax{
     sName            :: !Text
   , sFilename        :: !String
   , sShortname       :: !Text
+  , sLists           :: !(Map.Map Text [ListItem])
   , sContexts        :: !(Map.Map Text Context)
   , sAuthor          :: !Text
   , sVersion         :: !Text
diff --git a/test/expected/abc.julia.native b/test/expected/abc.julia.native
--- a/test/expected/abc.julia.native
+++ b/test/expected/abc.julia.native
@@ -1,7 +1,5 @@
 [ [ ( KeywordTok , "function" )
-  , ( NormalTok , " abc (str" )
-  , ( OperatorTok , "," )
-  , ( NormalTok , " list)" )
+  , ( NormalTok , " abc (str, list)" )
   ]
 , [ ( NormalTok , "  " )
   , ( FunctionTok , "isempty" )
@@ -23,7 +21,7 @@
   , ( NormalTok , "(list)" )
   ]
 , [ ( NormalTok , "    str[" )
-  , ( ControlFlowTok , "end" )
+  , ( KeywordTok , "end" )
   , ( NormalTok , "] " )
   , ( KeywordTok , "in" )
   , ( NormalTok , " list[i] " )
@@ -40,15 +38,11 @@
   , ( KeywordTok , "end" )
   , ( OperatorTok , "-" )
   , ( FloatTok , "1" )
-  , ( NormalTok , "]" )
-  , ( OperatorTok , "," )
-  , ( NormalTok , " " )
+  , ( NormalTok , "], " )
   , ( FunctionTok , "deleteat!" )
   , ( NormalTok , "(" )
   , ( FunctionTok , "copy" )
-  , ( NormalTok , "(list)" )
-  , ( OperatorTok , "," )
-  , ( NormalTok , " i))]) " )
+  , ( NormalTok , "(list), i))]) " )
   , ( OperatorTok , "&&" )
   ]
 , [ ( NormalTok , "    " )
@@ -56,7 +50,7 @@
   , ( NormalTok , " " )
   , ( ConstantTok , "true" )
   ]
-, [ ( NormalTok , "  " ) , ( KeywordTok , "end" ) ]
+, [ ( NormalTok , "  " ) , ( ControlFlowTok , "end" ) ]
 , [ ( NormalTok , "  " ) , ( ConstantTok , "false" ) ]
 , [ ( KeywordTok , "end" ) ]
 ]
diff --git a/test/expected/abc.scala.native b/test/expected/abc.scala.native
--- a/test/expected/abc.scala.native
+++ b/test/expected/abc.scala.native
@@ -79,7 +79,8 @@
   , ( OperatorTok , "(" )
   , ( NormalTok , "faces" )
   , ( OperatorTok , ":" )
-  , ( NormalTok , " String" )
+  , ( NormalTok , " " )
+  , ( ExtensionTok , "String" )
   , ( OperatorTok , ")" )
   , ( NormalTok , " " )
   , ( OperatorTok , "=" )
@@ -117,7 +118,7 @@
   , ( NormalTok , " blocks " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " " )
-  , ( BuiltInTok , "List" )
+  , ( ExtensionTok , "List" )
   , ( OperatorTok , "(" )
   , ( FunctionTok , "Block" )
   , ( OperatorTok , "(" )
@@ -232,7 +233,8 @@
   , ( OperatorTok , "(" )
   , ( NormalTok , "word" )
   , ( OperatorTok , ":" )
-  , ( NormalTok , " String" )
+  , ( NormalTok , " " )
+  , ( ExtensionTok , "String" )
   , ( OperatorTok , "," )
   , ( NormalTok , " blocks" )
   , ( OperatorTok , ":" )
@@ -251,7 +253,8 @@
   , ( OperatorTok , "(" )
   , ( NormalTok , "word" )
   , ( OperatorTok , ":" )
-  , ( NormalTok , " String" )
+  , ( NormalTok , " " )
+  , ( ExtensionTok , "String" )
   , ( OperatorTok , "," )
   , ( NormalTok , " blocks" )
   , ( OperatorTok , ":" )
@@ -270,7 +273,8 @@
   , ( OperatorTok , "(" )
   , ( NormalTok , "word" )
   , ( OperatorTok , ":" )
-  , ( NormalTok , " String" )
+  , ( NormalTok , " " )
+  , ( ExtensionTok , "String" )
   , ( OperatorTok , "," )
   , ( NormalTok , " toCompare" )
   , ( OperatorTok , ":" )
@@ -331,7 +335,7 @@
   , ( NormalTok , " restant " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " rest diff " )
-  , ( BuiltInTok , "List" )
+  , ( ExtensionTok , "List" )
   , ( OperatorTok , "(" )
   , ( NormalTok , "toCompare" )
   , ( OperatorTok , "." )
@@ -413,7 +417,7 @@
   , ( NormalTok , " words " )
   , ( OperatorTok , "=" )
   , ( NormalTok , " " )
-  , ( BuiltInTok , "List" )
+  , ( ExtensionTok , "List" )
   , ( OperatorTok , "(" )
   , ( StringTok , "\"A\"" )
   , ( OperatorTok , "," )
diff --git a/test/test-skylighting.hs b/test/test-skylighting.hs
--- a/test/test-skylighting.hs
+++ b/test/test-skylighting.hs
@@ -270,6 +270,10 @@
   [ (".", "aab", Just ("a", []))
   , ("ab", "aab", Nothing)
   , ("ab", "abb", Just ("ab", []))
+  , ("a{2}b", "aaab", Nothing)
+  , ("a{2,}b", "aaab", Just ("aaab", []))
+  , ("a{2,3}b", "aab", Just ("aab", []))
+  , ("a{2,3}b", "aaab", Just ("aaab", []))
   , ("a(b)", "abb", Just ("ab", [(1,"b")]))
   , ("a(b.)*", "abbbcb", Just ("abbbc", [(1,"bc")]))
   , ("a(?:b.)*", "abbbcb", Just ("abbbc", []))
diff --git a/xml/cmake.xml b/xml/cmake.xml
--- a/xml/cmake.xml
+++ b/xml/cmake.xml
@@ -22,7 +22,7 @@
 
 <language
     name="CMake"
-    version="33"
+    version="34"
     kateversion="5.0"
     section="Other"
     extensions="CMakeLists.txt;*.cmake;*.cmake.in"
@@ -2286,12 +2286,23 @@
       <item>MSVC_TOOLSET_VERSION</item>
       <item>MSVC_VERSION</item>
       <item>PACKAGE_FIND_NAME</item>
-      <item>PACKAGE_FIND_VERSION</item>
+      <item>PACKAGE_FIND_VERSION_COMPLETE</item>
       <item>PACKAGE_FIND_VERSION_COUNT</item>
-      <item>PACKAGE_FIND_VERSION_MAJOR</item>
-      <item>PACKAGE_FIND_VERSION_MINOR</item>
-      <item>PACKAGE_FIND_VERSION_PATCH</item>
-      <item>PACKAGE_FIND_VERSION_TWEAK</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>
@@ -4022,7 +4033,7 @@
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect More Builtin Variables">
         <RegExpr attribute="CMake Internal Variable" context="#stay" String="\b(?:CMAKE_&id_re;_PLATFORM_ID|CMAKE_&id_re;_COMPILER_VERSION_INTERNAL|CMAKE_&id_re;_COMPILER_ARCHITECTURE_ID|CMAKE_&id_re;_COMPILER_ABI)\b" />
-        <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:SWIG_MODULE_&id_re;_EXTRA_DEPS|ExternalData_URL_ALGO_&id_re;_&id_re;|ExternalData_CUSTOM_SCRIPT_&id_re;|DOXYGEN_&id_re;|CPACK_WIX_PROPERTY_&id_re;|CPACK_WIX_&id_re;_EXTRA_FLAGS|CPACK_WIX_&id_re;_EXTENSIONS|CPACK_RPM_NO_&id_re;_INSTALL_PREFIX_RELOCATION|CPACK_RPM_&id_re;_USER_FILELIST|CPACK_RPM_&id_re;_USER_BINARY_SPECFILE|CPACK_RPM_&id_re;_PACKAGE_URL|CPACK_RPM_&id_re;_PACKAGE_SUMMARY|CPACK_RPM_&id_re;_PACKAGE_SUGGESTS|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PREUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PRE|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POSTUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POST|CPACK_RPM_&id_re;_PACKAGE_REQUIRES|CPACK_RPM_&id_re;_PACKAGE_PROVIDES|CPACK_RPM_&id_re;_PACKAGE_PREFIX|CPACK_RPM_&id_re;_PACKAGE_OBSOLETES|CPACK_RPM_&id_re;_PACKAGE_NAME|CPACK_RPM_&id_re;_PACKAGE_GROUP|CPACK_RPM_&id_re;_PACKAGE_DESCRIPTION|CPACK_RPM_&id_re;_PACKAGE_CONFLICTS|CPACK_RPM_&id_re;_PACKAGE_AUTOREQPROV|CPACK_RPM_&id_re;_PACKAGE_AUTOREQ|CPACK_RPM_&id_re;_PACKAGE_AUTOPROV|CPACK_RPM_&id_re;_PACKAGE_ARCHITECTURE|CPACK_RPM_&id_re;_FILE_NAME|CPACK_RPM_&id_re;_DEFAULT_USER|CPACK_RPM_&id_re;_DEFAULT_GROUP|CPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS|CPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS|CPACK_RPM_&id_re;_DEBUGINFO_PACKAGE|CPACK_RPM_&id_re;_DEBUGINFO_FILE_NAME|CPACK_RPM_&id_re;_BUILD_SOURCE_DIRS_PREFIX|CPACK_PREFLIGHT_&id_re;_SCRIPT|CPACK_POSTFLIGHT_&id_re;_SCRIPT|CPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_VERSION|CPACK_NUGET_&id_re;_PACKAGE_TITLE|CPACK_NUGET_&id_re;_PACKAGE_TAGS|CPACK_NUGET_&id_re;_PACKAGE_RELEASE_NOTES|CPACK_NUGET_&id_re;_PACKAGE_OWNERS|CPACK_NUGET_&id_re;_PACKAGE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_FILE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_EXPRESSION|CPACK_NUGET_&id_re;_PACKAGE_LICENSEURL|CPACK_NUGET_&id_re;_PACKAGE_LANGUAGE|CPACK_NUGET_&id_re;_PACKAGE_ICONURL|CPACK_NUGET_&id_re;_PACKAGE_ICON|CPACK_NUGET_&id_re;_PACKAGE_HOMEPAGE_URL|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION_SUMMARY|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES|CPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT|CPACK_NUGET_&id_re;_PACKAGE_AUTHORS|CPACK_NSIS_&id_re;_INSTALL_DIRECTORY|CPACK_DMG_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS|CPACK_DEBIAN_&id_re;_PACKAGE_SOURCE|CPACK_DEBIAN_&id_re;_PACKAGE_SHLIBDEPS|CPACK_DEBIAN_&id_re;_PACKAGE_SECTION|CPACK_DEBIAN_&id_re;_PACKAGE_REPLACES|CPACK_DEBIAN_&id_re;_PACKAGE_RECOMMENDS|CPACK_DEBIAN_&id_re;_PACKAGE_PROVIDES|CPACK_DEBIAN_&id_re;_PACKAGE_PRIORITY|CPACK_DEBIAN_&id_re;_PACKAGE_PREDEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_ENHANCES|CPACK_DEBIAN_&id_re;_PACKAGE_DEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_STRICT_PERMISSION|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_EXTRA|CPACK_DEBIAN_&id_re;_PACKAGE_CONFLICTS|CPACK_DEBIAN_&id_re;_PACKAGE_BREAKS|CPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE|CPACK_DEBIAN_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_DESCRIPTION|CPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE|CPACK_COMPONENT_&id_re;_REQUIRED|CPACK_COMPONENT_&id_re;_HIDDEN|CPACK_COMPONENT_&id_re;_GROUP|CPACK_COMPONENT_&id_re;_DISPLAY_NAME|CPACK_COMPONENT_&id_re;_DISABLED|CPACK_COMPONENT_&id_re;_DESCRIPTION|CPACK_COMPONENT_&id_re;_DEPENDS|CPACK_BINARY_&id_re;|CPACK_ARCHIVE_&id_re;_FILE_NAME|CPACK_&id_re;_COMPONENT_INSTALL|CMAKE_XCODE_ATTRIBUTE_&id_re;|CMAKE_USER_MAKE_RULES_OVERRIDE_&id_re;|CMAKE_STATIC_LINKER_FLAGS_&id_re;_INIT|CMAKE_STATIC_LINKER_FLAGS_&id_re;|CMAKE_SHARED_LINKER_FLAGS_&id_re;_INIT|CMAKE_SHARED_LINKER_FLAGS_&id_re;|CMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;|CMAKE_PROJECT_&id_re;_INCLUDE|CMAKE_POLICY_WARNING_CMP[0-9]{4}|CMAKE_POLICY_DEFAULT_CMP[0-9]{4}|CMAKE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT|CMAKE_MODULE_LINKER_FLAGS_&id_re;|CMAKE_MATCH_[0-9]+|CMAKE_MAP_IMPORTED_CONFIG_&id_re;|CMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;|CMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;|CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;|CMAKE_EXE_LINKER_FLAGS_&id_re;_INIT|CMAKE_EXE_LINKER_FLAGS_&id_re;|CMAKE_DISABLE_FIND_PACKAGE_&id_re;|CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_ARGV[0-9]+|CMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;|CMAKE_&id_re;_VISIBILITY_PRESET|CMAKE_&id_re;_STANDARD_LIBRARIES|CMAKE_&id_re;_STANDARD_INCLUDE_DIRECTORIES|CMAKE_&id_re;_SOURCE_FILE_EXTENSIONS|CMAKE_&id_re;_SIZEOF_DATA_PTR|CMAKE_&id_re;_SIMULATE_VERSION|CMAKE_&id_re;_SIMULATE_ID|CMAKE_&id_re;_POSTFIX|CMAKE_&id_re;_OUTPUT_EXTENSION|CMAKE_&id_re;_LINK_LIBRARY_FLAG|CMAKE_&id_re;_LINK_LIBRARY_FILE_FLAG|CMAKE_&id_re;_LINK_EXECUTABLE|CMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP|CMAKE_&id_re;_LINKER_WRAPPER_FLAG|CMAKE_&id_re;_LINKER_PREFERENCE_PROPAGATES|CMAKE_&id_re;_LINKER_PREFERENCE|CMAKE_&id_re;_LINKER_LAUNCHER|CMAKE_&id_re;_LIBRARY_ARCHITECTURE|CMAKE_&id_re;_INCLUDE_WHAT_YOU_USE|CMAKE_&id_re;_IMPLICIT_LINK_LIBRARIES|CMAKE_&id_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_LINK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_INCLUDE_DIRECTORIES|CMAKE_&id_re;_IGNORE_EXTENSIONS|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELEASE|CMAKE_&id_re;_GHS_KERNEL_FLAGS_MINSIZEREL|CMAKE_&id_re;_GHS_KERNEL_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO_INIT|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_FLAGS_RELEASE_INIT|CMAKE_&id_re;_FLAGS_RELEASE|CMAKE_&id_re;_FLAGS_MINSIZEREL_INIT|CMAKE_&id_re;_FLAGS_MINSIZEREL|CMAKE_&id_re;_FLAGS_INIT|CMAKE_&id_re;_FLAGS_DEBUG_INIT|CMAKE_&id_re;_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS|CMAKE_&id_re;_CREATE_STATIC_LIBRARY|CMAKE_&id_re;_CREATE_SHARED_MODULE|CMAKE_&id_re;_CREATE_SHARED_LIBRARY|CMAKE_&id_re;_CPPLINT|CMAKE_&id_re;_CPPCHECK|CMAKE_&id_re;_COMPILE_OBJECT|CMAKE_&id_re;_COMPILER_VERSION|CMAKE_&id_re;_COMPILER_TARGET|CMAKE_&id_re;_COMPILER_RANLIB|CMAKE_&id_re;_COMPILER_LOADED|CMAKE_&id_re;_COMPILER_LAUNCHER|CMAKE_&id_re;_COMPILER_ID|CMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN|CMAKE_&id_re;_COMPILER_AR|CMAKE_&id_re;_COMPILER|CMAKE_&id_re;_CLANG_TIDY|CMAKE_&id_re;_BYTE_ORDER|CMAKE_&id_re;_ARCHIVE_FINISH|CMAKE_&id_re;_ARCHIVE_CREATE|CMAKE_&id_re;_ARCHIVE_APPEND|CMAKE_&id_re;_ANDROID_TOOLCHAIN_SUFFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE|ARGV[0-9]+|&id_re;__TRYRUN_OUTPUT|&id_re;_VERSION_TWEAK|&id_re;_VERSION_STRING|&id_re;_VERSION_PATCH|&id_re;_VERSION_MINOR|&id_re;_VERSION_MAJOR|&id_re;_VERSION_COUNT|&id_re;_VERSION|&id_re;_UNPARSED_ARGUMENTS|&id_re;_SOURCE_DIR|&id_re;_ROOT|&id_re;_MODULE_NAME|&id_re;_LIBRARY_DIRS|&id_re;_LIBRARIES|&id_re;_KEYWORDS_MISSING_VALUES|&id_re;_IS_TOP_LEVEL|&id_re;_INCLUDE_DIRS|&id_re;_HOMEPAGE_URL|&id_re;_FOUND|&id_re;_FIND_VERSION_TWEAK|&id_re;_FIND_VERSION_PATCH|&id_re;_FIND_VERSION_MINOR|&id_re;_FIND_VERSION_MAJOR|&id_re;_FIND_VERSION_EXACT|&id_re;_FIND_VERSION_COUNT|&id_re;_FIND_VERSION|&id_re;_FIND_REQUIRED_&id_re;|&id_re;_FIND_REQUIRED|&id_re;_FIND_QUIETLY|&id_re;_FIND_COMPONENTS|&id_re;_DESCRIPTION|&id_re;_CONSIDERED_VERSIONS|&id_re;_CONSIDERED_CONFIGS|&id_re;_BINARY_DIR)\b" />
+        <RegExpr attribute="Builtin Variable" context="#stay" String="\b(?:SWIG_MODULE_&id_re;_EXTRA_DEPS|ExternalData_URL_ALGO_&id_re;_&id_re;|ExternalData_CUSTOM_SCRIPT_&id_re;|DOXYGEN_&id_re;|CPACK_WIX_PROPERTY_&id_re;|CPACK_WIX_&id_re;_EXTRA_FLAGS|CPACK_WIX_&id_re;_EXTENSIONS|CPACK_RPM_NO_&id_re;_INSTALL_PREFIX_RELOCATION|CPACK_RPM_&id_re;_USER_FILELIST|CPACK_RPM_&id_re;_USER_BINARY_SPECFILE|CPACK_RPM_&id_re;_PACKAGE_URL|CPACK_RPM_&id_re;_PACKAGE_SUMMARY|CPACK_RPM_&id_re;_PACKAGE_SUGGESTS|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PREUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_PRE|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POSTUN|CPACK_RPM_&id_re;_PACKAGE_REQUIRES_POST|CPACK_RPM_&id_re;_PACKAGE_REQUIRES|CPACK_RPM_&id_re;_PACKAGE_PROVIDES|CPACK_RPM_&id_re;_PACKAGE_PREFIX|CPACK_RPM_&id_re;_PACKAGE_OBSOLETES|CPACK_RPM_&id_re;_PACKAGE_NAME|CPACK_RPM_&id_re;_PACKAGE_GROUP|CPACK_RPM_&id_re;_PACKAGE_DESCRIPTION|CPACK_RPM_&id_re;_PACKAGE_CONFLICTS|CPACK_RPM_&id_re;_PACKAGE_AUTOREQPROV|CPACK_RPM_&id_re;_PACKAGE_AUTOREQ|CPACK_RPM_&id_re;_PACKAGE_AUTOPROV|CPACK_RPM_&id_re;_PACKAGE_ARCHITECTURE|CPACK_RPM_&id_re;_FILE_NAME|CPACK_RPM_&id_re;_DEFAULT_USER|CPACK_RPM_&id_re;_DEFAULT_GROUP|CPACK_RPM_&id_re;_DEFAULT_FILE_PERMISSIONS|CPACK_RPM_&id_re;_DEFAULT_DIR_PERMISSIONS|CPACK_RPM_&id_re;_DEBUGINFO_PACKAGE|CPACK_RPM_&id_re;_DEBUGINFO_FILE_NAME|CPACK_RPM_&id_re;_BUILD_SOURCE_DIRS_PREFIX|CPACK_PREFLIGHT_&id_re;_SCRIPT|CPACK_POSTFLIGHT_&id_re;_SCRIPT|CPACK_NUGET_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_VERSION|CPACK_NUGET_&id_re;_PACKAGE_TITLE|CPACK_NUGET_&id_re;_PACKAGE_TAGS|CPACK_NUGET_&id_re;_PACKAGE_RELEASE_NOTES|CPACK_NUGET_&id_re;_PACKAGE_OWNERS|CPACK_NUGET_&id_re;_PACKAGE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_FILE_NAME|CPACK_NUGET_&id_re;_PACKAGE_LICENSE_EXPRESSION|CPACK_NUGET_&id_re;_PACKAGE_LICENSEURL|CPACK_NUGET_&id_re;_PACKAGE_LANGUAGE|CPACK_NUGET_&id_re;_PACKAGE_ICONURL|CPACK_NUGET_&id_re;_PACKAGE_ICON|CPACK_NUGET_&id_re;_PACKAGE_HOMEPAGE_URL|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION_SUMMARY|CPACK_NUGET_&id_re;_PACKAGE_DESCRIPTION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES_&id_re;_VERSION|CPACK_NUGET_&id_re;_PACKAGE_DEPENDENCIES|CPACK_NUGET_&id_re;_PACKAGE_COPYRIGHT|CPACK_NUGET_&id_re;_PACKAGE_AUTHORS|CPACK_NSIS_&id_re;_INSTALL_DIRECTORY|CPACK_DMG_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_SUGGESTS|CPACK_DEBIAN_&id_re;_PACKAGE_SOURCE|CPACK_DEBIAN_&id_re;_PACKAGE_SHLIBDEPS|CPACK_DEBIAN_&id_re;_PACKAGE_SECTION|CPACK_DEBIAN_&id_re;_PACKAGE_REPLACES|CPACK_DEBIAN_&id_re;_PACKAGE_RECOMMENDS|CPACK_DEBIAN_&id_re;_PACKAGE_PROVIDES|CPACK_DEBIAN_&id_re;_PACKAGE_PRIORITY|CPACK_DEBIAN_&id_re;_PACKAGE_PREDEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_NAME|CPACK_DEBIAN_&id_re;_PACKAGE_ENHANCES|CPACK_DEBIAN_&id_re;_PACKAGE_DEPENDS|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_STRICT_PERMISSION|CPACK_DEBIAN_&id_re;_PACKAGE_CONTROL_EXTRA|CPACK_DEBIAN_&id_re;_PACKAGE_CONFLICTS|CPACK_DEBIAN_&id_re;_PACKAGE_BREAKS|CPACK_DEBIAN_&id_re;_PACKAGE_ARCHITECTURE|CPACK_DEBIAN_&id_re;_FILE_NAME|CPACK_DEBIAN_&id_re;_DESCRIPTION|CPACK_DEBIAN_&id_re;_DEBUGINFO_PACKAGE|CPACK_COMPONENT_&id_re;_REQUIRED|CPACK_COMPONENT_&id_re;_HIDDEN|CPACK_COMPONENT_&id_re;_GROUP|CPACK_COMPONENT_&id_re;_DISPLAY_NAME|CPACK_COMPONENT_&id_re;_DISABLED|CPACK_COMPONENT_&id_re;_DESCRIPTION|CPACK_COMPONENT_&id_re;_DEPENDS|CPACK_BINARY_&id_re;|CPACK_ARCHIVE_&id_re;_FILE_NAME|CPACK_&id_re;_COMPONENT_INSTALL|CMAKE_XCODE_ATTRIBUTE_&id_re;|CMAKE_USER_MAKE_RULES_OVERRIDE_&id_re;|CMAKE_STATIC_LINKER_FLAGS_&id_re;_INIT|CMAKE_STATIC_LINKER_FLAGS_&id_re;|CMAKE_SHARED_LINKER_FLAGS_&id_re;_INIT|CMAKE_SHARED_LINKER_FLAGS_&id_re;|CMAKE_RUNTIME_OUTPUT_DIRECTORY_&id_re;|CMAKE_PROJECT_&id_re;_INCLUDE|CMAKE_POLICY_WARNING_CMP[0-9]{4}|CMAKE_POLICY_DEFAULT_CMP[0-9]{4}|CMAKE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_MODULE_LINKER_FLAGS_&id_re;_INIT|CMAKE_MODULE_LINKER_FLAGS_&id_re;|CMAKE_MATCH_[0-9]+|CMAKE_MAP_IMPORTED_CONFIG_&id_re;|CMAKE_LIBRARY_OUTPUT_DIRECTORY_&id_re;|CMAKE_INTERPROCEDURAL_OPTIMIZATION_&id_re;|CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_&id_re;|CMAKE_EXE_LINKER_FLAGS_&id_re;_INIT|CMAKE_EXE_LINKER_FLAGS_&id_re;|CMAKE_DISABLE_FIND_PACKAGE_&id_re;|CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_&id_re;|CMAKE_ARGV[0-9]+|CMAKE_ARCHIVE_OUTPUT_DIRECTORY_&id_re;|CMAKE_&id_re;_VISIBILITY_PRESET|CMAKE_&id_re;_STANDARD_LIBRARIES|CMAKE_&id_re;_STANDARD_INCLUDE_DIRECTORIES|CMAKE_&id_re;_SOURCE_FILE_EXTENSIONS|CMAKE_&id_re;_SIZEOF_DATA_PTR|CMAKE_&id_re;_SIMULATE_VERSION|CMAKE_&id_re;_SIMULATE_ID|CMAKE_&id_re;_POSTFIX|CMAKE_&id_re;_OUTPUT_EXTENSION|CMAKE_&id_re;_LINK_LIBRARY_FLAG|CMAKE_&id_re;_LINK_LIBRARY_FILE_FLAG|CMAKE_&id_re;_LINK_EXECUTABLE|CMAKE_&id_re;_LINKER_WRAPPER_FLAG_SEP|CMAKE_&id_re;_LINKER_WRAPPER_FLAG|CMAKE_&id_re;_LINKER_PREFERENCE_PROPAGATES|CMAKE_&id_re;_LINKER_PREFERENCE|CMAKE_&id_re;_LINKER_LAUNCHER|CMAKE_&id_re;_LIBRARY_ARCHITECTURE|CMAKE_&id_re;_INCLUDE_WHAT_YOU_USE|CMAKE_&id_re;_IMPLICIT_LINK_LIBRARIES|CMAKE_&id_re;_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_LINK_DIRECTORIES|CMAKE_&id_re;_IMPLICIT_INCLUDE_DIRECTORIES|CMAKE_&id_re;_IGNORE_EXTENSIONS|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_GHS_KERNEL_FLAGS_RELEASE|CMAKE_&id_re;_GHS_KERNEL_FLAGS_MINSIZEREL|CMAKE_&id_re;_GHS_KERNEL_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO_INIT|CMAKE_&id_re;_FLAGS_RELWITHDEBINFO|CMAKE_&id_re;_FLAGS_RELEASE_INIT|CMAKE_&id_re;_FLAGS_RELEASE|CMAKE_&id_re;_FLAGS_MINSIZEREL_INIT|CMAKE_&id_re;_FLAGS_MINSIZEREL|CMAKE_&id_re;_FLAGS_INIT|CMAKE_&id_re;_FLAGS_DEBUG_INIT|CMAKE_&id_re;_FLAGS_DEBUG|CMAKE_&id_re;_FLAGS|CMAKE_&id_re;_CREATE_STATIC_LIBRARY|CMAKE_&id_re;_CREATE_SHARED_MODULE|CMAKE_&id_re;_CREATE_SHARED_LIBRARY|CMAKE_&id_re;_CPPLINT|CMAKE_&id_re;_CPPCHECK|CMAKE_&id_re;_COMPILE_OBJECT|CMAKE_&id_re;_COMPILER_VERSION|CMAKE_&id_re;_COMPILER_TARGET|CMAKE_&id_re;_COMPILER_RANLIB|CMAKE_&id_re;_COMPILER_LOADED|CMAKE_&id_re;_COMPILER_LAUNCHER|CMAKE_&id_re;_COMPILER_ID|CMAKE_&id_re;_COMPILER_EXTERNAL_TOOLCHAIN|CMAKE_&id_re;_COMPILER_AR|CMAKE_&id_re;_COMPILER|CMAKE_&id_re;_CLANG_TIDY|CMAKE_&id_re;_BYTE_ORDER|CMAKE_&id_re;_ARCHIVE_FINISH|CMAKE_&id_re;_ARCHIVE_CREATE|CMAKE_&id_re;_ARCHIVE_APPEND|CMAKE_&id_re;_ANDROID_TOOLCHAIN_SUFFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_PREFIX|CMAKE_&id_re;_ANDROID_TOOLCHAIN_MACHINE|ARGV[0-9]+|&id_re;__TRYRUN_OUTPUT|&id_re;_VERSION_TWEAK|&id_re;_VERSION_STRING|&id_re;_VERSION_PATCH|&id_re;_VERSION_MINOR|&id_re;_VERSION_MAJOR|&id_re;_VERSION_COUNT|&id_re;_VERSION|&id_re;_UNPARSED_ARGUMENTS|&id_re;_SOURCE_DIR|&id_re;_ROOT|&id_re;_MODULE_NAME|&id_re;_LIBRARY_DIRS|&id_re;_LIBRARIES|&id_re;_KEYWORDS_MISSING_VALUES|&id_re;_IS_TOP_LEVEL|&id_re;_INCLUDE_DIRS|&id_re;_HOMEPAGE_URL|&id_re;_FOUND|&id_re;_FIND_VERSION_RANGE_MIN|&id_re;_FIND_VERSION_RANGE_MAX|&id_re;_FIND_VERSION_RANGE|&id_re;_FIND_VERSION_MIN_TWEAK|&id_re;_FIND_VERSION_MIN_PATCH|&id_re;_FIND_VERSION_MIN_MINOR|&id_re;_FIND_VERSION_MIN_MAJOR|&id_re;_FIND_VERSION_MIN_COUNT|&id_re;_FIND_VERSION_MIN|&id_re;_FIND_VERSION_MAX_TWEAK|&id_re;_FIND_VERSION_MAX_PATCH|&id_re;_FIND_VERSION_MAX_MINOR|&id_re;_FIND_VERSION_MAX_MAJOR|&id_re;_FIND_VERSION_MAX_COUNT|&id_re;_FIND_VERSION_MAX|&id_re;_FIND_VERSION_EXACT|&id_re;_FIND_VERSION_COUNT|&id_re;_FIND_VERSION_COMPLETE|&id_re;_FIND_REQUIRED_&id_re;|&id_re;_FIND_REQUIRED|&id_re;_FIND_QUIETLY|&id_re;_FIND_COMPONENTS|&id_re;_DESCRIPTION|&id_re;_CONSIDERED_VERSIONS|&id_re;_CONSIDERED_CONFIGS|&id_re;_CONFIG|&id_re;_BINARY_DIR)\b" />
       </context>
 
       <context attribute="Normal Text" lineEndContext="#stay" name="Detect Variable Substitutions">
diff --git a/xml/cpp.xml b/xml/cpp.xml
--- a/xml/cpp.xml
+++ b/xml/cpp.xml
@@ -11,7 +11,7 @@
 <language
     name="C++"
     section="Sources"
-    version="12"
+    version="13"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
@@ -68,6 +68,7 @@
         http://doc.qt.io/qt-5/qbytearray.html#macros
         http://doc.qt.io/qt-5/qstring.html#macros
         http://doc.qt.io/qt-5/qurl.html#macros
+        https://doc.qt.io/qt-5/qflags.html#macros
       -->
     <item>Q_DECLARE_ASSOCIATIVE_CONTAINER_METATYPE</item>
     <item>Q_DECLARE_METATYPE</item>
@@ -80,6 +81,8 @@
     <item>QT_RESTRICTED_CAST_FROM_ASCII</item>
     <item>QT_NO_URL_CAST_FROM_STRING</item>
     <item>QT_USE_QSTRINGBUILDER</item>
+    <item>Q_DECLARE_FLAGS</item>
+    <item>Q_DECLARE_OPERATORS_FOR_FLAGS</item>
     <!-- QtTest macros: http://doc.qt.io/qt-5/qtest.html#macros -->
     <item>QBENCHMARK</item>
     <item>QBENCHMARK_ONCE</item>
diff --git a/xml/isocpp.xml b/xml/isocpp.xml
--- a/xml/isocpp.xml
+++ b/xml/isocpp.xml
@@ -24,7 +24,7 @@
 <language
     name="ISO C++"
     section="Sources"
-    version="24"
+    version="25"
     kateversion="5.0"
     indenter="cstyle"
     style="C++"
@@ -354,11 +354,11 @@
         <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="String" context="RawString" char="R" char1="&quot;" />
-        <StringDetect attribute="String" context="RawString" String="uR&quot;" />
-        <StringDetect attribute="String" context="RawString" String="UR&quot;" />
-        <StringDetect attribute="String" context="RawString" String="LR&quot;" />
-        <StringDetect attribute="String" context="RawString" String="u8R&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="'" />
@@ -538,14 +538,14 @@
       </context>
 
       <context name="RawString" attribute="String" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!LineError">
-        <RegExpr attribute="String" context="#pop!InRawString" String="([^\(]{0,16})\(" />
+        <RegExpr attribute="Raw String Delimiter" context="#pop!InRawString" String="([^\(]{0,16})\(" beginRegion="Raw String" />
       </context>
 
-      <context name="InRawString" attribute="String" lineEndContext="#stay" dynamic="true">
+      <context name="InRawString" attribute="Raw String" lineEndContext="#stay" dynamic="true">
         <!-- fast way, can be replaced by a `UntilChars` rule if it exists -->
-        <RegExpr attribute="String" context="#stay" String="[^%)]+" />
+        <RegExpr attribute="Raw String" context="#stay" String="[^%)]+" />
         <RegExpr attribute="String Char" context="#stay" String="&printf_like;|&format_like;" />
-        <StringDetect attribute="String" context="#pop" String=")%1&quot;" dynamic="true"/>
+        <StringDetect attribute="Raw String Delimiter" context="#pop" String=")%1&quot;" dynamic="true" endRegion="Raw String" />
       </context>
 
       <context name="Region Marker" attribute="Region Marker" lineEndContext="#pop" />
@@ -792,6 +792,8 @@
       <itemData name="Char"               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="Comment"            defStyleNum="dsComment"   spellChecking="true"  />
       <itemData name="Symbol"             defStyleNum="dsOperator"  spellChecking="false" />
       <itemData name="Separator Symbol"   defStyleNum="dsOperator"  spellChecking="false" />
diff --git a/xml/julia.xml b/xml/julia.xml
--- a/xml/julia.xml
+++ b/xml/julia.xml
@@ -36,7 +36,7 @@
   <!ENTITY function_begin_boundary "(?:(?&lt;=[&function_disallowed_chars;!]|^)(?=[^&function_disallowed_first_char;]))">
 ]>
 
-<language name="Julia" section="Sources" version="12" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
+<language name="Julia" style="julia" indenter="julia" section="Sources" version="13" kateversion="5.0" extensions="*.jl" casesensitive="1" priority="5" license="MIT">
 
   <highlighting>
     <list name="cflow_begin">
@@ -78,15 +78,10 @@
       <item>const</item>
       <item>export</item>
       <item>global</item>
-      <item>import</item>
       <item>in</item>
       <item>local</item>
       <item>macro</item>
       <item>module</item>
-      <item>typealias</item>
-      <item>importall</item>
-      <item>baremodule</item>
-      <item>using</item>
       <item>where</item>
       <item>new</item>
       <item>in</item>
@@ -95,6 +90,10 @@
       <!-- C Interface -->
       <item>ccall</item>
     </list>
+    <list name="import_keywords">
+      <item>import</item>
+      <item>using</item>
+    </list>
     <list name="types">
       <item>AbstractArray</item>
       <item>AbstractMatrix</item>
@@ -486,7 +485,6 @@
     <contexts>
 
       <context name="_normal" attribute="Normal Text" lineEndContext="#stay">
-
         <DetectSpaces />
 
         <!-- Blocks -->
@@ -497,28 +495,32 @@
         <keyword context="#stay" attribute="Control Flow" String="cflow"/>
         <keyword context="#stay" attribute="Keyword" String="block_end"
                  endRegion="block" />
-        <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" />
-        <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" />
 
+        <IncludeRules context="coderoot"/>
+      </context>
+
+      <context name="subsetting" attribute="Normal Text" lineEndContext="#stay">
+        <keyword context="#stay" attribute="Keyword" String="block_end"/>
+        <IncludeRules context="coderoot"/>
+        <DetectChar attribute="Normal Text" context="#pop" char="]"/>
+      </context>
+
+      <context name="coderoot" attribute="Normal Text" lineEndContext="#stay">
         <!-- functions have to be before built-in types to properly match constructors -->
         <RegExpr context="#stay" attribute="Function" String="&function_begin_boundary;[^&function_disallowed_first_char;][^&function_disallowed_chars;]*!?(?=\.?\()" />
         <RegExpr context="parametric-constructor" attribute="Function" String="&function_begin_boundary;[^&function_disallowed_first_char;][^&function_disallowed_chars;]*(?=\{.+\}.?\()" />
 
-        <!-- Keywords, types, and comments -->
+        <IncludeRules context="comment-rules"/>
+
+        <!-- Keywords, types -->
         <RegExpr context="#stay" attribute="Keyword" String="\b(abstract|primitive)\s+type\b|\bmutable\s+struct\b" beginRegion="block"/>
         <keyword context="#stay" attribute="Keyword" String="keywords" />
+        <keyword context="import" attribute="Import" String="import_keywords" />
         <keyword context="#stay" attribute="Data Type" String="types" />
         <keyword context="#stay" attribute="Boolean" String="booleans" />
         <keyword context="#stay" attribute="Constant" String="constants" />
         <keyword context="#stay" attribute="Module" String="modules" />
-        <Detect2Chars char="#" char1="=" context="block-comment" attribute="Comment" beginRegion="block-comment"/>
-        <DetectChar char="#" context="1-comment" attribute="Comment"/>
 
-        <!-- Lists and arrays -->
-        <!-- <DetectChar char="(" context="nested" beginRegion="nested" attribute="Delimiter" />
-        <DetectChar char="[" context="squared" beginRegion="squared" attribute="Delimiter" />
-        <DetectChar char="{" context="curly" beginRegion="curly" attribute="Delimiter" /> -->
-
         <!-- Strings -->
         <StringDetect attribute="String" context="Block-String" String="&quot;&quot;&quot;" beginRegion="block-string"/>
         <DetectChar attribute="String" context="String" char="&quot;"/>
@@ -541,69 +543,688 @@
         <StringDetect attribute="Command String" context="Block-Backtick-String" String="```" beginRegion="block-string"/>
         <DetectChar attribute="Command String" context="Backtick-String" char="`"/>
 
-        <!-- Multi-character operators -->
+        <!-- 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="..."/>
         <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=".&gt;&gt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&lt;&lt;="/>
-        <StringDetect context="#stay" attribute="Operator" String="&lt;&lt;="/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String="&gt;&gt;&gt;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&gt;&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="&gt;" char1="&gt;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="&lt;" char1="&lt;"/>
-        <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="&gt;" char1="="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="&amp;" char1="&amp;"/>
-        <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="/"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="'"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="~"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&#8891;="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8891;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&amp;="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&amp;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".|="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="|"/>
-        <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=".&#247;="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#247;"/>
-        <StringDetect context="#stay" attribute="Operator" String=".&#92;="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#92;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8800;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8804;"/>
-        <Detect2Chars context="#stay" attribute="Operator" char="." char1="&#8805;"/>
+        <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="="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="&#92;" char1="="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="&#247;" char1="="/>
-        <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="="/>
-        <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="="/>
-        <Detect2Chars context="#stay" attribute="Operator" char="&#8891;" 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=":"/>
@@ -611,7 +1232,6 @@
         <!-- 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="Delimiter" String="[\)\]}](?=')" />
         <!-- <RegExpr context="_adjoint" attribute="Operator" String="\.'(?=')" /> -->
 
         <!-- If ' is not the adjoint operator, it starts a character or an unterminated char -->
@@ -628,11 +1248,13 @@
         <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)?" />
-        <AnyChar context="#stay" attribute="Delimiter" String="()[]{}"/>
 
-        <!-- Single-character operators -->
-        <AnyChar context="#stay" attribute="Operator" String="*+-/\&amp;|&lt;&gt;~$!^=,;:@&#8891;%&#247;&#92;&#8800;&#8804;&#8805;"/>
+        <!-- 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) -->
@@ -640,17 +1262,6 @@
         <IncludeRules context="1-comment" />
       </context>
 
-      <!-- Contexts entered after beginning a list or array -->
-<!--      <context name="nested" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char=")" context="#pop" endRegion="nested" attribute="Delimiter" />
-      </context>
-      <context name="squared" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="]" context="#pop" endRegion="squared" attribute="Delimiter" />
-      </context>
-      <context name="curly" attribute="Normal Text" lineEndContext="#stay">
-        <DetectChar char="}" context="#pop" endRegion="curly" attribute="Delimiter" />
-      </context>-->
-
       <!-- Context entered after encountering an ' adjoint operator -->
       <context name="_adjoint" attribute="Operator" lineEndContext="#pop">
         <RegExpr context="#pop" attribute="Operator" String="'+" />
@@ -661,11 +1272,13 @@
         <DetectSpaces />
         <LineContinue attribute="String" context="#stay"/>
         <HlCStringChar attribute="String Char" context="#stay"/>
+        <IncludeRules context="string-interpolation-rules"/>
         <DetectChar attribute="String" context="#pop" char="&quot;"/>
       </context>
       <context attribute="String" lineEndContext="#stay" name="Block-String">
         <DetectSpaces />
         <StringDetect attribute="String" context="#pop" String="&quot;&quot;&quot;" endRegion="block-string"/>
+        <IncludeRules context="string-interpolation-rules"/>
         <HlCStringChar attribute="String Char" context="#stay"/>
       </context>
       <!-- Raw String -->
@@ -726,16 +1339,34 @@
         <AnyChar attribute="String Char" context="#stay" String="?+*." />
       </context>
 
+      <context name="string-interpolation-rules" lineEndContext="#stay" attribute="String">
+        <Detect2Chars context="#stay" attribute="String" char="\" char1="$"/>
+        <RegExpr context="string-interpolation" attribute="String Char" String="\$(?:\S)" lookAhead="true"/>
+      </context>
+      <context name="string-interpolation" lineEndContext="#stay" attribute="String">
+        <DetectChar attribute="String Char" char="$"/>
+        <DetectIdentifier attribute="Variable" context="#pop"/>
+        <DetectChar char="(" context="string-interpolation-extended" attribute="Normal Text"/>
+      </context>
+      <context name="string-interpolation-extended" lineEndContext="#stay" attribute="Normal Text">
+        <IncludeRules context="_normal"/>
+        <DetectChar char="(" context="string-interpolation-internal" attribute="Normal Text"/>
+        <DetectChar char=")" context="#pop#pop" attribute="Normal Text"/>
+      </context>
+      <context name="string-interpolation-internal" lineEndContext="#stay" attribute="Normal Text">
+        <IncludeRules context="_normal"/>
+        <DetectChar char="(" context="string-interpolation-internal" attribute="Normal Text"/>
+        <DetectChar char=")" context="#pop" attribute="Normal Text"/>
+      </context>
+
       <!-- 1-line comment: #pop@EOL  -->
       <context name="1-comment" lineEndContext="#pop" attribute="Comment">
         <DetectSpaces />
-        <IncludeRules context="##Comments" />
       </context>
 
       <context name="block-comment" lineEndContext="#stay" attribute="Comment">
         <DetectSpaces />
         <Detect2Chars char="=" char1="#" context="#pop" attribute="Comment" endRegion="block-comment"/>
-        <IncludeRules context="##Comments" />
       </context>
       <context name="controlflow-block" lineEndContext="#stay" attribute="Normal Text">
         <keyword context="#stay" attribute="Control Flow" String="cflow_eb" endRegion="block" beginRegion="block" />
@@ -743,24 +1374,46 @@
         <IncludeRules context="_normal" />
       </context>
       <context name="parametric-type" lineEndContext="#stay" attribute="Data Type">
-        <DetectChar char="{" context="parametric-type"/>
-        <DetectChar char="}" context="#pop"/>
+        <DetectChar char="{" context="parametric-type" attribute="Data Type"/>
+        <DetectChar char="}" context="#pop" attribute="Data Type"/>
       </context>
       <context name="parametric-constructor" lineEndContext="#stay" attribute="Data Type">
-        <DetectChar char="{" context="parametric-type"/>
-        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^" context="#pop"/>
+        <DetectChar char="{" context="parametric-type" attribute="Data Type"/>
+        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^" attribute="Normal Text" context="#pop"/>
       </context>
 
       <!-- we have to allow spaces before the type, but switch to the parent context after the type -->
       <context name="type-annotation-internal" lineEndContext="#pop#pop" attribute="Data Type">
-        <DetectChar char="{" context="parametric-type"/>
-        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^" context="#pop#pop"/>
+        <DetectChar char="{" context="parametric-type" attribute="Data Type"/>
+        <AnyChar String=",;()=:&gt;&lt;&amp;%*?[]^}" context="#pop#pop" attribute="Normal Text"/>
         <DetectSpaces context="#pop#pop"/>
-        <DetectChar char="}" lookAhead="true" context="#pop#pop"/>
       </context>
       <context name="type-annotation" lineEndContext="#pop" attribute="Data Type">
         <DetectIdentifier context="type-annotation-internal" attribute="Data Type"/>
       </context>
+
+      <!-- rules for comments, to be used by other contexts -->
+      <context name="comment-rules" lineEndContext="#pop" attribute="Comment">
+        <StringDetect String="#BEGIN" context="region_marker" attribute="FoldingComment" beginRegion="user_region" />
+        <StringDetect String="#END" context="region_marker" attribute="FoldingComment" endRegion="user_region" />
+        <Detect2Chars char="#" char1="=" context="block-comment" attribute="Comment" beginRegion="block-comment"/>
+        <DetectChar char="#" context="1-comment" attribute="Comment"/>
+      </context>
+
+      <!-- context for imports -->
+      <context name="import" lineEndContext="#stay" lineEmptyContext="#stay"  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*(?![,:])"/>
+      </context>
+      <context name="import_vars" lineEndContext="#stay" lineEmptyContext="#stay" attribute="Normal Text">
+        <IncludeRules context="comment-rules"/>
+        <!-- we don't know if these are types, variables, or functions,
+        so no highlighting here -->
+        <RegExpr attribute="Normal Text" context="#stay" String="[^:,\s]+\s*(?=,)"/>
+        <RegExpr attribute="Normal Text" context="#pop#pop" String="[^:,\s]+\s*(?![,:])"/>
+      </context>
     </contexts>
 
     <itemDatas>
@@ -771,12 +1424,12 @@
       <itemData name="Hex" defStyleNum="dsBaseN" />
       <itemData name="Octal" defStyleNum="dsBaseN" />
       <itemData name="Binary" defStyleNum="dsBaseN" />
-      <itemData name="Delimiter" defStyleNum="dsNormal" />
       <itemData name="String" defStyleNum="dsString"/>
       <itemData name="String Char" defStyleNum="dsSpecialChar"/>
       <itemData name="Char" defStyleNum="dsChar"/>
       <itemData name="Incomplete Char" defStyleNum="dsChar"/>
       <itemData name="Keyword" defStyleNum="dsKeyword"/>
+      <itemData name="Import" defStyleNum="dsImport"/>
       <itemData name="Control Flow" defStyleNum="dsControlFlow" />
       <itemData name="Data Type" defStyleNum="dsDataType"/>
       <itemData name="Constant" defStyleNum="dsConstant"/>
diff --git a/xml/markdown.xml b/xml/markdown.xml
--- a/xml/markdown.xml
+++ b/xml/markdown.xml
@@ -90,7 +90,7 @@
 <!ENTITY checkbox "\[[ x]\](?=\s)">
 ]>
 
-<language name="Markdown" version="18" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
+<language name="Markdown" version="19" kateversion="5.79" section="Markup" extensions="*.md;*.mmd;*.markdown" priority="15" author="Darrin Yeager, Claes Holmerson" license="GPL,BSD">
   <highlighting>
     <contexts>
       <!-- Start of the Markdown document: find metadata or code block -->
@@ -149,14 +149,33 @@
       </context>
 
       <context name="find-header" attribute="Normal Text" lineEndContext="#pop">
-        <RegExpr attribute="Header H1" context="#pop" String="^#\s.*[#]?$" column="0" endRegion="H1" beginRegion="H1"/>
-        <RegExpr attribute="Header H2" context="#pop" String="^##\s.*[#]?$" column="0" endRegion="H2" beginRegion="H2"/>
-        <RegExpr attribute="Header H3" context="#pop" String="^###\s.*[#]?$" column="0" endRegion="H3" beginRegion="H3"/>
-        <RegExpr attribute="Header H4" context="#pop" String="^####\s.*[#]?$" column="0" endRegion="H4" beginRegion="H4"/>
-        <RegExpr attribute="Header H5" context="#pop" String="^#####\s.*[#]?$" column="0" endRegion="H5" beginRegion="H5"/>
+        <!-- TODO: Replace "(?=.$)" in the regexes with just "$" when close-H#-region are removed  -->
+        <RegExpr attribute="Header H1" context="#pop!close-H2-region" String="^#\s.*[#]?(?=.$)" column="0" endRegion="H1" beginRegion="H1"/>
+        <RegExpr attribute="Header H2" context="#pop!close-H3-region" String="^##\s.*[#]?(?=.$)" column="0" endRegion="H2" beginRegion="H2"/>
+        <RegExpr attribute="Header H3" context="#pop!close-H4-region" String="^###\s.*[#]?(?=.$)" column="0" endRegion="H3" beginRegion="H3"/>
+        <RegExpr attribute="Header H4" context="#pop!close-H5-region" String="^####\s.*[#]?(?=.$)" column="0" endRegion="H4" beginRegion="H4"/>
+        <RegExpr attribute="Header H5" context="#pop!close-H6-region" String="^#####\s.*[#]?(?=.$)" column="0" endRegion="H5" beginRegion="H5"/>
         <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="." 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="." 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="." 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="." lookAhead="true" endRegion="H5"/>
+      </context>
+      <context name="close-H6-region" attribute="Header H6" lineEndContext="#pop" fallthroughContext="#pop">
+        <RegExpr attribute="Header H6" context="#pop" String="." endRegion="H6"/>
+      </context>
+
       <context name="find-strong-normal" attribute="Normal Text" lineEndContext="#pop">
         <RegExpr attribute="Strong-Emphasis Text" context="#pop" minimal="true" String="&strongemphasisregex_ast_und;|&strongemphasisregex_ast_und2;"/>
         <RegExpr attribute="Strong Text" context="#pop" minimal="true" String="&strongregex_ast;"/>
diff --git a/xml/python.xml b/xml/python.xml
--- a/xml/python.xml
+++ b/xml/python.xml
@@ -52,7 +52,7 @@
 <!-- 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="18" 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="">
+<language name="Python" version="22" 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>
@@ -90,10 +90,17 @@
 			<item>try</item>
 			<item>while</item>
 			<item>with</item>
-			<item>yield</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>
@@ -380,6 +387,7 @@
 				<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"/>
@@ -428,6 +436,11 @@
 				<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
@@ -522,6 +535,11 @@
 				<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">
@@ -536,6 +554,7 @@
 				<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">
@@ -544,22 +563,25 @@
 				<IncludeRules context="##Comments" />
 				<DetectIdentifier/>
 				<IncludeRules context="stringescape"/>
+				<LineContinue attribute="String Char" context="#stay"/>
 			</context>
 
-			<context name="Single A-comment" attribute="Comment" lineEndContext="#stay">
+			<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="#stay">
+			<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 -->
@@ -576,7 +598,7 @@
 				<!-- 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"/>
+				<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 -->
@@ -584,7 +606,7 @@
 				<!-- 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"/>
+				<RegExpr attribute="String Char" String="\\[\\'&quot;abfnrtv]|\\[0-7]{1,3}|\\x[0-9A-Fa-f]{2}" context="#stay"/>
 			</context>
 
 			<!-- f-literals -->
@@ -619,12 +641,14 @@
 				<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>
@@ -635,12 +659,14 @@
 				<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>
@@ -649,6 +675,7 @@
 				<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>
 
@@ -665,12 +692,14 @@
 				<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>
@@ -681,12 +710,14 @@
 				<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>
@@ -695,6 +726,7 @@
 				<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>
 
@@ -706,94 +738,111 @@
 
 
 			<!-- Single-quoted A-strings -->
-			<context name="Single A-string" attribute="String" lineEndContext="#stay">
+			<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="#stay">
+			<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="#stay">
+			<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="#stay">
+			<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="#stay">
+			<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="#stay">
-				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?)++"/>
+			<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="#stay">
+			<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="#stay">
+			<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="#stay">
+			<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="#stay">
+			<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="#stay">
-				<RegExpr attribute="B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\(?=[^\\'&quot;abfnrtvx0-7])|\\x(?![0-9a-fA-F]{2}))++"/>
+			<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="#stay">
-				<RegExpr attribute="Raw B-String" String="([\x20-\x26\x28-\x5B\x5D-\x7E]++|\\.?)++"/>
+			<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>
 
diff --git a/xml/toml.xml b/xml/toml.xml
--- a/xml/toml.xml
+++ b/xml/toml.xml
@@ -2,7 +2,7 @@
 <!DOCTYPE language SYSTEM "language.dtd"
 [
 	<!ENTITY more "(_\d+)*">
-	<!ENTITY int  "[+-]?(0|[1-9]\d*)&more;">
+	<!ENTITY int  "[+-]?(0|[1-9]\d*&more;)">
 	<!ENTITY frac "\.\d+&more;">
 	<!ENTITY exp  "[eE][+-]?\d+&more;">
 	
@@ -11,7 +11,7 @@
 	<!ENTITY datetime "\d\d\d\d-\d\d-\d\d(T&time;)?">
 ]>
 <!-- https://github.com/toml-lang/toml -->
-<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="8" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
+<language name="TOML" section="Configuration" extensions="*.toml" mimetype="text/x-toml" version="9" kateversion="5.0" author="flying-sheep@web.de" license="LGPLv2+">
 <highlighting>
 	<list name="bools">
 		<item>true</item>
@@ -24,6 +24,7 @@
 			<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>
@@ -41,6 +42,7 @@
 			<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">
@@ -81,6 +83,9 @@
 			<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>
@@ -96,6 +101,7 @@
 		<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="}" />
