diff --git a/KEYS b/KEYS
deleted file mode 100644
index 1c5b337..0000000
--- a/KEYS
+++ /dev/null
@@ -1,163 +0,0 @@
-pub   rsa4096 2020-04-11 [SC]
-      4793 17FA 7AFD 44AC A4CC  0778 C7C4 3555 607F E2EF
-uid           [ultimate] Nikita Ivanov <nivanov30@gmail.com>
-sub   rsa4096 2020-04-11 [E]
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-=5XS0
------END PGP PUBLIC KEY BLOCK-----
-
-pub   rsa4096 2020-03-31 [SC] [expires: 2024-03-31]
-      223A2AADD175994F4450467491D161EDD8405C82
-uid           [ultimate] Aaron Radzinski <aradzinski@datalingvo.com>
-sig 3        91D161EDD8405C82 2020-03-31  Aaron Radzinski <aradzinski@datalingvo.com>
-sub   rsa4096 2020-03-31 [E] [expires: 2024-03-31]
-sig          91D161EDD8405C82 2020-03-31  Aaron Radzinski <aradzinski@datalingvo.com>
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-U1vaIvVhIXD6xZ6ug/RDsFUJSQ==
-=O7in
------END PGP PUBLIC KEY BLOCK-----
-
-pub   rsa3072 2020-08-23 [SC] [expires: 2022-08-23]
-      CD57A1B6C91F3D512C1D8B07825F1640958F5D27
-uid           [ultimate] Aaron Radzinski <aradzinski@datalingvo.com>
-sub   rsa3072 2020-08-23 [E] [expires: 2022-08-23]
-
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-=2LXc
------END PGP PUBLIC KEY BLOCK-----
\ No newline at end of file
diff --git a/README.md b/README.md
index 20e7e82..d481c59 100644
--- a/README.md
+++ b/README.md
@@ -50,8 +50,19 @@
 ### English Focused
 NLPCraft focuses on processing English language delivering the ease of use and unparalleled comprehension for the language spoken by more than a billion people.
 
+### By Devs - For Devs
+Built with a singular focus - provide developers with unprecedented productivity and efficiency when building  modern NLI applications.
+
+### Advanced NLP Toolset
+Combines easy-of-use and development productivity with state-of-the-art NLP capabilities like short-term-memory (STM) support, advanced intent DSL with deterministic matching, and composable NEs.
+                        
 ### Java-First
-REST API and Java-based implementation natively support world's largest ecosystem of development tools, programming languages and services.
+REST API and Java-based implementation natively support world's largest ecosystem of development tools, multiple programming languages, frameworks and services.
+
+<a target=_ href="https://www.oracle.com/java/"><img src="https://nlpcraft.apache.org/images/java2.png" height="32px" alt=""></a>
+<a target=_ href="https://scala-lang.org/"><img src="https://nlpcraft.apache.org/images/scala-logo.png" height="24px" alt=""></a>
+<a target=_ href="https://groovy-lang.org/"><img src="https://nlpcraft.apache.org/images/groovy.png" height="32px" alt=""></a>
+<a target=_ href="https://kotlinlang.org/"><img src="https://nlpcraft.apache.org/images/kotlin.png" height="32px" alt=""></a>
 
 ### Model-As-A-Code
 Model-as-a-code convention natively supports any system development life cycle tools and frameworks in Java eco-system.
@@ -138,7 +149,7 @@
       - "{<ACTION>|shut|kill|stop|eliminate} {off|out} <LIGHT>"
       - "no <LIGHT>"
 intents:
-  - "intent=ls conv=false term(act)={groups @@ 'act'} term(loc)={id == 'ls:loc'}*"
+  - "intent=ls term(act)~{groups @@ 'act'} term(loc)~{id == 'ls:loc'}*"
 ```
 
 ### Model Implementation
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
index a076fa7..0e17713 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/alarm/alarm_model.json
@@ -34,6 +34,6 @@
         }
     ],
     "intents": [
-        "intent=alarm term={id=='x:alarm'} term(nums)={id=='nlpcraft:num' && ~nlpcraft:num:unittype=='datetime' && ~nlpcraft:num:isequalcondition==true}[0,7]"
+        "intent=alarm term~{id=='x:alarm'} term(nums)~{id=='nlpcraft:num' && ~nlpcraft:num:unittype=='datetime' && ~nlpcraft:num:isequalcondition==true}[0,7]"
     ]
 }
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml
index 8793f50..44419c5 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/lightswitch/lightswitch_model.yaml
@@ -52,4 +52,4 @@
       - "{<ACTION>|shut|kill|stop|eliminate} {off|out} <LIGHT>"
       - "no <LIGHT>"
 intents:
-  - "intent=ls conv=true term(act)={groups @@ 'act'} term(loc)={id == 'ls:loc'}*"
\ No newline at end of file
+  - "intent=ls term(act)={groups @@ 'act'} term(loc)={id == 'ls:loc'}*"
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java
index 05c94aa..250c492 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/phone/PhoneModel.java
@@ -51,7 +51,6 @@
      */
     @NCIntent("" +
         "intent=action " +
-        "conv=false " + // No conversation support.
         "term={id == 'phone:act'} " +
         // Either organization, person or a phone number (or a combination of).
         "term(rcpt)={id == 'google:organization' || id == 'google:person' || id == 'google:phone_number'}[1,3]"
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala
index 931f7ac..a837967 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/sql/SqlModel.scala
@@ -277,15 +277,15 @@
       * @param limitTokOpt Limit token. Optional.
       */
     @NCIntent(
-        "intent=commonReport conv=true " +
-        "term(tbls)={groups @@ 'table'}[0,7] " +
-        "term(cols)={id == 'col:date' || id == 'col:num' || id == 'col:varchar'}[0,7] " +
-        "term(condNums)={id == 'condition:num'}[0,7] " +
-        "term(condVals)={id == 'condition:value'}[0,7] " +
-        "term(condDates)={id == 'condition:date'}[0,7] " +
-        "term(condFreeDate)={id == 'nlpcraft:date'}? " +
-        "term(sort)={id == 'nlpcraft:sort'}? " +
-        "term(limit)={id == 'nlpcraft:limit'}?"
+        "intent=commonReport " +
+        "term(tbls)~{groups @@ 'table'}[0,7] " +
+        "term(cols)~{id == 'col:date' || id == 'col:num' || id == 'col:varchar'}[0,7] " +
+        "term(condNums)~{id == 'condition:num'}[0,7] " +
+        "term(condVals)~{id == 'condition:value'}[0,7] " +
+        "term(condDates)~{id == 'condition:date'}[0,7] " +
+        "term(condFreeDate)~{id == 'nlpcraft:date'}? " +
+        "term(sort)~{id == 'nlpcraft:sort'}? " +
+        "term(limit)~{id == 'nlpcraft:limit'}?"
     )
     @NCIntentSample(Array(
         "order date, please!",
@@ -339,15 +339,15 @@
       * @param limitTokOpt Limit token. Optional.
       */
     @NCIntent(
-        "intent=customSortReport conv=true " +
-        "term(sort)={id == 'sort:best' || id == 'sort:worst'} " +
-        "term(tbls)={groups @@ 'table'}[0,7] " +
-        "term(cols)={id == 'col:date' || id == 'col:num' || id == 'col:varchar'}[0,7] " +
-        "term(condNums)={id == 'condition:num'}[0,7] " +
-        "term(condVals)={id == 'condition:value'}[0,7] " +
-        "term(condDates)={id == 'condition:date'}[0,7] " +
-        "term(condFreeDate)={id == 'nlpcraft:date'}? " +
-        "term(limit)={id == 'nlpcraft:limit'}?"
+        "intent=customSortReport " +
+        "term(sort)~{id == 'sort:best' || id == 'sort:worst'} " +
+        "term(tbls)~{groups @@ 'table'}[0,7] " +
+        "term(cols)~{id == 'col:date' || id == 'col:num' || id == 'col:varchar'}[0,7] " +
+        "term(condNums)~{id == 'condition:num'}[0,7] " +
+        "term(condVals)~{id == 'condition:value'}[0,7] " +
+        "term(condDates)~{id == 'condition:date'}[0,7] " +
+        "term(condFreeDate)~{id == 'nlpcraft:date'}? " +
+        "term(limit)~{id == 'nlpcraft:limit'}?"
     )
     @NCIntentSample(Array(
         "What are the least performing categories for the last quarter?"
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java
index 696529e..63b7090 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/time/TimeModel.java
@@ -92,7 +92,7 @@
      * @param cityTok Token for 'geo' term.
      * @return Query result.
      */
-    @NCIntent("intent=intent2 conv=true term={id=='x:time'} term(city)={id=='nlpcraft:city'}")
+    @NCIntent("intent=intent2 term~{id=='x:time'} term(city)~{id=='nlpcraft:city'}")
     @NCIntentSample({
         "What time is it now in New York City?",
         "What's the current time in Moscow?",
@@ -119,7 +119,7 @@
      * @param ctx Intent solver context.
      * @return Query result.
      */
-    @NCIntent("intent=intent1 conv=false term={id=='x:time'}")
+    @NCIntent("intent=intent1 term={id=='x:time'}")
     @NCIntentSample({
         "What's the local time?"
     })
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java
index 872cb03..46dcfad 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/examples/weather/WeatherModel.java
@@ -124,11 +124,10 @@
      */
     @NCIntent(
         "intent=req " +
-        "conv=true " + // Support conversation context (i.e. short term memory).
-        "term={id == 'wt:phen'}* " + // Zero or more weather phenomenon.
-        "term(ind)={groups @@ 'indicator'}* " + // Optional indicator words (zero or more).
-        "term(city)={id == 'nlpcraft:city'}? " + // Optional city.
-        "term(date)={id == 'nlpcraft:date'}?" // Optional date (overrides indicator words).
+        "term~{id == 'wt:phen'}* " + // Zero or more weather phenomenon.
+        "term(ind)~{groups @@ 'indicator'}* " + // Optional indicator words (zero or more).
+        "term(city)~{id == 'nlpcraft:city'}? " + // Optional city.
+        "term(date)~{id == 'nlpcraft:date'}?" // Optional date (overrides indicator words).
     )
     // NOTE: each samples group will reset conversation STM.
     @NCIntentSample({
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCContext.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCContext.java
index 385c834..9e5028d 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCContext.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCContext.java
@@ -24,7 +24,7 @@
  * Data model query context. This context defines fully processed user input and its associated data that
  * the model's intents need to process and return the result.
  * 
- * @see NCIntentMatch
+ * @see NCIntentMatch#getContext() 
  */
 public interface NCContext extends Serializable {
     /**
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentMatch.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentMatch.java
index 669a0e3..8552856 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentMatch.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentMatch.java
@@ -32,6 +32,7 @@
  * @see NCIntent
  * @see NCIntentTerm
  * @see NCIntentSkip
+ * @see NCIntentSample
  * @see NCIntentRef
  */
 public interface NCIntentMatch extends Serializable {
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java
index f3e7c85..b196632 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCIntentSkip.java
@@ -36,6 +36,7 @@
  * @see NCIntent
  * @see NCIntentTerm
  * @see NCIntentRef
+ * @see NCIntentSample
  * @see NCIntentMatch
  * @see NCModel#onMatchedIntent(NCIntentMatch)
  */
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
index c51d093..4913286 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/NCToken.java
@@ -20,10 +20,17 @@
 import java.util.*;
 
 /**
- * Detected model element. A token is a detected model element and is a part of a
- * parsed user input. Sequence of tokens represents fully parsed (see {@link NCContext#getVariants()} method) user input. A single
+ * Detected model element. A token is a detected model element and is a part of the
+ * parsed user input. Sequence of tokens represents a fully parsed (see {@link NCContext#getVariants()} method) user input. A single
  * token corresponds to a one or more words, sequential or not, in the user sentence.
  * <p>
+ * Note that tokens can be used to define other tokens (i.e. tokens are composable). Because of that tokens naturally
+ * form a tree hierarchy - see methods {@link #findPartTokens(String...)}, {@link #getAliases()}, {@link #isOfAlias(String)}
+ * and {@link #getPartTokens()}.
+ * Note also that detected model elements that tokens represent also form another hierarchy, namely a model element hierarchy that
+ * user can also access via {@link #getAncestors()}, {@link #getParentId()} methods. These two hierarchies should be not
+ * be confused.
+ * <p>
  * <b>Configuring Token Providers</b><br>
  * Token providers (built-in or 3rd party) have to be enabled in the REST server <a href="https://nlpcraft.apache.org/server-and-probe.html">configuration</a>.
  * Data models also have to specify tokens they are expecting the REST server and probe to detect. This is done to
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
index fa56ba2..edb8591 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentDslCompiler.scala
@@ -43,7 +43,6 @@
       */
     class FiniteStateMachine extends NCIntentDslBaseListener {
         // Intent components.
-        private var conv: Boolean = true
         private var ordered: Boolean = false
         private var id: String = _
         private val terms = ArrayBuffer.empty[NCDslTerm] // Accumulator for parsed terms.
@@ -52,6 +51,7 @@
     
         // Currently parsed term.
         private var termId: String = _
+        private var termConv: Boolean = _
         
         // Current min/max quantifier.
         private var min = 1
@@ -70,7 +70,7 @@
             require(id != null)
             require(terms.nonEmpty)
             
-            NCDslIntent(id, conv, ordered, flow.toArray, terms.toArray)
+            NCDslIntent(id, ordered, flow.toArray, terms.toArray)
         }
     
         /**
@@ -101,7 +101,11 @@
         override def exitTermId(ctx: NCIntentDslParser.TermIdContext): Unit = {
             termId = ctx.ID().getText
         }
-    
+
+        override def exitTermEq(ctx: NCIntentDslParser.TermEqContext): Unit = {
+            termConv = ctx.TILDA() != null
+        }
+
         override def exitMinMaxRange(ctx: NCIntentDslParser.MinMaxRangeContext): Unit = {
             val minStr = ctx.getChild(1).getText
             val maxStr = ctx.getChild(3).getText
@@ -118,10 +122,6 @@
             id = ctx.ID().getText
         }
     
-        override def exitConvDecl(ctx: NCIntentDslParser.ConvDeclContext): Unit = {
-            conv = ctx.BOOL().getText == "true"
-        }
-    
         override def exitOrderedDecl(ctx: NCIntentDslParser.OrderedDeclContext): Unit = {
             ordered = ctx.BOOL().getText == "true"
         }
@@ -131,10 +131,15 @@
             
             val p = predStack.pop
             
-            terms += new NCDslTerm(termId, new java.util.function.Function[NCToken, java.lang.Boolean]() {
-                override def apply(tok: NCToken): java.lang.Boolean = p.apply(tok)
-                override def toString: String = p.toString() //ctx.item().getText
-            }, min, max)
+            terms += new NCDslTerm(
+                termId,
+                new java.util.function.Function[NCToken, java.lang.Boolean]() {
+                    override def apply(tok: NCToken): java.lang.Boolean = p.apply(tok)
+                    override def toString: String = p.toString() //ctx.item().getText
+                },
+                min,
+                max,
+                termConv)
             
             // Reset.
             termId = null
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
index e42c92c..db41dd0 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/NCIntentSolverEngine.scala
@@ -114,7 +114,6 @@
         usedTokens: List[UsedToken],
         weight: Weight
     ) {
-        lazy val minIndex: Int = usedTokens.minBy(_.token.index).token.index
         lazy val maxIndex: Int = usedTokens.maxBy(_.token.index).token.index
     }
 
@@ -163,7 +162,6 @@
             variantIdx: Int // Variant index.
         )
         val req = ctx.getRequest
-        val conv = ctx.getConversation.getTokens
 
         startScopedSpan("solve",
             "srvReqId" → req.getServerRequestId,
@@ -187,17 +185,17 @@
 
                         // Isolated conversation tokens.
                         val convToks =
-                            if (intent.conv)
+                            if (intent.terms.exists(_.isConversational))
                                 Seq.empty[UsedToken] ++
                                     // We shouldn't mix tokens with same group from conversation
                                     // history and processed sentence.
-                                    conv.
+                                    ctx.getConversation.getTokens.
                                         filter(t ⇒ {
                                             val convTokGroups = t.getGroups.sorted
 
                                             !senTokGroups.exists(convTokGroups.containsSlice)
                                         }).
-                                        map(UsedToken(false, true, _))
+                                        map(UsedToken(used = false, conv = true, _))
                             else
                                 Seq.empty[UsedToken]
 
@@ -418,7 +416,7 @@
                 solveTerm(
                     term,
                     senToks,
-                    convToks
+                    if (term.isConversational) convToks else Seq.empty
                 ) match {
                     case Some(termMatch) ⇒
                         if (ordered && lastTermMatch != null && lastTermMatch.maxIndex > termMatch.maxIndex)
@@ -511,6 +509,7 @@
                 termWeight ++= t._2
     
                 Some(TermMatch(term.getId, termToks, termWeight))
+
             case None ⇒
                 None
         }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4 b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
index 5486689..b3025c4 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4
@@ -17,9 +17,8 @@
 
 grammar NCIntentDsl;
 
-intent: intentId convDecl? orderedDecl? flowDecl? terms EOF;
+intent: intentId orderedDecl? flowDecl? terms EOF;
 intentId: 'intent' EQ ID;
-convDecl: 'conv' EQ BOOL;
 orderedDecl: 'ordered' EQ BOOL;
 flowDecl: 'flow' EQ SQUOTE flow SQUOTE;
 flow
@@ -37,7 +36,8 @@
     | idList VERT ID
     ;
 terms: term | terms term;
-term: 'term' termId? EQ LCURLY item RCURLY minMax?;
+termEq: EQ | TILDA;
+term: 'term' termId? termEq LCURLY item RCURLY minMax?;
 termId: LPAREN ID RPAREN;
 item
     : predicate
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp
index 6ea233e..40e4f1c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.interp
@@ -1,7 +1,6 @@
 token literal names:
 null
 'intent'
-'conv'
 'ordered'
 'flow'
 'term'
@@ -59,7 +58,6 @@
 null
 null
 null
-null
 PRED_OP
 AND
 OR
@@ -93,7 +91,6 @@
 rule names:
 intent
 intentId
-convDecl
 orderedDecl
 flowDecl
 flow
@@ -101,6 +98,7 @@
 flowItemIds
 idList
 terms
+termEq
 term
 termId
 item
@@ -119,4 +117,4 @@
 
 
 atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 45, 268, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 3, 2, 3, 2, 5, 2, 55, 10, 2, 3, 2, 5, 2, 58, 10, 2, 3, 2, 5, 2, 61, 10, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 5, 7, 86, 10, 7, 3, 7, 3, 7, 3, 7, 7, 7, 91, 10, 7, 12, 7, 14, 7, 94, 11, 7, 3, 8, 3, 8, 5, 8, 98, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 105, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 113, 10, 10, 12, 10, 14, 10, 116, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 123, 10, 11, 12, 11, 14, 11, 126, 11, 11, 3, 12, 3, 12, 5, 12, 130, 10, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 137, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 151, 10, 14, 3, 14, 3, 14, 3, 14, 7, 14, 156, 10, 14, 12, 14, 14, 14, 159, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 172, 10, 15, 3, 16, 5, 16, 175, 10, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 186, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 193, 10, 17, 12, 17, 14, 17, 196, 11, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 5, 19, 203, 10, 19, 3, 19, 3, 19, 3, 19, 5, 19, 208, 10, 19, 3, 19, 3, 19, 5, 19, 212, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 219, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 7, 21, 227, 10, 21, 12, 21, 14, 21, 230, 11, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 245, 10, 22, 3, 23, 3, 23, 7, 23, 249, 10, 23, 12, 23, 14, 23, 252, 11, 23, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 258, 10, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 2, 8, 12, 18, 20, 26, 32, 40, 27, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 2, 5, 3, 2, 18, 19, 3, 2, 26, 26, 3, 2, 37, 39, 2, 278, 2, 52, 3, 2, 2, 2, 4, 65, 3, 2, 2, 2, 6, 69, 3, 2, 2, 2, 8, 73, 3, 2, 2, 2, 10, 77, 3, 2, 2, 2, 12, 85, 3, 2, 2, 2, 14, 95, 3, 2, 2, 2, 16, 104, 3, 2, 2, 2, 18, 106, 3, 2, 2, 2, 20, 117, 3, 2, 2, 2, 22, 127, 3, 2, 2, 2, 24, 138, 3, 2, 2, 2, 26, 150, 3, 2, 2, 2, 28, 171, 3, 2, 2, 2, 30, 174, 3, 2, 2, 2, 32, 187, 3, 2, 2, 2, 34, 197, 3, 2, 2, 2, 36, 211, 3, 2, 2, 2, 38, 218, 3, 2, 2, 2, 40, 220, 3, 2, 2, 2, 42, 244, 3, 2, 2, 2, 44, 246, 3, 2, 2, 2, 46, 257, 3, 2, 2, 2, 48, 259, 3, 2, 2, 2, 50, 261, 3, 2, 2, 2, 52, 54, 5, 4, 3, 2, 53, 55, 5, 6, 4, 2, 54, 53, 3, 2, 2, 2, 54, 55, 3, 2, 2, 2, 55, 57, 3, 2, 2, 2, 56, 58, 5, 8, 5, 2, 57, 56, 3, 2, 2, 2, 57, 58, 3, 2, 2, 2, 58, 60, 3, 2, 2, 2, 59, 61, 5, 10, 6, 2, 60, 59, 3, 2, 2, 2, 60, 61, 3, 2, 2, 2, 61, 62, 3, 2, 2, 2, 62, 63, 5, 20, 11, 2, 63, 64, 7, 2, 2, 3, 64, 3, 3, 2, 2, 2, 65, 66, 7, 3, 2, 2, 66, 67, 7, 36, 2, 2, 67, 68, 7, 43, 2, 2, 68, 5, 3, 2, 2, 2, 69, 70, 7, 4, 2, 2, 70, 71, 7, 36, 2, 2, 71, 72, 7, 40, 2, 2, 72, 7, 3, 2, 2, 2, 73, 74, 7, 5, 2, 2, 74, 75, 7, 36, 2, 2, 75, 76, 7, 40, 2, 2, 76, 9, 3, 2, 2, 2, 77, 78, 7, 6, 2, 2, 78, 79, 7, 36, 2, 2, 79, 80, 7, 26, 2, 2, 80, 81, 5, 12, 7, 2, 81, 82, 7, 26, 2, 2, 82, 11, 3, 2, 2, 2, 83, 86, 8, 7, 1, 2, 84, 86, 5, 14, 8, 2, 85, 83, 3, 2, 2, 2, 85, 84, 3, 2, 2, 2, 86, 92, 3, 2, 2, 2, 87, 88, 12, 3, 2, 2, 88, 89, 7, 28, 2, 2, 89, 91, 5, 14, 8, 2, 90, 87, 3, 2, 2, 2, 91, 94, 3, 2, 2, 2, 92, 90, 3, 2, 2, 2, 92, 93, 3, 2, 2, 2, 93, 13, 3, 2, 2, 2, 94, 92, 3, 2, 2, 2, 95, 97, 5, 16, 9, 2, 96, 98, 5, 46, 24, 2, 97, 96, 3, 2, 2, 2, 97, 98, 3, 2, 2, 2, 98, 15, 3, 2, 2, 2, 99, 105, 7, 43, 2, 2, 100, 101, 7, 22, 2, 2, 101, 102, 5, 18, 10, 2, 102, 103, 7, 23, 2, 2, 103, 105, 3, 2, 2, 2, 104, 99, 3, 2, 2, 2, 104, 100, 3, 2, 2, 2, 105, 17, 3, 2, 2, 2, 106, 107, 8, 10, 1, 2, 107, 108, 7, 43, 2, 2, 108, 114, 3, 2, 2, 2, 109, 110, 12, 3, 2, 2, 110, 111, 7, 20, 2, 2, 111, 113, 7, 43, 2, 2, 112, 109, 3, 2, 2, 2, 113, 116, 3, 2, 2, 2, 114, 112, 3, 2, 2, 2, 114, 115, 3, 2, 2, 2, 115, 19, 3, 2, 2, 2, 116, 114, 3, 2, 2, 2, 117, 118, 8, 11, 1, 2, 118, 119, 5, 22, 12, 2, 119, 124, 3, 2, 2, 2, 120, 121, 12, 3, 2, 2, 121, 123, 5, 22, 12, 2, 122, 120, 3, 2, 2, 2, 123, 126, 3, 2, 2, 2, 124, 122, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 21, 3, 2, 2, 2, 126, 124, 3, 2, 2, 2, 127, 129, 7, 7, 2, 2, 128, 130, 5, 24, 13, 2, 129, 128, 3, 2, 2, 2, 129, 130, 3, 2, 2, 2, 130, 131, 3, 2, 2, 2, 131, 132, 7, 36, 2, 2, 132, 133, 7, 24, 2, 2, 133, 134, 5, 26, 14, 2, 134, 136, 7, 25, 2, 2, 135, 137, 5, 46, 24, 2, 136, 135, 3, 2, 2, 2, 136, 137, 3, 2, 2, 2, 137, 23, 3, 2, 2, 2, 138, 139, 7, 22, 2, 2, 139, 140, 7, 43, 2, 2, 140, 141, 7, 23, 2, 2, 141, 25, 3, 2, 2, 2, 142, 143, 8, 14, 1, 2, 143, 151, 5, 28, 15, 2, 144, 145, 7, 22, 2, 2, 145, 146, 5, 26, 14, 2, 146, 147, 7, 23, 2, 2, 147, 151, 3, 2, 2, 2, 148, 149, 7, 21, 2, 2, 149, 151, 5, 26, 14, 3, 150, 142, 3, 2, 2, 2, 150, 144, 3, 2, 2, 2, 150, 148, 3, 2, 2, 2, 151, 157, 3, 2, 2, 2, 152, 153, 12, 4, 2, 2, 153, 154, 9, 2, 2, 2, 154, 156, 5, 26, 14, 5, 155, 152, 3, 2, 2, 2, 156, 159, 3, 2, 2, 2, 157, 155, 3, 2, 2, 2, 157, 158, 3, 2, 2, 2, 158, 27, 3, 2, 2, 2, 159, 157, 3, 2, 2, 2, 160, 161, 5, 30, 16, 2, 161, 162, 7, 17, 2, 2, 162, 163, 5, 38, 20, 2, 163, 172, 3, 2, 2, 2, 164, 165, 7, 43, 2, 2, 165, 166, 7, 22, 2, 2, 166, 167, 5, 30, 16, 2, 167, 168, 7, 23, 2, 2, 168, 169, 7, 17, 2, 2, 169, 170, 5, 38, 20, 2, 170, 172, 3, 2, 2, 2, 171, 160, 3, 2, 2, 2, 171, 164, 3, 2, 2, 2, 172, 29, 3, 2, 2, 2, 173, 175, 5, 32, 17, 2, 174, 173, 3, 2, 2, 2, 174, 175, 3, 2, 2, 2, 175, 185, 3, 2, 2, 2, 176, 186, 7, 8, 2, 2, 177, 186, 7, 9, 2, 2, 178, 186, 7, 10, 2, 2, 179, 186, 7, 11, 2, 2, 180, 186, 7, 12, 2, 2, 181, 186, 7, 13, 2, 2, 182, 186, 7, 14, 2, 2, 183, 186, 7, 15, 2, 2, 184, 186, 5, 42, 22, 2, 185, 176, 3, 2, 2, 2, 185, 177, 3, 2, 2, 2, 185, 178, 3, 2, 2, 2, 185, 179, 3, 2, 2, 2, 185, 180, 3, 2, 2, 2, 185, 181, 3, 2, 2, 2, 185, 182, 3, 2, 2, 2, 185, 183, 3, 2, 2, 2, 185, 184, 3, 2, 2, 2, 186, 31, 3, 2, 2, 2, 187, 188, 8, 17, 1, 2, 188, 189, 5, 34, 18, 2, 189, 194, 3, 2, 2, 2, 190, 191, 12, 3, 2, 2, 191, 193, 5, 34, 18, 2, 192, 190, 3, 2, 2, 2, 193, 196, 3, 2, 2, 2, 194, 192, 3, 2, 2, 2, 194, 195, 3, 2, 2, 2, 195, 33, 3, 2, 2, 2, 196, 194, 3, 2, 2, 2, 197, 198, 7, 43, 2, 2, 198, 199, 7, 34, 2, 2, 199, 35, 3, 2, 2, 2, 200, 212, 7, 16, 2, 2, 201, 203, 7, 33, 2, 2, 202, 201, 3, 2, 2, 2, 202, 203, 3, 2, 2, 2, 203, 207, 3, 2, 2, 2, 204, 208, 7, 41, 2, 2, 205, 206, 7, 41, 2, 2, 206, 208, 7, 42, 2, 2, 207, 204, 3, 2, 2, 2, 207, 205, 3, 2, 2, 2, 208, 212, 3, 2, 2, 2, 209, 212, 7, 40, 2, 2, 210, 212, 5, 44, 23, 2, 211, 200, 3, 2, 2, 2, 211, 202, 3, 2, 2, 2, 211, 209, 3, 2, 2, 2, 211, 210, 3, 2, 2, 2, 212, 37, 3, 2, 2, 2, 213, 219, 5, 36, 19, 2, 214, 215, 7, 22, 2, 2, 215, 216, 5, 40, 21, 2, 216, 217, 7, 23, 2, 2, 217, 219, 3, 2, 2, 2, 218, 213, 3, 2, 2, 2, 218, 214, 3, 2, 2, 2, 219, 39, 3, 2, 2, 2, 220, 221, 8, 21, 1, 2, 221, 222, 5, 36, 19, 2, 222, 228, 3, 2, 2, 2, 223, 224, 12, 3, 2, 2, 224, 225, 7, 31, 2, 2, 225, 227, 5, 36, 19, 2, 226, 223, 3, 2, 2, 2, 227, 230, 3, 2, 2, 2, 228, 226, 3, 2, 2, 2, 228, 229, 3, 2, 2, 2, 229, 41, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 231, 232, 7, 27, 2, 2, 232, 245, 7, 43, 2, 2, 233, 234, 7, 27, 2, 2, 234, 235, 7, 43, 2, 2, 235, 236, 7, 29, 2, 2, 236, 237, 7, 41, 2, 2, 237, 245, 7, 30, 2, 2, 238, 239, 7, 27, 2, 2, 239, 240, 7, 43, 2, 2, 240, 241, 7, 29, 2, 2, 241, 242, 5, 44, 23, 2, 242, 243, 7, 30, 2, 2, 243, 245, 3, 2, 2, 2, 244, 231, 3, 2, 2, 2, 244, 233, 3, 2, 2, 2, 244, 238, 3, 2, 2, 2, 245, 43, 3, 2, 2, 2, 246, 250, 7, 26, 2, 2, 247, 249, 10, 3, 2, 2, 248, 247, 3, 2, 2, 2, 249, 252, 3, 2, 2, 2, 250, 248, 3, 2, 2, 2, 250, 251, 3, 2, 2, 2, 251, 253, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 253, 254, 7, 26, 2, 2, 254, 45, 3, 2, 2, 2, 255, 258, 5, 48, 25, 2, 256, 258, 5, 50, 26, 2, 257, 255, 3, 2, 2, 2, 257, 256, 3, 2, 2, 2, 258, 47, 3, 2, 2, 2, 259, 260, 9, 4, 2, 2, 260, 49, 3, 2, 2, 2, 261, 262, 7, 29, 2, 2, 262, 263, 7, 41, 2, 2, 263, 264, 7, 31, 2, 2, 264, 265, 7, 41, 2, 2, 265, 266, 7, 30, 2, 2, 266, 51, 3, 2, 2, 2, 27, 54, 57, 60, 85, 92, 97, 104, 114, 124, 129, 136, 150, 157, 171, 174, 185, 194, 202, 207, 211, 218, 228, 244, 250, 257]
\ No newline at end of file
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 44, 263, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 3, 2, 3, 2, 5, 2, 55, 10, 2, 3, 2, 5, 2, 58, 10, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 5, 6, 79, 10, 6, 3, 6, 3, 6, 3, 6, 7, 6, 84, 10, 6, 12, 6, 14, 6, 87, 11, 6, 3, 7, 3, 7, 5, 7, 91, 10, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 98, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 106, 10, 9, 12, 9, 14, 9, 109, 11, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 116, 10, 10, 12, 10, 14, 10, 119, 11, 10, 3, 11, 3, 11, 3, 12, 3, 12, 5, 12, 125, 10, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 5, 12, 132, 10, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 146, 10, 14, 3, 14, 3, 14, 3, 14, 7, 14, 151, 10, 14, 12, 14, 14, 14, 154, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 167, 10, 15, 3, 16, 5, 16, 170, 10, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 181, 10, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 188, 10, 17, 12, 17, 14, 17, 191, 11, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 5, 19, 198, 10, 19, 3, 19, 3, 19, 3, 19, 5, 19, 203, 10, 19, 3, 19, 3, 19, 5, 19, 207, 10, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 5, 20, 214, 10, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 7, 21, 222, 10, 21, 12, 21, 14, 21, 225, 11, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 240, 10, 22, 3, 23, 3, 23, 7, 23, 244, 10, 23, 12, 23, 14, 23, 247, 11, 23, 3, 23, 3, 23, 3, 24, 3, 24, 5, 24, 253, 10, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 2, 8, 10, 16, 18, 26, 32, 40, 27, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 2, 6, 4, 2, 26, 26, 35, 35, 3, 2, 17, 18, 3, 2, 25, 25, 3, 2, 36, 38, 2, 272, 2, 52, 3, 2, 2, 2, 4, 62, 3, 2, 2, 2, 6, 66, 3, 2, 2, 2, 8, 70, 3, 2, 2, 2, 10, 78, 3, 2, 2, 2, 12, 88, 3, 2, 2, 2, 14, 97, 3, 2, 2, 2, 16, 99, 3, 2, 2, 2, 18, 110, 3, 2, 2, 2, 20, 120, 3, 2, 2, 2, 22, 122, 3, 2, 2, 2, 24, 133, 3, 2, 2, 2, 26, 145, 3, 2, 2, 2, 28, 166, 3, 2, 2, 2, 30, 169, 3, 2, 2, 2, 32, 182, 3, 2, 2, 2, 34, 192, 3, 2, 2, 2, 36, 206, 3, 2, 2, 2, 38, 213, 3, 2, 2, 2, 40, 215, 3, 2, 2, 2, 42, 239, 3, 2, 2, 2, 44, 241, 3, 2, 2, 2, 46, 252, 3, 2, 2, 2, 48, 254, 3, 2, 2, 2, 50, 256, 3, 2, 2, 2, 52, 54, 5, 4, 3, 2, 53, 55, 5, 6, 4, 2, 54, 53, 3, 2, 2, 2, 54, 55, 3, 2, 2, 2, 55, 57, 3, 2, 2, 2, 56, 58, 5, 8, 5, 2, 57, 56, 3, 2, 2, 2, 57, 58, 3, 2, 2, 2, 58, 59, 3, 2, 2, 2, 59, 60, 5, 18, 10, 2, 60, 61, 7, 2, 2, 3, 61, 3, 3, 2, 2, 2, 62, 63, 7, 3, 2, 2, 63, 64, 7, 35, 2, 2, 64, 65, 7, 42, 2, 2, 65, 5, 3, 2, 2, 2, 66, 67, 7, 4, 2, 2, 67, 68, 7, 35, 2, 2, 68, 69, 7, 39, 2, 2, 69, 7, 3, 2, 2, 2, 70, 71, 7, 5, 2, 2, 71, 72, 7, 35, 2, 2, 72, 73, 7, 25, 2, 2, 73, 74, 5, 10, 6, 2, 74, 75, 7, 25, 2, 2, 75, 9, 3, 2, 2, 2, 76, 79, 8, 6, 1, 2, 77, 79, 5, 12, 7, 2, 78, 76, 3, 2, 2, 2, 78, 77, 3, 2, 2, 2, 79, 85, 3, 2, 2, 2, 80, 81, 12, 3, 2, 2, 81, 82, 7, 27, 2, 2, 82, 84, 5, 12, 7, 2, 83, 80, 3, 2, 2, 2, 84, 87, 3, 2, 2, 2, 85, 83, 3, 2, 2, 2, 85, 86, 3, 2, 2, 2, 86, 11, 3, 2, 2, 2, 87, 85, 3, 2, 2, 2, 88, 90, 5, 14, 8, 2, 89, 91, 5, 46, 24, 2, 90, 89, 3, 2, 2, 2, 90, 91, 3, 2, 2, 2, 91, 13, 3, 2, 2, 2, 92, 98, 7, 42, 2, 2, 93, 94, 7, 21, 2, 2, 94, 95, 5, 16, 9, 2, 95, 96, 7, 22, 2, 2, 96, 98, 3, 2, 2, 2, 97, 92, 3, 2, 2, 2, 97, 93, 3, 2, 2, 2, 98, 15, 3, 2, 2, 2, 99, 100, 8, 9, 1, 2, 100, 101, 7, 42, 2, 2, 101, 107, 3, 2, 2, 2, 102, 103, 12, 3, 2, 2, 103, 104, 7, 19, 2, 2, 104, 106, 7, 42, 2, 2, 105, 102, 3, 2, 2, 2, 106, 109, 3, 2, 2, 2, 107, 105, 3, 2, 2, 2, 107, 108, 3, 2, 2, 2, 108, 17, 3, 2, 2, 2, 109, 107, 3, 2, 2, 2, 110, 111, 8, 10, 1, 2, 111, 112, 5, 22, 12, 2, 112, 117, 3, 2, 2, 2, 113, 114, 12, 3, 2, 2, 114, 116, 5, 22, 12, 2, 115, 113, 3, 2, 2, 2, 116, 119, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 117, 118, 3, 2, 2, 2, 118, 19, 3, 2, 2, 2, 119, 117, 3, 2, 2, 2, 120, 121, 9, 2, 2, 2, 121, 21, 3, 2, 2, 2, 122, 124, 7, 6, 2, 2, 123, 125, 5, 24, 13, 2, 124, 123, 3, 2, 2, 2, 124, 125, 3, 2, 2, 2, 125, 126, 3, 2, 2, 2, 126, 127, 5, 20, 11, 2, 127, 128, 7, 23, 2, 2, 128, 129, 5, 26, 14, 2, 129, 131, 7, 24, 2, 2, 130, 132, 5, 46, 24, 2, 131, 130, 3, 2, 2, 2, 131, 132, 3, 2, 2, 2, 132, 23, 3, 2, 2, 2, 133, 134, 7, 21, 2, 2, 134, 135, 7, 42, 2, 2, 135, 136, 7, 22, 2, 2, 136, 25, 3, 2, 2, 2, 137, 138, 8, 14, 1, 2, 138, 146, 5, 28, 15, 2, 139, 140, 7, 21, 2, 2, 140, 141, 5, 26, 14, 2, 141, 142, 7, 22, 2, 2, 142, 146, 3, 2, 2, 2, 143, 144, 7, 20, 2, 2, 144, 146, 5, 26, 14, 3, 145, 137, 3, 2, 2, 2, 145, 139, 3, 2, 2, 2, 145, 143, 3, 2, 2, 2, 146, 152, 3, 2, 2, 2, 147, 148, 12, 4, 2, 2, 148, 149, 9, 3, 2, 2, 149, 151, 5, 26, 14, 5, 150, 147, 3, 2, 2, 2, 151, 154, 3, 2, 2, 2, 152, 150, 3, 2, 2, 2, 152, 153, 3, 2, 2, 2, 153, 27, 3, 2, 2, 2, 154, 152, 3, 2, 2, 2, 155, 156, 5, 30, 16, 2, 156, 157, 7, 16, 2, 2, 157, 158, 5, 38, 20, 2, 158, 167, 3, 2, 2, 2, 159, 160, 7, 42, 2, 2, 160, 161, 7, 21, 2, 2, 161, 162, 5, 30, 16, 2, 162, 163, 7, 22, 2, 2, 163, 164, 7, 16, 2, 2, 164, 165, 5, 38, 20, 2, 165, 167, 3, 2, 2, 2, 166, 155, 3, 2, 2, 2, 166, 159, 3, 2, 2, 2, 167, 29, 3, 2, 2, 2, 168, 170, 5, 32, 17, 2, 169, 168, 3, 2, 2, 2, 169, 170, 3, 2, 2, 2, 170, 180, 3, 2, 2, 2, 171, 181, 7, 7, 2, 2, 172, 181, 7, 8, 2, 2, 173, 181, 7, 9, 2, 2, 174, 181, 7, 10, 2, 2, 175, 181, 7, 11, 2, 2, 176, 181, 7, 12, 2, 2, 177, 181, 7, 13, 2, 2, 178, 181, 7, 14, 2, 2, 179, 181, 5, 42, 22, 2, 180, 171, 3, 2, 2, 2, 180, 172, 3, 2, 2, 2, 180, 173, 3, 2, 2, 2, 180, 174, 3, 2, 2, 2, 180, 175, 3, 2, 2, 2, 180, 176, 3, 2, 2, 2, 180, 177, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 180, 179, 3, 2, 2, 2, 181, 31, 3, 2, 2, 2, 182, 183, 8, 17, 1, 2, 183, 184, 5, 34, 18, 2, 184, 189, 3, 2, 2, 2, 185, 186, 12, 3, 2, 2, 186, 188, 5, 34, 18, 2, 187, 185, 3, 2, 2, 2, 188, 191, 3, 2, 2, 2, 189, 187, 3, 2, 2, 2, 189, 190, 3, 2, 2, 2, 190, 33, 3, 2, 2, 2, 191, 189, 3, 2, 2, 2, 192, 193, 7, 42, 2, 2, 193, 194, 7, 33, 2, 2, 194, 35, 3, 2, 2, 2, 195, 207, 7, 15, 2, 2, 196, 198, 7, 32, 2, 2, 197, 196, 3, 2, 2, 2, 197, 198, 3, 2, 2, 2, 198, 202, 3, 2, 2, 2, 199, 203, 7, 40, 2, 2, 200, 201, 7, 40, 2, 2, 201, 203, 7, 41, 2, 2, 202, 199, 3, 2, 2, 2, 202, 200, 3, 2, 2, 2, 203, 207, 3, 2, 2, 2, 204, 207, 7, 39, 2, 2, 205, 207, 5, 44, 23, 2, 206, 195, 3, 2, 2, 2, 206, 197, 3, 2, 2, 2, 206, 204, 3, 2, 2, 2, 206, 205, 3, 2, 2, 2, 207, 37, 3, 2, 2, 2, 208, 214, 5, 36, 19, 2, 209, 210, 7, 21, 2, 2, 210, 211, 5, 40, 21, 2, 211, 212, 7, 22, 2, 2, 212, 214, 3, 2, 2, 2, 213, 208, 3, 2, 2, 2, 213, 209, 3, 2, 2, 2, 214, 39, 3, 2, 2, 2, 215, 216, 8, 21, 1, 2, 216, 217, 5, 36, 19, 2, 217, 223, 3, 2, 2, 2, 218, 219, 12, 3, 2, 2, 219, 220, 7, 30, 2, 2, 220, 222, 5, 36, 19, 2, 221, 218, 3, 2, 2, 2, 222, 225, 3, 2, 2, 2, 223, 221, 3, 2, 2, 2, 223, 224, 3, 2, 2, 2, 224, 41, 3, 2, 2, 2, 225, 223, 3, 2, 2, 2, 226, 227, 7, 26, 2, 2, 227, 240, 7, 42, 2, 2, 228, 229, 7, 26, 2, 2, 229, 230, 7, 42, 2, 2, 230, 231, 7, 28, 2, 2, 231, 232, 7, 40, 2, 2, 232, 240, 7, 29, 2, 2, 233, 234, 7, 26, 2, 2, 234, 235, 7, 42, 2, 2, 235, 236, 7, 28, 2, 2, 236, 237, 5, 44, 23, 2, 237, 238, 7, 29, 2, 2, 238, 240, 3, 2, 2, 2, 239, 226, 3, 2, 2, 2, 239, 228, 3, 2, 2, 2, 239, 233, 3, 2, 2, 2, 240, 43, 3, 2, 2, 2, 241, 245, 7, 25, 2, 2, 242, 244, 10, 4, 2, 2, 243, 242, 3, 2, 2, 2, 244, 247, 3, 2, 2, 2, 245, 243, 3, 2, 2, 2, 245, 246, 3, 2, 2, 2, 246, 248, 3, 2, 2, 2, 247, 245, 3, 2, 2, 2, 248, 249, 7, 25, 2, 2, 249, 45, 3, 2, 2, 2, 250, 253, 5, 48, 25, 2, 251, 253, 5, 50, 26, 2, 252, 250, 3, 2, 2, 2, 252, 251, 3, 2, 2, 2, 253, 47, 3, 2, 2, 2, 254, 255, 9, 5, 2, 2, 255, 49, 3, 2, 2, 2, 256, 257, 7, 28, 2, 2, 257, 258, 7, 40, 2, 2, 258, 259, 7, 30, 2, 2, 259, 260, 7, 40, 2, 2, 260, 261, 7, 29, 2, 2, 261, 51, 3, 2, 2, 2, 26, 54, 57, 78, 85, 90, 97, 107, 117, 124, 131, 145, 152, 166, 169, 180, 189, 197, 202, 206, 213, 223, 239, 245, 252]
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens
index 8ae22bf..e2c3312 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.tokens
@@ -11,69 +11,67 @@
 T__10=11
 T__11=12
 T__12=13
-T__13=14
-PRED_OP=15
-AND=16
-OR=17
-VERT=18
-EXCL=19
-LPAREN=20
-RPAREN=21
-LCURLY=22
-RCURLY=23
-SQUOTE=24
-TILDA=25
-RIGHT=26
-LBR=27
-RBR=28
-COMMA=29
-COLON=30
-MINUS=31
-DOT=32
-UNDERSCORE=33
-EQ=34
-PLUS=35
-QUESTION=36
-STAR=37
-BOOL=38
-INT=39
-EXP=40
-ID=41
-WS=42
-ErrorCharacter=43
+PRED_OP=14
+AND=15
+OR=16
+VERT=17
+EXCL=18
+LPAREN=19
+RPAREN=20
+LCURLY=21
+RCURLY=22
+SQUOTE=23
+TILDA=24
+RIGHT=25
+LBR=26
+RBR=27
+COMMA=28
+COLON=29
+MINUS=30
+DOT=31
+UNDERSCORE=32
+EQ=33
+PLUS=34
+QUESTION=35
+STAR=36
+BOOL=37
+INT=38
+EXP=39
+ID=40
+WS=41
+ErrorCharacter=42
 'intent'=1
-'conv'=2
-'ordered'=3
-'flow'=4
-'term'=5
-'id'=6
-'aliases'=7
-'startidx'=8
-'endidx'=9
-'parent'=10
-'groups'=11
-'ancestors'=12
-'value'=13
-'null'=14
-'&&'=16
-'||'=17
-'|'=18
-'!'=19
-'('=20
-')'=21
-'{'=22
-'}'=23
-'\''=24
-'~'=25
-'>>'=26
-'['=27
-']'=28
-','=29
-':'=30
-'-'=31
-'.'=32
-'_'=33
-'='=34
-'+'=35
-'?'=36
-'*'=37
+'ordered'=2
+'flow'=3
+'term'=4
+'id'=5
+'aliases'=6
+'startidx'=7
+'endidx'=8
+'parent'=9
+'groups'=10
+'ancestors'=11
+'value'=12
+'null'=13
+'&&'=15
+'||'=16
+'|'=17
+'!'=18
+'('=19
+')'=20
+'{'=21
+'}'=22
+'\''=23
+'~'=24
+'>>'=25
+'['=26
+']'=27
+','=28
+':'=29
+'-'=30
+'.'=31
+'_'=32
+'='=33
+'+'=34
+'?'=35
+'*'=36
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java
index 14bfb7d..32fdf9c 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseListener.java
@@ -1,4 +1,4 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.model.intent.impl.antlr4;
 
 import org.antlr.v4.runtime.ParserRuleContext;
@@ -40,18 +40,6 @@
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
-	@Override public void enterConvDecl(NCIntentDslParser.ConvDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
-	@Override public void exitConvDecl(NCIntentDslParser.ConvDeclContext ctx) { }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation does nothing.</p>
-	 */
 	@Override public void enterOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx) { }
 	/**
 	 * {@inheritDoc}
@@ -136,6 +124,18 @@
 	 *
 	 * <p>The default implementation does nothing.</p>
 	 */
+	@Override public void enterTermEq(NCIntentDslParser.TermEqContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
+	@Override public void exitTermEq(NCIntentDslParser.TermEqContext ctx) { }
+	/**
+	 * {@inheritDoc}
+	 *
+	 * <p>The default implementation does nothing.</p>
+	 */
 	@Override public void enterTerm(NCIntentDslParser.TermContext ctx) { }
 	/**
 	 * {@inheritDoc}
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseVisitor.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseVisitor.java
deleted file mode 100644
index 5865db4..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslBaseVisitor.java
+++ /dev/null
@@ -1,189 +0,0 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4 by ANTLR 4.8
-package org.apache.nlpcraft.model.intent.impl.antlr4;
-import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
-
-/**
- * This class provides an empty implementation of {@link NCIntentDslVisitor},
- * which can be extended to create a visitor which only needs to handle a subset
- * of the available methods.
- *
- * @param <T> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public class NCIntentDslBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements NCIntentDslVisitor<T> {
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIntent(NCIntentDslParser.IntentContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIntentId(NCIntentDslParser.IntentIdContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitConvDecl(NCIntentDslParser.ConvDeclContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFlowDecl(NCIntentDslParser.FlowDeclContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFlow(NCIntentDslParser.FlowContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFlowItem(NCIntentDslParser.FlowItemContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitFlowItemIds(NCIntentDslParser.FlowItemIdsContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitIdList(NCIntentDslParser.IdListContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTerms(NCIntentDslParser.TermsContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTerm(NCIntentDslParser.TermContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitTermId(NCIntentDslParser.TermIdContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitItem(NCIntentDslParser.ItemContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitPredicate(NCIntentDslParser.PredicateContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitLval(NCIntentDslParser.LvalContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitLvalQual(NCIntentDslParser.LvalQualContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitLvalPart(NCIntentDslParser.LvalPartContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitRvalSingle(NCIntentDslParser.RvalSingleContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitRval(NCIntentDslParser.RvalContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitRvalList(NCIntentDslParser.RvalListContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMeta(NCIntentDslParser.MetaContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitQstring(NCIntentDslParser.QstringContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMinMax(NCIntentDslParser.MinMaxContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx) { return visitChildren(ctx); }
-}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp
index fcb2a0c..4fb76df 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.interp
@@ -1,7 +1,6 @@
 token literal names:
 null
 'intent'
-'conv'
 'ordered'
 'flow'
 'term'
@@ -59,7 +58,6 @@
 null
 null
 null
-null
 PRED_OP
 AND
 OR
@@ -104,7 +102,6 @@
 T__10
 T__11
 T__12
-T__13
 PRED_OP
 AND
 OR
@@ -143,4 +140,4 @@
 DEFAULT_MODE
 
 atn:
-[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 45, 294, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 5, 16, 195, 10, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 253, 10, 39, 3, 40, 3, 40, 3, 40, 7, 40, 258, 10, 40, 12, 40, 14, 40, 261, 11, 40, 5, 40, 263, 10, 40, 3, 41, 3, 41, 6, 41, 267, 10, 41, 13, 41, 14, 41, 268, 3, 42, 3, 42, 6, 42, 273, 10, 42, 13, 42, 14, 42, 274, 3, 42, 3, 42, 3, 42, 3, 42, 7, 42, 281, 10, 42, 12, 42, 14, 42, 284, 11, 42, 3, 43, 6, 43, 287, 10, 43, 13, 43, 14, 43, 288, 3, 43, 3, 43, 3, 44, 3, 44, 2, 2, 45, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 3, 2, 9, 4, 2, 62, 62, 64, 64, 3, 2, 51, 59, 4, 2, 50, 59, 97, 97, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 5, 2, 50, 59, 67, 92, 99, 124, 5, 2, 11, 12, 14, 15, 34, 34, 2, 310, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 3, 89, 3, 2, 2, 2, 5, 96, 3, 2, 2, 2, 7, 101, 3, 2, 2, 2, 9, 109, 3, 2, 2, 2, 11, 114, 3, 2, 2, 2, 13, 119, 3, 2, 2, 2, 15, 122, 3, 2, 2, 2, 17, 130, 3, 2, 2, 2, 19, 139, 3, 2, 2, 2, 21, 146, 3, 2, 2, 2, 23, 153, 3, 2, 2, 2, 25, 160, 3, 2, 2, 2, 27, 170, 3, 2, 2, 2, 29, 176, 3, 2, 2, 2, 31, 194, 3, 2, 2, 2, 33, 196, 3, 2, 2, 2, 35, 199, 3, 2, 2, 2, 37, 202, 3, 2, 2, 2, 39, 204, 3, 2, 2, 2, 41, 206, 3, 2, 2, 2, 43, 208, 3, 2, 2, 2, 45, 210, 3, 2, 2, 2, 47, 212, 3, 2, 2, 2, 49, 214, 3, 2, 2, 2, 51, 216, 3, 2, 2, 2, 53, 218, 3, 2, 2, 2, 55, 221, 3, 2, 2, 2, 57, 223, 3, 2, 2, 2, 59, 225, 3, 2, 2, 2, 61, 227, 3, 2, 2, 2, 63, 229, 3, 2, 2, 2, 65, 231, 3, 2, 2, 2, 67, 233, 3, 2, 2, 2, 69, 235, 3, 2, 2, 2, 71, 237, 3, 2, 2, 2, 73, 239, 3, 2, 2, 2, 75, 241, 3, 2, 2, 2, 77, 252, 3, 2, 2, 2, 79, 262, 3, 2, 2, 2, 81, 264, 3, 2, 2, 2, 83, 272, 3, 2, 2, 2, 85, 286, 3, 2, 2, 2, 87, 292, 3, 2, 2, 2, 89, 90, 7, 107, 2, 2, 90, 91, 7, 112, 2, 2, 91, 92, 7, 118, 2, 2, 92, 93, 7, 103, 2, 2, 93, 94, 7, 112, 2, 2, 94, 95, 7, 118, 2, 2, 95, 4, 3, 2, 2, 2, 96, 97, 7, 101, 2, 2, 97, 98, 7, 113, 2, 2, 98, 99, 7, 112, 2, 2, 99, 100, 7, 120, 2, 2, 100, 6, 3, 2, 2, 2, 101, 102, 7, 113, 2, 2, 102, 103, 7, 116, 2, 2, 103, 104, 7, 102, 2, 2, 104, 105, 7, 103, 2, 2, 105, 106, 7, 116, 2, 2, 106, 107, 7, 103, 2, 2, 107, 108, 7, 102, 2, 2, 108, 8, 3, 2, 2, 2, 109, 110, 7, 104, 2, 2, 110, 111, 7, 110, 2, 2, 111, 112, 7, 113, 2, 2, 112, 113, 7, 121, 2, 2, 113, 10, 3, 2, 2, 2, 114, 115, 7, 118, 2, 2, 115, 116, 7, 103, 2, 2, 116, 117, 7, 116, 2, 2, 117, 118, 7, 111, 2, 2, 118, 12, 3, 2, 2, 2, 119, 120, 7, 107, 2, 2, 120, 121, 7, 102, 2, 2, 121, 14, 3, 2, 2, 2, 122, 123, 7, 99, 2, 2, 123, 124, 7, 110, 2, 2, 124, 125, 7, 107, 2, 2, 125, 126, 7, 99, 2, 2, 126, 127, 7, 117, 2, 2, 127, 128, 7, 103, 2, 2, 128, 129, 7, 117, 2, 2, 129, 16, 3, 2, 2, 2, 130, 131, 7, 117, 2, 2, 131, 132, 7, 118, 2, 2, 132, 133, 7, 99, 2, 2, 133, 134, 7, 116, 2, 2, 134, 135, 7, 118, 2, 2, 135, 136, 7, 107, 2, 2, 136, 137, 7, 102, 2, 2, 137, 138, 7, 122, 2, 2, 138, 18, 3, 2, 2, 2, 139, 140, 7, 103, 2, 2, 140, 141, 7, 112, 2, 2, 141, 142, 7, 102, 2, 2, 142, 143, 7, 107, 2, 2, 143, 144, 7, 102, 2, 2, 144, 145, 7, 122, 2, 2, 145, 20, 3, 2, 2, 2, 146, 147, 7, 114, 2, 2, 147, 148, 7, 99, 2, 2, 148, 149, 7, 116, 2, 2, 149, 150, 7, 103, 2, 2, 150, 151, 7, 112, 2, 2, 151, 152, 7, 118, 2, 2, 152, 22, 3, 2, 2, 2, 153, 154, 7, 105, 2, 2, 154, 155, 7, 116, 2, 2, 155, 156, 7, 113, 2, 2, 156, 157, 7, 119, 2, 2, 157, 158, 7, 114, 2, 2, 158, 159, 7, 117, 2, 2, 159, 24, 3, 2, 2, 2, 160, 161, 7, 99, 2, 2, 161, 162, 7, 112, 2, 2, 162, 163, 7, 101, 2, 2, 163, 164, 7, 103, 2, 2, 164, 165, 7, 117, 2, 2, 165, 166, 7, 118, 2, 2, 166, 167, 7, 113, 2, 2, 167, 168, 7, 116, 2, 2, 168, 169, 7, 117, 2, 2, 169, 26, 3, 2, 2, 2, 170, 171, 7, 120, 2, 2, 171, 172, 7, 99, 2, 2, 172, 173, 7, 110, 2, 2, 173, 174, 7, 119, 2, 2, 174, 175, 7, 103, 2, 2, 175, 28, 3, 2, 2, 2, 176, 177, 7, 112, 2, 2, 177, 178, 7, 119, 2, 2, 178, 179, 7, 110, 2, 2, 179, 180, 7, 110, 2, 2, 180, 30, 3, 2, 2, 2, 181, 182, 7, 63, 2, 2, 182, 195, 7, 63, 2, 2, 183, 184, 7, 35, 2, 2, 184, 195, 7, 63, 2, 2, 185, 186, 7, 64, 2, 2, 186, 195, 7, 63, 2, 2, 187, 188, 7, 62, 2, 2, 188, 195, 7, 63, 2, 2, 189, 195, 9, 2, 2, 2, 190, 191, 7, 66, 2, 2, 191, 195, 7, 66, 2, 2, 192, 193, 7, 35, 2, 2, 193, 195, 7, 66, 2, 2, 194, 181, 3, 2, 2, 2, 194, 183, 3, 2, 2, 2, 194, 185, 3, 2, 2, 2, 194, 187, 3, 2, 2, 2, 194, 189, 3, 2, 2, 2, 194, 190, 3, 2, 2, 2, 194, 192, 3, 2, 2, 2, 195, 32, 3, 2, 2, 2, 196, 197, 7, 40, 2, 2, 197, 198, 7, 40, 2, 2, 198, 34, 3, 2, 2, 2, 199, 200, 7, 126, 2, 2, 200, 201, 7, 126, 2, 2, 201, 36, 3, 2, 2, 2, 202, 203, 7, 126, 2, 2, 203, 38, 3, 2, 2, 2, 204, 205, 7, 35, 2, 2, 205, 40, 3, 2, 2, 2, 206, 207, 7, 42, 2, 2, 207, 42, 3, 2, 2, 2, 208, 209, 7, 43, 2, 2, 209, 44, 3, 2, 2, 2, 210, 211, 7, 125, 2, 2, 211, 46, 3, 2, 2, 2, 212, 213, 7, 127, 2, 2, 213, 48, 3, 2, 2, 2, 214, 215, 7, 41, 2, 2, 215, 50, 3, 2, 2, 2, 216, 217, 7, 128, 2, 2, 217, 52, 3, 2, 2, 2, 218, 219, 7, 64, 2, 2, 219, 220, 7, 64, 2, 2, 220, 54, 3, 2, 2, 2, 221, 222, 7, 93, 2, 2, 222, 56, 3, 2, 2, 2, 223, 224, 7, 95, 2, 2, 224, 58, 3, 2, 2, 2, 225, 226, 7, 46, 2, 2, 226, 60, 3, 2, 2, 2, 227, 228, 7, 60, 2, 2, 228, 62, 3, 2, 2, 2, 229, 230, 7, 47, 2, 2, 230, 64, 3, 2, 2, 2, 231, 232, 7, 48, 2, 2, 232, 66, 3, 2, 2, 2, 233, 234, 7, 97, 2, 2, 234, 68, 3, 2, 2, 2, 235, 236, 7, 63, 2, 2, 236, 70, 3, 2, 2, 2, 237, 238, 7, 45, 2, 2, 238, 72, 3, 2, 2, 2, 239, 240, 7, 65, 2, 2, 240, 74, 3, 2, 2, 2, 241, 242, 7, 44, 2, 2, 242, 76, 3, 2, 2, 2, 243, 244, 7, 118, 2, 2, 244, 245, 7, 116, 2, 2, 245, 246, 7, 119, 2, 2, 246, 253, 7, 103, 2, 2, 247, 248, 7, 104, 2, 2, 248, 249, 7, 99, 2, 2, 249, 250, 7, 110, 2, 2, 250, 251, 7, 117, 2, 2, 251, 253, 7, 103, 2, 2, 252, 243, 3, 2, 2, 2, 252, 247, 3, 2, 2, 2, 253, 78, 3, 2, 2, 2, 254, 263, 7, 50, 2, 2, 255, 259, 9, 3, 2, 2, 256, 258, 9, 4, 2, 2, 257, 256, 3, 2, 2, 2, 258, 261, 3, 2, 2, 2, 259, 257, 3, 2, 2, 2, 259, 260, 3, 2, 2, 2, 260, 263, 3, 2, 2, 2, 261, 259, 3, 2, 2, 2, 262, 254, 3, 2, 2, 2, 262, 255, 3, 2, 2, 2, 263, 80, 3, 2, 2, 2, 264, 266, 5, 65, 33, 2, 265, 267, 9, 5, 2, 2, 266, 265, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 266, 3, 2, 2, 2, 268, 269, 3, 2, 2, 2, 269, 82, 3, 2, 2, 2, 270, 273, 5, 67, 34, 2, 271, 273, 9, 6, 2, 2, 272, 270, 3, 2, 2, 2, 272, 271, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 272, 3, 2, 2, 2, 274, 275, 3, 2, 2, 2, 275, 282, 3, 2, 2, 2, 276, 281, 9, 7, 2, 2, 277, 281, 5, 61, 31, 2, 278, 281, 5, 63, 32, 2, 279, 281, 5, 67, 34, 2, 280, 276, 3, 2, 2, 2, 280, 277, 3, 2, 2, 2, 280, 278, 3, 2, 2, 2, 280, 279, 3, 2, 2, 2, 281, 284, 3, 2, 2, 2, 282, 280, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 84, 3, 2, 2, 2, 284, 282, 3, 2, 2, 2, 285, 287, 9, 8, 2, 2, 286, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 286, 3, 2, 2, 2, 288, 289, 3, 2, 2, 2, 289, 290, 3, 2, 2, 2, 290, 291, 8, 43, 2, 2, 291, 86, 3, 2, 2, 2, 292, 293, 11, 2, 2, 2, 293, 88, 3, 2, 2, 2, 13, 2, 194, 252, 259, 262, 268, 272, 274, 280, 282, 288, 3, 8, 2, 2]
\ No newline at end of file
+[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 44, 287, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 188, 10, 15, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 246, 10, 38, 3, 39, 3, 39, 3, 39, 7, 39, 251, 10, 39, 12, 39, 14, 39, 254, 11, 39, 5, 39, 256, 10, 39, 3, 40, 3, 40, 6, 40, 260, 10, 40, 13, 40, 14, 40, 261, 3, 41, 3, 41, 6, 41, 266, 10, 41, 13, 41, 14, 41, 267, 3, 41, 3, 41, 3, 41, 3, 41, 7, 41, 274, 10, 41, 12, 41, 14, 41, 277, 11, 41, 3, 42, 6, 42, 280, 10, 42, 13, 42, 14, 42, 281, 3, 42, 3, 42, 3, 43, 3, 43, 2, 2, 44, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 3, 2, 9, 4, 2, 62, 62, 64, 64, 3, 2, 51, 59, 4, 2, 50, 59, 97, 97, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 5, 2, 50, 59, 67, 92, 99, 124, 5, 2, 11, 12, 14, 15, 34, 34, 2, 303, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 3, 87, 3, 2, 2, 2, 5, 94, 3, 2, 2, 2, 7, 102, 3, 2, 2, 2, 9, 107, 3, 2, 2, 2, 11, 112, 3, 2, 2, 2, 13, 115, 3, 2, 2, 2, 15, 123, 3, 2, 2, 2, 17, 132, 3, 2, 2, 2, 19, 139, 3, 2, 2, 2, 21, 146, 3, 2, 2, 2, 23, 153, 3, 2, 2, 2, 25, 163, 3, 2, 2, 2, 27, 169, 3, 2, 2, 2, 29, 187, 3, 2, 2, 2, 31, 189, 3, 2, 2, 2, 33, 192, 3, 2, 2, 2, 35, 195, 3, 2, 2, 2, 37, 197, 3, 2, 2, 2, 39, 199, 3, 2, 2, 2, 41, 201, 3, 2, 2, 2, 43, 203, 3, 2, 2, 2, 45, 205, 3, 2, 2, 2, 47, 207, 3, 2, 2, 2, 49, 209, 3, 2, 2, 2, 51, 211, 3, 2, 2, 2, 53, 214, 3, 2, 2, 2, 55, 216, 3, 2, 2, 2, 57, 218, 3, 2, 2, 2, 59, 220, 3, 2, 2, 2, 61, 222, 3, 2, 2, 2, 63, 224, 3, 2, 2, 2, 65, 226, 3, 2, 2, 2, 67, 228, 3, 2, 2, 2, 69, 230, 3, 2, 2, 2, 71, 232, 3, 2, 2, 2, 73, 234, 3, 2, 2, 2, 75, 245, 3, 2, 2, 2, 77, 255, 3, 2, 2, 2, 79, 257, 3, 2, 2, 2, 81, 265, 3, 2, 2, 2, 83, 279, 3, 2, 2, 2, 85, 285, 3, 2, 2, 2, 87, 88, 7, 107, 2, 2, 88, 89, 7, 112, 2, 2, 89, 90, 7, 118, 2, 2, 90, 91, 7, 103, 2, 2, 91, 92, 7, 112, 2, 2, 92, 93, 7, 118, 2, 2, 93, 4, 3, 2, 2, 2, 94, 95, 7, 113, 2, 2, 95, 96, 7, 116, 2, 2, 96, 97, 7, 102, 2, 2, 97, 98, 7, 103, 2, 2, 98, 99, 7, 116, 2, 2, 99, 100, 7, 103, 2, 2, 100, 101, 7, 102, 2, 2, 101, 6, 3, 2, 2, 2, 102, 103, 7, 104, 2, 2, 103, 104, 7, 110, 2, 2, 104, 105, 7, 113, 2, 2, 105, 106, 7, 121, 2, 2, 106, 8, 3, 2, 2, 2, 107, 108, 7, 118, 2, 2, 108, 109, 7, 103, 2, 2, 109, 110, 7, 116, 2, 2, 110, 111, 7, 111, 2, 2, 111, 10, 3, 2, 2, 2, 112, 113, 7, 107, 2, 2, 113, 114, 7, 102, 2, 2, 114, 12, 3, 2, 2, 2, 115, 116, 7, 99, 2, 2, 116, 117, 7, 110, 2, 2, 117, 118, 7, 107, 2, 2, 118, 119, 7, 99, 2, 2, 119, 120, 7, 117, 2, 2, 120, 121, 7, 103, 2, 2, 121, 122, 7, 117, 2, 2, 122, 14, 3, 2, 2, 2, 123, 124, 7, 117, 2, 2, 124, 125, 7, 118, 2, 2, 125, 126, 7, 99, 2, 2, 126, 127, 7, 116, 2, 2, 127, 128, 7, 118, 2, 2, 128, 129, 7, 107, 2, 2, 129, 130, 7, 102, 2, 2, 130, 131, 7, 122, 2, 2, 131, 16, 3, 2, 2, 2, 132, 133, 7, 103, 2, 2, 133, 134, 7, 112, 2, 2, 134, 135, 7, 102, 2, 2, 135, 136, 7, 107, 2, 2, 136, 137, 7, 102, 2, 2, 137, 138, 7, 122, 2, 2, 138, 18, 3, 2, 2, 2, 139, 140, 7, 114, 2, 2, 140, 141, 7, 99, 2, 2, 141, 142, 7, 116, 2, 2, 142, 143, 7, 103, 2, 2, 143, 144, 7, 112, 2, 2, 144, 145, 7, 118, 2, 2, 145, 20, 3, 2, 2, 2, 146, 147, 7, 105, 2, 2, 147, 148, 7, 116, 2, 2, 148, 149, 7, 113, 2, 2, 149, 150, 7, 119, 2, 2, 150, 151, 7, 114, 2, 2, 151, 152, 7, 117, 2, 2, 152, 22, 3, 2, 2, 2, 153, 154, 7, 99, 2, 2, 154, 155, 7, 112, 2, 2, 155, 156, 7, 101, 2, 2, 156, 157, 7, 103, 2, 2, 157, 158, 7, 117, 2, 2, 158, 159, 7, 118, 2, 2, 159, 160, 7, 113, 2, 2, 160, 161, 7, 116, 2, 2, 161, 162, 7, 117, 2, 2, 162, 24, 3, 2, 2, 2, 163, 164, 7, 120, 2, 2, 164, 165, 7, 99, 2, 2, 165, 166, 7, 110, 2, 2, 166, 167, 7, 119, 2, 2, 167, 168, 7, 103, 2, 2, 168, 26, 3, 2, 2, 2, 169, 170, 7, 112, 2, 2, 170, 171, 7, 119, 2, 2, 171, 172, 7, 110, 2, 2, 172, 173, 7, 110, 2, 2, 173, 28, 3, 2, 2, 2, 174, 175, 7, 63, 2, 2, 175, 188, 7, 63, 2, 2, 176, 177, 7, 35, 2, 2, 177, 188, 7, 63, 2, 2, 178, 179, 7, 64, 2, 2, 179, 188, 7, 63, 2, 2, 180, 181, 7, 62, 2, 2, 181, 188, 7, 63, 2, 2, 182, 188, 9, 2, 2, 2, 183, 184, 7, 66, 2, 2, 184, 188, 7, 66, 2, 2, 185, 186, 7, 35, 2, 2, 186, 188, 7, 66, 2, 2, 187, 174, 3, 2, 2, 2, 187, 176, 3, 2, 2, 2, 187, 178, 3, 2, 2, 2, 187, 180, 3, 2, 2, 2, 187, 182, 3, 2, 2, 2, 187, 183, 3, 2, 2, 2, 187, 185, 3, 2, 2, 2, 188, 30, 3, 2, 2, 2, 189, 190, 7, 40, 2, 2, 190, 191, 7, 40, 2, 2, 191, 32, 3, 2, 2, 2, 192, 193, 7, 126, 2, 2, 193, 194, 7, 126, 2, 2, 194, 34, 3, 2, 2, 2, 195, 196, 7, 126, 2, 2, 196, 36, 3, 2, 2, 2, 197, 198, 7, 35, 2, 2, 198, 38, 3, 2, 2, 2, 199, 200, 7, 42, 2, 2, 200, 40, 3, 2, 2, 2, 201, 202, 7, 43, 2, 2, 202, 42, 3, 2, 2, 2, 203, 204, 7, 125, 2, 2, 204, 44, 3, 2, 2, 2, 205, 206, 7, 127, 2, 2, 206, 46, 3, 2, 2, 2, 207, 208, 7, 41, 2, 2, 208, 48, 3, 2, 2, 2, 209, 210, 7, 128, 2, 2, 210, 50, 3, 2, 2, 2, 211, 212, 7, 64, 2, 2, 212, 213, 7, 64, 2, 2, 213, 52, 3, 2, 2, 2, 214, 215, 7, 93, 2, 2, 215, 54, 3, 2, 2, 2, 216, 217, 7, 95, 2, 2, 217, 56, 3, 2, 2, 2, 218, 219, 7, 46, 2, 2, 219, 58, 3, 2, 2, 2, 220, 221, 7, 60, 2, 2, 221, 60, 3, 2, 2, 2, 222, 223, 7, 47, 2, 2, 223, 62, 3, 2, 2, 2, 224, 225, 7, 48, 2, 2, 225, 64, 3, 2, 2, 2, 226, 227, 7, 97, 2, 2, 227, 66, 3, 2, 2, 2, 228, 229, 7, 63, 2, 2, 229, 68, 3, 2, 2, 2, 230, 231, 7, 45, 2, 2, 231, 70, 3, 2, 2, 2, 232, 233, 7, 65, 2, 2, 233, 72, 3, 2, 2, 2, 234, 235, 7, 44, 2, 2, 235, 74, 3, 2, 2, 2, 236, 237, 7, 118, 2, 2, 237, 238, 7, 116, 2, 2, 238, 239, 7, 119, 2, 2, 239, 246, 7, 103, 2, 2, 240, 241, 7, 104, 2, 2, 241, 242, 7, 99, 2, 2, 242, 243, 7, 110, 2, 2, 243, 244, 7, 117, 2, 2, 244, 246, 7, 103, 2, 2, 245, 236, 3, 2, 2, 2, 245, 240, 3, 2, 2, 2, 246, 76, 3, 2, 2, 2, 247, 256, 7, 50, 2, 2, 248, 252, 9, 3, 2, 2, 249, 251, 9, 4, 2, 2, 250, 249, 3, 2, 2, 2, 251, 254, 3, 2, 2, 2, 252, 250, 3, 2, 2, 2, 252, 253, 3, 2, 2, 2, 253, 256, 3, 2, 2, 2, 254, 252, 3, 2, 2, 2, 255, 247, 3, 2, 2, 2, 255, 248, 3, 2, 2, 2, 256, 78, 3, 2, 2, 2, 257, 259, 5, 63, 32, 2, 258, 260, 9, 5, 2, 2, 259, 258, 3, 2, 2, 2, 260, 261, 3, 2, 2, 2, 261, 259, 3, 2, 2, 2, 261, 262, 3, 2, 2, 2, 262, 80, 3, 2, 2, 2, 263, 266, 5, 65, 33, 2, 264, 266, 9, 6, 2, 2, 265, 263, 3, 2, 2, 2, 265, 264, 3, 2, 2, 2, 266, 267, 3, 2, 2, 2, 267, 265, 3, 2, 2, 2, 267, 268, 3, 2, 2, 2, 268, 275, 3, 2, 2, 2, 269, 274, 9, 7, 2, 2, 270, 274, 5, 59, 30, 2, 271, 274, 5, 61, 31, 2, 272, 274, 5, 65, 33, 2, 273, 269, 3, 2, 2, 2, 273, 270, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 273, 272, 3, 2, 2, 2, 274, 277, 3, 2, 2, 2, 275, 273, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 82, 3, 2, 2, 2, 277, 275, 3, 2, 2, 2, 278, 280, 9, 8, 2, 2, 279, 278, 3, 2, 2, 2, 280, 281, 3, 2, 2, 2, 281, 279, 3, 2, 2, 2, 281, 282, 3, 2, 2, 2, 282, 283, 3, 2, 2, 2, 283, 284, 8, 42, 2, 2, 284, 84, 3, 2, 2, 2, 285, 286, 11, 2, 2, 2, 286, 86, 3, 2, 2, 2, 13, 2, 187, 245, 252, 255, 261, 265, 267, 273, 275, 281, 3, 8, 2, 2]
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.java
index 1f458a1..a7c7c26 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.java
@@ -1,10 +1,13 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.model.intent.impl.antlr4;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
 import org.antlr.v4.runtime.*;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 public class NCIntentDslLexer extends Lexer {
@@ -15,11 +18,11 @@
 		new PredictionContextCache();
 	public static final int
 		T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, 
-		T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, PRED_OP=15, AND=16, OR=17, 
-		VERT=18, EXCL=19, LPAREN=20, RPAREN=21, LCURLY=22, RCURLY=23, SQUOTE=24, 
-		TILDA=25, RIGHT=26, LBR=27, RBR=28, COMMA=29, COLON=30, MINUS=31, DOT=32, 
-		UNDERSCORE=33, EQ=34, PLUS=35, QUESTION=36, STAR=37, BOOL=38, INT=39, 
-		EXP=40, ID=41, WS=42, ErrorCharacter=43;
+		T__9=10, T__10=11, T__11=12, T__12=13, PRED_OP=14, AND=15, OR=16, VERT=17, 
+		EXCL=18, LPAREN=19, RPAREN=20, LCURLY=21, RCURLY=22, SQUOTE=23, TILDA=24, 
+		RIGHT=25, LBR=26, RBR=27, COMMA=28, COLON=29, MINUS=30, DOT=31, UNDERSCORE=32, 
+		EQ=33, PLUS=34, QUESTION=35, STAR=36, BOOL=37, INT=38, EXP=39, ID=40, 
+		WS=41, ErrorCharacter=42;
 	public static String[] channelNames = {
 		"DEFAULT_TOKEN_CHANNEL", "HIDDEN"
 	};
@@ -31,9 +34,9 @@
 	private static String[] makeRuleNames() {
 		return new String[] {
 			"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", 
-			"T__9", "T__10", "T__11", "T__12", "T__13", "PRED_OP", "AND", "OR", "VERT", 
-			"EXCL", "LPAREN", "RPAREN", "LCURLY", "RCURLY", "SQUOTE", "TILDA", "RIGHT", 
-			"LBR", "RBR", "COMMA", "COLON", "MINUS", "DOT", "UNDERSCORE", "EQ", "PLUS", 
+			"T__9", "T__10", "T__11", "T__12", "PRED_OP", "AND", "OR", "VERT", "EXCL", 
+			"LPAREN", "RPAREN", "LCURLY", "RCURLY", "SQUOTE", "TILDA", "RIGHT", "LBR", 
+			"RBR", "COMMA", "COLON", "MINUS", "DOT", "UNDERSCORE", "EQ", "PLUS", 
 			"QUESTION", "STAR", "BOOL", "INT", "EXP", "ID", "WS", "ErrorCharacter"
 		};
 	}
@@ -41,18 +44,18 @@
 
 	private static String[] makeLiteralNames() {
 		return new String[] {
-			null, "'intent'", "'conv'", "'ordered'", "'flow'", "'term'", "'id'", 
-			"'aliases'", "'startidx'", "'endidx'", "'parent'", "'groups'", "'ancestors'", 
-			"'value'", "'null'", null, "'&&'", "'||'", "'|'", "'!'", "'('", "')'", 
-			"'{'", "'}'", "'''", "'~'", "'>>'", "'['", "']'", "','", "':'", "'-'", 
-			"'.'", "'_'", "'='", "'+'", "'?'", "'*'"
+			null, "'intent'", "'ordered'", "'flow'", "'term'", "'id'", "'aliases'", 
+			"'startidx'", "'endidx'", "'parent'", "'groups'", "'ancestors'", "'value'", 
+			"'null'", null, "'&&'", "'||'", "'|'", "'!'", "'('", "')'", "'{'", "'}'", 
+			"'''", "'~'", "'>>'", "'['", "']'", "','", "':'", "'-'", "'.'", "'_'", 
+			"'='", "'+'", "'?'", "'*'"
 		};
 	}
 	private static final String[] _LITERAL_NAMES = makeLiteralNames();
 	private static String[] makeSymbolicNames() {
 		return new String[] {
 			null, null, null, null, null, null, null, null, null, null, null, null, 
-			null, null, null, "PRED_OP", "AND", "OR", "VERT", "EXCL", "LPAREN", "RPAREN", 
+			null, null, "PRED_OP", "AND", "OR", "VERT", "EXCL", "LPAREN", "RPAREN", 
 			"LCURLY", "RCURLY", "SQUOTE", "TILDA", "RIGHT", "LBR", "RBR", "COMMA", 
 			"COLON", "MINUS", "DOT", "UNDERSCORE", "EQ", "PLUS", "QUESTION", "STAR", 
 			"BOOL", "INT", "EXP", "ID", "WS", "ErrorCharacter"
@@ -117,100 +120,98 @@
 	public ATN getATN() { return _ATN; }
 
 	public static final String _serializedATN =
-		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2-\u0126\b\1\4\2\t"+
+		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2,\u011f\b\1\4\2\t"+
 		"\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13"+
 		"\t\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
 		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
 		"\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!"+
-		"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4"+
-		",\t,\3\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3"+
-		"\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7\3\7\3\7\3\b"+
-		"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n\3"+
-		"\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3\f"+
-		"\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16"+
-		"\3\16\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\20\3\20\3\20\3\20\3\20\3\20"+
-		"\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00c3\n\20\3\21\3\21\3\21\3\22"+
-		"\3\22\3\22\3\23\3\23\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30"+
-		"\3\31\3\31\3\32\3\32\3\33\3\33\3\33\3\34\3\34\3\35\3\35\3\36\3\36\3\37"+
-		"\3\37\3 \3 \3!\3!\3\"\3\"\3#\3#\3$\3$\3%\3%\3&\3&\3\'\3\'\3\'\3\'\3\'"+
-		"\3\'\3\'\3\'\3\'\5\'\u00fd\n\'\3(\3(\3(\7(\u0102\n(\f(\16(\u0105\13(\5"+
-		"(\u0107\n(\3)\3)\6)\u010b\n)\r)\16)\u010c\3*\3*\6*\u0111\n*\r*\16*\u0112"+
-		"\3*\3*\3*\3*\7*\u0119\n*\f*\16*\u011c\13*\3+\6+\u011f\n+\r+\16+\u0120"+
-		"\3+\3+\3,\3,\2\2-\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31"+
-		"\16\33\17\35\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65"+
-		"\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-\3\2\t\4\2>>@@\3\2\63;"+
-		"\4\2\62;aa\3\2\62;\4\2C\\c|\5\2\62;C\\c|\5\2\13\f\16\17\"\"\2\u0136\2"+
-		"\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2"+
-		"\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2"+
-		"\31\3\2\2\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2"+
-		"\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2"+
-		"\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2"+
-		"\2\2\2=\3\2\2\2\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2"+
-		"\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U"+
-		"\3\2\2\2\2W\3\2\2\2\3Y\3\2\2\2\5`\3\2\2\2\7e\3\2\2\2\tm\3\2\2\2\13r\3"+
-		"\2\2\2\rw\3\2\2\2\17z\3\2\2\2\21\u0082\3\2\2\2\23\u008b\3\2\2\2\25\u0092"+
-		"\3\2\2\2\27\u0099\3\2\2\2\31\u00a0\3\2\2\2\33\u00aa\3\2\2\2\35\u00b0\3"+
-		"\2\2\2\37\u00c2\3\2\2\2!\u00c4\3\2\2\2#\u00c7\3\2\2\2%\u00ca\3\2\2\2\'"+
-		"\u00cc\3\2\2\2)\u00ce\3\2\2\2+\u00d0\3\2\2\2-\u00d2\3\2\2\2/\u00d4\3\2"+
-		"\2\2\61\u00d6\3\2\2\2\63\u00d8\3\2\2\2\65\u00da\3\2\2\2\67\u00dd\3\2\2"+
-		"\29\u00df\3\2\2\2;\u00e1\3\2\2\2=\u00e3\3\2\2\2?\u00e5\3\2\2\2A\u00e7"+
-		"\3\2\2\2C\u00e9\3\2\2\2E\u00eb\3\2\2\2G\u00ed\3\2\2\2I\u00ef\3\2\2\2K"+
-		"\u00f1\3\2\2\2M\u00fc\3\2\2\2O\u0106\3\2\2\2Q\u0108\3\2\2\2S\u0110\3\2"+
-		"\2\2U\u011e\3\2\2\2W\u0124\3\2\2\2YZ\7k\2\2Z[\7p\2\2[\\\7v\2\2\\]\7g\2"+
-		"\2]^\7p\2\2^_\7v\2\2_\4\3\2\2\2`a\7e\2\2ab\7q\2\2bc\7p\2\2cd\7x\2\2d\6"+
-		"\3\2\2\2ef\7q\2\2fg\7t\2\2gh\7f\2\2hi\7g\2\2ij\7t\2\2jk\7g\2\2kl\7f\2"+
-		"\2l\b\3\2\2\2mn\7h\2\2no\7n\2\2op\7q\2\2pq\7y\2\2q\n\3\2\2\2rs\7v\2\2"+
-		"st\7g\2\2tu\7t\2\2uv\7o\2\2v\f\3\2\2\2wx\7k\2\2xy\7f\2\2y\16\3\2\2\2z"+
-		"{\7c\2\2{|\7n\2\2|}\7k\2\2}~\7c\2\2~\177\7u\2\2\177\u0080\7g\2\2\u0080"+
-		"\u0081\7u\2\2\u0081\20\3\2\2\2\u0082\u0083\7u\2\2\u0083\u0084\7v\2\2\u0084"+
-		"\u0085\7c\2\2\u0085\u0086\7t\2\2\u0086\u0087\7v\2\2\u0087\u0088\7k\2\2"+
-		"\u0088\u0089\7f\2\2\u0089\u008a\7z\2\2\u008a\22\3\2\2\2\u008b\u008c\7"+
-		"g\2\2\u008c\u008d\7p\2\2\u008d\u008e\7f\2\2\u008e\u008f\7k\2\2\u008f\u0090"+
-		"\7f\2\2\u0090\u0091\7z\2\2\u0091\24\3\2\2\2\u0092\u0093\7r\2\2\u0093\u0094"+
-		"\7c\2\2\u0094\u0095\7t\2\2\u0095\u0096\7g\2\2\u0096\u0097\7p\2\2\u0097"+
-		"\u0098\7v\2\2\u0098\26\3\2\2\2\u0099\u009a\7i\2\2\u009a\u009b\7t\2\2\u009b"+
-		"\u009c\7q\2\2\u009c\u009d\7w\2\2\u009d\u009e\7r\2\2\u009e\u009f\7u\2\2"+
-		"\u009f\30\3\2\2\2\u00a0\u00a1\7c\2\2\u00a1\u00a2\7p\2\2\u00a2\u00a3\7"+
-		"e\2\2\u00a3\u00a4\7g\2\2\u00a4\u00a5\7u\2\2\u00a5\u00a6\7v\2\2\u00a6\u00a7"+
-		"\7q\2\2\u00a7\u00a8\7t\2\2\u00a8\u00a9\7u\2\2\u00a9\32\3\2\2\2\u00aa\u00ab"+
-		"\7x\2\2\u00ab\u00ac\7c\2\2\u00ac\u00ad\7n\2\2\u00ad\u00ae\7w\2\2\u00ae"+
-		"\u00af\7g\2\2\u00af\34\3\2\2\2\u00b0\u00b1\7p\2\2\u00b1\u00b2\7w\2\2\u00b2"+
-		"\u00b3\7n\2\2\u00b3\u00b4\7n\2\2\u00b4\36\3\2\2\2\u00b5\u00b6\7?\2\2\u00b6"+
-		"\u00c3\7?\2\2\u00b7\u00b8\7#\2\2\u00b8\u00c3\7?\2\2\u00b9\u00ba\7@\2\2"+
-		"\u00ba\u00c3\7?\2\2\u00bb\u00bc\7>\2\2\u00bc\u00c3\7?\2\2\u00bd\u00c3"+
-		"\t\2\2\2\u00be\u00bf\7B\2\2\u00bf\u00c3\7B\2\2\u00c0\u00c1\7#\2\2\u00c1"+
-		"\u00c3\7B\2\2\u00c2\u00b5\3\2\2\2\u00c2\u00b7\3\2\2\2\u00c2\u00b9\3\2"+
-		"\2\2\u00c2\u00bb\3\2\2\2\u00c2\u00bd\3\2\2\2\u00c2\u00be\3\2\2\2\u00c2"+
-		"\u00c0\3\2\2\2\u00c3 \3\2\2\2\u00c4\u00c5\7(\2\2\u00c5\u00c6\7(\2\2\u00c6"+
-		"\"\3\2\2\2\u00c7\u00c8\7~\2\2\u00c8\u00c9\7~\2\2\u00c9$\3\2\2\2\u00ca"+
-		"\u00cb\7~\2\2\u00cb&\3\2\2\2\u00cc\u00cd\7#\2\2\u00cd(\3\2\2\2\u00ce\u00cf"+
-		"\7*\2\2\u00cf*\3\2\2\2\u00d0\u00d1\7+\2\2\u00d1,\3\2\2\2\u00d2\u00d3\7"+
-		"}\2\2\u00d3.\3\2\2\2\u00d4\u00d5\7\177\2\2\u00d5\60\3\2\2\2\u00d6\u00d7"+
-		"\7)\2\2\u00d7\62\3\2\2\2\u00d8\u00d9\7\u0080\2\2\u00d9\64\3\2\2\2\u00da"+
-		"\u00db\7@\2\2\u00db\u00dc\7@\2\2\u00dc\66\3\2\2\2\u00dd\u00de\7]\2\2\u00de"+
-		"8\3\2\2\2\u00df\u00e0\7_\2\2\u00e0:\3\2\2\2\u00e1\u00e2\7.\2\2\u00e2<"+
-		"\3\2\2\2\u00e3\u00e4\7<\2\2\u00e4>\3\2\2\2\u00e5\u00e6\7/\2\2\u00e6@\3"+
-		"\2\2\2\u00e7\u00e8\7\60\2\2\u00e8B\3\2\2\2\u00e9\u00ea\7a\2\2\u00eaD\3"+
-		"\2\2\2\u00eb\u00ec\7?\2\2\u00ecF\3\2\2\2\u00ed\u00ee\7-\2\2\u00eeH\3\2"+
-		"\2\2\u00ef\u00f0\7A\2\2\u00f0J\3\2\2\2\u00f1\u00f2\7,\2\2\u00f2L\3\2\2"+
-		"\2\u00f3\u00f4\7v\2\2\u00f4\u00f5\7t\2\2\u00f5\u00f6\7w\2\2\u00f6\u00fd"+
-		"\7g\2\2\u00f7\u00f8\7h\2\2\u00f8\u00f9\7c\2\2\u00f9\u00fa\7n\2\2\u00fa"+
-		"\u00fb\7u\2\2\u00fb\u00fd\7g\2\2\u00fc\u00f3\3\2\2\2\u00fc\u00f7\3\2\2"+
-		"\2\u00fdN\3\2\2\2\u00fe\u0107\7\62\2\2\u00ff\u0103\t\3\2\2\u0100\u0102"+
-		"\t\4\2\2\u0101\u0100\3\2\2\2\u0102\u0105\3\2\2\2\u0103\u0101\3\2\2\2\u0103"+
-		"\u0104\3\2\2\2\u0104\u0107\3\2\2\2\u0105\u0103\3\2\2\2\u0106\u00fe\3\2"+
-		"\2\2\u0106\u00ff\3\2\2\2\u0107P\3\2\2\2\u0108\u010a\5A!\2\u0109\u010b"+
-		"\t\5\2\2\u010a\u0109\3\2\2\2\u010b\u010c\3\2\2\2\u010c\u010a\3\2\2\2\u010c"+
-		"\u010d\3\2\2\2\u010dR\3\2\2\2\u010e\u0111\5C\"\2\u010f\u0111\t\6\2\2\u0110"+
-		"\u010e\3\2\2\2\u0110\u010f\3\2\2\2\u0111\u0112\3\2\2\2\u0112\u0110\3\2"+
-		"\2\2\u0112\u0113\3\2\2\2\u0113\u011a\3\2\2\2\u0114\u0119\t\7\2\2\u0115"+
-		"\u0119\5=\37\2\u0116\u0119\5? \2\u0117\u0119\5C\"\2\u0118\u0114\3\2\2"+
-		"\2\u0118\u0115\3\2\2\2\u0118\u0116\3\2\2\2\u0118\u0117\3\2\2\2\u0119\u011c"+
-		"\3\2\2\2\u011a\u0118\3\2\2\2\u011a\u011b\3\2\2\2\u011bT\3\2\2\2\u011c"+
-		"\u011a\3\2\2\2\u011d\u011f\t\b\2\2\u011e\u011d\3\2\2\2\u011f\u0120\3\2"+
-		"\2\2\u0120\u011e\3\2\2\2\u0120\u0121\3\2\2\2\u0121\u0122\3\2\2\2\u0122"+
-		"\u0123\b+\2\2\u0123V\3\2\2\2\u0124\u0125\13\2\2\2\u0125X\3\2\2\2\r\2\u00c2"+
-		"\u00fc\u0103\u0106\u010c\u0110\u0112\u0118\u011a\u0120\3\b\2\2";
+		"\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\3"+
+		"\2\3\2\3\2\3\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4"+
+		"\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3"+
+		"\7\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\n"+
+		"\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\f\3\f\3"+
+		"\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\16\3\16\3\16"+
+		"\3\16\3\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17"+
+		"\3\17\5\17\u00bc\n\17\3\20\3\20\3\20\3\21\3\21\3\21\3\22\3\22\3\23\3\23"+
+		"\3\24\3\24\3\25\3\25\3\26\3\26\3\27\3\27\3\30\3\30\3\31\3\31\3\32\3\32"+
+		"\3\32\3\33\3\33\3\34\3\34\3\35\3\35\3\36\3\36\3\37\3\37\3 \3 \3!\3!\3"+
+		"\"\3\"\3#\3#\3$\3$\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3&\5&\u00f6\n&\3\'\3"+
+		"\'\3\'\7\'\u00fb\n\'\f\'\16\'\u00fe\13\'\5\'\u0100\n\'\3(\3(\6(\u0104"+
+		"\n(\r(\16(\u0105\3)\3)\6)\u010a\n)\r)\16)\u010b\3)\3)\3)\3)\7)\u0112\n"+
+		")\f)\16)\u0115\13)\3*\6*\u0118\n*\r*\16*\u0119\3*\3*\3+\3+\2\2,\3\3\5"+
+		"\4\7\5\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35\20\37\21"+
+		"!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!"+
+		"A\"C#E$G%I&K\'M(O)Q*S+U,\3\2\t\4\2>>@@\3\2\63;\4\2\62;aa\3\2\62;\4\2C"+
+		"\\c|\5\2\62;C\\c|\5\2\13\f\16\17\"\"\2\u012f\2\3\3\2\2\2\2\5\3\2\2\2\2"+
+		"\7\3\2\2\2\2\t\3\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2"+
+		"\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3\2\2\2"+
+		"\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2"+
+		"\2\2)\3\2\2\2\2+\3\2\2\2\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2"+
+		"\2\2\65\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2?\3\2\2"+
+		"\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2\2I\3\2\2\2\2K\3\2\2\2\2"+
+		"M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2\2\2S\3\2\2\2\2U\3\2\2\2\3W\3\2\2\2\5^\3"+
+		"\2\2\2\7f\3\2\2\2\tk\3\2\2\2\13p\3\2\2\2\rs\3\2\2\2\17{\3\2\2\2\21\u0084"+
+		"\3\2\2\2\23\u008b\3\2\2\2\25\u0092\3\2\2\2\27\u0099\3\2\2\2\31\u00a3\3"+
+		"\2\2\2\33\u00a9\3\2\2\2\35\u00bb\3\2\2\2\37\u00bd\3\2\2\2!\u00c0\3\2\2"+
+		"\2#\u00c3\3\2\2\2%\u00c5\3\2\2\2\'\u00c7\3\2\2\2)\u00c9\3\2\2\2+\u00cb"+
+		"\3\2\2\2-\u00cd\3\2\2\2/\u00cf\3\2\2\2\61\u00d1\3\2\2\2\63\u00d3\3\2\2"+
+		"\2\65\u00d6\3\2\2\2\67\u00d8\3\2\2\29\u00da\3\2\2\2;\u00dc\3\2\2\2=\u00de"+
+		"\3\2\2\2?\u00e0\3\2\2\2A\u00e2\3\2\2\2C\u00e4\3\2\2\2E\u00e6\3\2\2\2G"+
+		"\u00e8\3\2\2\2I\u00ea\3\2\2\2K\u00f5\3\2\2\2M\u00ff\3\2\2\2O\u0101\3\2"+
+		"\2\2Q\u0109\3\2\2\2S\u0117\3\2\2\2U\u011d\3\2\2\2WX\7k\2\2XY\7p\2\2YZ"+
+		"\7v\2\2Z[\7g\2\2[\\\7p\2\2\\]\7v\2\2]\4\3\2\2\2^_\7q\2\2_`\7t\2\2`a\7"+
+		"f\2\2ab\7g\2\2bc\7t\2\2cd\7g\2\2de\7f\2\2e\6\3\2\2\2fg\7h\2\2gh\7n\2\2"+
+		"hi\7q\2\2ij\7y\2\2j\b\3\2\2\2kl\7v\2\2lm\7g\2\2mn\7t\2\2no\7o\2\2o\n\3"+
+		"\2\2\2pq\7k\2\2qr\7f\2\2r\f\3\2\2\2st\7c\2\2tu\7n\2\2uv\7k\2\2vw\7c\2"+
+		"\2wx\7u\2\2xy\7g\2\2yz\7u\2\2z\16\3\2\2\2{|\7u\2\2|}\7v\2\2}~\7c\2\2~"+
+		"\177\7t\2\2\177\u0080\7v\2\2\u0080\u0081\7k\2\2\u0081\u0082\7f\2\2\u0082"+
+		"\u0083\7z\2\2\u0083\20\3\2\2\2\u0084\u0085\7g\2\2\u0085\u0086\7p\2\2\u0086"+
+		"\u0087\7f\2\2\u0087\u0088\7k\2\2\u0088\u0089\7f\2\2\u0089\u008a\7z\2\2"+
+		"\u008a\22\3\2\2\2\u008b\u008c\7r\2\2\u008c\u008d\7c\2\2\u008d\u008e\7"+
+		"t\2\2\u008e\u008f\7g\2\2\u008f\u0090\7p\2\2\u0090\u0091\7v\2\2\u0091\24"+
+		"\3\2\2\2\u0092\u0093\7i\2\2\u0093\u0094\7t\2\2\u0094\u0095\7q\2\2\u0095"+
+		"\u0096\7w\2\2\u0096\u0097\7r\2\2\u0097\u0098\7u\2\2\u0098\26\3\2\2\2\u0099"+
+		"\u009a\7c\2\2\u009a\u009b\7p\2\2\u009b\u009c\7e\2\2\u009c\u009d\7g\2\2"+
+		"\u009d\u009e\7u\2\2\u009e\u009f\7v\2\2\u009f\u00a0\7q\2\2\u00a0\u00a1"+
+		"\7t\2\2\u00a1\u00a2\7u\2\2\u00a2\30\3\2\2\2\u00a3\u00a4\7x\2\2\u00a4\u00a5"+
+		"\7c\2\2\u00a5\u00a6\7n\2\2\u00a6\u00a7\7w\2\2\u00a7\u00a8\7g\2\2\u00a8"+
+		"\32\3\2\2\2\u00a9\u00aa\7p\2\2\u00aa\u00ab\7w\2\2\u00ab\u00ac\7n\2\2\u00ac"+
+		"\u00ad\7n\2\2\u00ad\34\3\2\2\2\u00ae\u00af\7?\2\2\u00af\u00bc\7?\2\2\u00b0"+
+		"\u00b1\7#\2\2\u00b1\u00bc\7?\2\2\u00b2\u00b3\7@\2\2\u00b3\u00bc\7?\2\2"+
+		"\u00b4\u00b5\7>\2\2\u00b5\u00bc\7?\2\2\u00b6\u00bc\t\2\2\2\u00b7\u00b8"+
+		"\7B\2\2\u00b8\u00bc\7B\2\2\u00b9\u00ba\7#\2\2\u00ba\u00bc\7B\2\2\u00bb"+
+		"\u00ae\3\2\2\2\u00bb\u00b0\3\2\2\2\u00bb\u00b2\3\2\2\2\u00bb\u00b4\3\2"+
+		"\2\2\u00bb\u00b6\3\2\2\2\u00bb\u00b7\3\2\2\2\u00bb\u00b9\3\2\2\2\u00bc"+
+		"\36\3\2\2\2\u00bd\u00be\7(\2\2\u00be\u00bf\7(\2\2\u00bf \3\2\2\2\u00c0"+
+		"\u00c1\7~\2\2\u00c1\u00c2\7~\2\2\u00c2\"\3\2\2\2\u00c3\u00c4\7~\2\2\u00c4"+
+		"$\3\2\2\2\u00c5\u00c6\7#\2\2\u00c6&\3\2\2\2\u00c7\u00c8\7*\2\2\u00c8("+
+		"\3\2\2\2\u00c9\u00ca\7+\2\2\u00ca*\3\2\2\2\u00cb\u00cc\7}\2\2\u00cc,\3"+
+		"\2\2\2\u00cd\u00ce\7\177\2\2\u00ce.\3\2\2\2\u00cf\u00d0\7)\2\2\u00d0\60"+
+		"\3\2\2\2\u00d1\u00d2\7\u0080\2\2\u00d2\62\3\2\2\2\u00d3\u00d4\7@\2\2\u00d4"+
+		"\u00d5\7@\2\2\u00d5\64\3\2\2\2\u00d6\u00d7\7]\2\2\u00d7\66\3\2\2\2\u00d8"+
+		"\u00d9\7_\2\2\u00d98\3\2\2\2\u00da\u00db\7.\2\2\u00db:\3\2\2\2\u00dc\u00dd"+
+		"\7<\2\2\u00dd<\3\2\2\2\u00de\u00df\7/\2\2\u00df>\3\2\2\2\u00e0\u00e1\7"+
+		"\60\2\2\u00e1@\3\2\2\2\u00e2\u00e3\7a\2\2\u00e3B\3\2\2\2\u00e4\u00e5\7"+
+		"?\2\2\u00e5D\3\2\2\2\u00e6\u00e7\7-\2\2\u00e7F\3\2\2\2\u00e8\u00e9\7A"+
+		"\2\2\u00e9H\3\2\2\2\u00ea\u00eb\7,\2\2\u00ebJ\3\2\2\2\u00ec\u00ed\7v\2"+
+		"\2\u00ed\u00ee\7t\2\2\u00ee\u00ef\7w\2\2\u00ef\u00f6\7g\2\2\u00f0\u00f1"+
+		"\7h\2\2\u00f1\u00f2\7c\2\2\u00f2\u00f3\7n\2\2\u00f3\u00f4\7u\2\2\u00f4"+
+		"\u00f6\7g\2\2\u00f5\u00ec\3\2\2\2\u00f5\u00f0\3\2\2\2\u00f6L\3\2\2\2\u00f7"+
+		"\u0100\7\62\2\2\u00f8\u00fc\t\3\2\2\u00f9\u00fb\t\4\2\2\u00fa\u00f9\3"+
+		"\2\2\2\u00fb\u00fe\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fc\u00fd\3\2\2\2\u00fd"+
+		"\u0100\3\2\2\2\u00fe\u00fc\3\2\2\2\u00ff\u00f7\3\2\2\2\u00ff\u00f8\3\2"+
+		"\2\2\u0100N\3\2\2\2\u0101\u0103\5? \2\u0102\u0104\t\5\2\2\u0103\u0102"+
+		"\3\2\2\2\u0104\u0105\3\2\2\2\u0105\u0103\3\2\2\2\u0105\u0106\3\2\2\2\u0106"+
+		"P\3\2\2\2\u0107\u010a\5A!\2\u0108\u010a\t\6\2\2\u0109\u0107\3\2\2\2\u0109"+
+		"\u0108\3\2\2\2\u010a\u010b\3\2\2\2\u010b\u0109\3\2\2\2\u010b\u010c\3\2"+
+		"\2\2\u010c\u0113\3\2\2\2\u010d\u0112\t\7\2\2\u010e\u0112\5;\36\2\u010f"+
+		"\u0112\5=\37\2\u0110\u0112\5A!\2\u0111\u010d\3\2\2\2\u0111\u010e\3\2\2"+
+		"\2\u0111\u010f\3\2\2\2\u0111\u0110\3\2\2\2\u0112\u0115\3\2\2\2\u0113\u0111"+
+		"\3\2\2\2\u0113\u0114\3\2\2\2\u0114R\3\2\2\2\u0115\u0113\3\2\2\2\u0116"+
+		"\u0118\t\b\2\2\u0117\u0116\3\2\2\2\u0118\u0119\3\2\2\2\u0119\u0117\3\2"+
+		"\2\2\u0119\u011a\3\2\2\2\u011a\u011b\3\2\2\2\u011b\u011c\b*\2\2\u011c"+
+		"T\3\2\2\2\u011d\u011e\13\2\2\2\u011eV\3\2\2\2\r\2\u00bb\u00f5\u00fc\u00ff"+
+		"\u0105\u0109\u010b\u0111\u0113\u0119\3\b\2\2";
 	public static final ATN _ATN =
 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
 	static {
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.tokens b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.tokens
index 8ae22bf..e2c3312 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.tokens
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslLexer.tokens
@@ -11,69 +11,67 @@
 T__10=11
 T__11=12
 T__12=13
-T__13=14
-PRED_OP=15
-AND=16
-OR=17
-VERT=18
-EXCL=19
-LPAREN=20
-RPAREN=21
-LCURLY=22
-RCURLY=23
-SQUOTE=24
-TILDA=25
-RIGHT=26
-LBR=27
-RBR=28
-COMMA=29
-COLON=30
-MINUS=31
-DOT=32
-UNDERSCORE=33
-EQ=34
-PLUS=35
-QUESTION=36
-STAR=37
-BOOL=38
-INT=39
-EXP=40
-ID=41
-WS=42
-ErrorCharacter=43
+PRED_OP=14
+AND=15
+OR=16
+VERT=17
+EXCL=18
+LPAREN=19
+RPAREN=20
+LCURLY=21
+RCURLY=22
+SQUOTE=23
+TILDA=24
+RIGHT=25
+LBR=26
+RBR=27
+COMMA=28
+COLON=29
+MINUS=30
+DOT=31
+UNDERSCORE=32
+EQ=33
+PLUS=34
+QUESTION=35
+STAR=36
+BOOL=37
+INT=38
+EXP=39
+ID=40
+WS=41
+ErrorCharacter=42
 'intent'=1
-'conv'=2
-'ordered'=3
-'flow'=4
-'term'=5
-'id'=6
-'aliases'=7
-'startidx'=8
-'endidx'=9
-'parent'=10
-'groups'=11
-'ancestors'=12
-'value'=13
-'null'=14
-'&&'=16
-'||'=17
-'|'=18
-'!'=19
-'('=20
-')'=21
-'{'=22
-'}'=23
-'\''=24
-'~'=25
-'>>'=26
-'['=27
-']'=28
-','=29
-':'=30
-'-'=31
-'.'=32
-'_'=33
-'='=34
-'+'=35
-'?'=36
-'*'=37
+'ordered'=2
+'flow'=3
+'term'=4
+'id'=5
+'aliases'=6
+'startidx'=7
+'endidx'=8
+'parent'=9
+'groups'=10
+'ancestors'=11
+'value'=12
+'null'=13
+'&&'=15
+'||'=16
+'|'=17
+'!'=18
+'('=19
+')'=20
+'{'=21
+'}'=22
+'\''=23
+'~'=24
+'>>'=25
+'['=26
+']'=27
+','=28
+':'=29
+'-'=30
+'.'=31
+'_'=32
+'='=33
+'+'=34
+'?'=35
+'*'=36
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java
index f600b0d..59ff399 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslListener.java
@@ -1,4 +1,4 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.model.intent.impl.antlr4;
 import org.antlr.v4.runtime.tree.ParseTreeListener;
 
@@ -28,16 +28,6 @@
 	 */
 	void exitIntentId(NCIntentDslParser.IntentIdContext ctx);
 	/**
-	 * Enter a parse tree produced by {@link NCIntentDslParser#convDecl}.
-	 * @param ctx the parse tree
-	 */
-	void enterConvDecl(NCIntentDslParser.ConvDeclContext ctx);
-	/**
-	 * Exit a parse tree produced by {@link NCIntentDslParser#convDecl}.
-	 * @param ctx the parse tree
-	 */
-	void exitConvDecl(NCIntentDslParser.ConvDeclContext ctx);
-	/**
 	 * Enter a parse tree produced by {@link NCIntentDslParser#orderedDecl}.
 	 * @param ctx the parse tree
 	 */
@@ -108,6 +98,16 @@
 	 */
 	void exitTerms(NCIntentDslParser.TermsContext ctx);
 	/**
+	 * Enter a parse tree produced by {@link NCIntentDslParser#termEq}.
+	 * @param ctx the parse tree
+	 */
+	void enterTermEq(NCIntentDslParser.TermEqContext ctx);
+	/**
+	 * Exit a parse tree produced by {@link NCIntentDslParser#termEq}.
+	 * @param ctx the parse tree
+	 */
+	void exitTermEq(NCIntentDslParser.TermEqContext ctx);
+	/**
 	 * Enter a parse tree produced by {@link NCIntentDslParser#term}.
 	 * @param ctx the parse tree
 	 */
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java
index 66f90dd..ef12ce8 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslParser.java
@@ -1,10 +1,13 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4\NCIntentDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.model.intent.impl.antlr4;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
 import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
 import org.antlr.v4.runtime.tree.*;
 import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 public class NCIntentDslParser extends Parser {
@@ -15,22 +18,22 @@
 		new PredictionContextCache();
 	public static final int
 		T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, 
-		T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, PRED_OP=15, AND=16, OR=17, 
-		VERT=18, EXCL=19, LPAREN=20, RPAREN=21, LCURLY=22, RCURLY=23, SQUOTE=24, 
-		TILDA=25, RIGHT=26, LBR=27, RBR=28, COMMA=29, COLON=30, MINUS=31, DOT=32, 
-		UNDERSCORE=33, EQ=34, PLUS=35, QUESTION=36, STAR=37, BOOL=38, INT=39, 
-		EXP=40, ID=41, WS=42, ErrorCharacter=43;
+		T__9=10, T__10=11, T__11=12, T__12=13, PRED_OP=14, AND=15, OR=16, VERT=17, 
+		EXCL=18, LPAREN=19, RPAREN=20, LCURLY=21, RCURLY=22, SQUOTE=23, TILDA=24, 
+		RIGHT=25, LBR=26, RBR=27, COMMA=28, COLON=29, MINUS=30, DOT=31, UNDERSCORE=32, 
+		EQ=33, PLUS=34, QUESTION=35, STAR=36, BOOL=37, INT=38, EXP=39, ID=40, 
+		WS=41, ErrorCharacter=42;
 	public static final int
-		RULE_intent = 0, RULE_intentId = 1, RULE_convDecl = 2, RULE_orderedDecl = 3, 
-		RULE_flowDecl = 4, RULE_flow = 5, RULE_flowItem = 6, RULE_flowItemIds = 7, 
-		RULE_idList = 8, RULE_terms = 9, RULE_term = 10, RULE_termId = 11, RULE_item = 12, 
+		RULE_intent = 0, RULE_intentId = 1, RULE_orderedDecl = 2, RULE_flowDecl = 3, 
+		RULE_flow = 4, RULE_flowItem = 5, RULE_flowItemIds = 6, RULE_idList = 7, 
+		RULE_terms = 8, RULE_termEq = 9, RULE_term = 10, RULE_termId = 11, RULE_item = 12, 
 		RULE_predicate = 13, RULE_lval = 14, RULE_lvalQual = 15, RULE_lvalPart = 16, 
 		RULE_rvalSingle = 17, RULE_rval = 18, RULE_rvalList = 19, RULE_meta = 20, 
 		RULE_qstring = 21, RULE_minMax = 22, RULE_minMaxShortcut = 23, RULE_minMaxRange = 24;
 	private static String[] makeRuleNames() {
 		return new String[] {
-			"intent", "intentId", "convDecl", "orderedDecl", "flowDecl", "flow", 
-			"flowItem", "flowItemIds", "idList", "terms", "term", "termId", "item", 
+			"intent", "intentId", "orderedDecl", "flowDecl", "flow", "flowItem", 
+			"flowItemIds", "idList", "terms", "termEq", "term", "termId", "item", 
 			"predicate", "lval", "lvalQual", "lvalPart", "rvalSingle", "rval", "rvalList", 
 			"meta", "qstring", "minMax", "minMaxShortcut", "minMaxRange"
 		};
@@ -39,18 +42,18 @@
 
 	private static String[] makeLiteralNames() {
 		return new String[] {
-			null, "'intent'", "'conv'", "'ordered'", "'flow'", "'term'", "'id'", 
-			"'aliases'", "'startidx'", "'endidx'", "'parent'", "'groups'", "'ancestors'", 
-			"'value'", "'null'", null, "'&&'", "'||'", "'|'", "'!'", "'('", "')'", 
-			"'{'", "'}'", "'''", "'~'", "'>>'", "'['", "']'", "','", "':'", "'-'", 
-			"'.'", "'_'", "'='", "'+'", "'?'", "'*'"
+			null, "'intent'", "'ordered'", "'flow'", "'term'", "'id'", "'aliases'", 
+			"'startidx'", "'endidx'", "'parent'", "'groups'", "'ancestors'", "'value'", 
+			"'null'", null, "'&&'", "'||'", "'|'", "'!'", "'('", "')'", "'{'", "'}'", 
+			"'''", "'~'", "'>>'", "'['", "']'", "','", "':'", "'-'", "'.'", "'_'", 
+			"'='", "'+'", "'?'", "'*'"
 		};
 	}
 	private static final String[] _LITERAL_NAMES = makeLiteralNames();
 	private static String[] makeSymbolicNames() {
 		return new String[] {
 			null, null, null, null, null, null, null, null, null, null, null, null, 
-			null, null, null, "PRED_OP", "AND", "OR", "VERT", "EXCL", "LPAREN", "RPAREN", 
+			null, null, "PRED_OP", "AND", "OR", "VERT", "EXCL", "LPAREN", "RPAREN", 
 			"LCURLY", "RCURLY", "SQUOTE", "TILDA", "RIGHT", "LBR", "RBR", "COMMA", 
 			"COLON", "MINUS", "DOT", "UNDERSCORE", "EQ", "PLUS", "QUESTION", "STAR", 
 			"BOOL", "INT", "EXP", "ID", "WS", "ErrorCharacter"
@@ -115,9 +118,6 @@
 			return getRuleContext(TermsContext.class,0);
 		}
 		public TerminalNode EOF() { return getToken(NCIntentDslParser.EOF, 0); }
-		public ConvDeclContext convDecl() {
-			return getRuleContext(ConvDeclContext.class,0);
-		}
 		public OrderedDeclContext orderedDecl() {
 			return getRuleContext(OrderedDeclContext.class,0);
 		}
@@ -136,11 +136,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitIntent(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitIntent(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final IntentContext intent() throws RecognitionException {
@@ -158,7 +153,7 @@
 			if (_la==T__1) {
 				{
 				setState(51);
-				convDecl();
+				orderedDecl();
 				}
 			}
 
@@ -168,23 +163,13 @@
 			if (_la==T__2) {
 				{
 				setState(54);
-				orderedDecl();
-				}
-			}
-
-			setState(58);
-			_errHandler.sync(this);
-			_la = _input.LA(1);
-			if (_la==T__3) {
-				{
-				setState(57);
 				flowDecl();
 				}
 			}
 
-			setState(60);
+			setState(57);
 			terms(0);
-			setState(61);
+			setState(58);
 			match(EOF);
 			}
 		}
@@ -214,11 +199,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitIntentId(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitIntentId(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final IntentIdContext intentId() throws RecognitionException {
@@ -227,11 +207,11 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(63);
+			setState(60);
 			match(T__0);
-			setState(64);
+			setState(61);
 			match(EQ);
-			setState(65);
+			setState(62);
 			match(ID);
 			}
 		}
@@ -246,53 +226,6 @@
 		return _localctx;
 	}
 
-	public static class ConvDeclContext extends ParserRuleContext {
-		public TerminalNode EQ() { return getToken(NCIntentDslParser.EQ, 0); }
-		public TerminalNode BOOL() { return getToken(NCIntentDslParser.BOOL, 0); }
-		public ConvDeclContext(ParserRuleContext parent, int invokingState) {
-			super(parent, invokingState);
-		}
-		@Override public int getRuleIndex() { return RULE_convDecl; }
-		@Override
-		public void enterRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterConvDecl(this);
-		}
-		@Override
-		public void exitRule(ParseTreeListener listener) {
-			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitConvDecl(this);
-		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitConvDecl(this);
-			else return visitor.visitChildren(this);
-		}
-	}
-
-	public final ConvDeclContext convDecl() throws RecognitionException {
-		ConvDeclContext _localctx = new ConvDeclContext(_ctx, getState());
-		enterRule(_localctx, 4, RULE_convDecl);
-		try {
-			enterOuterAlt(_localctx, 1);
-			{
-			setState(67);
-			match(T__1);
-			setState(68);
-			match(EQ);
-			setState(69);
-			match(BOOL);
-			}
-		}
-		catch (RecognitionException re) {
-			_localctx.exception = re;
-			_errHandler.reportError(this, re);
-			_errHandler.recover(this, re);
-		}
-		finally {
-			exitRule();
-		}
-		return _localctx;
-	}
-
 	public static class OrderedDeclContext extends ParserRuleContext {
 		public TerminalNode EQ() { return getToken(NCIntentDslParser.EQ, 0); }
 		public TerminalNode BOOL() { return getToken(NCIntentDslParser.BOOL, 0); }
@@ -308,24 +241,19 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitOrderedDecl(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitOrderedDecl(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final OrderedDeclContext orderedDecl() throws RecognitionException {
 		OrderedDeclContext _localctx = new OrderedDeclContext(_ctx, getState());
-		enterRule(_localctx, 6, RULE_orderedDecl);
+		enterRule(_localctx, 4, RULE_orderedDecl);
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(71);
-			match(T__2);
-			setState(72);
+			setState(64);
+			match(T__1);
+			setState(65);
 			match(EQ);
-			setState(73);
+			setState(66);
 			match(BOOL);
 			}
 		}
@@ -361,28 +289,23 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFlowDecl(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitFlowDecl(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final FlowDeclContext flowDecl() throws RecognitionException {
 		FlowDeclContext _localctx = new FlowDeclContext(_ctx, getState());
-		enterRule(_localctx, 8, RULE_flowDecl);
+		enterRule(_localctx, 6, RULE_flowDecl);
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(75);
-			match(T__3);
-			setState(76);
+			setState(68);
+			match(T__2);
+			setState(69);
 			match(EQ);
-			setState(77);
+			setState(70);
 			match(SQUOTE);
-			setState(78);
+			setState(71);
 			flow(0);
-			setState(79);
+			setState(72);
 			match(SQUOTE);
 			}
 		}
@@ -417,11 +340,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFlow(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitFlow(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final FlowContext flow() throws RecognitionException {
@@ -433,30 +351,30 @@
 		int _parentState = getState();
 		FlowContext _localctx = new FlowContext(_ctx, _parentState);
 		FlowContext _prevctx = _localctx;
-		int _startState = 10;
-		enterRecursionRule(_localctx, 10, RULE_flow, _p);
+		int _startState = 8;
+		enterRecursionRule(_localctx, 8, RULE_flow, _p);
 		try {
 			int _alt;
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(83);
+			setState(76);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,3,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,2,_ctx) ) {
 			case 1:
 				{
 				}
 				break;
 			case 2:
 				{
-				setState(82);
+				setState(75);
 				flowItem();
 				}
 				break;
 			}
 			_ctx.stop = _input.LT(-1);
-			setState(90);
+			setState(83);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					if ( _parseListeners!=null ) triggerExitRuleEvent();
@@ -465,18 +383,18 @@
 					{
 					_localctx = new FlowContext(_parentctx, _parentState);
 					pushNewRecursionContext(_localctx, _startState, RULE_flow);
-					setState(85);
+					setState(78);
 					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(86);
+					setState(79);
 					match(RIGHT);
-					setState(87);
+					setState(80);
 					flowItem();
 					}
 					} 
 				}
-				setState(92);
+				setState(85);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,4,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,3,_ctx);
 			}
 			}
 		}
@@ -510,27 +428,22 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFlowItem(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitFlowItem(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final FlowItemContext flowItem() throws RecognitionException {
 		FlowItemContext _localctx = new FlowItemContext(_ctx, getState());
-		enterRule(_localctx, 12, RULE_flowItem);
+		enterRule(_localctx, 10, RULE_flowItem);
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(93);
+			setState(86);
 			flowItemIds();
-			setState(95);
+			setState(88);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,5,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,4,_ctx) ) {
 			case 1:
 				{
-				setState(94);
+				setState(87);
 				minMax();
 				}
 				break;
@@ -567,35 +480,30 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitFlowItemIds(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitFlowItemIds(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final FlowItemIdsContext flowItemIds() throws RecognitionException {
 		FlowItemIdsContext _localctx = new FlowItemIdsContext(_ctx, getState());
-		enterRule(_localctx, 14, RULE_flowItemIds);
+		enterRule(_localctx, 12, RULE_flowItemIds);
 		try {
-			setState(102);
+			setState(95);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
 			case ID:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(97);
+				setState(90);
 				match(ID);
 				}
 				break;
 			case LPAREN:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(98);
+				setState(91);
 				match(LPAREN);
-				setState(99);
+				setState(92);
 				idList(0);
-				setState(100);
+				setState(93);
 				match(RPAREN);
 				}
 				break;
@@ -632,11 +540,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitIdList(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitIdList(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final IdListContext idList() throws RecognitionException {
@@ -648,20 +551,20 @@
 		int _parentState = getState();
 		IdListContext _localctx = new IdListContext(_ctx, _parentState);
 		IdListContext _prevctx = _localctx;
-		int _startState = 16;
-		enterRecursionRule(_localctx, 16, RULE_idList, _p);
+		int _startState = 14;
+		enterRecursionRule(_localctx, 14, RULE_idList, _p);
 		try {
 			int _alt;
 			enterOuterAlt(_localctx, 1);
 			{
 			{
-			setState(105);
+			setState(98);
 			match(ID);
 			}
 			_ctx.stop = _input.LT(-1);
-			setState(112);
+			setState(105);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,6,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					if ( _parseListeners!=null ) triggerExitRuleEvent();
@@ -670,18 +573,18 @@
 					{
 					_localctx = new IdListContext(_parentctx, _parentState);
 					pushNewRecursionContext(_localctx, _startState, RULE_idList);
-					setState(107);
+					setState(100);
 					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(108);
+					setState(101);
 					match(VERT);
-					setState(109);
+					setState(102);
 					match(ID);
 					}
 					} 
 				}
-				setState(114);
+				setState(107);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,6,_ctx);
 			}
 			}
 		}
@@ -715,11 +618,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTerms(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitTerms(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final TermsContext terms() throws RecognitionException {
@@ -731,20 +629,20 @@
 		int _parentState = getState();
 		TermsContext _localctx = new TermsContext(_ctx, _parentState);
 		TermsContext _prevctx = _localctx;
-		int _startState = 18;
-		enterRecursionRule(_localctx, 18, RULE_terms, _p);
+		int _startState = 16;
+		enterRecursionRule(_localctx, 16, RULE_terms, _p);
 		try {
 			int _alt;
 			enterOuterAlt(_localctx, 1);
 			{
 			{
-			setState(116);
+			setState(109);
 			term();
 			}
 			_ctx.stop = _input.LT(-1);
-			setState(122);
+			setState(115);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					if ( _parseListeners!=null ) triggerExitRuleEvent();
@@ -753,16 +651,16 @@
 					{
 					_localctx = new TermsContext(_parentctx, _parentState);
 					pushNewRecursionContext(_localctx, _startState, RULE_terms);
-					setState(118);
+					setState(111);
 					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(119);
+					setState(112);
 					term();
 					}
 					} 
 				}
-				setState(124);
+				setState(117);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,8,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,7,_ctx);
 			}
 			}
 		}
@@ -777,8 +675,57 @@
 		return _localctx;
 	}
 
-	public static class TermContext extends ParserRuleContext {
+	public static class TermEqContext extends ParserRuleContext {
 		public TerminalNode EQ() { return getToken(NCIntentDslParser.EQ, 0); }
+		public TerminalNode TILDA() { return getToken(NCIntentDslParser.TILDA, 0); }
+		public TermEqContext(ParserRuleContext parent, int invokingState) {
+			super(parent, invokingState);
+		}
+		@Override public int getRuleIndex() { return RULE_termEq; }
+		@Override
+		public void enterRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).enterTermEq(this);
+		}
+		@Override
+		public void exitRule(ParseTreeListener listener) {
+			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTermEq(this);
+		}
+	}
+
+	public final TermEqContext termEq() throws RecognitionException {
+		TermEqContext _localctx = new TermEqContext(_ctx, getState());
+		enterRule(_localctx, 18, RULE_termEq);
+		int _la;
+		try {
+			enterOuterAlt(_localctx, 1);
+			{
+			setState(118);
+			_la = _input.LA(1);
+			if ( !(_la==TILDA || _la==EQ) ) {
+			_errHandler.recoverInline(this);
+			}
+			else {
+				if ( _input.LA(1)==Token.EOF ) matchedEOF = true;
+				_errHandler.reportMatch(this);
+				consume();
+			}
+			}
+		}
+		catch (RecognitionException re) {
+			_localctx.exception = re;
+			_errHandler.reportError(this, re);
+			_errHandler.recover(this, re);
+		}
+		finally {
+			exitRule();
+		}
+		return _localctx;
+	}
+
+	public static class TermContext extends ParserRuleContext {
+		public TermEqContext termEq() {
+			return getRuleContext(TermEqContext.class,0);
+		}
 		public TerminalNode LCURLY() { return getToken(NCIntentDslParser.LCURLY, 0); }
 		public ItemContext item() {
 			return getRuleContext(ItemContext.class,0);
@@ -802,11 +749,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTerm(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitTerm(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final TermContext term() throws RecognitionException {
@@ -816,32 +758,32 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(125);
-			match(T__4);
-			setState(127);
+			setState(120);
+			match(T__3);
+			setState(122);
 			_errHandler.sync(this);
 			_la = _input.LA(1);
 			if (_la==LPAREN) {
 				{
-				setState(126);
+				setState(121);
 				termId();
 				}
 			}
 
-			setState(129);
-			match(EQ);
-			setState(130);
+			setState(124);
+			termEq();
+			setState(125);
 			match(LCURLY);
-			setState(131);
+			setState(126);
 			item(0);
-			setState(132);
+			setState(127);
 			match(RCURLY);
-			setState(134);
+			setState(129);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,10,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,9,_ctx) ) {
 			case 1:
 				{
-				setState(133);
+				setState(128);
 				minMax();
 				}
 				break;
@@ -875,11 +817,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitTermId(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitTermId(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final TermIdContext termId() throws RecognitionException {
@@ -888,11 +825,11 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(136);
+			setState(131);
 			match(LPAREN);
-			setState(137);
+			setState(132);
 			match(ID);
-			setState(138);
+			setState(133);
 			match(RPAREN);
 			}
 		}
@@ -934,11 +871,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitItem(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitItem(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final ItemContext item() throws RecognitionException {
@@ -957,9 +889,10 @@
 			int _alt;
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(148);
+			setState(143);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
+			case T__4:
 			case T__5:
 			case T__6:
 			case T__7:
@@ -967,29 +900,28 @@
 			case T__9:
 			case T__10:
 			case T__11:
-			case T__12:
 			case TILDA:
 			case ID:
 				{
-				setState(141);
+				setState(136);
 				predicate();
 				}
 				break;
 			case LPAREN:
 				{
-				setState(142);
+				setState(137);
 				match(LPAREN);
-				setState(143);
+				setState(138);
 				item(0);
-				setState(144);
+				setState(139);
 				match(RPAREN);
 				}
 				break;
 			case EXCL:
 				{
-				setState(146);
+				setState(141);
 				match(EXCL);
-				setState(147);
+				setState(142);
 				item(1);
 				}
 				break;
@@ -997,9 +929,9 @@
 				throw new NoViableAltException(this);
 			}
 			_ctx.stop = _input.LT(-1);
-			setState(155);
+			setState(150);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					if ( _parseListeners!=null ) triggerExitRuleEvent();
@@ -1008,9 +940,9 @@
 					{
 					_localctx = new ItemContext(_parentctx, _parentState);
 					pushNewRecursionContext(_localctx, _startState, RULE_item);
-					setState(150);
+					setState(145);
 					if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)");
-					setState(151);
+					setState(146);
 					_la = _input.LA(1);
 					if ( !(_la==AND || _la==OR) ) {
 					_errHandler.recoverInline(this);
@@ -1020,14 +952,14 @@
 						_errHandler.reportMatch(this);
 						consume();
 					}
-					setState(152);
+					setState(147);
 					item(3);
 					}
 					} 
 				}
-				setState(157);
+				setState(152);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,12,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,11,_ctx);
 			}
 			}
 		}
@@ -1065,45 +997,40 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitPredicate(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitPredicate(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final PredicateContext predicate() throws RecognitionException {
 		PredicateContext _localctx = new PredicateContext(_ctx, getState());
 		enterRule(_localctx, 26, RULE_predicate);
 		try {
-			setState(169);
+			setState(164);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) {
 			case 1:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(158);
+				setState(153);
 				lval();
-				setState(159);
+				setState(154);
 				match(PRED_OP);
-				setState(160);
+				setState(155);
 				rval();
 				}
 				break;
 			case 2:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(162);
+				setState(157);
 				match(ID);
-				setState(163);
+				setState(158);
 				match(LPAREN);
-				setState(164);
+				setState(159);
 				lval();
-				setState(165);
+				setState(160);
 				match(RPAREN);
-				setState(166);
+				setState(161);
 				match(PRED_OP);
-				setState(167);
+				setState(162);
 				rval();
 				}
 				break;
@@ -1139,11 +1066,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitLval(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitLval(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final LvalContext lval() throws RecognitionException {
@@ -1153,70 +1075,70 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(172);
+			setState(167);
 			_errHandler.sync(this);
 			_la = _input.LA(1);
 			if (_la==ID) {
 				{
-				setState(171);
+				setState(166);
 				lvalQual(0);
 				}
 			}
 
-			setState(183);
+			setState(178);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
+			case T__4:
+				{
+				setState(169);
+				match(T__4);
+				}
+				break;
 			case T__5:
 				{
-				setState(174);
+				setState(170);
 				match(T__5);
 				}
 				break;
 			case T__6:
 				{
-				setState(175);
+				setState(171);
 				match(T__6);
 				}
 				break;
 			case T__7:
 				{
-				setState(176);
+				setState(172);
 				match(T__7);
 				}
 				break;
 			case T__8:
 				{
-				setState(177);
+				setState(173);
 				match(T__8);
 				}
 				break;
 			case T__9:
 				{
-				setState(178);
+				setState(174);
 				match(T__9);
 				}
 				break;
 			case T__10:
 				{
-				setState(179);
+				setState(175);
 				match(T__10);
 				}
 				break;
 			case T__11:
 				{
-				setState(180);
+				setState(176);
 				match(T__11);
 				}
 				break;
-			case T__12:
-				{
-				setState(181);
-				match(T__12);
-				}
-				break;
 			case TILDA:
 				{
-				setState(182);
+				setState(177);
 				meta();
 				}
 				break;
@@ -1255,11 +1177,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitLvalQual(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitLvalQual(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final LvalQualContext lvalQual() throws RecognitionException {
@@ -1278,13 +1195,13 @@
 			enterOuterAlt(_localctx, 1);
 			{
 			{
-			setState(186);
+			setState(181);
 			lvalPart();
 			}
 			_ctx.stop = _input.LT(-1);
-			setState(192);
+			setState(187);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					if ( _parseListeners!=null ) triggerExitRuleEvent();
@@ -1293,16 +1210,16 @@
 					{
 					_localctx = new LvalQualContext(_parentctx, _parentState);
 					pushNewRecursionContext(_localctx, _startState, RULE_lvalQual);
-					setState(188);
+					setState(183);
 					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(189);
+					setState(184);
 					lvalPart();
 					}
 					} 
 				}
-				setState(194);
+				setState(189);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,16,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,15,_ctx);
 			}
 			}
 		}
@@ -1332,11 +1249,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitLvalPart(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitLvalPart(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final LvalPartContext lvalPart() throws RecognitionException {
@@ -1345,9 +1257,9 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(195);
+			setState(190);
 			match(ID);
-			setState(196);
+			setState(191);
 			match(DOT);
 			}
 		}
@@ -1382,11 +1294,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitRvalSingle(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitRvalSingle(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final RvalSingleContext rvalSingle() throws RecognitionException {
@@ -1394,44 +1301,44 @@
 		enterRule(_localctx, 34, RULE_rvalSingle);
 		int _la;
 		try {
-			setState(209);
+			setState(204);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
-			case T__13:
+			case T__12:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(198);
-				match(T__13);
+				setState(193);
+				match(T__12);
 				}
 				break;
 			case MINUS:
 			case INT:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(200);
+				setState(195);
 				_errHandler.sync(this);
 				_la = _input.LA(1);
 				if (_la==MINUS) {
 					{
-					setState(199);
+					setState(194);
 					match(MINUS);
 					}
 				}
 
-				setState(205);
+				setState(200);
 				_errHandler.sync(this);
-				switch ( getInterpreter().adaptivePredict(_input,18,_ctx) ) {
+				switch ( getInterpreter().adaptivePredict(_input,17,_ctx) ) {
 				case 1:
 					{
-					setState(202);
+					setState(197);
 					match(INT);
 					}
 					break;
 				case 2:
 					{
-					setState(203);
+					setState(198);
 					match(INT);
-					setState(204);
+					setState(199);
 					match(EXP);
 					}
 					break;
@@ -1441,14 +1348,14 @@
 			case BOOL:
 				enterOuterAlt(_localctx, 3);
 				{
-				setState(207);
+				setState(202);
 				match(BOOL);
 				}
 				break;
 			case SQUOTE:
 				enterOuterAlt(_localctx, 4);
 				{
-				setState(208);
+				setState(203);
 				qstring();
 				}
 				break;
@@ -1488,39 +1395,34 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitRval(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitRval(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final RvalContext rval() throws RecognitionException {
 		RvalContext _localctx = new RvalContext(_ctx, getState());
 		enterRule(_localctx, 36, RULE_rval);
 		try {
-			setState(216);
+			setState(211);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
-			case T__13:
+			case T__12:
 			case SQUOTE:
 			case MINUS:
 			case BOOL:
 			case INT:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(211);
+				setState(206);
 				rvalSingle();
 				}
 				break;
 			case LPAREN:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(212);
+				setState(207);
 				match(LPAREN);
-				setState(213);
+				setState(208);
 				rvalList(0);
-				setState(214);
+				setState(209);
 				match(RPAREN);
 				}
 				break;
@@ -1559,11 +1461,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitRvalList(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitRvalList(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final RvalListContext rvalList() throws RecognitionException {
@@ -1582,13 +1479,13 @@
 			enterOuterAlt(_localctx, 1);
 			{
 			{
-			setState(219);
+			setState(214);
 			rvalSingle();
 			}
 			_ctx.stop = _input.LT(-1);
-			setState(226);
+			setState(221);
 			_errHandler.sync(this);
-			_alt = getInterpreter().adaptivePredict(_input,21,_ctx);
+			_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
 			while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) {
 				if ( _alt==1 ) {
 					if ( _parseListeners!=null ) triggerExitRuleEvent();
@@ -1597,18 +1494,18 @@
 					{
 					_localctx = new RvalListContext(_parentctx, _parentState);
 					pushNewRecursionContext(_localctx, _startState, RULE_rvalList);
-					setState(221);
+					setState(216);
 					if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)");
-					setState(222);
+					setState(217);
 					match(COMMA);
-					setState(223);
+					setState(218);
 					rvalSingle();
 					}
 					} 
 				}
-				setState(228);
+				setState(223);
 				_errHandler.sync(this);
-				_alt = getInterpreter().adaptivePredict(_input,21,_ctx);
+				_alt = getInterpreter().adaptivePredict(_input,20,_ctx);
 			}
 			}
 		}
@@ -1644,32 +1541,42 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMeta(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitMeta(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final MetaContext meta() throws RecognitionException {
 		MetaContext _localctx = new MetaContext(_ctx, getState());
 		enterRule(_localctx, 40, RULE_meta);
 		try {
-			setState(242);
+			setState(237);
 			_errHandler.sync(this);
-			switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) {
+			switch ( getInterpreter().adaptivePredict(_input,21,_ctx) ) {
 			case 1:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(229);
+				setState(224);
 				match(TILDA);
-				setState(230);
+				setState(225);
 				match(ID);
 				}
 				break;
 			case 2:
 				enterOuterAlt(_localctx, 2);
 				{
+				setState(226);
+				match(TILDA);
+				setState(227);
+				match(ID);
+				setState(228);
+				match(LBR);
+				setState(229);
+				match(INT);
+				setState(230);
+				match(RBR);
+				}
+				break;
+			case 3:
+				enterOuterAlt(_localctx, 3);
+				{
 				setState(231);
 				match(TILDA);
 				setState(232);
@@ -1677,23 +1584,8 @@
 				setState(233);
 				match(LBR);
 				setState(234);
-				match(INT);
-				setState(235);
-				match(RBR);
-				}
-				break;
-			case 3:
-				enterOuterAlt(_localctx, 3);
-				{
-				setState(236);
-				match(TILDA);
-				setState(237);
-				match(ID);
-				setState(238);
-				match(LBR);
-				setState(239);
 				qstring();
-				setState(240);
+				setState(235);
 				match(RBR);
 				}
 				break;
@@ -1727,11 +1619,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitQstring(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitQstring(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final QstringContext qstring() throws RecognitionException {
@@ -1741,15 +1628,15 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(244);
+			setState(239);
 			match(SQUOTE);
-			setState(248);
+			setState(243);
 			_errHandler.sync(this);
 			_la = _input.LA(1);
-			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << T__13) | (1L << PRED_OP) | (1L << AND) | (1L << OR) | (1L << VERT) | (1L << EXCL) | (1L << LPAREN) | (1L << RPAREN) | (1L << LCURLY) | (1L << RCURLY) | (1L << TILDA) | (1L << RIGHT) | (1L << LBR) | (1L << RBR) | (1L << COMMA) | (1L << COLON) | (1L << MINUS) | (1L << DOT) | (1L << UNDERSCORE) | (1L << EQ) | (1L << PLUS) | (1L << QUESTION) | (1L << STAR) | (1L << BOOL) | (1L << INT) | (1L << EXP) | (1L << ID) | (1L << WS) | (1L << ErrorCharacter))) != 0)) {
+			while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__0) | (1L << T__1) | (1L << T__2) | (1L << T__3) | (1L << T__4) | (1L << T__5) | (1L << T__6) | (1L << T__7) | (1L << T__8) | (1L << T__9) | (1L << T__10) | (1L << T__11) | (1L << T__12) | (1L << PRED_OP) | (1L << AND) | (1L << OR) | (1L << VERT) | (1L << EXCL) | (1L << LPAREN) | (1L << RPAREN) | (1L << LCURLY) | (1L << RCURLY) | (1L << TILDA) | (1L << RIGHT) | (1L << LBR) | (1L << RBR) | (1L << COMMA) | (1L << COLON) | (1L << MINUS) | (1L << DOT) | (1L << UNDERSCORE) | (1L << EQ) | (1L << PLUS) | (1L << QUESTION) | (1L << STAR) | (1L << BOOL) | (1L << INT) | (1L << EXP) | (1L << ID) | (1L << WS) | (1L << ErrorCharacter))) != 0)) {
 				{
 				{
-				setState(245);
+				setState(240);
 				_la = _input.LA(1);
 				if ( _la <= 0 || (_la==SQUOTE) ) {
 				_errHandler.recoverInline(this);
@@ -1761,11 +1648,11 @@
 				}
 				}
 				}
-				setState(250);
+				setState(245);
 				_errHandler.sync(this);
 				_la = _input.LA(1);
 			}
-			setState(251);
+			setState(246);
 			match(SQUOTE);
 			}
 		}
@@ -1799,18 +1686,13 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMinMax(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitMinMax(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final MinMaxContext minMax() throws RecognitionException {
 		MinMaxContext _localctx = new MinMaxContext(_ctx, getState());
 		enterRule(_localctx, 44, RULE_minMax);
 		try {
-			setState(255);
+			setState(250);
 			_errHandler.sync(this);
 			switch (_input.LA(1)) {
 			case PLUS:
@@ -1818,14 +1700,14 @@
 			case STAR:
 				enterOuterAlt(_localctx, 1);
 				{
-				setState(253);
+				setState(248);
 				minMaxShortcut();
 				}
 				break;
 			case LBR:
 				enterOuterAlt(_localctx, 2);
 				{
-				setState(254);
+				setState(249);
 				minMaxRange();
 				}
 				break;
@@ -1860,11 +1742,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMinMaxShortcut(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitMinMaxShortcut(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final MinMaxShortcutContext minMaxShortcut() throws RecognitionException {
@@ -1874,7 +1751,7 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(257);
+			setState(252);
 			_la = _input.LA(1);
 			if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << PLUS) | (1L << QUESTION) | (1L << STAR))) != 0)) ) {
 			_errHandler.recoverInline(this);
@@ -1917,11 +1794,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCIntentDslListener ) ((NCIntentDslListener)listener).exitMinMaxRange(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCIntentDslVisitor ) return ((NCIntentDslVisitor<? extends T>)visitor).visitMinMaxRange(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final MinMaxRangeContext minMaxRange() throws RecognitionException {
@@ -1930,15 +1802,15 @@
 		try {
 			enterOuterAlt(_localctx, 1);
 			{
-			setState(259);
+			setState(254);
 			match(LBR);
-			setState(260);
+			setState(255);
 			match(INT);
-			setState(261);
+			setState(256);
 			match(COMMA);
-			setState(262);
+			setState(257);
 			match(INT);
-			setState(263);
+			setState(258);
 			match(RBR);
 			}
 		}
@@ -1955,11 +1827,11 @@
 
 	public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) {
 		switch (ruleIndex) {
-		case 5:
+		case 4:
 			return flow_sempred((FlowContext)_localctx, predIndex);
-		case 8:
+		case 7:
 			return idList_sempred((IdListContext)_localctx, predIndex);
-		case 9:
+		case 8:
 			return terms_sempred((TermsContext)_localctx, predIndex);
 		case 12:
 			return item_sempred((ItemContext)_localctx, predIndex);
@@ -2014,95 +1886,93 @@
 	}
 
 	public static final String _serializedATN =
-		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3-\u010c\4\2\t\2\4"+
+		"\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3,\u0107\4\2\t\2\4"+
 		"\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t"+
 		"\13\4\f\t\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22"+
 		"\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31\t\31"+
-		"\4\32\t\32\3\2\3\2\5\2\67\n\2\3\2\5\2:\n\2\3\2\5\2=\n\2\3\2\3\2\3\2\3"+
-		"\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\6"+
-		"\3\7\3\7\5\7V\n\7\3\7\3\7\3\7\7\7[\n\7\f\7\16\7^\13\7\3\b\3\b\5\bb\n\b"+
-		"\3\t\3\t\3\t\3\t\3\t\5\ti\n\t\3\n\3\n\3\n\3\n\3\n\3\n\7\nq\n\n\f\n\16"+
-		"\nt\13\n\3\13\3\13\3\13\3\13\3\13\7\13{\n\13\f\13\16\13~\13\13\3\f\3\f"+
-		"\5\f\u0082\n\f\3\f\3\f\3\f\3\f\3\f\5\f\u0089\n\f\3\r\3\r\3\r\3\r\3\16"+
-		"\3\16\3\16\3\16\3\16\3\16\3\16\3\16\5\16\u0097\n\16\3\16\3\16\3\16\7\16"+
-		"\u009c\n\16\f\16\16\16\u009f\13\16\3\17\3\17\3\17\3\17\3\17\3\17\3\17"+
-		"\3\17\3\17\3\17\3\17\5\17\u00ac\n\17\3\20\5\20\u00af\n\20\3\20\3\20\3"+
-		"\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20\u00ba\n\20\3\21\3\21\3\21\3\21"+
-		"\3\21\7\21\u00c1\n\21\f\21\16\21\u00c4\13\21\3\22\3\22\3\22\3\23\3\23"+
-		"\5\23\u00cb\n\23\3\23\3\23\3\23\5\23\u00d0\n\23\3\23\3\23\5\23\u00d4\n"+
-		"\23\3\24\3\24\3\24\3\24\3\24\5\24\u00db\n\24\3\25\3\25\3\25\3\25\3\25"+
-		"\3\25\7\25\u00e3\n\25\f\25\16\25\u00e6\13\25\3\26\3\26\3\26\3\26\3\26"+
-		"\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5\26\u00f5\n\26\3\27\3\27\7\27"+
-		"\u00f9\n\27\f\27\16\27\u00fc\13\27\3\27\3\27\3\30\3\30\5\30\u0102\n\30"+
-		"\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\2\b\f\22\24\32 (\33\2\4"+
-		"\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*,.\60\62\2\5\3\2\22\23\3\2\32"+
-		"\32\3\2%\'\2\u0116\2\64\3\2\2\2\4A\3\2\2\2\6E\3\2\2\2\bI\3\2\2\2\nM\3"+
-		"\2\2\2\fU\3\2\2\2\16_\3\2\2\2\20h\3\2\2\2\22j\3\2\2\2\24u\3\2\2\2\26\177"+
-		"\3\2\2\2\30\u008a\3\2\2\2\32\u0096\3\2\2\2\34\u00ab\3\2\2\2\36\u00ae\3"+
-		"\2\2\2 \u00bb\3\2\2\2\"\u00c5\3\2\2\2$\u00d3\3\2\2\2&\u00da\3\2\2\2(\u00dc"+
-		"\3\2\2\2*\u00f4\3\2\2\2,\u00f6\3\2\2\2.\u0101\3\2\2\2\60\u0103\3\2\2\2"+
-		"\62\u0105\3\2\2\2\64\66\5\4\3\2\65\67\5\6\4\2\66\65\3\2\2\2\66\67\3\2"+
-		"\2\2\679\3\2\2\28:\5\b\5\298\3\2\2\29:\3\2\2\2:<\3\2\2\2;=\5\n\6\2<;\3"+
-		"\2\2\2<=\3\2\2\2=>\3\2\2\2>?\5\24\13\2?@\7\2\2\3@\3\3\2\2\2AB\7\3\2\2"+
-		"BC\7$\2\2CD\7+\2\2D\5\3\2\2\2EF\7\4\2\2FG\7$\2\2GH\7(\2\2H\7\3\2\2\2I"+
-		"J\7\5\2\2JK\7$\2\2KL\7(\2\2L\t\3\2\2\2MN\7\6\2\2NO\7$\2\2OP\7\32\2\2P"+
-		"Q\5\f\7\2QR\7\32\2\2R\13\3\2\2\2SV\b\7\1\2TV\5\16\b\2US\3\2\2\2UT\3\2"+
-		"\2\2V\\\3\2\2\2WX\f\3\2\2XY\7\34\2\2Y[\5\16\b\2ZW\3\2\2\2[^\3\2\2\2\\"+
-		"Z\3\2\2\2\\]\3\2\2\2]\r\3\2\2\2^\\\3\2\2\2_a\5\20\t\2`b\5.\30\2a`\3\2"+
-		"\2\2ab\3\2\2\2b\17\3\2\2\2ci\7+\2\2de\7\26\2\2ef\5\22\n\2fg\7\27\2\2g"+
-		"i\3\2\2\2hc\3\2\2\2hd\3\2\2\2i\21\3\2\2\2jk\b\n\1\2kl\7+\2\2lr\3\2\2\2"+
-		"mn\f\3\2\2no\7\24\2\2oq\7+\2\2pm\3\2\2\2qt\3\2\2\2rp\3\2\2\2rs\3\2\2\2"+
-		"s\23\3\2\2\2tr\3\2\2\2uv\b\13\1\2vw\5\26\f\2w|\3\2\2\2xy\f\3\2\2y{\5\26"+
-		"\f\2zx\3\2\2\2{~\3\2\2\2|z\3\2\2\2|}\3\2\2\2}\25\3\2\2\2~|\3\2\2\2\177"+
-		"\u0081\7\7\2\2\u0080\u0082\5\30\r\2\u0081\u0080\3\2\2\2\u0081\u0082\3"+
-		"\2\2\2\u0082\u0083\3\2\2\2\u0083\u0084\7$\2\2\u0084\u0085\7\30\2\2\u0085"+
-		"\u0086\5\32\16\2\u0086\u0088\7\31\2\2\u0087\u0089\5.\30\2\u0088\u0087"+
-		"\3\2\2\2\u0088\u0089\3\2\2\2\u0089\27\3\2\2\2\u008a\u008b\7\26\2\2\u008b"+
-		"\u008c\7+\2\2\u008c\u008d\7\27\2\2\u008d\31\3\2\2\2\u008e\u008f\b\16\1"+
-		"\2\u008f\u0097\5\34\17\2\u0090\u0091\7\26\2\2\u0091\u0092\5\32\16\2\u0092"+
-		"\u0093\7\27\2\2\u0093\u0097\3\2\2\2\u0094\u0095\7\25\2\2\u0095\u0097\5"+
-		"\32\16\3\u0096\u008e\3\2\2\2\u0096\u0090\3\2\2\2\u0096\u0094\3\2\2\2\u0097"+
-		"\u009d\3\2\2\2\u0098\u0099\f\4\2\2\u0099\u009a\t\2\2\2\u009a\u009c\5\32"+
-		"\16\5\u009b\u0098\3\2\2\2\u009c\u009f\3\2\2\2\u009d\u009b\3\2\2\2\u009d"+
-		"\u009e\3\2\2\2\u009e\33\3\2\2\2\u009f\u009d\3\2\2\2\u00a0\u00a1\5\36\20"+
-		"\2\u00a1\u00a2\7\21\2\2\u00a2\u00a3\5&\24\2\u00a3\u00ac\3\2\2\2\u00a4"+
-		"\u00a5\7+\2\2\u00a5\u00a6\7\26\2\2\u00a6\u00a7\5\36\20\2\u00a7\u00a8\7"+
-		"\27\2\2\u00a8\u00a9\7\21\2\2\u00a9\u00aa\5&\24\2\u00aa\u00ac\3\2\2\2\u00ab"+
-		"\u00a0\3\2\2\2\u00ab\u00a4\3\2\2\2\u00ac\35\3\2\2\2\u00ad\u00af\5 \21"+
-		"\2\u00ae\u00ad\3\2\2\2\u00ae\u00af\3\2\2\2\u00af\u00b9\3\2\2\2\u00b0\u00ba"+
-		"\7\b\2\2\u00b1\u00ba\7\t\2\2\u00b2\u00ba\7\n\2\2\u00b3\u00ba\7\13\2\2"+
-		"\u00b4\u00ba\7\f\2\2\u00b5\u00ba\7\r\2\2\u00b6\u00ba\7\16\2\2\u00b7\u00ba"+
-		"\7\17\2\2\u00b8\u00ba\5*\26\2\u00b9\u00b0\3\2\2\2\u00b9\u00b1\3\2\2\2"+
-		"\u00b9\u00b2\3\2\2\2\u00b9\u00b3\3\2\2\2\u00b9\u00b4\3\2\2\2\u00b9\u00b5"+
-		"\3\2\2\2\u00b9\u00b6\3\2\2\2\u00b9\u00b7\3\2\2\2\u00b9\u00b8\3\2\2\2\u00ba"+
-		"\37\3\2\2\2\u00bb\u00bc\b\21\1\2\u00bc\u00bd\5\"\22\2\u00bd\u00c2\3\2"+
-		"\2\2\u00be\u00bf\f\3\2\2\u00bf\u00c1\5\"\22\2\u00c0\u00be\3\2\2\2\u00c1"+
-		"\u00c4\3\2\2\2\u00c2\u00c0\3\2\2\2\u00c2\u00c3\3\2\2\2\u00c3!\3\2\2\2"+
-		"\u00c4\u00c2\3\2\2\2\u00c5\u00c6\7+\2\2\u00c6\u00c7\7\"\2\2\u00c7#\3\2"+
-		"\2\2\u00c8\u00d4\7\20\2\2\u00c9\u00cb\7!\2\2\u00ca\u00c9\3\2\2\2\u00ca"+
-		"\u00cb\3\2\2\2\u00cb\u00cf\3\2\2\2\u00cc\u00d0\7)\2\2\u00cd\u00ce\7)\2"+
-		"\2\u00ce\u00d0\7*\2\2\u00cf\u00cc\3\2\2\2\u00cf\u00cd\3\2\2\2\u00d0\u00d4"+
-		"\3\2\2\2\u00d1\u00d4\7(\2\2\u00d2\u00d4\5,\27\2\u00d3\u00c8\3\2\2\2\u00d3"+
-		"\u00ca\3\2\2\2\u00d3\u00d1\3\2\2\2\u00d3\u00d2\3\2\2\2\u00d4%\3\2\2\2"+
-		"\u00d5\u00db\5$\23\2\u00d6\u00d7\7\26\2\2\u00d7\u00d8\5(\25\2\u00d8\u00d9"+
-		"\7\27\2\2\u00d9\u00db\3\2\2\2\u00da\u00d5\3\2\2\2\u00da\u00d6\3\2\2\2"+
-		"\u00db\'\3\2\2\2\u00dc\u00dd\b\25\1\2\u00dd\u00de\5$\23\2\u00de\u00e4"+
-		"\3\2\2\2\u00df\u00e0\f\3\2\2\u00e0\u00e1\7\37\2\2\u00e1\u00e3\5$\23\2"+
-		"\u00e2\u00df\3\2\2\2\u00e3\u00e6\3\2\2\2\u00e4\u00e2\3\2\2\2\u00e4\u00e5"+
-		"\3\2\2\2\u00e5)\3\2\2\2\u00e6\u00e4\3\2\2\2\u00e7\u00e8\7\33\2\2\u00e8"+
-		"\u00f5\7+\2\2\u00e9\u00ea\7\33\2\2\u00ea\u00eb\7+\2\2\u00eb\u00ec\7\35"+
-		"\2\2\u00ec\u00ed\7)\2\2\u00ed\u00f5\7\36\2\2\u00ee\u00ef\7\33\2\2\u00ef"+
-		"\u00f0\7+\2\2\u00f0\u00f1\7\35\2\2\u00f1\u00f2\5,\27\2\u00f2\u00f3\7\36"+
-		"\2\2\u00f3\u00f5\3\2\2\2\u00f4\u00e7\3\2\2\2\u00f4\u00e9\3\2\2\2\u00f4"+
-		"\u00ee\3\2\2\2\u00f5+\3\2\2\2\u00f6\u00fa\7\32\2\2\u00f7\u00f9\n\3\2\2"+
-		"\u00f8\u00f7\3\2\2\2\u00f9\u00fc\3\2\2\2\u00fa\u00f8\3\2\2\2\u00fa\u00fb"+
-		"\3\2\2\2\u00fb\u00fd\3\2\2\2\u00fc\u00fa\3\2\2\2\u00fd\u00fe\7\32\2\2"+
-		"\u00fe-\3\2\2\2\u00ff\u0102\5\60\31\2\u0100\u0102\5\62\32\2\u0101\u00ff"+
-		"\3\2\2\2\u0101\u0100\3\2\2\2\u0102/\3\2\2\2\u0103\u0104\t\4\2\2\u0104"+
-		"\61\3\2\2\2\u0105\u0106\7\35\2\2\u0106\u0107\7)\2\2\u0107\u0108\7\37\2"+
-		"\2\u0108\u0109\7)\2\2\u0109\u010a\7\36\2\2\u010a\63\3\2\2\2\33\669<U\\"+
-		"ahr|\u0081\u0088\u0096\u009d\u00ab\u00ae\u00b9\u00c2\u00ca\u00cf\u00d3"+
-		"\u00da\u00e4\u00f4\u00fa\u0101";
+		"\4\32\t\32\3\2\3\2\5\2\67\n\2\3\2\5\2:\n\2\3\2\3\2\3\2\3\3\3\3\3\3\3\3"+
+		"\3\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\5\6O\n\6\3\6\3\6\3\6"+
+		"\7\6T\n\6\f\6\16\6W\13\6\3\7\3\7\5\7[\n\7\3\b\3\b\3\b\3\b\3\b\5\bb\n\b"+
+		"\3\t\3\t\3\t\3\t\3\t\3\t\7\tj\n\t\f\t\16\tm\13\t\3\n\3\n\3\n\3\n\3\n\7"+
+		"\nt\n\n\f\n\16\nw\13\n\3\13\3\13\3\f\3\f\5\f}\n\f\3\f\3\f\3\f\3\f\3\f"+
+		"\5\f\u0084\n\f\3\r\3\r\3\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16"+
+		"\5\16\u0092\n\16\3\16\3\16\3\16\7\16\u0097\n\16\f\16\16\16\u009a\13\16"+
+		"\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\5\17\u00a7\n\17"+
+		"\3\20\5\20\u00aa\n\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\5\20"+
+		"\u00b5\n\20\3\21\3\21\3\21\3\21\3\21\7\21\u00bc\n\21\f\21\16\21\u00bf"+
+		"\13\21\3\22\3\22\3\22\3\23\3\23\5\23\u00c6\n\23\3\23\3\23\3\23\5\23\u00cb"+
+		"\n\23\3\23\3\23\5\23\u00cf\n\23\3\24\3\24\3\24\3\24\3\24\5\24\u00d6\n"+
+		"\24\3\25\3\25\3\25\3\25\3\25\3\25\7\25\u00de\n\25\f\25\16\25\u00e1\13"+
+		"\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\5"+
+		"\26\u00f0\n\26\3\27\3\27\7\27\u00f4\n\27\f\27\16\27\u00f7\13\27\3\27\3"+
+		"\27\3\30\3\30\5\30\u00fd\n\30\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32"+
+		"\3\32\2\b\n\20\22\32 (\33\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&"+
+		"(*,.\60\62\2\6\4\2\32\32##\3\2\21\22\3\2\31\31\3\2$&\2\u0110\2\64\3\2"+
+		"\2\2\4>\3\2\2\2\6B\3\2\2\2\bF\3\2\2\2\nN\3\2\2\2\fX\3\2\2\2\16a\3\2\2"+
+		"\2\20c\3\2\2\2\22n\3\2\2\2\24x\3\2\2\2\26z\3\2\2\2\30\u0085\3\2\2\2\32"+
+		"\u0091\3\2\2\2\34\u00a6\3\2\2\2\36\u00a9\3\2\2\2 \u00b6\3\2\2\2\"\u00c0"+
+		"\3\2\2\2$\u00ce\3\2\2\2&\u00d5\3\2\2\2(\u00d7\3\2\2\2*\u00ef\3\2\2\2,"+
+		"\u00f1\3\2\2\2.\u00fc\3\2\2\2\60\u00fe\3\2\2\2\62\u0100\3\2\2\2\64\66"+
+		"\5\4\3\2\65\67\5\6\4\2\66\65\3\2\2\2\66\67\3\2\2\2\679\3\2\2\28:\5\b\5"+
+		"\298\3\2\2\29:\3\2\2\2:;\3\2\2\2;<\5\22\n\2<=\7\2\2\3=\3\3\2\2\2>?\7\3"+
+		"\2\2?@\7#\2\2@A\7*\2\2A\5\3\2\2\2BC\7\4\2\2CD\7#\2\2DE\7\'\2\2E\7\3\2"+
+		"\2\2FG\7\5\2\2GH\7#\2\2HI\7\31\2\2IJ\5\n\6\2JK\7\31\2\2K\t\3\2\2\2LO\b"+
+		"\6\1\2MO\5\f\7\2NL\3\2\2\2NM\3\2\2\2OU\3\2\2\2PQ\f\3\2\2QR\7\33\2\2RT"+
+		"\5\f\7\2SP\3\2\2\2TW\3\2\2\2US\3\2\2\2UV\3\2\2\2V\13\3\2\2\2WU\3\2\2\2"+
+		"XZ\5\16\b\2Y[\5.\30\2ZY\3\2\2\2Z[\3\2\2\2[\r\3\2\2\2\\b\7*\2\2]^\7\25"+
+		"\2\2^_\5\20\t\2_`\7\26\2\2`b\3\2\2\2a\\\3\2\2\2a]\3\2\2\2b\17\3\2\2\2"+
+		"cd\b\t\1\2de\7*\2\2ek\3\2\2\2fg\f\3\2\2gh\7\23\2\2hj\7*\2\2if\3\2\2\2"+
+		"jm\3\2\2\2ki\3\2\2\2kl\3\2\2\2l\21\3\2\2\2mk\3\2\2\2no\b\n\1\2op\5\26"+
+		"\f\2pu\3\2\2\2qr\f\3\2\2rt\5\26\f\2sq\3\2\2\2tw\3\2\2\2us\3\2\2\2uv\3"+
+		"\2\2\2v\23\3\2\2\2wu\3\2\2\2xy\t\2\2\2y\25\3\2\2\2z|\7\6\2\2{}\5\30\r"+
+		"\2|{\3\2\2\2|}\3\2\2\2}~\3\2\2\2~\177\5\24\13\2\177\u0080\7\27\2\2\u0080"+
+		"\u0081\5\32\16\2\u0081\u0083\7\30\2\2\u0082\u0084\5.\30\2\u0083\u0082"+
+		"\3\2\2\2\u0083\u0084\3\2\2\2\u0084\27\3\2\2\2\u0085\u0086\7\25\2\2\u0086"+
+		"\u0087\7*\2\2\u0087\u0088\7\26\2\2\u0088\31\3\2\2\2\u0089\u008a\b\16\1"+
+		"\2\u008a\u0092\5\34\17\2\u008b\u008c\7\25\2\2\u008c\u008d\5\32\16\2\u008d"+
+		"\u008e\7\26\2\2\u008e\u0092\3\2\2\2\u008f\u0090\7\24\2\2\u0090\u0092\5"+
+		"\32\16\3\u0091\u0089\3\2\2\2\u0091\u008b\3\2\2\2\u0091\u008f\3\2\2\2\u0092"+
+		"\u0098\3\2\2\2\u0093\u0094\f\4\2\2\u0094\u0095\t\3\2\2\u0095\u0097\5\32"+
+		"\16\5\u0096\u0093\3\2\2\2\u0097\u009a\3\2\2\2\u0098\u0096\3\2\2\2\u0098"+
+		"\u0099\3\2\2\2\u0099\33\3\2\2\2\u009a\u0098\3\2\2\2\u009b\u009c\5\36\20"+
+		"\2\u009c\u009d\7\20\2\2\u009d\u009e\5&\24\2\u009e\u00a7\3\2\2\2\u009f"+
+		"\u00a0\7*\2\2\u00a0\u00a1\7\25\2\2\u00a1\u00a2\5\36\20\2\u00a2\u00a3\7"+
+		"\26\2\2\u00a3\u00a4\7\20\2\2\u00a4\u00a5\5&\24\2\u00a5\u00a7\3\2\2\2\u00a6"+
+		"\u009b\3\2\2\2\u00a6\u009f\3\2\2\2\u00a7\35\3\2\2\2\u00a8\u00aa\5 \21"+
+		"\2\u00a9\u00a8\3\2\2\2\u00a9\u00aa\3\2\2\2\u00aa\u00b4\3\2\2\2\u00ab\u00b5"+
+		"\7\7\2\2\u00ac\u00b5\7\b\2\2\u00ad\u00b5\7\t\2\2\u00ae\u00b5\7\n\2\2\u00af"+
+		"\u00b5\7\13\2\2\u00b0\u00b5\7\f\2\2\u00b1\u00b5\7\r\2\2\u00b2\u00b5\7"+
+		"\16\2\2\u00b3\u00b5\5*\26\2\u00b4\u00ab\3\2\2\2\u00b4\u00ac\3\2\2\2\u00b4"+
+		"\u00ad\3\2\2\2\u00b4\u00ae\3\2\2\2\u00b4\u00af\3\2\2\2\u00b4\u00b0\3\2"+
+		"\2\2\u00b4\u00b1\3\2\2\2\u00b4\u00b2\3\2\2\2\u00b4\u00b3\3\2\2\2\u00b5"+
+		"\37\3\2\2\2\u00b6\u00b7\b\21\1\2\u00b7\u00b8\5\"\22\2\u00b8\u00bd\3\2"+
+		"\2\2\u00b9\u00ba\f\3\2\2\u00ba\u00bc\5\"\22\2\u00bb\u00b9\3\2\2\2\u00bc"+
+		"\u00bf\3\2\2\2\u00bd\u00bb\3\2\2\2\u00bd\u00be\3\2\2\2\u00be!\3\2\2\2"+
+		"\u00bf\u00bd\3\2\2\2\u00c0\u00c1\7*\2\2\u00c1\u00c2\7!\2\2\u00c2#\3\2"+
+		"\2\2\u00c3\u00cf\7\17\2\2\u00c4\u00c6\7 \2\2\u00c5\u00c4\3\2\2\2\u00c5"+
+		"\u00c6\3\2\2\2\u00c6\u00ca\3\2\2\2\u00c7\u00cb\7(\2\2\u00c8\u00c9\7(\2"+
+		"\2\u00c9\u00cb\7)\2\2\u00ca\u00c7\3\2\2\2\u00ca\u00c8\3\2\2\2\u00cb\u00cf"+
+		"\3\2\2\2\u00cc\u00cf\7\'\2\2\u00cd\u00cf\5,\27\2\u00ce\u00c3\3\2\2\2\u00ce"+
+		"\u00c5\3\2\2\2\u00ce\u00cc\3\2\2\2\u00ce\u00cd\3\2\2\2\u00cf%\3\2\2\2"+
+		"\u00d0\u00d6\5$\23\2\u00d1\u00d2\7\25\2\2\u00d2\u00d3\5(\25\2\u00d3\u00d4"+
+		"\7\26\2\2\u00d4\u00d6\3\2\2\2\u00d5\u00d0\3\2\2\2\u00d5\u00d1\3\2\2\2"+
+		"\u00d6\'\3\2\2\2\u00d7\u00d8\b\25\1\2\u00d8\u00d9\5$\23\2\u00d9\u00df"+
+		"\3\2\2\2\u00da\u00db\f\3\2\2\u00db\u00dc\7\36\2\2\u00dc\u00de\5$\23\2"+
+		"\u00dd\u00da\3\2\2\2\u00de\u00e1\3\2\2\2\u00df\u00dd\3\2\2\2\u00df\u00e0"+
+		"\3\2\2\2\u00e0)\3\2\2\2\u00e1\u00df\3\2\2\2\u00e2\u00e3\7\32\2\2\u00e3"+
+		"\u00f0\7*\2\2\u00e4\u00e5\7\32\2\2\u00e5\u00e6\7*\2\2\u00e6\u00e7\7\34"+
+		"\2\2\u00e7\u00e8\7(\2\2\u00e8\u00f0\7\35\2\2\u00e9\u00ea\7\32\2\2\u00ea"+
+		"\u00eb\7*\2\2\u00eb\u00ec\7\34\2\2\u00ec\u00ed\5,\27\2\u00ed\u00ee\7\35"+
+		"\2\2\u00ee\u00f0\3\2\2\2\u00ef\u00e2\3\2\2\2\u00ef\u00e4\3\2\2\2\u00ef"+
+		"\u00e9\3\2\2\2\u00f0+\3\2\2\2\u00f1\u00f5\7\31\2\2\u00f2\u00f4\n\4\2\2"+
+		"\u00f3\u00f2\3\2\2\2\u00f4\u00f7\3\2\2\2\u00f5\u00f3\3\2\2\2\u00f5\u00f6"+
+		"\3\2\2\2\u00f6\u00f8\3\2\2\2\u00f7\u00f5\3\2\2\2\u00f8\u00f9\7\31\2\2"+
+		"\u00f9-\3\2\2\2\u00fa\u00fd\5\60\31\2\u00fb\u00fd\5\62\32\2\u00fc\u00fa"+
+		"\3\2\2\2\u00fc\u00fb\3\2\2\2\u00fd/\3\2\2\2\u00fe\u00ff\t\5\2\2\u00ff"+
+		"\61\3\2\2\2\u0100\u0101\7\34\2\2\u0101\u0102\7(\2\2\u0102\u0103\7\36\2"+
+		"\2\u0103\u0104\7(\2\2\u0104\u0105\7\35\2\2\u0105\63\3\2\2\2\32\669NUZ"+
+		"aku|\u0083\u0091\u0098\u00a6\u00a9\u00b4\u00bd\u00c5\u00ca\u00ce\u00d5"+
+		"\u00df\u00ef\u00f5\u00fc";
 	public static final ATN _ATN =
 		new ATNDeserializer().deserialize(_serializedATN.toCharArray());
 	static {
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslVisitor.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslVisitor.java
deleted file mode 100644
index b9b45c6..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDslVisitor.java
+++ /dev/null
@@ -1,163 +0,0 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/impl/antlr4/NCIntentDsl.g4 by ANTLR 4.8
-package org.apache.nlpcraft.model.intent.impl.antlr4;
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-
-/**
- * This interface defines a complete generic visitor for a parse tree produced
- * by {@link NCIntentDslParser}.
- *
- * @param <T> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public interface NCIntentDslVisitor<T> extends ParseTreeVisitor<T> {
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#intent}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIntent(NCIntentDslParser.IntentContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#intentId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIntentId(NCIntentDslParser.IntentIdContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#convDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitConvDecl(NCIntentDslParser.ConvDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#orderedDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitOrderedDecl(NCIntentDslParser.OrderedDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#flowDecl}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFlowDecl(NCIntentDslParser.FlowDeclContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#flow}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFlow(NCIntentDslParser.FlowContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#flowItem}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFlowItem(NCIntentDslParser.FlowItemContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#flowItemIds}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitFlowItemIds(NCIntentDslParser.FlowItemIdsContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#idList}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitIdList(NCIntentDslParser.IdListContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#terms}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTerms(NCIntentDslParser.TermsContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#term}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTerm(NCIntentDslParser.TermContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#termId}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitTermId(NCIntentDslParser.TermIdContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#item}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitItem(NCIntentDslParser.ItemContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#predicate}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitPredicate(NCIntentDslParser.PredicateContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#lval}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitLval(NCIntentDslParser.LvalContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#lvalQual}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitLvalQual(NCIntentDslParser.LvalQualContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#lvalPart}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitLvalPart(NCIntentDslParser.LvalPartContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#rvalSingle}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitRvalSingle(NCIntentDslParser.RvalSingleContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#rval}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitRval(NCIntentDslParser.RvalContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#rvalList}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitRvalList(NCIntentDslParser.RvalListContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#meta}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMeta(NCIntentDslParser.MetaContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#qstring}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitQstring(NCIntentDslParser.QstringContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#minMax}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMax(NCIntentDslParser.MinMaxContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#minMaxShortcut}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMaxShortcut(NCIntentDslParser.MinMaxShortcutContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCIntentDslParser#minMaxRange}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMinMaxRange(NCIntentDslParser.MinMaxRangeContext ctx);
-}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
index 945439f..3274edf 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslIntent.scala
@@ -20,7 +20,7 @@
 /**
  * Intent from intent DSL.
  */
-case class NCDslIntent(id: String, conv: Boolean, ordered: Boolean, flow: Array[NCDslFlowItem], terms: Array[NCDslTerm]) {
+case class NCDslIntent(id: String, ordered: Boolean, flow: Array[NCDslFlowItem], terms: Array[NCDslTerm]) {
     if (id == null)
         throw new IllegalArgumentException("Intent ID must be provided.")
     if (terms.length == 0)
@@ -35,13 +35,12 @@
      * @return Full intent string representation in text DSL format.
      */
     def toDslString: String = {
-        val convStr = if (conv) "" else " conv=false"
         val orderedStr = if (!ordered) "" else " ordered=true"
         val flowStr = flow.mkString(" >> ") match {
             case s: String if s.nonEmpty ⇒ s" flow=$s"
             case _ ⇒ ""
         }
 
-        s"intent=$id$convStr$orderedStr$flowStr ${terms.mkString(" ")}"
+        s"intent=$id$orderedStr$flowStr ${terms.mkString(" ")}"
     }
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java
index 6ed04a6..4192da8 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/intent/utils/NCDslTerm.java
@@ -28,6 +28,9 @@
     // Term's predicate.
     final private Function<NCToken, Boolean> pred;
 
+    // Conversational or not.
+    final private boolean conv;
+
     // Terms quantifiers.
     final private int min, max;
 
@@ -41,8 +44,9 @@
      * @param pred Token predicate.
      * @param min Minimum quantifier for the predicate (inclusive).
      * @param max Maximum quantifier for the predicate (inclusive).
+     * @param conv Whether or not this term is conversational.
      */
-    public NCDslTerm(String id, Function<NCToken, Boolean> pred, int min, int max) {
+    public NCDslTerm(String id, Function<NCToken, Boolean> pred, int min, int max, boolean conv) {
         if (pred == null)
             throw new IllegalArgumentException("Intent DSL term predicate cannot be null.");
         if (min < 0 || min > max)
@@ -56,6 +60,7 @@
         this.pred = pred;
         this.min = min;
         this.max = max;
+        this.conv = conv;
     }
 
     /**
@@ -94,6 +99,13 @@
         return max;
     }
 
+    /**
+     * Whether or not this term support conversational context.
+     *
+     * @return {@code true} if this term supports conversational context, {@code false} otherwise.
+     */
+    public boolean isConversational() { return conv; }
+
     @Override
     public String toString() {
         String minMax;
@@ -109,9 +121,11 @@
         else
             minMax = String.format("[%d,%d]", min, max);
 
+        String eq = conv ? "~" : "=";
+
         if (id == null)
-            return String.format("term={%s}%s", pred, minMax);
+            return String.format("term%s{%s}%s", eq, pred, minMax);
         else
-            return String.format("term(%s)={%s}%s", id, pred, minMax);
+            return String.format("term(%s)%s{%s}%s", id, eq, pred, minMax);
     }
 }
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
index dd56754..7b21809 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/model/tools/cmdline/NCCli.scala
@@ -58,6 +58,7 @@
 import scala.collection.JavaConverters._
 import scala.compat.Platform.currentTime
 import scala.util.Try
+import scala.util.control.Breaks.{break, breakable}
 import scala.util.control.Exception.ignoring
 
 /**
@@ -1413,18 +1414,28 @@
             case None ⇒ 20 // Default.
         }
 
+        if (lines <= 0)
+            throw InvalidParameter(cmd, "lines")
+
         loadServerBeacon() match {
             case Some(beacon) ⇒
                 try
                     managed(new ReversedLinesFileReader(new File(beacon.logPath), StandardCharsets.UTF_8)) acquireAndGet { in ⇒
                         var tail = List.empty[String]
 
-                        for (_ ← 0 to lines)
-                            tail ::= in.readLine()
+                        breakable {
+                            for (_ ← 0 until lines)
+                                in.readLine() match {
+                                    case null ⇒ break
+                                    case line ⇒ tail ::= line
+                                }
+                        }
 
-                        logln(bb(w(s"+----< ${K}Last $lines server log lines $W>---")))
+                        val cnt = tail.size
+
+                        logln(bb(w(s"+----< ${K}Last $cnt server log lines $W>---")))
                         tail.foreach(line ⇒ logln(s"${bb(w("| "))}  $line"))
-                        logln(bb(w(s"+----< ${K}Last $lines server log lines $W>---")))
+                        logln(bb(w(s"+----< ${K}Last $cnt server log lines $W>---")))
                     }
                 catch {
                     case e: Exception ⇒ error(s"Failed to read log file: ${e.getLocalizedMessage}")
@@ -1903,7 +1914,9 @@
      * @param repl Whether or not executing from REPL.
      */
     private def cmdNano(cmd: Command, args: Seq[Argument], repl: Boolean): Unit = {
-        if (args.size > 1)
+        if (args.isEmpty)
+            throw NotEnoughArguments(cmd)
+        else if (args.size > 1)
             throw TooManyArguments(cmd)
 
         Commands.nano(term,
@@ -1955,7 +1968,7 @@
     private def cmdLess(cmd: Command, args: Seq[Argument], repl: Boolean): Unit = {
         if (args.isEmpty)
             throw NotEnoughArguments(cmd)
-        else if  (args.size > 1)
+        else if (args.size > 1)
             throw TooManyArguments(cmd)
 
         Commands.less(term,
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala
index 18328d7..532ad76 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelSynonymDslCompiler.scala
@@ -20,11 +20,11 @@
 import com.typesafe.scalalogging.LazyLogging
 import org.antlr.v4.runtime._
 import org.antlr.v4.runtime.tree._
-
 import org.apache.nlpcraft.common._
 import org.apache.nlpcraft.model.NCToken
 import org.apache.nlpcraft.model.intent.utils.NCDslTokenPredicate
-import org.apache.nlpcraft.probe.mgrs.model.antlr4._
+import org.apache.nlpcraft.probe.mgrs.model.antlr4.{NCSynonymDslBaseListener, NCSynonymDslLexer, NCSynonymDslParser}
+//import org.apache.nlpcraft.probe.mgrs.model.antlr4._
 
 import scala.collection.JavaConverters._
 import scala.collection.mutable
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslBaseListener.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslBaseListener.java
index d655d5c..5e399d9 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslBaseListener.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslBaseListener.java
@@ -1,4 +1,4 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4\NCSynonymDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.probe.mgrs.model.antlr4;
 
 import org.antlr.v4.runtime.ParserRuleContext;
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslBaseVisitor.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslBaseVisitor.java
deleted file mode 100644
index ed8033c..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslBaseVisitor.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4 by ANTLR 4.8
-package org.apache.nlpcraft.probe.mgrs.model.antlr4;
-import org.antlr.v4.runtime.tree.AbstractParseTreeVisitor;
-
-/**
- * This class provides an empty implementation of {@link NCSynonymDslVisitor},
- * which can be extended to create a visitor which only needs to handle a subset
- * of the available methods.
- *
- * @param <T> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public class NCSynonymDslBaseVisitor<T> extends AbstractParseTreeVisitor<T> implements NCSynonymDslVisitor<T> {
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitSynonym(NCSynonymDslParser.SynonymContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitAlias(NCSynonymDslParser.AliasContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitItem(NCSynonymDslParser.ItemContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitPredicate(NCSynonymDslParser.PredicateContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitLval(NCSynonymDslParser.LvalContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitLvalQual(NCSynonymDslParser.LvalQualContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitLvalPart(NCSynonymDslParser.LvalPartContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitRvalSingle(NCSynonymDslParser.RvalSingleContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitRval(NCSynonymDslParser.RvalContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitRvalList(NCSynonymDslParser.RvalListContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitMeta(NCSynonymDslParser.MetaContext ctx) { return visitChildren(ctx); }
-	/**
-	 * {@inheritDoc}
-	 *
-	 * <p>The default implementation returns the result of calling
-	 * {@link #visitChildren} on {@code ctx}.</p>
-	 */
-	@Override public T visitQstring(NCSynonymDslParser.QstringContext ctx) { return visitChildren(ctx); }
-}
\ No newline at end of file
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslLexer.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslLexer.java
index 106a6b6..97468fc 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslLexer.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslLexer.java
@@ -1,10 +1,13 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4\NCSynonymDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.probe.mgrs.model.antlr4;
 import org.antlr.v4.runtime.Lexer;
 import org.antlr.v4.runtime.CharStream;
+import org.antlr.v4.runtime.Token;
+import org.antlr.v4.runtime.TokenStream;
 import org.antlr.v4.runtime.*;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
+import org.antlr.v4.runtime.misc.*;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 public class NCSynonymDslLexer extends Lexer {
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslListener.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslListener.java
index cff963c..e33a5cb 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslListener.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslListener.java
@@ -1,4 +1,4 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4\NCSynonymDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.probe.mgrs.model.antlr4;
 import org.antlr.v4.runtime.tree.ParseTreeListener;
 
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslParser.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslParser.java
index 2767757..09bf741 100644
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslParser.java
+++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslParser.java
@@ -1,10 +1,13 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4 by ANTLR 4.8
+// Generated from C:/Users/Nikita Ivanov/Documents/GitHub/incubator-nlpcraft/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4\NCSynonymDsl.g4 by ANTLR 4.8
 package org.apache.nlpcraft.probe.mgrs.model.antlr4;
 import org.antlr.v4.runtime.atn.*;
 import org.antlr.v4.runtime.dfa.DFA;
 import org.antlr.v4.runtime.*;
+import org.antlr.v4.runtime.misc.*;
 import org.antlr.v4.runtime.tree.*;
 import java.util.List;
+import java.util.Iterator;
+import java.util.ArrayList;
 
 @SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast"})
 public class NCSynonymDslParser extends Parser {
@@ -119,11 +122,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitSynonym(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitSynonym(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final SynonymContext synonym() throws RecognitionException {
@@ -199,11 +197,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitAlias(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitAlias(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final AliasContext alias() throws RecognitionException {
@@ -258,11 +251,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitItem(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitItem(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final ItemContext item() throws RecognitionException {
@@ -389,11 +377,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitPredicate(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitPredicate(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final PredicateContext predicate() throws RecognitionException {
@@ -463,11 +446,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitLval(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitLval(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final LvalContext lval() throws RecognitionException {
@@ -579,11 +557,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitLvalQual(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitLvalQual(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final LvalQualContext lvalQual() throws RecognitionException {
@@ -656,11 +629,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitLvalPart(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitLvalPart(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final LvalPartContext lvalPart() throws RecognitionException {
@@ -706,11 +674,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitRvalSingle(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitRvalSingle(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final RvalSingleContext rvalSingle() throws RecognitionException {
@@ -812,11 +775,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitRval(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitRval(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final RvalContext rval() throws RecognitionException {
@@ -883,11 +841,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitRvalList(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitRvalList(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final RvalListContext rvalList() throws RecognitionException {
@@ -968,11 +921,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitMeta(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitMeta(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final MetaContext meta() throws RecognitionException {
@@ -1051,11 +999,6 @@
 		public void exitRule(ParseTreeListener listener) {
 			if ( listener instanceof NCSynonymDslListener ) ((NCSynonymDslListener)listener).exitQstring(this);
 		}
-		@Override
-		public <T> T accept(ParseTreeVisitor<? extends T> visitor) {
-			if ( visitor instanceof NCSynonymDslVisitor ) return ((NCSynonymDslVisitor<? extends T>)visitor).visitQstring(this);
-			else return visitor.visitChildren(this);
-		}
 	}
 
 	public final QstringContext qstring() throws RecognitionException {
diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslVisitor.java b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslVisitor.java
deleted file mode 100644
index 72bedbf..0000000
--- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDslVisitor.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Generated from /Users/xxx/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/antlr4/NCSynonymDsl.g4 by ANTLR 4.8
-package org.apache.nlpcraft.probe.mgrs.model.antlr4;
-import org.antlr.v4.runtime.tree.ParseTreeVisitor;
-
-/**
- * This interface defines a complete generic visitor for a parse tree produced
- * by {@link NCSynonymDslParser}.
- *
- * @param <T> The return type of the visit operation. Use {@link Void} for
- * operations with no return type.
- */
-public interface NCSynonymDslVisitor<T> extends ParseTreeVisitor<T> {
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#synonym}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitSynonym(NCSynonymDslParser.SynonymContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#alias}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitAlias(NCSynonymDslParser.AliasContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#item}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitItem(NCSynonymDslParser.ItemContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#predicate}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitPredicate(NCSynonymDslParser.PredicateContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#lval}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitLval(NCSynonymDslParser.LvalContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#lvalQual}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitLvalQual(NCSynonymDslParser.LvalQualContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#lvalPart}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitLvalPart(NCSynonymDslParser.LvalPartContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#rvalSingle}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitRvalSingle(NCSynonymDslParser.RvalSingleContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#rval}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitRval(NCSynonymDslParser.RvalContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#rvalList}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitRvalList(NCSynonymDslParser.RvalListContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#meta}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitMeta(NCSynonymDslParser.MetaContext ctx);
-	/**
-	 * Visit a parse tree produced by {@link NCSynonymDslParser#qstring}.
-	 * @param ctx the parse tree
-	 * @return the visitor result
-	 */
-	T visitQstring(NCSynonymDslParser.QstringContext ctx);
-}
\ No newline at end of file
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala
index 5b3804a..e98558c 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/NCIntentSampleSpec.scala
@@ -23,7 +23,7 @@
             override def getId: String = id
         }
 
-    @NCIntent("intent=intent1 term={id=='x1'}")
+    @NCIntent("intent=intent1 term~{id=='x1'}")
     @NCIntentSample(Array("x1", "x1"))
     @NCIntentSample(Array("unknown", "unknown"))
     private def onX1(ctx: NCIntentMatch): NCResult = "OK"
@@ -31,7 +31,7 @@
     @NCIntentSample(Array("x1", "x2", "x3"))
     @NCIntentSample(Array("x1", "x2"))
     @NCIntentSample(Array("x1"))
-    @NCIntent("intent=intent2 term={id=='x2'}")
+    @NCIntent("intent=intent2 term~{id=='x2'}")
     private def onX2(ctx: NCIntentMatch): NCResult = "OK"
 }
 
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala
index fb042c5..6c6869e 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/conversation/NCConversationTimeoutSpec.scala
@@ -54,7 +54,7 @@
             }
         )
 
-    @NCIntent("intent=req conv=true term={id == 'test'}")
+    @NCIntent("intent=req term~{id == 'test'}")
     def onMatch(ctx: NCIntentMatch): NCResult = {
         val conv = ctx.getContext.getConversation
 
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml
index d0a0eaa..ae76150 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/model/intent/dsl/dsl_test_model.yaml
@@ -52,4 +52,4 @@
       - "{fourth|4th} ^^[alias4](id == 'a3')^^"
 
 intents:
-  - "intent=i1 conv=false term(t1)={id == 'a' && ~txt == 'x'}"
+  - "intent=i1 term(t1)={id == 'a' && ~txt == 'x'}"
diff --git a/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala b/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala
index 5325077..a9ebe86 100644
--- a/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala
+++ b/nlpcraft/src/test/scala/org/apache/nlpcraft/models/stm/NCStmTestModel.scala
@@ -44,15 +44,15 @@
             override def getGroups: util.List[String] = groups.asJava
         }
 
-    @NCIntent("intent=sale term={id=='sale'}")
+    @NCIntent("intent=sale term~{id=='sale'}")
     private def onSale(ctx: NCIntentMatch): NCResult = "sale"
 
-    @NCIntent("intent=buy term={id=='buy'}")
+    @NCIntent("intent=buy term~{id=='buy'}")
     private def onBuy(ctx: NCIntentMatch): NCResult = "buy"
 
-    @NCIntent("intent=sale_best_employee term={id=='sale'} term={id=='best_employee'}")
+    @NCIntent("intent=sale_best_employee term~{id=='sale'} term~{id=='best_employee'}")
     private def onBestEmployeeSale(ctx: NCIntentMatch): NCResult = "sale_best_employee"
 
-    @NCIntent("intent=buy_best_employee term={id=='buy'} term={id=='best_employee'}")
+    @NCIntent("intent=buy_best_employee term~{id=='buy'} term~{id=='best_employee'}")
     private def onBestEmployeeBuy(ctx: NCIntentMatch): NCResult = "buy_best_employee"
 }
