(closes issue #12467)
authorSteve Murphy <murf@digium.com>
Mon, 21 Apr 2008 21:13:02 +0000 (21:13 +0000)
committerSteve Murphy <murf@digium.com>
Mon, 21 Apr 2008 21:13:02 +0000 (21:13 +0000)
Reported by: atis
Tested by: murf

This upgrade adds the ~~ (concatenation) string operator to expr2.
While not needed in normal runtime pbx operation, it is needed when
raw exprs are being syntax checked. This plays into future syntax-
unification plans. By permission of atis, this addition in trunk
and the reason of why things are as they are will suffice to close
this bug.

I also added a short note about the previous addition of "sip show sched"
to the CLI in CHANGES, which I discovered I forgot in a previous commit.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@114423 65c4cc65-6c06-0410-ace0-fbb531ad65f3

19 files changed:
CHANGES
doc/tex/ael.tex
doc/tex/channelvariables.tex
main/ast_expr2.c
main/ast_expr2.fl
main/ast_expr2.h
main/ast_expr2.y
main/ast_expr2f.c
pbx/ael/ael-test/ael-ntest24/extensions.ael [new file with mode: 0644]
pbx/ael/ael-test/ref.ael-ntest10
pbx/ael/ael-test/ref.ael-ntest24 [new file with mode: 0644]
pbx/ael/ael-test/ref.ael-test1
pbx/ael/ael-test/ref.ael-test18
pbx/ael/ael-test/ref.ael-test19
pbx/ael/ael-test/ref.ael-test3
pbx/ael/ael-test/ref.ael-test5
pbx/ael/ael-test/ref.ael-test8
pbx/ael/ael-test/ref.ael-vtest13
pbx/ael/ael-test/ref.ael-vtest17

diff --git a/CHANGES b/CHANGES
index db4253c..bd71975 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -167,6 +167,10 @@ CLI Changes
   * Added a CLI command, "devstate change", which allows you to set custom device
      states from the func_devstate module that provides the DEVICE_STATE() function
      and handling of the "Custom:" devices.
+  * New CLI command: "sip show sched" which shows all ast_sched entries for sip,
+    sorted into the different possible callbacks, with the number of entries
+    currently scheduled for each. Gives you a feel for how busy the sip channel
+    driver is.
 
 SIP changes
 -----------
@@ -500,6 +504,17 @@ AEL Changes
      first pass at conversion.
   * aelparse will now read extensions.conf to see if a referenced
      macro or context is there before issueing a warning.
+  * AEL parser sets a local channel variable ~~EXTEN~~, to 
+    preserve the value of ${EXTEN} thru switch statements.
+  * New operator in $[...] expressions: the ~~ operator serves
+    as a concatenation operator. AT THE MOMENT, it is really only
+    necessary and useful in AEL, especially in if() expressions.
+    Operation: ${a} ~~ ${b|  with force both a and b to strings, strip 
+    any enclosing double-quotes, and evaluate to the value of a
+    concatenated with the value of b.  For example if a is set to
+    "xyz"  and b has the value "abc", then ${a} ~~ ${b| would
+    evaluate to xyzabc .
+
 
 Call Features (res_features) Changes
 ------------------------------------
index 4d9fa24..b76088f 100644 (file)
@@ -38,7 +38,7 @@ AEL is really the merger of 4 different 'languages', or syntaxes:
       language, that AEL will compile into.
 \end{itemize}
 
-Any programmer of AEL should be familiar with it's syntax, of course,
+Any programmer of AEL should be familiar with its syntax, of course,
 as well as the Expression syntax, and the Variable syntax.
 
 
@@ -114,9 +114,9 @@ the Asterisk environment!
 
 \section{Getting Started}
 
-The AEL parser (pbx\_ael.so) is completely separate from the module
+The AEL parser (res\_ael.so) is completely separate from the module
 that parses extensions.conf (pbx\_config.so). To use AEL, the only
-thing that has to be done is the module pbx\_ael.so must be loaded by
+thing that has to be done is the module res\_ael.so must be loaded by
 Asterisk. This will be done automatically if using 'autoload=yes' in
 \path{/etc/asterisk/modules.conf}. When the module is loaded, it will look
 for 'extensions.ael' in \path{/etc/asterisk/}. extensions.conf and
index 9f1104c..ca0acbf 100644 (file)
@@ -302,6 +302,27 @@ with equal precedence are grouped within \{ \} symbols.
        will be the result of the "evaluation" of this
        expression.  expr3 will be the result otherwise. This
        operator has the lowest precedence.
+
+   \item \verb!expr1 ~~ expr2!
+
+       Concatenation operator. The two exprs are evaluated and
+       turned into strings, stripped of surrounding double quotes,
+        and are turned into a single string with no invtervening spaces. 
+        This operator is new to trunk after 1.6.0; it is not needed 
+       in existing extensions.conf code. Because of the way asterisk
+       evaluates ${ } and $[ ] constructs (recursively, bottom-
+       up), no $[] or ${} is ever present when the contents
+       of a ${} or $[] is evaluated. Thus, tokens are usually
+       already merged at evaluation time. But, in AEL, various
+       exprs are evaluated raw, and ${} and $[] are gathered
+       and treated as tokens. And in AEL, no two tokens can
+       sit side by side without an intervening operator.
+       So, in AEL, concatenation must be explicitly specified
+       in expressions. This new operator will play well into
+       future plans, where expressions ($[] constructs, and
+       variable references (${} constructs) are merged into a 
+       single grammar. 
+
 \end{itemize}
 
 Parentheses are used for grouping in the usual manner.
index 693a789..9d6bf6e 100644 (file)
@@ -1,7 +1,9 @@
-/* A Bison parser, made by GNU Bison 2.1a.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
@@ -37,7 +47,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.1a"
+#define YYBISON_VERSION "2.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
      TOK_DIV = 272,
      TOK_MULT = 273,
      TOK_COMPL = 274,
-     TOK_EQTILDE = 275,
-     TOK_COLON = 276,
-     TOK_LP = 277,
-     TOK_RP = 278,
-     TOKEN = 279
+     TOK_TILDETILDE = 275,
+     TOK_EQTILDE = 276,
+     TOK_COLON = 277,
+     TOK_LP = 278,
+     TOK_RP = 279,
+     TOKEN = 280
    };
 #endif
 /* Tokens.  */
 #define TOK_DIV 272
 #define TOK_MULT 273
 #define TOK_COMPL 274
-#define TOK_EQTILDE 275
-#define TOK_COLON 276
-#define TOK_LP 277
-#define TOK_RP 278
-#define TOKEN 279
+#define TOK_TILDETILDE 275
+#define TOK_EQTILDE 276
+#define TOK_COLON 277
+#define TOK_LP 278
+#define TOK_RP 279
+#define TOKEN 280
 
 
 
@@ -403,6 +415,7 @@ static struct val   *make_str __P((const char *));
 static struct val      *op_and __P((struct val *, struct val *));
 static struct val      *op_colon __P((struct val *, struct val *));
 static struct val      *op_eqtilde __P((struct val *, struct val *));
+static struct val      *op_tildetilde __P((struct val *, struct val *));
 static struct val      *op_div __P((struct val *, struct val *));
 static struct val      *op_eq __P((struct val *, struct val *));
 static struct val      *op_ge __P((struct val *, struct val *));
@@ -470,13 +483,13 @@ int               ast_yyerror(const char *,YYLTYPE *, struct parse_io *);
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 341 "ast_expr2.y"
+#line 342 "ast_expr2.y"
 {
        struct val *val;
        struct expr_node *arglist;
 }
-/* Line 198 of yacc.c.  */
-#line 480 "ast_expr2.c"
+/* Line 187 of yacc.c.  */
+#line 493 "ast_expr2.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -498,13 +511,13 @@ typedef struct YYLTYPE
 
 
 /* Copy the second part of user declarations.  */
-#line 346 "ast_expr2.y"
+#line 347 "ast_expr2.y"
 
 extern int             ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
 
 
-/* Line 221 of yacc.c.  */
-#line 508 "ast_expr2.c"
+/* Line 216 of yacc.c.  */
+#line 521 "ast_expr2.c"
 
 #ifdef short
 # undef short
@@ -634,8 +647,13 @@ YYID (i)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
 #  endif
-#  ifdef __cplusplus
-extern "C" {
+#  if (defined __cplusplus && ! defined _STDLIB_H \
+       && ! ((defined YYMALLOC || defined malloc) \
+            && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
+#   endif
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
@@ -651,9 +669,6 @@ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
-#  ifdef __cplusplus
-}
-#  endif
 # endif
 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
 
@@ -719,20 +734,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  11
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   150
+#define YYLAST   159
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  25
+#define YYNTOKENS  26
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  4
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  26
+#define YYNRULES  27
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  52
+#define YYNSTATES  54
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   279
+#define YYMAXUTOK   280
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -767,7 +782,8 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25
 };
 
 #if YYDEBUG
@@ -777,30 +793,30 @@ static const yytype_uint8 yyprhs[] =
 {
        0,     0,     3,     5,     6,     8,    12,    17,    19,    23,
       27,    31,    35,    39,    43,    47,    51,    55,    59,    63,
-      66,    69,    73,    77,    81,    85,    89
+      66,    69,    73,    77,    81,    85,    89,    95
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int8 yyrhs[] =
 {
-      26,     0,    -1,    28,    -1,    -1,    28,    -1,    27,     3,
-      28,    -1,    24,    22,    27,    23,    -1,    24,    -1,    22,
-      28,    23,    -1,    28,     6,    28,    -1,    28,     7,    28,
-      -1,    28,    13,    28,    -1,    28,    12,    28,    -1,    28,
-      11,    28,    -1,    28,    10,    28,    -1,    28,     9,    28,
-      -1,    28,     8,    28,    -1,    28,    15,    28,    -1,    28,
-      14,    28,    -1,    14,    28,    -1,    19,    28,    -1,    28,
-      18,    28,    -1,    28,    17,    28,    -1,    28,    16,    28,
-      -1,    28,    21,    28,    -1,    28,    20,    28,    -1,    28,
-       5,    28,     4,    28,    -1
+      27,     0,    -1,    29,    -1,    -1,    29,    -1,    28,     3,
+      29,    -1,    25,    23,    28,    24,    -1,    25,    -1,    23,
+      29,    24,    -1,    29,     6,    29,    -1,    29,     7,    29,
+      -1,    29,    13,    29,    -1,    29,    12,    29,    -1,    29,
+      11,    29,    -1,    29,    10,    29,    -1,    29,     9,    29,
+      -1,    29,     8,    29,    -1,    29,    15,    29,    -1,    29,
+      14,    29,    -1,    14,    29,    -1,    19,    29,    -1,    29,
+      18,    29,    -1,    29,    17,    29,    -1,    29,    16,    29,
+      -1,    29,    22,    29,    -1,    29,    21,    29,    -1,    29,
+       5,    29,     4,    29,    -1,    29,    20,    29,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   372,   372,   380,   387,   388,   397,   403,   404,   408,
-     412,   416,   420,   424,   428,   432,   436,   440,   444,   448,
-     452,   456,   460,   464,   468,   472,   476
+       0,   371,   371,   379,   386,   387,   396,   402,   403,   407,
+     411,   415,   419,   423,   427,   431,   435,   439,   443,   447,
+     451,   455,   459,   463,   467,   471,   475,   480
 };
 #endif
 
@@ -812,8 +828,8 @@ static const char *const yytname[] =
   "$end", "error", "$undefined", "TOK_COMMA", "TOK_COLONCOLON",
   "TOK_COND", "TOK_OR", "TOK_AND", "TOK_NE", "TOK_LE", "TOK_GE", "TOK_LT",
   "TOK_GT", "TOK_EQ", "TOK_MINUS", "TOK_PLUS", "TOK_MOD", "TOK_DIV",
-  "TOK_MULT", "TOK_COMPL", "TOK_EQTILDE", "TOK_COLON", "TOK_LP", "TOK_RP",
-  "TOKEN", "$accept", "start", "arglist", "expr", 0
+  "TOK_MULT", "TOK_COMPL", "TOK_TILDETILDE", "TOK_EQTILDE", "TOK_COLON",
+  "TOK_LP", "TOK_RP", "TOKEN", "$accept", "start", "arglist", "expr", 0
 };
 #endif
 
@@ -824,16 +840,16 @@ static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
-     275,   276,   277,   278,   279
+     275,   276,   277,   278,   279,   280
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    25,    26,    26,    27,    27,    28,    28,    28,    28,
-      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
-      28,    28,    28,    28,    28,    28,    28
+       0,    26,    27,    27,    28,    28,    29,    29,    29,    29,
+      29,    29,    29,    29,    29,    29,    29,    29,    29,    29,
+      29,    29,    29,    29,    29,    29,    29,    29
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -841,7 +857,7 @@ static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     0,     1,     3,     4,     1,     3,     3,
        3,     3,     3,     3,     3,     3,     3,     3,     3,     2,
-       2,     3,     3,     3,     3,     3,     5
+       2,     3,     3,     3,     3,     3,     5,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -851,16 +867,16 @@ static const yytype_uint8 yydefact[] =
 {
        3,     0,     0,     0,     7,     0,     2,    19,    20,     0,
        0,     1,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     8,     0,
-       4,     0,     9,    10,    16,    15,    14,    13,    12,    11,
-      18,    17,    23,    22,    21,    25,    24,     0,     6,     0,
-       5,    26
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     8,
+       0,     4,     0,     9,    10,    16,    15,    14,    13,    12,
+      11,    18,    17,    23,    22,    21,    27,    25,    24,     0,
+       6,     0,     5,    26
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int8 yydefgoto[] =
 {
-      -1,     5,    29,     6
+      -1,     5,    30,     6
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -868,12 +884,12 @@ static const yytype_int8 yydefgoto[] =
 #define YYPACT_NINF -18
 static const yytype_int16 yypact[] =
 {
-     112,   112,   112,   112,   -16,     5,    62,   -17,   -17,    24,
-     112,   -18,   112,   112,   112,   112,   112,   112,   112,   112,
-     112,   112,   112,   112,   112,   112,   112,   112,   -18,     4,
-      62,    45,    93,   107,   123,   123,   123,   123,   123,   123,
-     129,   129,   -17,   -17,   -17,   -18,   -18,   112,   -18,   112,
-      62,    78
+     118,   118,   118,   118,   -15,     6,    65,   -17,   -17,    25,
+     118,   -18,   118,   118,   118,   118,   118,   118,   118,   118,
+     118,   118,   118,   118,   118,   118,   118,   118,   118,   -18,
+       4,    65,    47,    98,   113,   130,   130,   130,   130,   130,
+     130,   137,   137,   -17,   -17,   -17,   -18,   -18,   -18,   118,
+     -18,   118,    65,    82
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -889,54 +905,54 @@ static const yytype_int8 yypgoto[] =
 #define YYTABLE_NINF -1
 static const yytype_uint8 yytable[] =
 {
-       7,     8,     9,    26,    27,    11,    10,    47,     0,    30,
-       0,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    43,    44,    45,    46,    48,     0,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,     0,    26,    27,    50,    28,    51,    49,
+       7,     8,     9,    26,    27,    28,    11,    49,    10,    31,
+       0,    32,    33,    34,    35,    36,    37,    38,    39,    40,
+      41,    42,    43,    44,    45,    46,    47,    48,    50,     0,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,    26,    27,    28,    52,    29,
+      53,    51,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,    26,    27,    28,
       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,     0,    26,    27,    12,    13,    14,
+      22,    23,    24,    25,     0,    26,    27,    28,    13,    14,
       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,     0,    26,    27,    13,    14,    15,    16,    17,    18,
+      25,     0,    26,    27,    28,    14,    15,    16,    17,    18,
       19,    20,    21,    22,    23,    24,    25,     0,    26,    27,
-      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,     0,    26,    27,    15,    16,    17,    18,    19,
-      20,    21,    22,    23,    24,    25,     1,    26,    27,     0,
-       0,     2,     0,     0,     3,     0,     4,    21,    22,    23,
-      24,    25,     0,    26,    27,    23,    24,    25,     0,    26,
-      27
+      28,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     1,    26,    27,    28,     0,     2,     0,     0,
+       0,     3,     0,     4,    21,    22,    23,    24,    25,     0,
+      26,    27,    28,    23,    24,    25,     0,    26,    27,    28
 };
 
 static const yytype_int8 yycheck[] =
 {
-       1,     2,     3,    20,    21,     0,    22,     3,    -1,    10,
+       1,     2,     3,    20,    21,    22,     0,     3,    23,    10,
       -1,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    23,    -1,     5,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    17,    18,    -1,    20,    21,    47,    23,    49,     4,
+      21,    22,    23,    24,    25,    26,    27,    28,    24,    -1,
        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,    17,    18,    -1,    20,    21,     5,     6,     7,
+      15,    16,    17,    18,    -1,    20,    21,    22,    49,    24,
+      51,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    -1,    20,    21,    22,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    -1,    20,    21,    22,     6,     7,
        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
-      18,    -1,    20,    21,     6,     7,     8,     9,    10,    11,
+      18,    -1,    20,    21,    22,     7,     8,     9,    10,    11,
       12,    13,    14,    15,    16,    17,    18,    -1,    20,    21,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-      17,    18,    -1,    20,    21,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    14,    20,    21,    -1,
-      -1,    19,    -1,    -1,    22,    -1,    24,    14,    15,    16,
-      17,    18,    -1,    20,    21,    16,    17,    18,    -1,    20,
-      21
+      22,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    14,    20,    21,    22,    -1,    19,    -1,    -1,
+      -1,    23,    -1,    25,    14,    15,    16,    17,    18,    -1,
+      20,    21,    22,    16,    17,    18,    -1,    20,    21,    22
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    14,    19,    22,    24,    26,    28,    28,    28,    28,
-      22,     0,     5,     6,     7,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,    17,    18,    20,    21,    23,    27,
-      28,    28,    28,    28,    28,    28,    28,    28,    28,    28,
-      28,    28,    28,    28,    28,    28,    28,     3,    23,     4,
-      28,    28
+       0,    14,    19,    23,    25,    27,    29,    29,    29,    29,
+      23,     0,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    20,    21,    22,    24,
+      28,    29,    29,    29,    29,    29,    29,    29,    29,    29,
+      29,    29,    29,    29,    29,    29,    29,    29,    29,     3,
+      24,     4,    29,    29
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1063,14 +1079,14 @@ do {                                                                      \
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp)
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
 #else
 static void
 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
     FILE *yyoutput;
     int yytype;
-    const YYSTYPE * const yyvaluep;
-    const YYLTYPE * const yylocationp;
+    YYSTYPE const * const yyvaluep;
+    YYLTYPE const * const yylocationp;
 #endif
 {
   if (!yyvaluep)
@@ -1097,14 +1113,14 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, const YYSTYPE * const yyvaluep, const YYLTYPE * const yylocationp)
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
 #else
 static void
 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp)
     FILE *yyoutput;
     int yytype;
-    const YYSTYPE * const yyvaluep;
-    const YYLTYPE * const yylocationp;
+    YYSTYPE const * const yyvaluep;
+    YYLTYPE const * const yylocationp;
 #endif
 {
   if (yytype < YYNTOKENS)
@@ -1157,8 +1173,7 @@ static void
 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
 #else
 static void
-yy_reduce_print (yyvsp, yylsp, yyrule
-                  )
+yy_reduce_print (yyvsp, yylsp, yyrule)
     YYSTYPE *yyvsp;
     YYLTYPE *yylsp;
     int yyrule;
@@ -1281,7 +1296,7 @@ yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      size_t yyn = 0;
+      YYSIZE_T yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
@@ -1328,7 +1343,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
 {
   int yyn = yypact[yystate];
 
-  if (! (YYPACT_NINF < yyn && yyn < YYLAST))
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
     return 0;
   else
     {
@@ -1366,7 +1381,7 @@ yysyntax_error (char *yyresult, int yystate, int yychar)
       int yyxbegin = yyn < 0 ? -yyn : 0;
 
       /* Stay within bounds of both yycheck and yytname.  */
-      int yychecklim = YYLAST - yyn;
+      int yychecklim = YYLAST - yyn + 1;
       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
       int yycount = 1;
 
@@ -1454,114 +1469,119 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
   switch (yytype)
     {
       case 4: /* "TOK_COLONCOLON" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1460 "ast_expr2.c"
+#line 1475 "ast_expr2.c"
        break;
       case 5: /* "TOK_COND" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1465 "ast_expr2.c"
+#line 1480 "ast_expr2.c"
        break;
       case 6: /* "TOK_OR" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1470 "ast_expr2.c"
+#line 1485 "ast_expr2.c"
        break;
       case 7: /* "TOK_AND" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1475 "ast_expr2.c"
+#line 1490 "ast_expr2.c"
        break;
       case 8: /* "TOK_NE" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1480 "ast_expr2.c"
+#line 1495 "ast_expr2.c"
        break;
       case 9: /* "TOK_LE" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1485 "ast_expr2.c"
+#line 1500 "ast_expr2.c"
        break;
       case 10: /* "TOK_GE" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1490 "ast_expr2.c"
+#line 1505 "ast_expr2.c"
        break;
       case 11: /* "TOK_LT" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1495 "ast_expr2.c"
+#line 1510 "ast_expr2.c"
        break;
       case 12: /* "TOK_GT" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1500 "ast_expr2.c"
+#line 1515 "ast_expr2.c"
        break;
       case 13: /* "TOK_EQ" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1505 "ast_expr2.c"
+#line 1520 "ast_expr2.c"
        break;
       case 14: /* "TOK_MINUS" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1510 "ast_expr2.c"
+#line 1525 "ast_expr2.c"
        break;
       case 15: /* "TOK_PLUS" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1515 "ast_expr2.c"
+#line 1530 "ast_expr2.c"
        break;
       case 16: /* "TOK_MOD" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1520 "ast_expr2.c"
+#line 1535 "ast_expr2.c"
        break;
       case 17: /* "TOK_DIV" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1525 "ast_expr2.c"
+#line 1540 "ast_expr2.c"
        break;
       case 18: /* "TOK_MULT" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1530 "ast_expr2.c"
+#line 1545 "ast_expr2.c"
        break;
       case 19: /* "TOK_COMPL" */
-#line 366 "ast_expr2.y"
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1535 "ast_expr2.c"
+#line 1550 "ast_expr2.c"
        break;
-      case 20: /* "TOK_EQTILDE" */
-#line 366 "ast_expr2.y"
+      case 20: /* "TOK_TILDETILDE" */
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1540 "ast_expr2.c"
+#line 1555 "ast_expr2.c"
        break;
-      case 21: /* "TOK_COLON" */
-#line 366 "ast_expr2.y"
+      case 21: /* "TOK_EQTILDE" */
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1545 "ast_expr2.c"
+#line 1560 "ast_expr2.c"
        break;
-      case 22: /* "TOK_LP" */
-#line 366 "ast_expr2.y"
+      case 22: /* "TOK_COLON" */
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1550 "ast_expr2.c"
+#line 1565 "ast_expr2.c"
        break;
-      case 23: /* "TOK_RP" */
-#line 366 "ast_expr2.y"
+      case 23: /* "TOK_LP" */
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1555 "ast_expr2.c"
+#line 1570 "ast_expr2.c"
        break;
-      case 24: /* "TOKEN" */
-#line 366 "ast_expr2.y"
+      case 24: /* "TOK_RP" */
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1560 "ast_expr2.c"
+#line 1575 "ast_expr2.c"
        break;
-      case 28: /* "expr" */
-#line 366 "ast_expr2.y"
+      case 25: /* "TOKEN" */
+#line 365 "ast_expr2.y"
        {  free_value((yyvaluep->val)); };
-#line 1565 "ast_expr2.c"
+#line 1580 "ast_expr2.c"
+       break;
+      case 29: /* "expr" */
+#line 365 "ast_expr2.y"
+       {  free_value((yyvaluep->val)); };
+#line 1585 "ast_expr2.c"
        break;
 
       default:
@@ -1884,7 +1904,7 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 372 "ast_expr2.y"
+#line 371 "ast_expr2.y"
     { ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
               ((struct parse_io *)parseio)->val->type = (yyvsp[(1) - (1)].val)->type;
               if( (yyvsp[(1) - (1)].val)->type == AST_EXPR_number )
@@ -1896,7 +1916,7 @@ yyreduce:
     break;
 
   case 3:
-#line 380 "ast_expr2.y"
+#line 379 "ast_expr2.y"
     {/* nothing */ ((struct parse_io *)parseio)->val = (struct val *)calloc(sizeof(struct val),1);
               ((struct parse_io *)parseio)->val->type = AST_EXPR_string;
                          ((struct parse_io *)parseio)->val->u.s = strdup(""); 
@@ -1904,12 +1924,12 @@ yyreduce:
     break;
 
   case 4:
-#line 387 "ast_expr2.y"
+#line 386 "ast_expr2.y"
     { (yyval.arglist) = alloc_expr_node(AST_EXPR_NODE_VAL); (yyval.arglist)->val = (yyvsp[(1) - (1)].val);;}
     break;
 
   case 5:
-#line 388 "ast_expr2.y"
+#line 387 "ast_expr2.y"
     {struct expr_node *x = alloc_expr_node(AST_EXPR_NODE_VAL);
                                  struct expr_node *t;
                                                                 DESTROY((yyvsp[(2) - (3)].val));
@@ -1919,7 +1939,7 @@ yyreduce:
     break;
 
   case 6:
-#line 397 "ast_expr2.y"
+#line 396 "ast_expr2.y"
     { (yyval.val) = op_func((yyvsp[(1) - (4)].val),(yyvsp[(3) - (4)].arglist), ((struct parse_io *)parseio)->chan);
                                            DESTROY((yyvsp[(2) - (4)].val));
                                                                        DESTROY((yyvsp[(4) - (4)].val));
@@ -1929,12 +1949,12 @@ yyreduce:
     break;
 
   case 7:
-#line 403 "ast_expr2.y"
+#line 402 "ast_expr2.y"
     {(yyval.val) = (yyvsp[(1) - (1)].val);;}
     break;
 
   case 8:
-#line 404 "ast_expr2.y"
+#line 403 "ast_expr2.y"
     { (yyval.val) = (yyvsp[(2) - (3)].val);
                               (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
                                                   (yyloc).first_line=0; (yyloc).last_line=0;
@@ -1942,7 +1962,7 @@ yyreduce:
     break;
 
   case 9:
-#line 408 "ast_expr2.y"
+#line 407 "ast_expr2.y"
     { (yyval.val) = op_or ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
                                                DESTROY((yyvsp[(2) - (3)].val));        
                          (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -1950,7 +1970,7 @@ yyreduce:
     break;
 
   case 10:
-#line 412 "ast_expr2.y"
+#line 411 "ast_expr2.y"
     { (yyval.val) = op_and ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                              (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -1958,7 +1978,7 @@ yyreduce:
     break;
 
   case 11:
-#line 416 "ast_expr2.y"
+#line 415 "ast_expr2.y"
     { (yyval.val) = op_eq ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
                                                DESTROY((yyvsp[(2) - (3)].val));        
                             (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -1966,7 +1986,7 @@ yyreduce:
     break;
 
   case 12:
-#line 420 "ast_expr2.y"
+#line 419 "ast_expr2.y"
     { (yyval.val) = op_gt ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val));
                                                DESTROY((yyvsp[(2) - (3)].val));        
                          (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column;
@@ -1974,7 +1994,7 @@ yyreduce:
     break;
 
   case 13:
-#line 424 "ast_expr2.y"
+#line 423 "ast_expr2.y"
     { (yyval.val) = op_lt ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                             (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -1982,7 +2002,7 @@ yyreduce:
     break;
 
   case 14:
-#line 428 "ast_expr2.y"
+#line 427 "ast_expr2.y"
     { (yyval.val) = op_ge ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                              (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -1990,7 +2010,7 @@ yyreduce:
     break;
 
   case 15:
-#line 432 "ast_expr2.y"
+#line 431 "ast_expr2.y"
     { (yyval.val) = op_le ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                              (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -1998,7 +2018,7 @@ yyreduce:
     break;
 
   case 16:
-#line 436 "ast_expr2.y"
+#line 435 "ast_expr2.y"
     { (yyval.val) = op_ne ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                              (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2006,7 +2026,7 @@ yyreduce:
     break;
 
   case 17:
-#line 440 "ast_expr2.y"
+#line 439 "ast_expr2.y"
     { (yyval.val) = op_plus ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                               (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2014,7 +2034,7 @@ yyreduce:
     break;
 
   case 18:
-#line 444 "ast_expr2.y"
+#line 443 "ast_expr2.y"
     { (yyval.val) = op_minus ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                                (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2022,7 +2042,7 @@ yyreduce:
     break;
 
   case 19:
-#line 448 "ast_expr2.y"
+#line 447 "ast_expr2.y"
     { (yyval.val) = op_negate ((yyvsp[(2) - (2)].val)); 
                                                DESTROY((yyvsp[(1) - (2)].val));        
                                (yyloc).first_column = (yylsp[(1) - (2)]).first_column; (yyloc).last_column = (yylsp[(2) - (2)]).last_column; 
@@ -2030,7 +2050,7 @@ yyreduce:
     break;
 
   case 20:
-#line 452 "ast_expr2.y"
+#line 451 "ast_expr2.y"
     { (yyval.val) = op_compl ((yyvsp[(2) - (2)].val)); 
                                                DESTROY((yyvsp[(1) - (2)].val));        
                                (yyloc).first_column = (yylsp[(1) - (2)]).first_column; (yyloc).last_column = (yylsp[(2) - (2)]).last_column; 
@@ -2038,7 +2058,7 @@ yyreduce:
     break;
 
   case 21:
-#line 456 "ast_expr2.y"
+#line 455 "ast_expr2.y"
     { (yyval.val) = op_times ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                               (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2046,7 +2066,7 @@ yyreduce:
     break;
 
   case 22:
-#line 460 "ast_expr2.y"
+#line 459 "ast_expr2.y"
     { (yyval.val) = op_div ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                              (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2054,7 +2074,7 @@ yyreduce:
     break;
 
   case 23:
-#line 464 "ast_expr2.y"
+#line 463 "ast_expr2.y"
     { (yyval.val) = op_rem ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                              (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2062,7 +2082,7 @@ yyreduce:
     break;
 
   case 24:
-#line 468 "ast_expr2.y"
+#line 467 "ast_expr2.y"
     { (yyval.val) = op_colon ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                                (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2070,7 +2090,7 @@ yyreduce:
     break;
 
   case 25:
-#line 472 "ast_expr2.y"
+#line 471 "ast_expr2.y"
     { (yyval.val) = op_eqtilde ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
                                                DESTROY((yyvsp[(2) - (3)].val));        
                                (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
@@ -2078,7 +2098,7 @@ yyreduce:
     break;
 
   case 26:
-#line 476 "ast_expr2.y"
+#line 475 "ast_expr2.y"
     { (yyval.val) = op_cond ((yyvsp[(1) - (5)].val), (yyvsp[(3) - (5)].val), (yyvsp[(5) - (5)].val)); 
                                                DESTROY((yyvsp[(2) - (5)].val));        
                                                DESTROY((yyvsp[(4) - (5)].val));        
@@ -2086,9 +2106,17 @@ yyreduce:
                                                        (yyloc).first_line=0; (yyloc).last_line=0;;}
     break;
 
+  case 27:
+#line 480 "ast_expr2.y"
+    { (yyval.val) = op_tildetilde ((yyvsp[(1) - (3)].val), (yyvsp[(3) - (3)].val)); 
+                                               DESTROY((yyvsp[(2) - (3)].val));        
+                               (yyloc).first_column = (yylsp[(1) - (3)]).first_column; (yyloc).last_column = (yylsp[(3) - (3)]).last_column; 
+                                                       (yyloc).first_line=0; (yyloc).last_line=0;;}
+    break;
+
 
-/* Line 1270 of yacc.c.  */
-#line 2092 "ast_expr2.c"
+/* Line 1267 of yacc.c.  */
+#line 2120 "ast_expr2.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -2303,11 +2331,12 @@ yyreturn:
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  return yyresult;
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
 
 
-#line 483 "ast_expr2.y"
+#line 486 "ast_expr2.y"
 
 
 static struct expr_node *alloc_expr_node(enum node_type nt)
@@ -3446,3 +3475,29 @@ op_eqtilde (struct val *a, struct val *b)
        return v;
 }
 
+static struct val *  /* this is a string concat operator */
+op_tildetilde (struct val *a, struct val *b)
+{
+       struct val *v;
+       char *vs;
+
+       /* coerce to both arguments to strings */
+       to_string(a);
+       to_string(b);
+       /* strip double quotes from both -- */
+       strip_quotes(a);
+       strip_quotes(b);
+       
+       vs = malloc(strlen(a->u.s)+strlen(b->u.s)+1);
+       strcpy(vs,a->u.s);
+       strcat(vs,b->u.s);
+
+       v = make_str(vs);
+
+       /* free arguments */
+       free_value(a);
+       free_value(b);
+
+       return v;
+}
+
index 723eebf..c926913 100644 (file)
@@ -133,6 +133,7 @@ static char *expr2_token_subst(const char *mess);
 \&\&   { SET_COLUMNS; SET_STRING; return TOK_AND;}
 \=\=   { SET_COLUMNS; SET_STRING; return TOK_EQ;}
 \=~    { SET_COLUMNS; SET_STRING; return TOK_EQTILDE;}
+\~~    { SET_COLUMNS; SET_STRING; return TOK_TILDETILDE;}
 \>     { SET_COLUMNS; SET_STRING; return TOK_GT;}
 \<     { SET_COLUMNS; SET_STRING; return TOK_LT;}
 \>\=   { SET_COLUMNS; SET_STRING; return TOK_GE;}
@@ -173,7 +174,7 @@ static char *expr2_token_subst(const char *mess);
                return TOKEN;
        }
 
-([a-zA-Z0-9\.';\\_^$#@]|[\x80-\xff])+  {
+([a-zA-Z0-9\.';\\_^#@]|[\x80-\xff]|($[^{]))+   {
                SET_COLUMNS;
                SET_STRING;
                return TOKEN;
index cd20771..d2a560a 100644 (file)
@@ -1,7 +1,9 @@
-/* A Bison parser, made by GNU Bison 2.1a.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
      TOK_DIV = 272,
      TOK_MULT = 273,
      TOK_COMPL = 274,
-     TOK_EQTILDE = 275,
-     TOK_COLON = 276,
-     TOK_LP = 277,
-     TOK_RP = 278,
-     TOKEN = 279
+     TOK_TILDETILDE = 275,
+     TOK_EQTILDE = 276,
+     TOK_COLON = 277,
+     TOK_LP = 278,
+     TOK_RP = 279,
+     TOKEN = 280
    };
 #endif
 /* Tokens.  */
 #define TOK_DIV 272
 #define TOK_MULT 273
 #define TOK_COMPL 274
-#define TOK_EQTILDE 275
-#define TOK_COLON 276
-#define TOK_LP 277
-#define TOK_RP 278
-#define TOKEN 279
+#define TOK_TILDETILDE 275
+#define TOK_EQTILDE 276
+#define TOK_COLON 277
+#define TOK_LP 278
+#define TOK_RP 279
+#define TOKEN 280
 
 
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 341 "ast_expr2.y"
+#line 342 "ast_expr2.y"
 {
        struct val *val;
        struct expr_node *arglist;
 }
-/* Line 1536 of yacc.c.  */
-#line 92 "ast_expr2.h"
+/* Line 1489 of yacc.c.  */
+#line 104 "ast_expr2.h"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -111,5 +123,3 @@ typedef struct YYLTYPE
 #endif
 
 
-
-
index 7eba6d1..76fe160 100644 (file)
@@ -284,6 +284,7 @@ static struct val   *make_str __P((const char *));
 static struct val      *op_and __P((struct val *, struct val *));
 static struct val      *op_colon __P((struct val *, struct val *));
 static struct val      *op_eqtilde __P((struct val *, struct val *));
+static struct val      *op_tildetilde __P((struct val *, struct val *));
 static struct val      *op_div __P((struct val *, struct val *));
 static struct val      *op_eq __P((struct val *, struct val *));
 static struct val      *op_ge __P((struct val *, struct val *));
@@ -354,18 +355,16 @@ extern int                ast_yylex __P((YYSTYPE *, YYLTYPE *, yyscan_t));
 %left <val> TOK_PLUS TOK_MINUS
 %left <val> TOK_MULT TOK_DIV TOK_MOD 
 %right <val> TOK_COMPL
-%left <val> TOK_COLON TOK_EQTILDE
+%left <val> TOK_COLON TOK_EQTILDE TOK_TILDETILDE
 %left <val> TOK_RP TOK_LP
 
-
 %token <val> TOKEN
 %type <arglist> arglist
 %type <val> start expr
 
-
 %destructor {  free_value($$); }  expr TOKEN TOK_COND TOK_COLONCOLON TOK_OR TOK_AND TOK_EQ 
                                  TOK_GT TOK_LT TOK_GE TOK_LE TOK_NE TOK_PLUS TOK_MINUS TOK_MULT TOK_DIV TOK_MOD TOK_COMPL TOK_COLON TOK_EQTILDE 
-                                 TOK_RP TOK_LP
+                                 TOK_RP TOK_LP TOK_TILDETILDE
 
 %%
 
@@ -478,6 +477,10 @@ expr:
                                                DESTROY($4);    
                                @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
                                                        @$.first_line=0; @$.last_line=0;}
+       | expr TOK_TILDETILDE expr { $$ = op_tildetilde ($1, $3); 
+                                               DESTROY($2);    
+                               @$.first_column = @1.first_column; @$.last_column = @3.last_column; 
+                                                       @$.first_line=0; @$.last_line=0;}
        ;
 
 %%
@@ -1617,3 +1620,29 @@ op_eqtilde (struct val *a, struct val *b)
 
        return v;
 }
+
+static struct val *  /* this is a string concat operator */
+op_tildetilde (struct val *a, struct val *b)
+{
+       struct val *v;
+       char *vs;
+
+       /* coerce to both arguments to strings */
+       to_string(a);
+       to_string(b);
+       /* strip double quotes from both -- */
+       strip_quotes(a);
+       strip_quotes(b);
+       
+       vs = malloc(strlen(a->u.s)+strlen(b->u.s)+1);
+       strcpy(vs,a->u.s);
+       strcat(vs,b->u.s);
+
+       v = make_str(vs);
+
+       /* free arguments */
+       free_value(a);
+       free_value(b);
+
+       return v;
+}
index 19aa0f6..8d88ec0 100644 (file)
@@ -339,6 +339,1905 @@ typedef unsigned char YY_CHAR;
 typedef int yy_state_type;
 
 #define yytext_ptr yytext_r
+static yyconst flex_int16_t yy_nxt[][256] =
+    {
+    {
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0
+    },
+
+    {
+        7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
+       10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
+
+       17,   18,   19,   20,   21,   22,   13,   23,   24,   24,
+       24,   24,   24,   24,   24,   24,   24,   24,   25,   13,
+       26,   27,   28,   29,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,    8,   30,    8,   31,    8,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13
+    },
+
+    {
+        7,    8,    8,    8,    8,    8,    8,    8,    8,    9,
+       10,    8,    8,    9,    8,    8,    8,    8,    8,    8,
+        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
+        8,    8,    9,   11,   12,   13,   14,   15,   16,   13,
+       17,   18,   19,   20,   21,   22,   13,   23,   24,   24,
+       24,   24,   24,   24,   24,   24,   24,   24,   25,   13,
+       26,   27,   28,   29,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,    8,   13,    8,   13,   13,    8,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,    8,   30,    8,   31,    8,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
+       13,   13,   13,   13,   13,   13
+    },
+
+    {
+        7,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+
+       32,   32,   32,   33,   32,   34,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32
+    },
+
+    {
+        7,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   33,   32,   34,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32,   32,   32
+
+    },
+
+    {
+        7,   35,   35,   35,   35,   35,   35,   35,   35,   36,
+       36,   35,   35,   36,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   36,   36,   35,   35,   37,   36,   36,   35,
+       36,   36,   36,   36,   35,   36,   35,   36,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   36,   35,
+       36,   36,   36,   36,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   36,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35
+    },
+
+    {
+        7,   35,   35,   35,   35,   35,   35,   35,   35,   36,
+       36,   35,   35,   36,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   36,   36,   35,   35,   37,   36,   36,   35,
+
+       36,   36,   36,   36,   35,   36,   35,   36,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   36,   35,
+       36,   36,   36,   36,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   36,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35
+    },
+
+    {
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,   -7,
+       -7,   -7,   -7,   -7,   -7,   -7
+    },
+
+    {
+        7,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,   -8,
+       -8,   -8,   -8,   -8,   -8,   -8
+    },
+
+    {
+        7,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
+       -9,   -9,   -9,   -9,   -9,   -9
+
+    },
+
+    {
+        7,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
+      -10,  -10,  -10,  -10,  -10,  -10
+    },
+
+    {
+        7,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,   38,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+
+      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
+      -11,  -11,  -11,  -11,  -11,  -11
+    },
+
+    {
+        7,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   40,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39
+    },
+
+    {
+        7,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
+      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
+
+      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
+      -13,  -13,  -13,  -13,  -13,   41,   42,  -13,  -13,   41,
+      -13,  -13,  -13,  -13,  -13,  -13,   41,  -13,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,  -13,   41,
+      -13,  -13,  -13,  -13,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,  -13,   41,  -13,   41,   41,  -13,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,  -13,  -13,  -13,  -13,  -13,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+    },
+
+    {
+        7,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   43,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+
+    },
+
+    {
+        7,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,  -15,
+      -15,  -15,  -15,  -15,  -15,  -15
+    },
+
+    {
+        7,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,   44,  -16,
+
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+
+      -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,  -16,
+      -16,  -16,  -16,  -16,  -16,  -16
+    },
+
+    {
+        7,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
+      -17,  -17,  -17,  -17,  -17,  -17
+    },
+
+    {
+        7,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
+      -18,  -18,  -18,  -18,  -18,  -18
+    },
+
+    {
+        7,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
+      -19,  -19,  -19,  -19,  -19,  -19
+
+    },
+
+    {
+        7,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
+      -20,  -20,  -20,  -20,  -20,  -20
+    },
+
+    {
+        7,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+
+      -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,  -21,
+      -21,  -21,  -21,  -21,  -21,  -21
+    },
+
+    {
+        7,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
+      -22,  -22,  -22,  -22,  -22,  -22
+    },
+
+    {
+        7,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
+      -23,  -23,  -23,  -23,  -23,  -23
+    },
+
+    {
+        7,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
+      -24,  -24,  -24,  -24,  -24,   41,   42,  -24,  -24,   41,
+      -24,  -24,  -24,  -24,  -24,  -24,   45,  -24,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,  -24,   41,
+
+      -24,  -24,  -24,  -24,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,  -24,   41,  -24,   41,   41,  -24,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,  -24,  -24,  -24,  -24,  -24,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+
+    },
+
+    {
+        7,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,   47,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
+      -25,  -25,  -25,  -25,  -25,  -25
+    },
+
+    {
+        7,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,   48,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+
+      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
+      -26,  -26,  -26,  -26,  -26,  -26
+    },
+
+    {
+        7,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,   49,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,   50,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,  -27,
+      -27,  -27,  -27,  -27,  -27,  -27
+    },
+
+    {
+        7,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,   51,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,  -28,
+      -28,  -28,  -28,  -28,  -28,  -28
+    },
+
+    {
+        7,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,  -29,
+      -29,  -29,  -29,  -29,  -29,  -29
+
+    },
+
+    {
+        7,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,   52,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,  -30,
+      -30,  -30,  -30,  -30,  -30,  -30
+    },
+
+    {
+        7,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,   53,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+
+      -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,  -31,
+      -31,  -31,  -31,  -31,  -31,  -31
+    },
+
+    {
+        7,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   55,   54,   56,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54
+    },
+
+    {
+        7,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,  -33,
+      -33,  -33,  -33,  -33,  -33,  -33
+    },
+
+    {
+        7,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,  -34,
+      -34,  -34,  -34,  -34,  -34,  -34
+
+    },
+
+    {
+        7,   57,   57,   57,   57,   57,   57,   57,   57,  -35,
+      -35,   57,   57,  -35,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,  -35,  -35,   57,   57,  -35,  -35,  -35,   57,
+      -35,  -35,  -35,  -35,   57,  -35,   57,  -35,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,  -35,   57,
+      -35,  -35,  -35,  -35,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,  -35,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57
+    },
+
+    {
+        7,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+
+      -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,  -36,
+      -36,  -36,  -36,  -36,  -36,  -36
+    },
+
+    {
+        7,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,   58,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,  -37,
+      -37,  -37,  -37,  -37,  -37,  -37
+    },
+
+    {
+        7,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,  -38,
+      -38,  -38,  -38,  -38,  -38,  -38
+    },
+
+    {
+        7,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   40,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39
+
+    },
+
+    {
+        7,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
+      -40,  -40,  -40,  -40,  -40,  -40
+    },
+
+    {
+        7,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,  -41,
+      -41,  -41,  -41,  -41,  -41,   41,   42,  -41,  -41,   41,
+
+      -41,  -41,  -41,  -41,  -41,  -41,   41,  -41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,  -41,   41,
+      -41,  -41,  -41,  -41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,  -41,   41,  -41,   41,   41,  -41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,  -41,  -41,  -41,  -41,  -41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+    },
+
+    {
+        7,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,  -42,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+    },
+
+    {
+        7,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
+      -43,  -43,  -43,  -43,  -43,  -43
+    },
+
+    {
+        7,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,  -44,
+      -44,  -44,  -44,  -44,  -44,  -44
+
+    },
+
+    {
+        7,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
+      -45,  -45,  -45,  -45,  -45,   41,   42,  -45,  -45,   41,
+      -45,  -45,  -45,  -45,  -45,  -45,   41,  -45,   59,   59,
+       59,   59,   59,   59,   59,   59,   59,   59,  -45,   41,
+      -45,  -45,  -45,  -45,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,  -45,   41,  -45,   41,   41,  -45,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,  -45,  -45,  -45,  -45,  -45,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+    },
+
+    {
+        7,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,  -46,
+      -46,  -46,  -46,  -46,  -46,   41,   42,  -46,  -46,   41,
+
+      -46,  -46,  -46,  -46,  -46,  -46,   45,  -46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,  -46,   41,
+      -46,  -46,  -46,  -46,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,  -46,   41,  -46,   41,   41,  -46,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,  -46,  -46,  -46,  -46,  -46,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+    },
+
+    {
+        7,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,  -47,
+      -47,  -47,  -47,  -47,  -47,  -47
+    },
+
+    {
+        7,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
+      -48,  -48,  -48,  -48,  -48,  -48
+    },
+
+    {
+        7,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
+      -49,  -49,  -49,  -49,  -49,  -49
+
+    },
+
+    {
+        7,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,  -50,
+      -50,  -50,  -50,  -50,  -50,  -50
+    },
+
+    {
+        7,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+
+      -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,  -51,
+      -51,  -51,  -51,  -51,  -51,  -51
+    },
+
+    {
+        7,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
+      -52,  -52,  -52,  -52,  -52,  -52
+    },
+
+    {
+        7,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
+      -53,  -53,  -53,  -53,  -53,  -53
+    },
+
+    {
+        7,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   55,   54,   56,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
+       54,   54,   54,   54,   54,   54
+
+    },
+
+    {
+        7,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,  -55,
+      -55,  -55,  -55,  -55,  -55,  -55
+    },
+
+    {
+        7,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+
+      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
+      -56,  -56,  -56,  -56,  -56,  -56
+    },
+
+    {
+        7,   57,   57,   57,   57,   57,   57,   57,   57,  -57,
+      -57,   57,   57,  -57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,  -57,  -57,   57,   57,  -57,  -57,  -57,   57,
+      -57,  -57,  -57,  -57,   57,  -57,   57,  -57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,  -57,   57,
+      -57,  -57,  -57,  -57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,  -57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57
+    },
+
+    {
+        7,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,  -58,
+      -58,  -58,  -58,  -58,  -58,  -58
+    },
+
+    {
+        7,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
+      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
+      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
+      -59,  -59,  -59,  -59,  -59,   41,   42,  -59,  -59,   41,
+      -59,  -59,  -59,  -59,  -59,  -59,   41,  -59,   59,   59,
+       59,   59,   59,   59,   59,   59,   59,   59,  -59,   41,
+
+      -59,  -59,  -59,  -59,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,  -59,   41,  -59,   41,   41,  -59,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,  -59,  -59,  -59,  -59,  -59,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
+       41,   41,   41,   41,   41,   41
+
+    },
+
+    } ;
 
 static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  ,yyscan_t yyscanner);
@@ -356,8 +2255,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
        *yy_cp = '\0'; \
        yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 36
-#define YY_END_OF_BUFFER 37
+#define YY_NUM_RULES 37
+#define YY_END_OF_BUFFER 38
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -365,113 +2264,24 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[58] =
-    {   0,
-        0,    0,    0,    0,   33,   33,   37,   36,   26,   28,
-       20,   36,   30,   30,   18,    2,   23,   24,   16,   13,
-       14,   15,   17,   29,   21,    9,    3,    8,   19,    1,
-       36,   32,   31,   33,   34,   34,   12,    0,   27,   30,
-       25,    5,   30,   29,   22,   11,    6,    7,   10,    4,
-        0,   32,   31,   33,   35,   29,    0
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    4,    5,    6,    7,    8,    9,    6,   10,
-       11,   12,   13,   14,   15,   16,   17,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   19,    6,   20,
-       21,   22,   23,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        1,    6,    1,    6,    6,    1,    6,    6,    6,    6,
-
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,   24,   25,   26,   27,    1,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
-       28,   28,   28,   28,   28
-    } ;
-
-static yyconst flex_int32_t yy_meta[29] =
+static yyconst flex_int16_t yy_accept[60] =
     {   0,
-        1,    2,    2,    2,    1,    3,    4,    2,    2,    2,
-        2,    2,    2,    1,    2,    3,    2,    3,    2,    2,
-        2,    2,    2,    1,    2,    1,    1,    3
+        0,    0,    0,    0,   34,   34,   38,   37,   27,   29,
+       21,   37,   31,   37,   19,    2,   24,   25,   17,   14,
+       15,   16,   18,   30,   22,   10,    3,    9,   20,    1,
+       37,   37,   33,   32,   34,   35,   35,   13,    0,   28,
+       31,    0,   26,    5,   31,   30,   23,   12,    6,    7,
+       11,    4,    8,    0,   33,   32,   34,   36,   30
     } ;
 
-static yyconst flex_int16_t yy_base[64] =
+static yyconst yy_state_type yy_NUL_trans[60] =
     {   0,
-        0,    0,    5,    6,   32,   60,   64,  110,  110,  110,
-       42,   57,    0,   33,  110,   46,  110,  110,  110,  110,
-      110,  110,  110,   18,   35,   32,   14,   31,  110,   26,
-       16,  110,  110,    0,  110,   25,  110,   42,  110,    0,
-      110,  110,   26,    0,  110,  110,  110,  110,  110,  110,
-       19,  110,  110,    0,  110,    0,  110,   88,   92,   96,
-       98,  102,  106
-    } ;
-
-static yyconst flex_int16_t yy_def[64] =
-    {   0,
-       57,    1,   58,   58,   59,   59,   57,   57,   57,   57,
-       57,   60,   61,   61,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   61,   57,   57,   57,   57,   57,   57,
-       62,   57,   57,   63,   57,   57,   57,   60,   57,   61,
-       57,   57,   61,   24,   57,   57,   57,   57,   57,   57,
-       62,   57,   57,   63,   57,   43,    0,   57,   57,   57,
-       57,   57,   57
-    } ;
-
-static yyconst flex_int16_t yy_nxt[139] =
-    {   0,
-        8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
-       18,   19,   20,   21,   22,   13,   23,   24,   25,   26,
-       27,   28,   29,    8,   30,    8,    8,   13,   32,   32,
-       33,   33,   34,   43,   47,   44,   34,   34,   36,   52,
-       48,   53,   52,   56,   53,   34,   39,   34,   55,   34,
-       50,   49,   46,   45,   42,   34,   41,   34,   34,   34,
-       34,   39,   37,   57,   34,   34,   36,   57,   57,   57,
-       57,   57,   57,   34,   57,   34,   57,   34,   57,   57,
-       57,   57,   57,   34,   57,   34,   34,   34,   31,   31,
-       31,   31,   35,   35,   35,   35,   38,   38,   38,   38,
-
-       40,   40,   51,   51,   51,   51,   54,   57,   54,    7,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57
-    } ;
-
-static yyconst flex_int16_t yy_chk[139] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    3,    4,
-        3,    4,    5,   24,   27,   24,    5,    5,    5,   31,
-       27,   31,   51,   43,   51,    5,   38,    5,   36,    5,
-       30,   28,   26,   25,   16,    5,   14,    5,    5,    5,
-        6,   12,   11,    7,    6,    6,    6,    0,    0,    0,
-        0,    0,    0,    6,    0,    6,    0,    6,    0,    0,
-        0,    0,    0,    6,    0,    6,    6,    6,   58,   58,
-       58,   58,   59,   59,   59,   59,   60,   60,   60,   60,
-
-       61,   61,   62,   62,   62,   62,   63,    0,   63,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
-       57,   57,   57,   57,   57,   57,   57,   57
+        8,    8,   32,   32,   35,   35,    0,    0,    0,    0,
+        0,   39,    0,   41,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   54,    0,    0,   57,    0,    0,    0,   39,    0,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   54,    0,    0,   57,    0,    0
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -596,7 +2406,7 @@ int ast_yyget_column(yyscan_t yyscanner);
 static int curlycount = 0;
 static char *expr2_token_subst(const char *mess);
 
-#line 600 "ast_expr2f.c"
+#line 2410 "ast_expr2f.c"
 
 #define INITIAL 0
 #define var 1
@@ -747,33 +2557,17 @@ static int input (yyscan_t yyscanner );
  */
 #ifndef YY_INPUT
 #define YY_INPUT(buf,result,max_size) \
-       if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+       errno=0; \
+       while ( (result = read( fileno(yyin), (char *) buf, max_size )) < 0 ) \
+       { \
+               if( errno != EINTR) \
                { \
-               int c = '*'; \
-               size_t n; \
-               for ( n = 0; n < max_size && \
-                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-                       buf[n] = (char) c; \
-               if ( c == '\n' ) \
-                       buf[n++] = (char) c; \
-               if ( c == EOF && ferror( yyin ) ) \
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
-               result = n; \
+                       break; \
                } \
-       else \
-               { \
                errno=0; \
-               while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
-                       { \
-                       if( errno != EINTR) \
-                               { \
-                               YY_FATAL_ERROR( "input in flex scanner failed" ); \
-                               break; \
-                               } \
-                       errno=0; \
-                       clearerr(yyin); \
-                       } \
-               }\
+               clearerr(yyin); \
+       }\
 \
 
 #endif
@@ -804,9 +2598,11 @@ static int input (yyscan_t yyscanner );
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int ast_yylex (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
+extern int ast_yylex \
+               (YYSTYPE * yylval_param,YYLTYPE * yylloc_param ,yyscan_t yyscanner);
 
-#define YY_DECL int ast_yylex (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
+#define YY_DECL int ast_yylex \
+               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
 #endif /* !YY_DECL */
 
 /* Code executed at the beginning of each rule, after yytext and yyleng
@@ -836,7 +2632,7 @@ YY_DECL
 #line 127 "ast_expr2.fl"
 
 
-#line 840 "ast_expr2f.c"
+#line 2636 "ast_expr2f.c"
 
     yylval = yylval_param;
 
@@ -888,26 +2684,18 @@ YY_DECL
 
                yy_current_state = yyg->yy_start;
 yy_match:
-               do
+               while ( (yy_current_state = yy_nxt[yy_current_state][ YY_SC_TO_UI(*yy_cp) ]) > 0 )
                        {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
                        if ( yy_accept[yy_current_state] )
                                {
                                yyg->yy_last_accepting_state = yy_current_state;
                                yyg->yy_last_accepting_cpos = yy_cp;
                                }
-                       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                               {
-                               yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 58 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
-                               }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+
                        ++yy_cp;
                        }
-               while ( yy_current_state != 57 );
-               yy_cp = yyg->yy_last_accepting_cpos;
-               yy_current_state = yyg->yy_last_accepting_state;
+
+               yy_current_state = -yy_current_state;
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -921,7 +2709,7 @@ do_action: /* This label is used only to access EOF actions. */
                        case 0: /* must back up */
                        /* undo the effects of YY_DO_BEFORE_ACTION */
                        *yy_cp = yyg->yy_hold_char;
-                       yy_cp = yyg->yy_last_accepting_cpos;
+                       yy_cp = yyg->yy_last_accepting_cpos + 1;
                        yy_current_state = yyg->yy_last_accepting_state;
                        goto yy_find_action;
 
@@ -963,91 +2751,96 @@ YY_RULE_SETUP
 case 8:
 YY_RULE_SETUP
 #line 136 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_GT;}
+{ SET_COLUMNS; SET_STRING; return TOK_TILDETILDE;}
        YY_BREAK
 case 9:
 YY_RULE_SETUP
 #line 137 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_LT;}
+{ SET_COLUMNS; SET_STRING; return TOK_GT;}
        YY_BREAK
 case 10:
 YY_RULE_SETUP
 #line 138 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_GE;}
+{ SET_COLUMNS; SET_STRING; return TOK_LT;}
        YY_BREAK
 case 11:
 YY_RULE_SETUP
 #line 139 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_LE;}
+{ SET_COLUMNS; SET_STRING; return TOK_GE;}
        YY_BREAK
 case 12:
 YY_RULE_SETUP
 #line 140 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_NE;}
+{ SET_COLUMNS; SET_STRING; return TOK_LE;}
        YY_BREAK
 case 13:
 YY_RULE_SETUP
 #line 141 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_PLUS;}
+{ SET_COLUMNS; SET_STRING; return TOK_NE;}
        YY_BREAK
 case 14:
 YY_RULE_SETUP
 #line 142 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_COMMA;}
+{ SET_COLUMNS; SET_STRING; return TOK_PLUS;}
        YY_BREAK
 case 15:
 YY_RULE_SETUP
 #line 143 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_MINUS;}
+{ SET_COLUMNS; SET_STRING; return TOK_COMMA;}
        YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 144 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_MULT;}
+{ SET_COLUMNS; SET_STRING; return TOK_MINUS;}
        YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 145 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_DIV;}
+{ SET_COLUMNS; SET_STRING; return TOK_MULT;}
        YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 146 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_MOD;}
+{ SET_COLUMNS; SET_STRING; return TOK_DIV;}
        YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 147 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_COND;}
+{ SET_COLUMNS; SET_STRING; return TOK_MOD;}
        YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 148 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_COMPL;}
+{ SET_COLUMNS; SET_STRING; return TOK_COND;}
        YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 149 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_COLON;}
+{ SET_COLUMNS; SET_STRING; return TOK_COMPL;}
        YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 150 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
+{ SET_COLUMNS; SET_STRING; return TOK_COLON;}
        YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 151 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_LP;}
+{ SET_COLUMNS; SET_STRING; return TOK_COLONCOLON;}
        YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 152 "ast_expr2.fl"
-{ SET_COLUMNS; SET_STRING; return TOK_RP;}
+{ SET_COLUMNS; SET_STRING; return TOK_LP;}
        YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 153 "ast_expr2.fl"
+{ SET_COLUMNS; SET_STRING; return TOK_RP;}
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 154 "ast_expr2.fl"
 {
                /* gather the contents of ${} expressions, with trailing stuff,
                 * into a single TOKEN.
@@ -1058,26 +2851,26 @@ YY_RULE_SETUP
                yymore();
        }
        YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 163 "ast_expr2.fl"
-{}
-       YY_BREAK
 case 27:
-/* rule 27 can match eol */
 YY_RULE_SETUP
 #line 164 "ast_expr2.fl"
-{SET_COLUMNS; SET_STRING; return TOKEN;}
+{}
        YY_BREAK
 case 28:
 /* rule 28 can match eol */
 YY_RULE_SETUP
-#line 166 "ast_expr2.fl"
-{/* what to do with eol */}
+#line 165 "ast_expr2.fl"
+{SET_COLUMNS; SET_STRING; return TOKEN;}
        YY_BREAK
 case 29:
+/* rule 29 can match eol */
 YY_RULE_SETUP
 #line 167 "ast_expr2.fl"
+{/* what to do with eol */}
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 168 "ast_expr2.fl"
 {
                SET_COLUMNS;
                /* the original behavior of the expression parser was
@@ -1087,19 +2880,20 @@ YY_RULE_SETUP
                return TOKEN;
        }
        YY_BREAK
-case 30:
+case 31:
+/* rule 31 can match eol */
 YY_RULE_SETUP
-#line 176 "ast_expr2.fl"
+#line 177 "ast_expr2.fl"
 {
                SET_COLUMNS;
                SET_STRING;
                return TOKEN;
        }
        YY_BREAK
-case 31:
-/* rule 31 can match eol */
+case 32:
+/* rule 32 can match eol */
 YY_RULE_SETUP
-#line 183 "ast_expr2.fl"
+#line 184 "ast_expr2.fl"
 {
                curlycount--;
                if (curlycount < 0) {
@@ -1110,18 +2904,18 @@ YY_RULE_SETUP
                }
        }
        YY_BREAK
-case 32:
-/* rule 32 can match eol */
+case 33:
+/* rule 33 can match eol */
 YY_RULE_SETUP
-#line 193 "ast_expr2.fl"
+#line 194 "ast_expr2.fl"
 {
                curlycount++;
                yymore();
        }
        YY_BREAK
-case 33:
+case 34:
 YY_RULE_SETUP
-#line 199 "ast_expr2.fl"
+#line 200 "ast_expr2.fl"
 {
                BEGIN(0);
                SET_COLUMNS;
@@ -1129,10 +2923,10 @@ YY_RULE_SETUP
                return TOKEN;
        }
        YY_BREAK
-case 34:
-/* rule 34 can match eol */
+case 35:
+/* rule 35 can match eol */
 YY_RULE_SETUP
-#line 206 "ast_expr2.fl"
+#line 207 "ast_expr2.fl"
 {
                char c = yytext[yyleng-1];
                BEGIN(0);
@@ -1142,9 +2936,9 @@ YY_RULE_SETUP
                return TOKEN;
        }
        YY_BREAK
-case 35:
+case 36:
 YY_RULE_SETUP
-#line 215 "ast_expr2.fl"
+#line 216 "ast_expr2.fl"
 {
                curlycount = 0;
                BEGIN(var);
@@ -1152,7 +2946,7 @@ YY_RULE_SETUP
        }
        YY_BREAK
 case YY_STATE_EOF(trail):
-#line 221 "ast_expr2.fl"
+#line 222 "ast_expr2.fl"
 {
                BEGIN(0);
                SET_COLUMNS;
@@ -1161,12 +2955,12 @@ case YY_STATE_EOF(trail):
                /*actually, if an expr is only a variable ref, this could happen a LOT */
        }
        YY_BREAK
-case 36:
+case 37:
 YY_RULE_SETUP
-#line 229 "ast_expr2.fl"
+#line 230 "ast_expr2.fl"
 ECHO;
        YY_BREAK
-#line 1170 "ast_expr2f.c"
+#line 2964 "ast_expr2f.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(var):
        yyterminate();
@@ -1234,8 +3028,7 @@ case YY_STATE_EOF(var):
 
                        else
                                {
-                               yy_cp = yyg->yy_last_accepting_cpos;
-                               yy_current_state = yyg->yy_last_accepting_state;
+                               yy_cp = yyg->yy_c_buf_p;
                                goto yy_find_action;
                                }
                        }
@@ -1301,13 +3094,12 @@ case YY_STATE_EOF(var):
                } /* end of scanning one token */
 } /* end of ast_yylex */
 
-/*!
- * \brief yy_get_next_buffer - try to read in a new buffer
+/* yy_get_next_buffer - try to read in a new buffer
  *
  * Returns a code representing an action:
- * \retval EOB_ACT_LAST_MATCH -
- * \retval EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- * \retval EOB_ACT_END_OF_FILE - end of file
+ *     EOB_ACT_LAST_MATCH -
+ *     EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *     EOB_ACT_END_OF_FILE - end of file
  */
 static int yy_get_next_buffer (yyscan_t yyscanner)
 {
@@ -1401,7 +3193,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       yyg->yy_n_chars, num_to_read );
+                       yyg->yy_n_chars, (size_t) num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
                }
@@ -1434,7 +3226,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
        return ret_val;
 }
 
-/*! \brief yy_get_previous_state - get the state just before the EOB char was reached */
+/* yy_get_previous_state - get the state just before the EOB char was reached */
 
     static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
 {
@@ -1446,25 +3238,23 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 
        for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
                {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               if ( *yy_cp )
+                       {
+                       yy_current_state = yy_nxt[yy_current_state][YY_SC_TO_UI(*yy_cp)];
+                       }
+               else
+                       yy_current_state = yy_NUL_trans[yy_current_state];
                if ( yy_accept[yy_current_state] )
                        {
                        yyg->yy_last_accepting_state = yy_current_state;
                        yyg->yy_last_accepting_cpos = yy_cp;
                        }
-               while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-                       {
-                       yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 58 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
-                       }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                }
 
        return yy_current_state;
 }
 
-/*! \brief yy_try_NUL_trans - try to make a transition on the NUL character.
+/* yy_try_NUL_trans - try to make a transition on the NUL character
  *
  * synopsis
  *     next_state = yy_try_NUL_trans( current_state );
@@ -1475,20 +3265,17 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
        register char *yy_cp = yyg->yy_c_buf_p;
 
-       register YY_CHAR yy_c = 1;
-       if ( yy_accept[yy_current_state] )
-               {
-               yyg->yy_last_accepting_state = yy_current_state;
-               yyg->yy_last_accepting_cpos = yy_cp;
-               }
-       while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+       yy_current_state = yy_NUL_trans[yy_current_state];
+       yy_is_jam = (yy_current_state == 0);
+
+       if ( ! yy_is_jam )
                {
-               yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 58 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
+               if ( yy_accept[yy_current_state] )
+                       {
+                       yyg->yy_last_accepting_state = yy_current_state;
+                       yyg->yy_last_accepting_cpos = yy_cp;
+                       }
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 57);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -1606,11 +3393,10 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
 }
 #endif /* ifndef YY_NO_INPUT */
 
-/*!
- * \brief Immediately switch to a different input stream.
- * \param input_file A readable stream.
- * \param yyscanner The scanner object.
- * \note This function does not reset the start condition to @c INITIAL .
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * @param yyscanner The scanner object.
+ * @note This function does not reset the start condition to @c INITIAL .
  */
     void ast_yyrestart  (FILE * input_file , yyscan_t yyscanner)
 {
@@ -1626,10 +3412,9 @@ static int yy_get_next_buffer (yyscan_t yyscanner)
        ast_yy_load_buffer_state(yyscanner );
 }
 
-/*!
- * \brief Switch to a different input buffer.
- * \param new_buffer The new input buffer.
- * \param yyscanner The scanner object.
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * @param yyscanner The scanner object.
  */
     void ast_yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer , yyscan_t yyscanner)
 {
@@ -1672,12 +3457,11 @@ static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
        yyg->yy_hold_char = *yyg->yy_c_buf_p;
 }
 
-/*!
- * \brief Allocate and initialize an input buffer state.
- * \param file A readable stream.
- * \param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * \param yyscanner The scanner object.
- * \return the allocated buffer state.
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * @param yyscanner The scanner object.
+ * @return the allocated buffer state.
  */
     YY_BUFFER_STATE ast_yy_create_buffer  (FILE * file, int  size , yyscan_t yyscanner)
 {
@@ -1703,10 +3487,9 @@ static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
        return b;
 }
 
-/*! 
- * \brief Destroy the buffer.
- * \param b a buffer created with ast_yy_create_buffer()
- * \param yyscanner The scanner object.
+/** Destroy the buffer.
+ * @param b a buffer created with ast_yy_create_buffer()
+ * @param yyscanner The scanner object.
  */
     void ast_yy_delete_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
 {
@@ -1728,9 +3511,8 @@ static void ast_yy_load_buffer_state  (yyscan_t yyscanner)
 extern int isatty (int );
 #endif /* __cplusplus */
     
-/*! 
- * \brief Initializes or reinitializes a buffer.
- * \note This function is sometimes called more than once on the same buffer,
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
  * such as during a ast_yyrestart() or at EOF.
  */
     static void ast_yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file , yyscan_t yyscanner)
@@ -1758,10 +3540,9 @@ extern int isatty (int );
        errno = oerrno;
 }
 
-/*! 
- * \brief Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * \param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * \param yyscanner The scanner object.
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * @param yyscanner The scanner object.
  */
     void ast_yy_flush_buffer (YY_BUFFER_STATE  b , yyscan_t yyscanner)
 {
@@ -1787,12 +3568,11 @@ extern int isatty (int );
                ast_yy_load_buffer_state(yyscanner );
 }
 
-/*!
- * \brief Pushes the new state onto the stack. The new state becomes
+/** Pushes the new state onto the stack. The new state becomes
  *  the current state. This function will allocate the stack
  *  if necessary.
- *  \param new_buffer The new state.
- *  \param yyscanner The scanner object.
+ *  @param new_buffer The new state.
+ *  @param yyscanner The scanner object.
  */
 void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
 {
@@ -1821,10 +3601,9 @@ void ast_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
        yyg->yy_did_buffer_switch_on_eof = 1;
 }
 
-/*! 
- * \brief Removes and deletes the top of the stack, if present.
+/** Removes and deletes the top of the stack, if present.
  *  The next element becomes the new top.
- *  \param yyscanner The scanner object.
+ *  @param yyscanner The scanner object.
  */
 void ast_yypop_buffer_state (yyscan_t yyscanner)
 {
@@ -1886,12 +3665,11 @@ static void ast_yyensure_buffer_stack (yyscan_t yyscanner)
        }
 }
 
-/*!
- * \brief Setup the input buffer state to scan directly from a user-specified character buffer.
- * \param base the character buffer
- * \param size the size in bytes of the character buffer
- * \param yyscanner The scanner object.
- * \return the newly allocated buffer state object. 
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object. 
  */
 YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yyscanner)
 {
@@ -1922,13 +3700,12 @@ YY_BUFFER_STATE ast_yy_scan_buffer  (char * base, yy_size_t  size , yyscan_t yys
        return b;
 }
 
-/*! 
- * \brief Setup the input buffer state to scan a string. The next call to ast_yylex() will
- * scan from a \e copy of \a str.
- * \param yystr a NUL-terminated string to scan
- * \param yyscanner The scanner object.
- * \return the newly allocated buffer state object.
- * \note If you want to scan bytes that may contain NUL values, then use
+/** Setup the input buffer state to scan a string. The next call to ast_yylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
  *       ast_yy_scan_bytes() instead.
  */
 YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
@@ -1937,13 +3714,12 @@ YY_BUFFER_STATE ast_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
        return ast_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
 }
 
-/*! 
- * \brief Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
- * scan from a \e copy of \a bytes.
- * \param yybytes the byte buffer to scan
- * \param _yybytes_len the number of bytes in the buffer pointed to by \a bytes.
- * \param yyscanner The scanner object.
- * \return the newly allocated buffer state object.
+/** Setup the input buffer state to scan the given bytes. The next call to ast_yylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * @param yyscanner The scanner object.
+ * @return the newly allocated buffer state object.
  */
 YY_BUFFER_STATE ast_yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len , yyscan_t yyscanner)
 {
@@ -2004,9 +3780,8 @@ static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
 
 /* Accessor  methods (get/set functions) to struct members. */
 
-/*!
- * \brief Get the user-defined data for this scanner.
- * \param yyscanner The scanner object.
+/** Get the user-defined data for this scanner.
+ * @param yyscanner The scanner object.
  */
 YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
 {
@@ -2014,9 +3789,8 @@ YY_EXTRA_TYPE ast_yyget_extra  (yyscan_t yyscanner)
     return yyextra;
 }
 
-/*! 
- * \brief Get the current line number.
- * \param yyscanner The scanner object.
+/** Get the current line number.
+ * @param yyscanner The scanner object.
  */
 int ast_yyget_lineno  (yyscan_t yyscanner)
 {
@@ -2028,9 +3802,8 @@ int ast_yyget_lineno  (yyscan_t yyscanner)
     return yylineno;
 }
 
-/*!
- * \brief Get the current column number.
- * \param yyscanner The scanner object.
+/** Get the current column number.
+ * @param yyscanner The scanner object.
  */
 int ast_yyget_column  (yyscan_t yyscanner)
 {
@@ -2042,9 +3815,8 @@ int ast_yyget_column  (yyscan_t yyscanner)
     return yycolumn;
 }
 
-/*!
- * \brief Get the input stream.
- * \param yyscanner The scanner object.
+/** Get the input stream.
+ * @param yyscanner The scanner object.
  */
 FILE *ast_yyget_in  (yyscan_t yyscanner)
 {
@@ -2052,9 +3824,8 @@ FILE *ast_yyget_in  (yyscan_t yyscanner)
     return yyin;
 }
 
-/*!
- * \brief Get the output stream.
- * \param yyscanner The scanner object.
+/** Get the output stream.
+ * @param yyscanner The scanner object.
  */
 FILE *ast_yyget_out  (yyscan_t yyscanner)
 {
@@ -2062,9 +3833,8 @@ FILE *ast_yyget_out  (yyscan_t yyscanner)
     return yyout;
 }
 
-/*!
- * \brief Get the length of the current token.
- * \param yyscanner The scanner object.
+/** Get the length of the current token.
+ * @param yyscanner The scanner object.
  */
 int ast_yyget_leng  (yyscan_t yyscanner)
 {
@@ -2072,9 +3842,8 @@ int ast_yyget_leng  (yyscan_t yyscanner)
     return yyleng;
 }
 
-/*!
- * \brief Get the current token.
- * \param yyscanner The scanner object.
+/** Get the current token.
+ * @param yyscanner The scanner object.
  */
 
 char *ast_yyget_text  (yyscan_t yyscanner)
@@ -2083,10 +3852,9 @@ char *ast_yyget_text  (yyscan_t yyscanner)
     return yytext;
 }
 
-/*!
- * \brief Set the user-defined data. This data is never touched by the scanner.
- * \param user_defined The data to be associated with this scanner.
- * \param yyscanner The scanner object.
+/** Set the user-defined data. This data is never touched by the scanner.
+ * @param user_defined The data to be associated with this scanner.
+ * @param yyscanner The scanner object.
  */
 void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
 {
@@ -2094,10 +3862,9 @@ void ast_yyset_extra (YY_EXTRA_TYPE  user_defined , yyscan_t yyscanner)
     yyextra = user_defined ;
 }
 
-/*!
- * \brief Set the current line number.
- * \param line_number
- * \param yyscanner The scanner object.
+/** Set the current line number.
+ * @param line_number
+ * @param yyscanner The scanner object.
  */
 void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
 {
@@ -2110,10 +3877,9 @@ void ast_yyset_lineno (int  line_number , yyscan_t yyscanner)
     yylineno = line_number;
 }
 
-/*!
- * \brief Set the current column.
- * \param column_no
- * \param yyscanner The scanner object.
+/** Set the current column.
+ * @param line_number
+ * @param yyscanner The scanner object.
  */
 void ast_yyset_column (int  column_no , yyscan_t yyscanner)
 {
@@ -2126,12 +3892,11 @@ void ast_yyset_column (int  column_no , yyscan_t yyscanner)
     yycolumn = column_no;
 }
 
-/*!
- * \brief Set the input stream. This does not discard the current
+/** Set the input stream. This does not discard the current
  * input buffer.
- * \param in_str A readable stream.
- * \param yyscanner The scanner object.
- * \see ast_yy_switch_to_buffer
+ * @param in_str A readable stream.
+ * @param yyscanner The scanner object.
+ * @see ast_yy_switch_to_buffer
  */
 void ast_yyset_in (FILE *  in_str , yyscan_t yyscanner)
 {
@@ -2185,10 +3950,9 @@ void ast_yyset_lloc (YYLTYPE *  yylloc_param , yyscan_t yyscanner)
     
 /* User-visible API */
 
-/*! \brief ast_yylex_init is special because it creates the scanner itself.
- * 
- * It is the ONLY reentrant function that doesn't take the scanner as the last argument.
- * \note That's why we explicitly handle the declaration, instead of using our macros.
+/* ast_yylex_init is special because it creates the scanner itself, so it is
+ * the ONLY reentrant function that doesn't take the scanner as the last argument.
+ * That's why we explicitly handle the declaration, instead of using our macros.
  */
 
 int ast_yylex_init(yyscan_t* ptr_yy_globals)
@@ -2318,7 +4082,7 @@ void *ast_yyrealloc  (void * ptr, yy_size_t  size , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 229 "ast_expr2.fl"
+#line 230 "ast_expr2.fl"
 
 
 
diff --git a/pbx/ael/ael-test/ael-ntest24/extensions.ael b/pbx/ael/ael-test/ael-ntest24/extensions.ael
new file mode 100644 (file)
index 0000000..ea14aff
--- /dev/null
@@ -0,0 +1,27 @@
+context test11
+{
+_X. => {
+                Answer();
+                Dial(iax2/test11:nosecret@192.168.134.2522, 15,tTwW);
+                Hangup();
+               NoOp($[{GROUP_COUNT(${target_num}@agent_queue_b)}=1]);
+               NoOp($[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]);
+               NoOp($[0~~${DB(skip_group/${target_num}/agent_queue_b)}+1]);
+               NoOp($[${GROUP_COUNT(${target_num}@agent_queue_b)}=1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]);
+               NoOp($[${GROUP_COUNT(${target_num}@agent_queue_b)}=0~~${DB(skip_group/${target_num}/agent_queue_b)}+1]);
+                if(${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)})
+                {
+                       Set(testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]);
+                }
+                if(${GROUP_COUNT(${target_num}@agent_queue_b)}==0~~${DB(skip_group/${target_num}/agent_queue_b)}+1)
+                {
+                       Set(testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]);
+                }
+                if(${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)})
+                {
+                       Set(testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]);
+                }
+        }
+}
+
+
index 9eb8ac9..ada81df 100644 (file)
@@ -5,8 +5,8 @@
 
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
@@ -24,24 +24,25 @@ LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./exte
 LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
 LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
 LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch.
-LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-Executed ast_context_create(conts, name=endsess, registrar=pbx_ael);
-Executed ast_context_create(conts, name=nullchk, registrar=pbx_ael);
-Executed ast_context_create(conts, name=endcall, registrar=pbx_ael);
-Executed ast_context_create(conts, name=endcall2, registrar=pbx_ael);
-Executed ast_context_create(conts, name=endcall3, registrar=pbx_ael);
-Executed ast_context_create(conts, name=endcall4, registrar=pbx_ael);
-Executed ast_context_create(conts, name=endcall5, registrar=pbx_ael);
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+Executed ast_context_find_or_create(conts, name=endsess, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=nullchk, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=endcall, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=endcall2, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=endcall3, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=endcall4, registrar=pbx_ael);
+Executed ast_context_find_or_create(conts, name=endcall5, registrar=pbx_ael);
 Executed ast_add_extension2(context=endsess, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=NoOp, data=hithere, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endsess, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=NoOp, data=${type} is this, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-1-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall-1, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall, rep=0, exten=_sw-1-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-1-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall-1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall, rep=0, exten=_sw-1-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-1-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:15, FREE, registrar=pbx_ael);
@@ -49,18 +50,19 @@ Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=12,
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-1-out,ptr1, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=14, label=(null), callerid=(null), appl=Goto, data=17, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=15, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=16, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=16, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=17, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall-out-1-2, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=18, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=19, label=(null), callerid=(null), appl=Goto, data=sw-1-.,10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-3-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall2-3, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall2, rep=0, exten=_sw-3-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-3-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall2-3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall2, rep=0, exten=_sw-3-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-3-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=10, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=11, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=11, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=12, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-3-.,10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael);
@@ -70,23 +72,24 @@ Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=13
 Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=14, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall2-out-3-4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-3-out2,10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-5-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-5, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-8-out,ptr1, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall3-7, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-8-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-8, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-8-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-5-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-5, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?6:7, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-8-out,ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall3-7, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=Goto, data=sw-8-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-8-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-8-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=12, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=12, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-8-9, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-8-.,10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-5-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall3, rep=0, exten=_sw-5-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-5-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael);
@@ -96,28 +99,30 @@ Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=14
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=15, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=16, label=(null), callerid=(null), appl=Goto, data=sw-5-.,10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-10-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-14-in,ptr1, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall4-12, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-13-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-13, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-13-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-10-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?6:7, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-14-in,ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall4-12, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=Goto, data=sw-13-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-13, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-13-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-.|10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-.,10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-14-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-out,11, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=10, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=11, label=(null), callerid=(null), appl=Goto, data=sw-14-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=12, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-13-.,10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-14-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-out,12, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out,11, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out,12, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall4-out-13-in-14-15, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-14-.,10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-10-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall4, rep=0, exten=_sw-10-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-10-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael);
@@ -127,28 +132,30 @@ Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=1
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=15, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=16, label=(null), callerid=(null), appl=Goto, data=sw-10-.,10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=LOCAL(type)=${ARG1}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-16-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-16, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-21-in,ptr1, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall5-19, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-20-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-20, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-20-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-16-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-16, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?6:7, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-21-in,ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall5-19, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=Goto, data=sw-20-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-20, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=10, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-20-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,9, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-.|10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-${type},10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-.,10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-21-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-out,11, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=10, label=(null), callerid=(null), appl=Set, data=~~EXTEN~~=${EXTEN}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=11, label=(null), callerid=(null), appl=Goto, data=sw-21-${type},10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=12, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-20-.,10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-21-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-out,12, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=11, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out,11, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out,12, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=13, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall5-out-20-in-21-22, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=14, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-21-.,10, FREE, registrar=pbx_ael);
-Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-16-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=endcall5, rep=0, exten=_sw-16-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,4, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-16-.|10, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=10, label=(null), callerid=(null), appl=Gosub, data=nullchk,s,1(callid), FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=11, label=ptr2, callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael);
@@ -163,9 +170,9 @@ Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=1
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=13, label=(null), callerid=(null), appl=Goto, data=sw-21-in,ptr1, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=14, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-out-16-17, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=15, label=(null), callerid=(null), appl=Goto, data=sw-16-in,10, FREE, registrar=pbx_ael);
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 Executed ast_merge_contexts_and_delete();
-LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 Executed ast_walk_contexts();
-LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:531 func: main  7 contexts, 37 extensions, 131 priorities
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  7 contexts, 37 extensions, 138 priorities
diff --git a/pbx/ael/ael-test/ref.ael-ntest24 b/pbx/ael/ael-test/ref.ael-ntest24
new file mode 100644 (file)
index 0000000..4bb3250
--- /dev/null
@@ -0,0 +1,34 @@
+
+(If you find progress and other non-error messages irritating, you can use -q to suppress them)
+
+(You can use the -n option if you aren't interested in seeing all the instructions generated by the compiler)
+
+
+(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+Executed ast_context_find_or_create(conts, name=test11, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=1, label=(null), callerid=(null), appl=Answer, data=, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=2, label=(null), callerid=(null), appl=Dial, data=iax2/test11:nosecret@192.168.134.2522, 15,tTwW, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=3, label=(null), callerid=(null), appl=Hangup, data=, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=4, label=(null), callerid=(null), appl=NoOp, data=$[{GROUP_COUNT(${target_num}@agent_queue_b)}=1], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=5, label=(null), callerid=(null), appl=NoOp, data=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=6, label=(null), callerid=(null), appl=NoOp, data=$[0~~${DB(skip_group/${target_num}/agent_queue_b)}+1], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=7, label=(null), callerid=(null), appl=NoOp, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}=1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=8, label=(null), callerid=(null), appl=NoOp, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}=0~~${DB(skip_group/${target_num}/agent_queue_b)}+1], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=9, label=(null), callerid=(null), appl=GotoIf, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]?10:11, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=10, label=(null), callerid=(null), appl=Set, data=testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=11, label=(null), callerid=(null), appl=NoOp, data=Finish if-test11-1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=12, label=(null), callerid=(null), appl=GotoIf, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}==0~~${DB(skip_group/${target_num}/agent_queue_b)}+1]?13:14, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=13, label=(null), callerid=(null), appl=Set, data=testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=14, label=(null), callerid=(null), appl=NoOp, data=Finish if-test11-2, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=15, label=(null), callerid=(null), appl=GotoIf, data=$[${GROUP_COUNT(${target_num}@agent_queue_b)}==1+0~~${DB(skip_group/${target_num}/agent_queue_b)}]?16:17, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=16, label=(null), callerid=(null), appl=Set, data=testif=$[1+0~~${DB(skip_group/${target_num}/agent_queue_b)}], FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=test11, rep=0, exten=_X., priority=17, label=(null), callerid=(null), appl=NoOp, data=Finish if-test11-3, FREE, registrar=pbx_ael);
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+Executed ast_merge_contexts_and_delete();
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+Executed ast_walk_contexts();
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  1 contexts, 1 extensions, 17 priorities
index 5538514..645ce13 100644 (file)
@@ -2,8 +2,8 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2-16: The macro testdial does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 18-25: The macro exten-gen does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.ael, line 21-21: It's bad form to have a goto in a macro to a target outside the macro!
@@ -11,8 +11,8 @@ LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.a
 LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch.
 LOG: lev:3 file:pval.c  line:922 func: check_dow  Warning: file ./extensions.ael, line 67-67: The day (m0n) must be one of 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', or 'sat'!
 LOG: lev:3 file:pval.c  line:880 func: check_timerange  Warning: file ./extensions.ael, line 78-78: The end time (25:00) is out of range!
-LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:531 func: main  5 contexts, 16 extensions, 157 priorities
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  5 contexts, 16 extensions, 159 priorities
index 072135e..51507b5 100644 (file)
@@ -2,10 +2,10 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 7 extensions, 27 priorities
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  1 contexts, 7 extensions, 29 priorities
index e093d75..405f437 100644 (file)
@@ -2,8 +2,8 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 LOG: lev:3 file:pval.c  line:2300 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69! (and neither is marked 'extend')
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 71-175: The macro std-priv-exten does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:2284 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
@@ -11,8 +11,8 @@ LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensi
 LOG: lev:3 file:pval.c  line:2426 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!)
 LOG: lev:3 file:pval.c  line:1346 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  Couldn't find goto target test5|s|1, not even in extensions.conf!
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 363-366: The macro dialoutpstn does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:531 func: main  13 contexts, 57 extensions, 188 priorities
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  13 contexts, 57 extensions, 194 priorities
index 5ff89ef..e8fde6c 100644 (file)
@@ -2,14 +2,14 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include1.ael2, 78 chars
-LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include2.ael2, 98 chars
-LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include3.ael2, 57 chars
-LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include5.ael2, 56 chars
-LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././include4.ael2, 87 chars
-LOG: lev:2 file:ael.flex  line:662 func: setup_filestack    --Read in included file ././telemarket_torture.ael2, 28036 chars
-LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include1.ael2, 78 chars
+LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include2.ael2, 98 chars
+LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include3.ael2, 57 chars
+LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include5.ael2, 56 chars
+LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././include4.ael2, 87 chars
+LOG: lev:2 file:ael.flex  line:672 func: setup_filestack    --Read in included file ././telemarket_torture.ael2, 28036 chars
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 14-34: The macro std-exten does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:1362 func: check_goto  Warning: file ./extensions.ael, line 17-17: It's bad form to have a goto in a macro to a target outside the macro!
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 36-59: The macro std-priv-exten_1 does not end with a return; I will insert one.
@@ -92,8 +92,8 @@ LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./exte
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2030-2048: The macro ciddial2 does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2050-2065: The macro callerid-liar does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 2067-2072: The macro callerid-bad does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:531 func: main  172 contexts, 934 extensions, 2482 priorities
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  172 contexts, 934 extensions, 2558 priorities
index 79c3274..0143dec 100644 (file)
@@ -2,13 +2,13 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 130-183: The macro stdexten does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 185-192: The macro uvm does not end with a return; I will insert one.
 LOG: lev:3 file:pval.c  line:671 func: check_macro_returns  Warning: file ./extensions.ael, line 194-201: The macro bvm does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:531 func: main  38 contexts, 91 extensions, 493 priorities
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  38 contexts, 91 extensions, 494 priorities
index 4e5d0aa..887c3e7 100644 (file)
@@ -2,10 +2,10 @@
 (If you find progress and other non-error messages irritating, you can use -q to suppress them)
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:126 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:129 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:137 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:531 func: main  1 contexts, 7 extensions, 17 priorities
+LOG: lev:2 file:pbx_ael.c  line:115 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:134 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:142 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:548 func: main  1 contexts, 7 extensions, 19 priorities
index 989a182..13e23cb 100644 (file)
@@ -14,18 +14,19 @@ FWDVMBOX=1
 exten => s,1,Set(LOCAL(ext)=${ARG1})
 exten => s,2,Set(LOCAL(dev)=${ARG2})
 exten => s,3,Dial(${dev}/${ext}\,20)
-exten => s,4,Goto(sw-1-${DIALSTATUS}\,10)
-exten => s,5,NoOp(Finish switch-std-exten-1)
-exten => s,6,Return()
+exten => s,4,Set(~~EXTEN~~=${EXTEN})
+exten => s,5,Goto(sw-1-${DIALSTATUS}\,10)
+exten => s,6,NoOp(Finish switch-std-exten-1)
+exten => s,7,Return()
 exten => a,1,VoiceMailMain(${ext})
 exten => _sw-1-.,10,Voicemail(u${ext})
-exten => _sw-1-.,11,Goto(s\,5)
+exten => _sw-1-.,11,Goto(s\,6)
 exten => sw-1-,10,Goto(sw-1-.|10)
-exten => sw-1-ANSWER,10,Goto(s\,5)
+exten => sw-1-ANSWER,10,Goto(s\,6)
 exten => sw-1-NOANSWER,10,Voicemail(u${ext})
-exten => sw-1-NOANSWER,11,Goto(s\,5)
+exten => sw-1-NOANSWER,11,Goto(s\,6)
 exten => sw-1-BUSY,10,Voicemail(b${ext})
-exten => sw-1-BUSY,11,Goto(s\,5)
+exten => sw-1-BUSY,11,Goto(s\,6)
 
 
 [std-priv-exten_1]
@@ -37,21 +38,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-3-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_1-3)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-3-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_1-3)
+exten => s,12,Return()
 exten => _sw-3-.,10,Voicemail(u${ext})
-exten => _sw-3-.,11,Goto(s\,10)
+exten => _sw-3-.,11,Goto(s\,11)
 exten => sw-3-,10,Goto(sw-3-.|10)
 exten => sw-3-NOANSWER,10,Voicemail(u${ext})
-exten => sw-3-NOANSWER,11,Goto(s\,10)
-exten => sw-3-ANSWER,10,Goto(s\,10)
+exten => sw-3-NOANSWER,11,Goto(s\,11)
+exten => sw-3-ANSWER,10,Goto(s\,11)
 exten => sw-3-BUSY,10,Voicemail(b${ext})
-exten => sw-3-BUSY,11,Goto(s\,10)
+exten => sw-3-BUSY,11,Goto(s\,11)
 exten => sw-3-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-3-DONTCALL,11,Goto(s\,10)
+exten => sw-3-DONTCALL,11,Goto(s\,11)
 exten => sw-3-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-3-TORTURE,11,Goto(s\,10)
+exten => sw-3-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_2]
@@ -63,21 +65,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-4-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_2-4)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-4-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_2-4)
+exten => s,12,Return()
 exten => _sw-4-.,10,Voicemail(u${ext})
-exten => _sw-4-.,11,Goto(s\,10)
+exten => _sw-4-.,11,Goto(s\,11)
 exten => sw-4-,10,Goto(sw-4-.|10)
 exten => sw-4-NOANSWER,10,Voicemail(u${ext})
-exten => sw-4-NOANSWER,11,Goto(s\,10)
-exten => sw-4-ANSWER,10,Goto(s\,10)
+exten => sw-4-NOANSWER,11,Goto(s\,11)
+exten => sw-4-ANSWER,10,Goto(s\,11)
 exten => sw-4-BUSY,10,Voicemail(b${ext})
-exten => sw-4-BUSY,11,Goto(s\,10)
+exten => sw-4-BUSY,11,Goto(s\,11)
 exten => sw-4-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-4-DONTCALL,11,Goto(s\,10)
+exten => sw-4-DONTCALL,11,Goto(s\,11)
 exten => sw-4-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-4-TORTURE,11,Goto(s\,10)
+exten => sw-4-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_3]
@@ -89,21 +92,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-5-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_3-5)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-5-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_3-5)
+exten => s,12,Return()
 exten => _sw-5-.,10,Voicemail(u${ext})
-exten => _sw-5-.,11,Goto(s\,10)
+exten => _sw-5-.,11,Goto(s\,11)
 exten => sw-5-,10,Goto(sw-5-.|10)
 exten => sw-5-NOANSWER,10,Voicemail(u${ext})
-exten => sw-5-NOANSWER,11,Goto(s\,10)
-exten => sw-5-ANSWER,10,Goto(s\,10)
+exten => sw-5-NOANSWER,11,Goto(s\,11)
+exten => sw-5-ANSWER,10,Goto(s\,11)
 exten => sw-5-BUSY,10,Voicemail(b${ext})
-exten => sw-5-BUSY,11,Goto(s\,10)
+exten => sw-5-BUSY,11,Goto(s\,11)
 exten => sw-5-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-5-DONTCALL,11,Goto(s\,10)
+exten => sw-5-DONTCALL,11,Goto(s\,11)
 exten => sw-5-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-5-TORTURE,11,Goto(s\,10)
+exten => sw-5-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_4]
@@ -115,21 +119,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-6-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_4-6)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-6-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_4-6)
+exten => s,12,Return()
 exten => _sw-6-.,10,Voicemail(u${ext})
-exten => _sw-6-.,11,Goto(s\,10)
+exten => _sw-6-.,11,Goto(s\,11)
 exten => sw-6-,10,Goto(sw-6-.|10)
 exten => sw-6-NOANSWER,10,Voicemail(u${ext})
-exten => sw-6-NOANSWER,11,Goto(s\,10)
-exten => sw-6-ANSWER,10,Goto(s\,10)
+exten => sw-6-NOANSWER,11,Goto(s\,11)
+exten => sw-6-ANSWER,10,Goto(s\,11)
 exten => sw-6-BUSY,10,Voicemail(b${ext})
-exten => sw-6-BUSY,11,Goto(s\,10)
+exten => sw-6-BUSY,11,Goto(s\,11)
 exten => sw-6-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-6-DONTCALL,11,Goto(s\,10)
+exten => sw-6-DONTCALL,11,Goto(s\,11)
 exten => sw-6-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-6-TORTURE,11,Goto(s\,10)
+exten => sw-6-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_5]
@@ -141,21 +146,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-7-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_5-7)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-7-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_5-7)
+exten => s,12,Return()
 exten => _sw-7-.,10,Voicemail(u${ext})
-exten => _sw-7-.,11,Goto(s\,10)
+exten => _sw-7-.,11,Goto(s\,11)
 exten => sw-7-,10,Goto(sw-7-.|10)
 exten => sw-7-NOANSWER,10,Voicemail(u${ext})
-exten => sw-7-NOANSWER,11,Goto(s\,10)
-exten => sw-7-ANSWER,10,Goto(s\,10)
+exten => sw-7-NOANSWER,11,Goto(s\,11)
+exten => sw-7-ANSWER,10,Goto(s\,11)
 exten => sw-7-BUSY,10,Voicemail(b${ext})
-exten => sw-7-BUSY,11,Goto(s\,10)
+exten => sw-7-BUSY,11,Goto(s\,11)
 exten => sw-7-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-7-DONTCALL,11,Goto(s\,10)
+exten => sw-7-DONTCALL,11,Goto(s\,11)
 exten => sw-7-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-7-TORTURE,11,Goto(s\,10)
+exten => sw-7-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_6]
@@ -167,21 +173,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-8-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_6-8)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-8-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_6-8)
+exten => s,12,Return()
 exten => _sw-8-.,10,Voicemail(u${ext})
-exten => _sw-8-.,11,Goto(s\,10)
+exten => _sw-8-.,11,Goto(s\,11)
 exten => sw-8-,10,Goto(sw-8-.|10)
 exten => sw-8-NOANSWER,10,Voicemail(u${ext})
-exten => sw-8-NOANSWER,11,Goto(s\,10)
-exten => sw-8-ANSWER,10,Goto(s\,10)
+exten => sw-8-NOANSWER,11,Goto(s\,11)
+exten => sw-8-ANSWER,10,Goto(s\,11)
 exten => sw-8-BUSY,10,Voicemail(b${ext})
-exten => sw-8-BUSY,11,Goto(s\,10)
+exten => sw-8-BUSY,11,Goto(s\,11)
 exten => sw-8-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-8-DONTCALL,11,Goto(s\,10)
+exten => sw-8-DONTCALL,11,Goto(s\,11)
 exten => sw-8-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-8-TORTURE,11,Goto(s\,10)
+exten => sw-8-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_7]
@@ -193,21 +200,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-9-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_7-9)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-9-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_7-9)
+exten => s,12,Return()
 exten => _sw-9-.,10,Voicemail(u${ext})
-exten => _sw-9-.,11,Goto(s\,10)
+exten => _sw-9-.,11,Goto(s\,11)
 exten => sw-9-,10,Goto(sw-9-.|10)
 exten => sw-9-NOANSWER,10,Voicemail(u${ext})
-exten => sw-9-NOANSWER,11,Goto(s\,10)
-exten => sw-9-ANSWER,10,Goto(s\,10)
+exten => sw-9-NOANSWER,11,Goto(s\,11)
+exten => sw-9-ANSWER,10,Goto(s\,11)
 exten => sw-9-BUSY,10,Voicemail(b${ext})
-exten => sw-9-BUSY,11,Goto(s\,10)
+exten => sw-9-BUSY,11,Goto(s\,11)
 exten => sw-9-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-9-DONTCALL,11,Goto(s\,10)
+exten => sw-9-DONTCALL,11,Goto(s\,11)
 exten => sw-9-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-9-TORTURE,11,Goto(s\,10)
+exten => sw-9-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_8]
@@ -219,21 +227,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-10-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_8-10)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-10-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_8-10)
+exten => s,12,Return()
 exten => _sw-10-.,10,Voicemail(u${ext})
-exten => _sw-10-.,11,Goto(s\,10)
+exten => _sw-10-.,11,Goto(s\,11)
 exten => sw-10-,10,Goto(sw-10-.|10)
 exten => sw-10-NOANSWER,10,Voicemail(u${ext})
-exten => sw-10-NOANSWER,11,Goto(s\,10)
-exten => sw-10-ANSWER,10,Goto(s\,10)
+exten => sw-10-NOANSWER,11,Goto(s\,11)
+exten => sw-10-ANSWER,10,Goto(s\,11)
 exten => sw-10-BUSY,10,Voicemail(b${ext})
-exten => sw-10-BUSY,11,Goto(s\,10)
+exten => sw-10-BUSY,11,Goto(s\,11)
 exten => sw-10-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-10-DONTCALL,11,Goto(s\,10)
+exten => sw-10-DONTCALL,11,Goto(s\,11)
 exten => sw-10-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-10-TORTURE,11,Goto(s\,10)
+exten => sw-10-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_9]
@@ -245,21 +254,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-11-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_9-11)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-11-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_9-11)
+exten => s,12,Return()
 exten => _sw-11-.,10,Voicemail(u${ext})
-exten => _sw-11-.,11,Goto(s\,10)
+exten => _sw-11-.,11,Goto(s\,11)
 exten => sw-11-,10,Goto(sw-11-.|10)
 exten => sw-11-NOANSWER,10,Voicemail(u${ext})
-exten => sw-11-NOANSWER,11,Goto(s\,10)
-exten => sw-11-ANSWER,10,Goto(s\,10)
+exten => sw-11-NOANSWER,11,Goto(s\,11)
+exten => sw-11-ANSWER,10,Goto(s\,11)
 exten => sw-11-BUSY,10,Voicemail(b${ext})
-exten => sw-11-BUSY,11,Goto(s\,10)
+exten => sw-11-BUSY,11,Goto(s\,11)
 exten => sw-11-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-11-DONTCALL,11,Goto(s\,10)
+exten => sw-11-DONTCALL,11,Goto(s\,11)
 exten => sw-11-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-11-TORTURE,11,Goto(s\,10)
+exten => sw-11-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_10]
@@ -271,21 +281,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-12-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_10-12)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-12-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_10-12)
+exten => s,12,Return()
 exten => _sw-12-.,10,Voicemail(u${ext})
-exten => _sw-12-.,11,Goto(s\,10)
+exten => _sw-12-.,11,Goto(s\,11)
 exten => sw-12-,10,Goto(sw-12-.|10)
 exten => sw-12-NOANSWER,10,Voicemail(u${ext})
-exten => sw-12-NOANSWER,11,Goto(s\,10)
-exten => sw-12-ANSWER,10,Goto(s\,10)
+exten => sw-12-NOANSWER,11,Goto(s\,11)
+exten => sw-12-ANSWER,10,Goto(s\,11)
 exten => sw-12-BUSY,10,Voicemail(b${ext})
-exten => sw-12-BUSY,11,Goto(s\,10)
+exten => sw-12-BUSY,11,Goto(s\,11)
 exten => sw-12-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-12-DONTCALL,11,Goto(s\,10)
+exten => sw-12-DONTCALL,11,Goto(s\,11)
 exten => sw-12-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-12-TORTURE,11,Goto(s\,10)
+exten => sw-12-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_11]
@@ -297,21 +308,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-13-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_11-13)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-13-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_11-13)
+exten => s,12,Return()
 exten => _sw-13-.,10,Voicemail(u${ext})
-exten => _sw-13-.,11,Goto(s\,10)
+exten => _sw-13-.,11,Goto(s\,11)
 exten => sw-13-,10,Goto(sw-13-.|10)
 exten => sw-13-NOANSWER,10,Voicemail(u${ext})
-exten => sw-13-NOANSWER,11,Goto(s\,10)
-exten => sw-13-ANSWER,10,Goto(s\,10)
+exten => sw-13-NOANSWER,11,Goto(s\,11)
+exten => sw-13-ANSWER,10,Goto(s\,11)
 exten => sw-13-BUSY,10,Voicemail(b${ext})
-exten => sw-13-BUSY,11,Goto(s\,10)
+exten => sw-13-BUSY,11,Goto(s\,11)
 exten => sw-13-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-13-DONTCALL,11,Goto(s\,10)
+exten => sw-13-DONTCALL,11,Goto(s\,11)
 exten => sw-13-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-13-TORTURE,11,Goto(s\,10)
+exten => sw-13-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_12]
@@ -323,21 +335,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-14-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_12-14)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-14-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_12-14)
+exten => s,12,Return()
 exten => _sw-14-.,10,Voicemail(u${ext})
-exten => _sw-14-.,11,Goto(s\,10)
+exten => _sw-14-.,11,Goto(s\,11)
 exten => sw-14-,10,Goto(sw-14-.|10)
 exten => sw-14-NOANSWER,10,Voicemail(u${ext})
-exten => sw-14-NOANSWER,11,Goto(s\,10)
-exten => sw-14-ANSWER,10,Goto(s\,10)
+exten => sw-14-NOANSWER,11,Goto(s\,11)
+exten => sw-14-ANSWER,10,Goto(s\,11)
 exten => sw-14-BUSY,10,Voicemail(b${ext})
-exten => sw-14-BUSY,11,Goto(s\,10)
+exten => sw-14-BUSY,11,Goto(s\,11)
 exten => sw-14-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-14-DONTCALL,11,Goto(s\,10)
+exten => sw-14-DONTCALL,11,Goto(s\,11)
 exten => sw-14-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-14-TORTURE,11,Goto(s\,10)
+exten => sw-14-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_13]
@@ -349,21 +362,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-15-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_13-15)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-15-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_13-15)
+exten => s,12,Return()
 exten => _sw-15-.,10,Voicemail(u${ext})
-exten => _sw-15-.,11,Goto(s\,10)
+exten => _sw-15-.,11,Goto(s\,11)
 exten => sw-15-,10,Goto(sw-15-.|10)
 exten => sw-15-NOANSWER,10,Voicemail(u${ext})
-exten => sw-15-NOANSWER,11,Goto(s\,10)
-exten => sw-15-ANSWER,10,Goto(s\,10)
+exten => sw-15-NOANSWER,11,Goto(s\,11)
+exten => sw-15-ANSWER,10,Goto(s\,11)
 exten => sw-15-BUSY,10,Voicemail(b${ext})
-exten => sw-15-BUSY,11,Goto(s\,10)
+exten => sw-15-BUSY,11,Goto(s\,11)
 exten => sw-15-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-15-DONTCALL,11,Goto(s\,10)
+exten => sw-15-DONTCALL,11,Goto(s\,11)
 exten => sw-15-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-15-TORTURE,11,Goto(s\,10)
+exten => sw-15-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_14]
@@ -375,21 +389,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-16-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_14-16)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-16-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_14-16)
+exten => s,12,Return()
 exten => _sw-16-.,10,Voicemail(u${ext})
-exten => _sw-16-.,11,Goto(s\,10)
+exten => _sw-16-.,11,Goto(s\,11)
 exten => sw-16-,10,Goto(sw-16-.|10)
 exten => sw-16-NOANSWER,10,Voicemail(u${ext})
-exten => sw-16-NOANSWER,11,Goto(s\,10)
-exten => sw-16-ANSWER,10,Goto(s\,10)
+exten => sw-16-NOANSWER,11,Goto(s\,11)
+exten => sw-16-ANSWER,10,Goto(s\,11)
 exten => sw-16-BUSY,10,Voicemail(b${ext})
-exten => sw-16-BUSY,11,Goto(s\,10)
+exten => sw-16-BUSY,11,Goto(s\,11)
 exten => sw-16-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-16-DONTCALL,11,Goto(s\,10)
+exten => sw-16-DONTCALL,11,Goto(s\,11)
 exten => sw-16-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-16-TORTURE,11,Goto(s\,10)
+exten => sw-16-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_15]
@@ -401,21 +416,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-17-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_15-17)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-17-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_15-17)
+exten => s,12,Return()
 exten => _sw-17-.,10,Voicemail(u${ext})
-exten => _sw-17-.,11,Goto(s\,10)
+exten => _sw-17-.,11,Goto(s\,11)
 exten => sw-17-,10,Goto(sw-17-.|10)
 exten => sw-17-NOANSWER,10,Voicemail(u${ext})
-exten => sw-17-NOANSWER,11,Goto(s\,10)
-exten => sw-17-ANSWER,10,Goto(s\,10)
+exten => sw-17-NOANSWER,11,Goto(s\,11)
+exten => sw-17-ANSWER,10,Goto(s\,11)
 exten => sw-17-BUSY,10,Voicemail(b${ext})
-exten => sw-17-BUSY,11,Goto(s\,10)
+exten => sw-17-BUSY,11,Goto(s\,11)
 exten => sw-17-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-17-DONTCALL,11,Goto(s\,10)
+exten => sw-17-DONTCALL,11,Goto(s\,11)
 exten => sw-17-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-17-TORTURE,11,Goto(s\,10)
+exten => sw-17-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_16]
@@ -427,21 +443,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-18-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_16-18)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-18-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_16-18)
+exten => s,12,Return()
 exten => _sw-18-.,10,Voicemail(u${ext})
-exten => _sw-18-.,11,Goto(s\,10)
+exten => _sw-18-.,11,Goto(s\,11)
 exten => sw-18-,10,Goto(sw-18-.|10)
 exten => sw-18-NOANSWER,10,Voicemail(u${ext})
-exten => sw-18-NOANSWER,11,Goto(s\,10)
-exten => sw-18-ANSWER,10,Goto(s\,10)
+exten => sw-18-NOANSWER,11,Goto(s\,11)
+exten => sw-18-ANSWER,10,Goto(s\,11)
 exten => sw-18-BUSY,10,Voicemail(b${ext})
-exten => sw-18-BUSY,11,Goto(s\,10)
+exten => sw-18-BUSY,11,Goto(s\,11)
 exten => sw-18-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-18-DONTCALL,11,Goto(s\,10)
+exten => sw-18-DONTCALL,11,Goto(s\,11)
 exten => sw-18-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-18-TORTURE,11,Goto(s\,10)
+exten => sw-18-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_17]
@@ -453,21 +470,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-19-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_17-19)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-19-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_17-19)
+exten => s,12,Return()
 exten => _sw-19-.,10,Voicemail(u${ext})
-exten => _sw-19-.,11,Goto(s\,10)
+exten => _sw-19-.,11,Goto(s\,11)
 exten => sw-19-,10,Goto(sw-19-.|10)
 exten => sw-19-NOANSWER,10,Voicemail(u${ext})
-exten => sw-19-NOANSWER,11,Goto(s\,10)
-exten => sw-19-ANSWER,10,Goto(s\,10)
+exten => sw-19-NOANSWER,11,Goto(s\,11)
+exten => sw-19-ANSWER,10,Goto(s\,11)
 exten => sw-19-BUSY,10,Voicemail(b${ext})
-exten => sw-19-BUSY,11,Goto(s\,10)
+exten => sw-19-BUSY,11,Goto(s\,11)
 exten => sw-19-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-19-DONTCALL,11,Goto(s\,10)
+exten => sw-19-DONTCALL,11,Goto(s\,11)
 exten => sw-19-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-19-TORTURE,11,Goto(s\,10)
+exten => sw-19-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_18]
@@ -479,21 +497,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-20-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_18-20)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-20-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_18-20)
+exten => s,12,Return()
 exten => _sw-20-.,10,Voicemail(u${ext})
-exten => _sw-20-.,11,Goto(s\,10)
+exten => _sw-20-.,11,Goto(s\,11)
 exten => sw-20-,10,Goto(sw-20-.|10)
 exten => sw-20-NOANSWER,10,Voicemail(u${ext})
-exten => sw-20-NOANSWER,11,Goto(s\,10)
-exten => sw-20-ANSWER,10,Goto(s\,10)
+exten => sw-20-NOANSWER,11,Goto(s\,11)
+exten => sw-20-ANSWER,10,Goto(s\,11)
 exten => sw-20-BUSY,10,Voicemail(b${ext})
-exten => sw-20-BUSY,11,Goto(s\,10)
+exten => sw-20-BUSY,11,Goto(s\,11)
 exten => sw-20-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-20-DONTCALL,11,Goto(s\,10)
+exten => sw-20-DONTCALL,11,Goto(s\,11)
 exten => sw-20-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-20-TORTURE,11,Goto(s\,10)
+exten => sw-20-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_19]
@@ -505,21 +524,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-21-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_19-21)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-21-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_19-21)
+exten => s,12,Return()
 exten => _sw-21-.,10,Voicemail(u${ext})
-exten => _sw-21-.,11,Goto(s\,10)
+exten => _sw-21-.,11,Goto(s\,11)
 exten => sw-21-,10,Goto(sw-21-.|10)
 exten => sw-21-NOANSWER,10,Voicemail(u${ext})
-exten => sw-21-NOANSWER,11,Goto(s\,10)
-exten => sw-21-ANSWER,10,Goto(s\,10)
+exten => sw-21-NOANSWER,11,Goto(s\,11)
+exten => sw-21-ANSWER,10,Goto(s\,11)
 exten => sw-21-BUSY,10,Voicemail(b${ext})
-exten => sw-21-BUSY,11,Goto(s\,10)
+exten => sw-21-BUSY,11,Goto(s\,11)
 exten => sw-21-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-21-DONTCALL,11,Goto(s\,10)
+exten => sw-21-DONTCALL,11,Goto(s\,11)
 exten => sw-21-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-21-TORTURE,11,Goto(s\,10)
+exten => sw-21-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_20]
@@ -531,21 +551,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-22-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_20-22)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-22-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_20-22)
+exten => s,12,Return()
 exten => _sw-22-.,10,Voicemail(u${ext})
-exten => _sw-22-.,11,Goto(s\,10)
+exten => _sw-22-.,11,Goto(s\,11)
 exten => sw-22-,10,Goto(sw-22-.|10)
 exten => sw-22-NOANSWER,10,Voicemail(u${ext})
-exten => sw-22-NOANSWER,11,Goto(s\,10)
-exten => sw-22-ANSWER,10,Goto(s\,10)
+exten => sw-22-NOANSWER,11,Goto(s\,11)
+exten => sw-22-ANSWER,10,Goto(s\,11)
 exten => sw-22-BUSY,10,Voicemail(b${ext})
-exten => sw-22-BUSY,11,Goto(s\,10)
+exten => sw-22-BUSY,11,Goto(s\,11)
 exten => sw-22-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-22-DONTCALL,11,Goto(s\,10)
+exten => sw-22-DONTCALL,11,Goto(s\,11)
 exten => sw-22-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-22-TORTURE,11,Goto(s\,10)
+exten => sw-22-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_21]
@@ -557,21 +578,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-23-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_21-23)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-23-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_21-23)
+exten => s,12,Return()
 exten => _sw-23-.,10,Voicemail(u${ext})
-exten => _sw-23-.,11,Goto(s\,10)
+exten => _sw-23-.,11,Goto(s\,11)
 exten => sw-23-,10,Goto(sw-23-.|10)
 exten => sw-23-NOANSWER,10,Voicemail(u${ext})
-exten => sw-23-NOANSWER,11,Goto(s\,10)
-exten => sw-23-ANSWER,10,Goto(s\,10)
+exten => sw-23-NOANSWER,11,Goto(s\,11)
+exten => sw-23-ANSWER,10,Goto(s\,11)
 exten => sw-23-BUSY,10,Voicemail(b${ext})
-exten => sw-23-BUSY,11,Goto(s\,10)
+exten => sw-23-BUSY,11,Goto(s\,11)
 exten => sw-23-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-23-DONTCALL,11,Goto(s\,10)
+exten => sw-23-DONTCALL,11,Goto(s\,11)
 exten => sw-23-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-23-TORTURE,11,Goto(s\,10)
+exten => sw-23-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_22]
@@ -583,21 +605,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-24-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_22-24)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-24-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_22-24)
+exten => s,12,Return()
 exten => _sw-24-.,10,Voicemail(u${ext})
-exten => _sw-24-.,11,Goto(s\,10)
+exten => _sw-24-.,11,Goto(s\,11)
 exten => sw-24-,10,Goto(sw-24-.|10)
 exten => sw-24-NOANSWER,10,Voicemail(u${ext})
-exten => sw-24-NOANSWER,11,Goto(s\,10)
-exten => sw-24-ANSWER,10,Goto(s\,10)
+exten => sw-24-NOANSWER,11,Goto(s\,11)
+exten => sw-24-ANSWER,10,Goto(s\,11)
 exten => sw-24-BUSY,10,Voicemail(b${ext})
-exten => sw-24-BUSY,11,Goto(s\,10)
+exten => sw-24-BUSY,11,Goto(s\,11)
 exten => sw-24-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-24-DONTCALL,11,Goto(s\,10)
+exten => sw-24-DONTCALL,11,Goto(s\,11)
 exten => sw-24-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-24-TORTURE,11,Goto(s\,10)
+exten => sw-24-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_23]
@@ -609,21 +632,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-25-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_23-25)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-25-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_23-25)
+exten => s,12,Return()
 exten => _sw-25-.,10,Voicemail(u${ext})
-exten => _sw-25-.,11,Goto(s\,10)
+exten => _sw-25-.,11,Goto(s\,11)
 exten => sw-25-,10,Goto(sw-25-.|10)
 exten => sw-25-NOANSWER,10,Voicemail(u${ext})
-exten => sw-25-NOANSWER,11,Goto(s\,10)
-exten => sw-25-ANSWER,10,Goto(s\,10)
+exten => sw-25-NOANSWER,11,Goto(s\,11)
+exten => sw-25-ANSWER,10,Goto(s\,11)
 exten => sw-25-BUSY,10,Voicemail(b${ext})
-exten => sw-25-BUSY,11,Goto(s\,10)
+exten => sw-25-BUSY,11,Goto(s\,11)
 exten => sw-25-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-25-DONTCALL,11,Goto(s\,10)
+exten => sw-25-DONTCALL,11,Goto(s\,11)
 exten => sw-25-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-25-TORTURE,11,Goto(s\,10)
+exten => sw-25-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_24]
@@ -635,21 +659,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-26-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_24-26)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-26-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_24-26)
+exten => s,12,Return()
 exten => _sw-26-.,10,Voicemail(u${ext})
-exten => _sw-26-.,11,Goto(s\,10)
+exten => _sw-26-.,11,Goto(s\,11)
 exten => sw-26-,10,Goto(sw-26-.|10)
 exten => sw-26-NOANSWER,10,Voicemail(u${ext})
-exten => sw-26-NOANSWER,11,Goto(s\,10)
-exten => sw-26-ANSWER,10,Goto(s\,10)
+exten => sw-26-NOANSWER,11,Goto(s\,11)
+exten => sw-26-ANSWER,10,Goto(s\,11)
 exten => sw-26-BUSY,10,Voicemail(b${ext})
-exten => sw-26-BUSY,11,Goto(s\,10)
+exten => sw-26-BUSY,11,Goto(s\,11)
 exten => sw-26-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-26-DONTCALL,11,Goto(s\,10)
+exten => sw-26-DONTCALL,11,Goto(s\,11)
 exten => sw-26-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-26-TORTURE,11,Goto(s\,10)
+exten => sw-26-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_25]
@@ -661,21 +686,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-27-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_25-27)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-27-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_25-27)
+exten => s,12,Return()
 exten => _sw-27-.,10,Voicemail(u${ext})
-exten => _sw-27-.,11,Goto(s\,10)
+exten => _sw-27-.,11,Goto(s\,11)
 exten => sw-27-,10,Goto(sw-27-.|10)
 exten => sw-27-NOANSWER,10,Voicemail(u${ext})
-exten => sw-27-NOANSWER,11,Goto(s\,10)
-exten => sw-27-ANSWER,10,Goto(s\,10)
+exten => sw-27-NOANSWER,11,Goto(s\,11)
+exten => sw-27-ANSWER,10,Goto(s\,11)
 exten => sw-27-BUSY,10,Voicemail(b${ext})
-exten => sw-27-BUSY,11,Goto(s\,10)
+exten => sw-27-BUSY,11,Goto(s\,11)
 exten => sw-27-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-27-DONTCALL,11,Goto(s\,10)
+exten => sw-27-DONTCALL,11,Goto(s\,11)
 exten => sw-27-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-27-TORTURE,11,Goto(s\,10)
+exten => sw-27-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_26]
@@ -687,21 +713,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-28-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_26-28)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-28-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_26-28)
+exten => s,12,Return()
 exten => _sw-28-.,10,Voicemail(u${ext})
-exten => _sw-28-.,11,Goto(s\,10)
+exten => _sw-28-.,11,Goto(s\,11)
 exten => sw-28-,10,Goto(sw-28-.|10)
 exten => sw-28-NOANSWER,10,Voicemail(u${ext})
-exten => sw-28-NOANSWER,11,Goto(s\,10)
-exten => sw-28-ANSWER,10,Goto(s\,10)
+exten => sw-28-NOANSWER,11,Goto(s\,11)
+exten => sw-28-ANSWER,10,Goto(s\,11)
 exten => sw-28-BUSY,10,Voicemail(b${ext})
-exten => sw-28-BUSY,11,Goto(s\,10)
+exten => sw-28-BUSY,11,Goto(s\,11)
 exten => sw-28-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-28-DONTCALL,11,Goto(s\,10)
+exten => sw-28-DONTCALL,11,Goto(s\,11)
 exten => sw-28-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-28-TORTURE,11,Goto(s\,10)
+exten => sw-28-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_27]
@@ -713,21 +740,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-29-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_27-29)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-29-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_27-29)
+exten => s,12,Return()
 exten => _sw-29-.,10,Voicemail(u${ext})
-exten => _sw-29-.,11,Goto(s\,10)
+exten => _sw-29-.,11,Goto(s\,11)
 exten => sw-29-,10,Goto(sw-29-.|10)
 exten => sw-29-NOANSWER,10,Voicemail(u${ext})
-exten => sw-29-NOANSWER,11,Goto(s\,10)
-exten => sw-29-ANSWER,10,Goto(s\,10)
+exten => sw-29-NOANSWER,11,Goto(s\,11)
+exten => sw-29-ANSWER,10,Goto(s\,11)
 exten => sw-29-BUSY,10,Voicemail(b${ext})
-exten => sw-29-BUSY,11,Goto(s\,10)
+exten => sw-29-BUSY,11,Goto(s\,11)
 exten => sw-29-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-29-DONTCALL,11,Goto(s\,10)
+exten => sw-29-DONTCALL,11,Goto(s\,11)
 exten => sw-29-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-29-TORTURE,11,Goto(s\,10)
+exten => sw-29-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_28]
@@ -739,21 +767,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-30-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_28-30)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-30-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_28-30)
+exten => s,12,Return()
 exten => _sw-30-.,10,Voicemail(u${ext})
-exten => _sw-30-.,11,Goto(s\,10)
+exten => _sw-30-.,11,Goto(s\,11)
 exten => sw-30-,10,Goto(sw-30-.|10)
 exten => sw-30-NOANSWER,10,Voicemail(u${ext})
-exten => sw-30-NOANSWER,11,Goto(s\,10)
-exten => sw-30-ANSWER,10,Goto(s\,10)
+exten => sw-30-NOANSWER,11,Goto(s\,11)
+exten => sw-30-ANSWER,10,Goto(s\,11)
 exten => sw-30-BUSY,10,Voicemail(b${ext})
-exten => sw-30-BUSY,11,Goto(s\,10)
+exten => sw-30-BUSY,11,Goto(s\,11)
 exten => sw-30-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-30-DONTCALL,11,Goto(s\,10)
+exten => sw-30-DONTCALL,11,Goto(s\,11)
 exten => sw-30-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-30-TORTURE,11,Goto(s\,10)
+exten => sw-30-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_29]
@@ -765,21 +794,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-31-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_29-31)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-31-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_29-31)
+exten => s,12,Return()
 exten => _sw-31-.,10,Voicemail(u${ext})
-exten => _sw-31-.,11,Goto(s\,10)
+exten => _sw-31-.,11,Goto(s\,11)
 exten => sw-31-,10,Goto(sw-31-.|10)
 exten => sw-31-NOANSWER,10,Voicemail(u${ext})
-exten => sw-31-NOANSWER,11,Goto(s\,10)
-exten => sw-31-ANSWER,10,Goto(s\,10)
+exten => sw-31-NOANSWER,11,Goto(s\,11)
+exten => sw-31-ANSWER,10,Goto(s\,11)
 exten => sw-31-BUSY,10,Voicemail(b${ext})
-exten => sw-31-BUSY,11,Goto(s\,10)
+exten => sw-31-BUSY,11,Goto(s\,11)
 exten => sw-31-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-31-DONTCALL,11,Goto(s\,10)
+exten => sw-31-DONTCALL,11,Goto(s\,11)
 exten => sw-31-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-31-TORTURE,11,Goto(s\,10)
+exten => sw-31-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_30]
@@ -791,21 +821,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-32-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_30-32)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-32-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_30-32)
+exten => s,12,Return()
 exten => _sw-32-.,10,Voicemail(u${ext})
-exten => _sw-32-.,11,Goto(s\,10)
+exten => _sw-32-.,11,Goto(s\,11)
 exten => sw-32-,10,Goto(sw-32-.|10)
 exten => sw-32-NOANSWER,10,Voicemail(u${ext})
-exten => sw-32-NOANSWER,11,Goto(s\,10)
-exten => sw-32-ANSWER,10,Goto(s\,10)
+exten => sw-32-NOANSWER,11,Goto(s\,11)
+exten => sw-32-ANSWER,10,Goto(s\,11)
 exten => sw-32-BUSY,10,Voicemail(b${ext})
-exten => sw-32-BUSY,11,Goto(s\,10)
+exten => sw-32-BUSY,11,Goto(s\,11)
 exten => sw-32-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-32-DONTCALL,11,Goto(s\,10)
+exten => sw-32-DONTCALL,11,Goto(s\,11)
 exten => sw-32-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-32-TORTURE,11,Goto(s\,10)
+exten => sw-32-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_31]
@@ -817,21 +848,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-33-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_31-33)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-33-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_31-33)
+exten => s,12,Return()
 exten => _sw-33-.,10,Voicemail(u${ext})
-exten => _sw-33-.,11,Goto(s\,10)
+exten => _sw-33-.,11,Goto(s\,11)
 exten => sw-33-,10,Goto(sw-33-.|10)
 exten => sw-33-NOANSWER,10,Voicemail(u${ext})
-exten => sw-33-NOANSWER,11,Goto(s\,10)
-exten => sw-33-ANSWER,10,Goto(s\,10)
+exten => sw-33-NOANSWER,11,Goto(s\,11)
+exten => sw-33-ANSWER,10,Goto(s\,11)
 exten => sw-33-BUSY,10,Voicemail(b${ext})
-exten => sw-33-BUSY,11,Goto(s\,10)
+exten => sw-33-BUSY,11,Goto(s\,11)
 exten => sw-33-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-33-DONTCALL,11,Goto(s\,10)
+exten => sw-33-DONTCALL,11,Goto(s\,11)
 exten => sw-33-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-33-TORTURE,11,Goto(s\,10)
+exten => sw-33-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_32]
@@ -843,21 +875,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-34-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_32-34)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-34-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_32-34)
+exten => s,12,Return()
 exten => _sw-34-.,10,Voicemail(u${ext})
-exten => _sw-34-.,11,Goto(s\,10)
+exten => _sw-34-.,11,Goto(s\,11)
 exten => sw-34-,10,Goto(sw-34-.|10)
 exten => sw-34-NOANSWER,10,Voicemail(u${ext})
-exten => sw-34-NOANSWER,11,Goto(s\,10)
-exten => sw-34-ANSWER,10,Goto(s\,10)
+exten => sw-34-NOANSWER,11,Goto(s\,11)
+exten => sw-34-ANSWER,10,Goto(s\,11)
 exten => sw-34-BUSY,10,Voicemail(b${ext})
-exten => sw-34-BUSY,11,Goto(s\,10)
+exten => sw-34-BUSY,11,Goto(s\,11)
 exten => sw-34-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-34-DONTCALL,11,Goto(s\,10)
+exten => sw-34-DONTCALL,11,Goto(s\,11)
 exten => sw-34-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-34-TORTURE,11,Goto(s\,10)
+exten => sw-34-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_33]
@@ -869,21 +902,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-35-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_33-35)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-35-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_33-35)
+exten => s,12,Return()
 exten => _sw-35-.,10,Voicemail(u${ext})
-exten => _sw-35-.,11,Goto(s\,10)
+exten => _sw-35-.,11,Goto(s\,11)
 exten => sw-35-,10,Goto(sw-35-.|10)
 exten => sw-35-NOANSWER,10,Voicemail(u${ext})
-exten => sw-35-NOANSWER,11,Goto(s\,10)
-exten => sw-35-ANSWER,10,Goto(s\,10)
+exten => sw-35-NOANSWER,11,Goto(s\,11)
+exten => sw-35-ANSWER,10,Goto(s\,11)
 exten => sw-35-BUSY,10,Voicemail(b${ext})
-exten => sw-35-BUSY,11,Goto(s\,10)
+exten => sw-35-BUSY,11,Goto(s\,11)
 exten => sw-35-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-35-DONTCALL,11,Goto(s\,10)
+exten => sw-35-DONTCALL,11,Goto(s\,11)
 exten => sw-35-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-35-TORTURE,11,Goto(s\,10)
+exten => sw-35-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_34]
@@ -895,21 +929,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-36-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_34-36)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-36-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_34-36)
+exten => s,12,Return()
 exten => _sw-36-.,10,Voicemail(u${ext})
-exten => _sw-36-.,11,Goto(s\,10)
+exten => _sw-36-.,11,Goto(s\,11)
 exten => sw-36-,10,Goto(sw-36-.|10)
 exten => sw-36-NOANSWER,10,Voicemail(u${ext})
-exten => sw-36-NOANSWER,11,Goto(s\,10)
-exten => sw-36-ANSWER,10,Goto(s\,10)
+exten => sw-36-NOANSWER,11,Goto(s\,11)
+exten => sw-36-ANSWER,10,Goto(s\,11)
 exten => sw-36-BUSY,10,Voicemail(b${ext})
-exten => sw-36-BUSY,11,Goto(s\,10)
+exten => sw-36-BUSY,11,Goto(s\,11)
 exten => sw-36-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-36-DONTCALL,11,Goto(s\,10)
+exten => sw-36-DONTCALL,11,Goto(s\,11)
 exten => sw-36-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-36-TORTURE,11,Goto(s\,10)
+exten => sw-36-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_35]
@@ -921,21 +956,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-37-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_35-37)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-37-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_35-37)
+exten => s,12,Return()
 exten => _sw-37-.,10,Voicemail(u${ext})
-exten => _sw-37-.,11,Goto(s\,10)
+exten => _sw-37-.,11,Goto(s\,11)
 exten => sw-37-,10,Goto(sw-37-.|10)
 exten => sw-37-NOANSWER,10,Voicemail(u${ext})
-exten => sw-37-NOANSWER,11,Goto(s\,10)
-exten => sw-37-ANSWER,10,Goto(s\,10)
+exten => sw-37-NOANSWER,11,Goto(s\,11)
+exten => sw-37-ANSWER,10,Goto(s\,11)
 exten => sw-37-BUSY,10,Voicemail(b${ext})
-exten => sw-37-BUSY,11,Goto(s\,10)
+exten => sw-37-BUSY,11,Goto(s\,11)
 exten => sw-37-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-37-DONTCALL,11,Goto(s\,10)
+exten => sw-37-DONTCALL,11,Goto(s\,11)
 exten => sw-37-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-37-TORTURE,11,Goto(s\,10)
+exten => sw-37-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_36]
@@ -947,21 +983,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-38-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_36-38)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-38-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_36-38)
+exten => s,12,Return()
 exten => _sw-38-.,10,Voicemail(u${ext})
-exten => _sw-38-.,11,Goto(s\,10)
+exten => _sw-38-.,11,Goto(s\,11)
 exten => sw-38-,10,Goto(sw-38-.|10)
 exten => sw-38-NOANSWER,10,Voicemail(u${ext})
-exten => sw-38-NOANSWER,11,Goto(s\,10)
-exten => sw-38-ANSWER,10,Goto(s\,10)
+exten => sw-38-NOANSWER,11,Goto(s\,11)
+exten => sw-38-ANSWER,10,Goto(s\,11)
 exten => sw-38-BUSY,10,Voicemail(b${ext})
-exten => sw-38-BUSY,11,Goto(s\,10)
+exten => sw-38-BUSY,11,Goto(s\,11)
 exten => sw-38-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-38-DONTCALL,11,Goto(s\,10)
+exten => sw-38-DONTCALL,11,Goto(s\,11)
 exten => sw-38-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-38-TORTURE,11,Goto(s\,10)
+exten => sw-38-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_37]
@@ -973,21 +1010,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-39-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_37-39)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-39-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_37-39)
+exten => s,12,Return()
 exten => _sw-39-.,10,Voicemail(u${ext})
-exten => _sw-39-.,11,Goto(s\,10)
+exten => _sw-39-.,11,Goto(s\,11)
 exten => sw-39-,10,Goto(sw-39-.|10)
 exten => sw-39-NOANSWER,10,Voicemail(u${ext})
-exten => sw-39-NOANSWER,11,Goto(s\,10)
-exten => sw-39-ANSWER,10,Goto(s\,10)
+exten => sw-39-NOANSWER,11,Goto(s\,11)
+exten => sw-39-ANSWER,10,Goto(s\,11)
 exten => sw-39-BUSY,10,Voicemail(b${ext})
-exten => sw-39-BUSY,11,Goto(s\,10)
+exten => sw-39-BUSY,11,Goto(s\,11)
 exten => sw-39-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-39-DONTCALL,11,Goto(s\,10)
+exten => sw-39-DONTCALL,11,Goto(s\,11)
 exten => sw-39-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-39-TORTURE,11,Goto(s\,10)
+exten => sw-39-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_38]
@@ -999,21 +1037,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-40-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_38-40)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-40-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_38-40)
+exten => s,12,Return()
 exten => _sw-40-.,10,Voicemail(u${ext})
-exten => _sw-40-.,11,Goto(s\,10)
+exten => _sw-40-.,11,Goto(s\,11)
 exten => sw-40-,10,Goto(sw-40-.|10)
 exten => sw-40-NOANSWER,10,Voicemail(u${ext})
-exten => sw-40-NOANSWER,11,Goto(s\,10)
-exten => sw-40-ANSWER,10,Goto(s\,10)
+exten => sw-40-NOANSWER,11,Goto(s\,11)
+exten => sw-40-ANSWER,10,Goto(s\,11)
 exten => sw-40-BUSY,10,Voicemail(b${ext})
-exten => sw-40-BUSY,11,Goto(s\,10)
+exten => sw-40-BUSY,11,Goto(s\,11)
 exten => sw-40-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-40-DONTCALL,11,Goto(s\,10)
+exten => sw-40-DONTCALL,11,Goto(s\,11)
 exten => sw-40-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-40-TORTURE,11,Goto(s\,10)
+exten => sw-40-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_39]
@@ -1025,21 +1064,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-41-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_39-41)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-41-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_39-41)
+exten => s,12,Return()
 exten => _sw-41-.,10,Voicemail(u${ext})
-exten => _sw-41-.,11,Goto(s\,10)
+exten => _sw-41-.,11,Goto(s\,11)
 exten => sw-41-,10,Goto(sw-41-.|10)
 exten => sw-41-NOANSWER,10,Voicemail(u${ext})
-exten => sw-41-NOANSWER,11,Goto(s\,10)
-exten => sw-41-ANSWER,10,Goto(s\,10)
+exten => sw-41-NOANSWER,11,Goto(s\,11)
+exten => sw-41-ANSWER,10,Goto(s\,11)
 exten => sw-41-BUSY,10,Voicemail(b${ext})
-exten => sw-41-BUSY,11,Goto(s\,10)
+exten => sw-41-BUSY,11,Goto(s\,11)
 exten => sw-41-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-41-DONTCALL,11,Goto(s\,10)
+exten => sw-41-DONTCALL,11,Goto(s\,11)
 exten => sw-41-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-41-TORTURE,11,Goto(s\,10)
+exten => sw-41-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_40]
@@ -1051,21 +1091,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-42-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_40-42)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-42-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_40-42)
+exten => s,12,Return()
 exten => _sw-42-.,10,Voicemail(u${ext})
-exten => _sw-42-.,11,Goto(s\,10)
+exten => _sw-42-.,11,Goto(s\,11)
 exten => sw-42-,10,Goto(sw-42-.|10)
 exten => sw-42-NOANSWER,10,Voicemail(u${ext})
-exten => sw-42-NOANSWER,11,Goto(s\,10)
-exten => sw-42-ANSWER,10,Goto(s\,10)
+exten => sw-42-NOANSWER,11,Goto(s\,11)
+exten => sw-42-ANSWER,10,Goto(s\,11)
 exten => sw-42-BUSY,10,Voicemail(b${ext})
-exten => sw-42-BUSY,11,Goto(s\,10)
+exten => sw-42-BUSY,11,Goto(s\,11)
 exten => sw-42-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-42-DONTCALL,11,Goto(s\,10)
+exten => sw-42-DONTCALL,11,Goto(s\,11)
 exten => sw-42-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-42-TORTURE,11,Goto(s\,10)
+exten => sw-42-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_41]
@@ -1077,21 +1118,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-43-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_41-43)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-43-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_41-43)
+exten => s,12,Return()
 exten => _sw-43-.,10,Voicemail(u${ext})
-exten => _sw-43-.,11,Goto(s\,10)
+exten => _sw-43-.,11,Goto(s\,11)
 exten => sw-43-,10,Goto(sw-43-.|10)
 exten => sw-43-NOANSWER,10,Voicemail(u${ext})
-exten => sw-43-NOANSWER,11,Goto(s\,10)
-exten => sw-43-ANSWER,10,Goto(s\,10)
+exten => sw-43-NOANSWER,11,Goto(s\,11)
+exten => sw-43-ANSWER,10,Goto(s\,11)
 exten => sw-43-BUSY,10,Voicemail(b${ext})
-exten => sw-43-BUSY,11,Goto(s\,10)
+exten => sw-43-BUSY,11,Goto(s\,11)
 exten => sw-43-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-43-DONTCALL,11,Goto(s\,10)
+exten => sw-43-DONTCALL,11,Goto(s\,11)
 exten => sw-43-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-43-TORTURE,11,Goto(s\,10)
+exten => sw-43-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_42]
@@ -1103,21 +1145,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-44-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_42-44)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-44-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_42-44)
+exten => s,12,Return()
 exten => _sw-44-.,10,Voicemail(u${ext})
-exten => _sw-44-.,11,Goto(s\,10)
+exten => _sw-44-.,11,Goto(s\,11)
 exten => sw-44-,10,Goto(sw-44-.|10)
 exten => sw-44-NOANSWER,10,Voicemail(u${ext})
-exten => sw-44-NOANSWER,11,Goto(s\,10)
-exten => sw-44-ANSWER,10,Goto(s\,10)
+exten => sw-44-NOANSWER,11,Goto(s\,11)
+exten => sw-44-ANSWER,10,Goto(s\,11)
 exten => sw-44-BUSY,10,Voicemail(b${ext})
-exten => sw-44-BUSY,11,Goto(s\,10)
+exten => sw-44-BUSY,11,Goto(s\,11)
 exten => sw-44-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-44-DONTCALL,11,Goto(s\,10)
+exten => sw-44-DONTCALL,11,Goto(s\,11)
 exten => sw-44-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-44-TORTURE,11,Goto(s\,10)
+exten => sw-44-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_43]
@@ -1129,21 +1172,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-45-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_43-45)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-45-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_43-45)
+exten => s,12,Return()
 exten => _sw-45-.,10,Voicemail(u${ext})
-exten => _sw-45-.,11,Goto(s\,10)
+exten => _sw-45-.,11,Goto(s\,11)
 exten => sw-45-,10,Goto(sw-45-.|10)
 exten => sw-45-NOANSWER,10,Voicemail(u${ext})
-exten => sw-45-NOANSWER,11,Goto(s\,10)
-exten => sw-45-ANSWER,10,Goto(s\,10)
+exten => sw-45-NOANSWER,11,Goto(s\,11)
+exten => sw-45-ANSWER,10,Goto(s\,11)
 exten => sw-45-BUSY,10,Voicemail(b${ext})
-exten => sw-45-BUSY,11,Goto(s\,10)
+exten => sw-45-BUSY,11,Goto(s\,11)
 exten => sw-45-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-45-DONTCALL,11,Goto(s\,10)
+exten => sw-45-DONTCALL,11,Goto(s\,11)
 exten => sw-45-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-45-TORTURE,11,Goto(s\,10)
+exten => sw-45-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_44]
@@ -1155,21 +1199,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-46-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_44-46)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-46-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_44-46)
+exten => s,12,Return()
 exten => _sw-46-.,10,Voicemail(u${ext})
-exten => _sw-46-.,11,Goto(s\,10)
+exten => _sw-46-.,11,Goto(s\,11)
 exten => sw-46-,10,Goto(sw-46-.|10)
 exten => sw-46-NOANSWER,10,Voicemail(u${ext})
-exten => sw-46-NOANSWER,11,Goto(s\,10)
-exten => sw-46-ANSWER,10,Goto(s\,10)
+exten => sw-46-NOANSWER,11,Goto(s\,11)
+exten => sw-46-ANSWER,10,Goto(s\,11)
 exten => sw-46-BUSY,10,Voicemail(b${ext})
-exten => sw-46-BUSY,11,Goto(s\,10)
+exten => sw-46-BUSY,11,Goto(s\,11)
 exten => sw-46-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-46-DONTCALL,11,Goto(s\,10)
+exten => sw-46-DONTCALL,11,Goto(s\,11)
 exten => sw-46-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-46-TORTURE,11,Goto(s\,10)
+exten => sw-46-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_45]
@@ -1181,21 +1226,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-47-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_45-47)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-47-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_45-47)
+exten => s,12,Return()
 exten => _sw-47-.,10,Voicemail(u${ext})
-exten => _sw-47-.,11,Goto(s\,10)
+exten => _sw-47-.,11,Goto(s\,11)
 exten => sw-47-,10,Goto(sw-47-.|10)
 exten => sw-47-NOANSWER,10,Voicemail(u${ext})
-exten => sw-47-NOANSWER,11,Goto(s\,10)
-exten => sw-47-ANSWER,10,Goto(s\,10)
+exten => sw-47-NOANSWER,11,Goto(s\,11)
+exten => sw-47-ANSWER,10,Goto(s\,11)
 exten => sw-47-BUSY,10,Voicemail(b${ext})
-exten => sw-47-BUSY,11,Goto(s\,10)
+exten => sw-47-BUSY,11,Goto(s\,11)
 exten => sw-47-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-47-DONTCALL,11,Goto(s\,10)
+exten => sw-47-DONTCALL,11,Goto(s\,11)
 exten => sw-47-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-47-TORTURE,11,Goto(s\,10)
+exten => sw-47-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_46]
@@ -1207,21 +1253,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-48-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_46-48)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-48-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_46-48)
+exten => s,12,Return()
 exten => _sw-48-.,10,Voicemail(u${ext})
-exten => _sw-48-.,11,Goto(s\,10)
+exten => _sw-48-.,11,Goto(s\,11)
 exten => sw-48-,10,Goto(sw-48-.|10)
 exten => sw-48-NOANSWER,10,Voicemail(u${ext})
-exten => sw-48-NOANSWER,11,Goto(s\,10)
-exten => sw-48-ANSWER,10,Goto(s\,10)
+exten => sw-48-NOANSWER,11,Goto(s\,11)
+exten => sw-48-ANSWER,10,Goto(s\,11)
 exten => sw-48-BUSY,10,Voicemail(b${ext})
-exten => sw-48-BUSY,11,Goto(s\,10)
+exten => sw-48-BUSY,11,Goto(s\,11)
 exten => sw-48-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-48-DONTCALL,11,Goto(s\,10)
+exten => sw-48-DONTCALL,11,Goto(s\,11)
 exten => sw-48-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-48-TORTURE,11,Goto(s\,10)
+exten => sw-48-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_47]
@@ -1233,21 +1280,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-49-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_47-49)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-49-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_47-49)
+exten => s,12,Return()
 exten => _sw-49-.,10,Voicemail(u${ext})
-exten => _sw-49-.,11,Goto(s\,10)
+exten => _sw-49-.,11,Goto(s\,11)
 exten => sw-49-,10,Goto(sw-49-.|10)
 exten => sw-49-NOANSWER,10,Voicemail(u${ext})
-exten => sw-49-NOANSWER,11,Goto(s\,10)
-exten => sw-49-ANSWER,10,Goto(s\,10)
+exten => sw-49-NOANSWER,11,Goto(s\,11)
+exten => sw-49-ANSWER,10,Goto(s\,11)
 exten => sw-49-BUSY,10,Voicemail(b${ext})
-exten => sw-49-BUSY,11,Goto(s\,10)
+exten => sw-49-BUSY,11,Goto(s\,11)
 exten => sw-49-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-49-DONTCALL,11,Goto(s\,10)
+exten => sw-49-DONTCALL,11,Goto(s\,11)
 exten => sw-49-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-49-TORTURE,11,Goto(s\,10)
+exten => sw-49-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_48]
@@ -1259,21 +1307,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-50-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_48-50)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-50-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_48-50)
+exten => s,12,Return()
 exten => _sw-50-.,10,Voicemail(u${ext})
-exten => _sw-50-.,11,Goto(s\,10)
+exten => _sw-50-.,11,Goto(s\,11)
 exten => sw-50-,10,Goto(sw-50-.|10)
 exten => sw-50-NOANSWER,10,Voicemail(u${ext})
-exten => sw-50-NOANSWER,11,Goto(s\,10)
-exten => sw-50-ANSWER,10,Goto(s\,10)
+exten => sw-50-NOANSWER,11,Goto(s\,11)
+exten => sw-50-ANSWER,10,Goto(s\,11)
 exten => sw-50-BUSY,10,Voicemail(b${ext})
-exten => sw-50-BUSY,11,Goto(s\,10)
+exten => sw-50-BUSY,11,Goto(s\,11)
 exten => sw-50-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-50-DONTCALL,11,Goto(s\,10)
+exten => sw-50-DONTCALL,11,Goto(s\,11)
 exten => sw-50-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-50-TORTURE,11,Goto(s\,10)
+exten => sw-50-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_49]
@@ -1285,21 +1334,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-51-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_49-51)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-51-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_49-51)
+exten => s,12,Return()
 exten => _sw-51-.,10,Voicemail(u${ext})
-exten => _sw-51-.,11,Goto(s\,10)
+exten => _sw-51-.,11,Goto(s\,11)
 exten => sw-51-,10,Goto(sw-51-.|10)
 exten => sw-51-NOANSWER,10,Voicemail(u${ext})
-exten => sw-51-NOANSWER,11,Goto(s\,10)
-exten => sw-51-ANSWER,10,Goto(s\,10)
+exten => sw-51-NOANSWER,11,Goto(s\,11)
+exten => sw-51-ANSWER,10,Goto(s\,11)
 exten => sw-51-BUSY,10,Voicemail(b${ext})
-exten => sw-51-BUSY,11,Goto(s\,10)
+exten => sw-51-BUSY,11,Goto(s\,11)
 exten => sw-51-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-51-DONTCALL,11,Goto(s\,10)
+exten => sw-51-DONTCALL,11,Goto(s\,11)
 exten => sw-51-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-51-TORTURE,11,Goto(s\,10)
+exten => sw-51-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_50]
@@ -1311,21 +1361,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-52-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_50-52)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-52-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_50-52)
+exten => s,12,Return()
 exten => _sw-52-.,10,Voicemail(u${ext})
-exten => _sw-52-.,11,Goto(s\,10)
+exten => _sw-52-.,11,Goto(s\,11)
 exten => sw-52-,10,Goto(sw-52-.|10)
 exten => sw-52-NOANSWER,10,Voicemail(u${ext})
-exten => sw-52-NOANSWER,11,Goto(s\,10)
-exten => sw-52-ANSWER,10,Goto(s\,10)
+exten => sw-52-NOANSWER,11,Goto(s\,11)
+exten => sw-52-ANSWER,10,Goto(s\,11)
 exten => sw-52-BUSY,10,Voicemail(b${ext})
-exten => sw-52-BUSY,11,Goto(s\,10)
+exten => sw-52-BUSY,11,Goto(s\,11)
 exten => sw-52-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-52-DONTCALL,11,Goto(s\,10)
+exten => sw-52-DONTCALL,11,Goto(s\,11)
 exten => sw-52-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-52-TORTURE,11,Goto(s\,10)
+exten => sw-52-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_51]
@@ -1337,21 +1388,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-53-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_51-53)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-53-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_51-53)
+exten => s,12,Return()
 exten => _sw-53-.,10,Voicemail(u${ext})
-exten => _sw-53-.,11,Goto(s\,10)
+exten => _sw-53-.,11,Goto(s\,11)
 exten => sw-53-,10,Goto(sw-53-.|10)
 exten => sw-53-NOANSWER,10,Voicemail(u${ext})
-exten => sw-53-NOANSWER,11,Goto(s\,10)
-exten => sw-53-ANSWER,10,Goto(s\,10)
+exten => sw-53-NOANSWER,11,Goto(s\,11)
+exten => sw-53-ANSWER,10,Goto(s\,11)
 exten => sw-53-BUSY,10,Voicemail(b${ext})
-exten => sw-53-BUSY,11,Goto(s\,10)
+exten => sw-53-BUSY,11,Goto(s\,11)
 exten => sw-53-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-53-DONTCALL,11,Goto(s\,10)
+exten => sw-53-DONTCALL,11,Goto(s\,11)
 exten => sw-53-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-53-TORTURE,11,Goto(s\,10)
+exten => sw-53-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_52]
@@ -1363,21 +1415,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-54-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_52-54)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-54-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_52-54)
+exten => s,12,Return()
 exten => _sw-54-.,10,Voicemail(u${ext})
-exten => _sw-54-.,11,Goto(s\,10)
+exten => _sw-54-.,11,Goto(s\,11)
 exten => sw-54-,10,Goto(sw-54-.|10)
 exten => sw-54-NOANSWER,10,Voicemail(u${ext})
-exten => sw-54-NOANSWER,11,Goto(s\,10)
-exten => sw-54-ANSWER,10,Goto(s\,10)
+exten => sw-54-NOANSWER,11,Goto(s\,11)
+exten => sw-54-ANSWER,10,Goto(s\,11)
 exten => sw-54-BUSY,10,Voicemail(b${ext})
-exten => sw-54-BUSY,11,Goto(s\,10)
+exten => sw-54-BUSY,11,Goto(s\,11)
 exten => sw-54-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-54-DONTCALL,11,Goto(s\,10)
+exten => sw-54-DONTCALL,11,Goto(s\,11)
 exten => sw-54-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-54-TORTURE,11,Goto(s\,10)
+exten => sw-54-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_53]
@@ -1389,21 +1442,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-55-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_53-55)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-55-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_53-55)
+exten => s,12,Return()
 exten => _sw-55-.,10,Voicemail(u${ext})
-exten => _sw-55-.,11,Goto(s\,10)
+exten => _sw-55-.,11,Goto(s\,11)
 exten => sw-55-,10,Goto(sw-55-.|10)
 exten => sw-55-NOANSWER,10,Voicemail(u${ext})
-exten => sw-55-NOANSWER,11,Goto(s\,10)
-exten => sw-55-ANSWER,10,Goto(s\,10)
+exten => sw-55-NOANSWER,11,Goto(s\,11)
+exten => sw-55-ANSWER,10,Goto(s\,11)
 exten => sw-55-BUSY,10,Voicemail(b${ext})
-exten => sw-55-BUSY,11,Goto(s\,10)
+exten => sw-55-BUSY,11,Goto(s\,11)
 exten => sw-55-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-55-DONTCALL,11,Goto(s\,10)
+exten => sw-55-DONTCALL,11,Goto(s\,11)
 exten => sw-55-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-55-TORTURE,11,Goto(s\,10)
+exten => sw-55-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_54]
@@ -1415,21 +1469,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-56-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_54-56)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-56-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_54-56)
+exten => s,12,Return()
 exten => _sw-56-.,10,Voicemail(u${ext})
-exten => _sw-56-.,11,Goto(s\,10)
+exten => _sw-56-.,11,Goto(s\,11)
 exten => sw-56-,10,Goto(sw-56-.|10)
 exten => sw-56-NOANSWER,10,Voicemail(u${ext})
-exten => sw-56-NOANSWER,11,Goto(s\,10)
-exten => sw-56-ANSWER,10,Goto(s\,10)
+exten => sw-56-NOANSWER,11,Goto(s\,11)
+exten => sw-56-ANSWER,10,Goto(s\,11)
 exten => sw-56-BUSY,10,Voicemail(b${ext})
-exten => sw-56-BUSY,11,Goto(s\,10)
+exten => sw-56-BUSY,11,Goto(s\,11)
 exten => sw-56-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-56-DONTCALL,11,Goto(s\,10)
+exten => sw-56-DONTCALL,11,Goto(s\,11)
 exten => sw-56-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-56-TORTURE,11,Goto(s\,10)
+exten => sw-56-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_55]
@@ -1441,21 +1496,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-57-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_55-57)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-57-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_55-57)
+exten => s,12,Return()
 exten => _sw-57-.,10,Voicemail(u${ext})
-exten => _sw-57-.,11,Goto(s\,10)
+exten => _sw-57-.,11,Goto(s\,11)
 exten => sw-57-,10,Goto(sw-57-.|10)
 exten => sw-57-NOANSWER,10,Voicemail(u${ext})
-exten => sw-57-NOANSWER,11,Goto(s\,10)
-exten => sw-57-ANSWER,10,Goto(s\,10)
+exten => sw-57-NOANSWER,11,Goto(s\,11)
+exten => sw-57-ANSWER,10,Goto(s\,11)
 exten => sw-57-BUSY,10,Voicemail(b${ext})
-exten => sw-57-BUSY,11,Goto(s\,10)
+exten => sw-57-BUSY,11,Goto(s\,11)
 exten => sw-57-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-57-DONTCALL,11,Goto(s\,10)
+exten => sw-57-DONTCALL,11,Goto(s\,11)
 exten => sw-57-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-57-TORTURE,11,Goto(s\,10)
+exten => sw-57-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_56]
@@ -1467,21 +1523,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-58-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_56-58)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-58-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_56-58)
+exten => s,12,Return()
 exten => _sw-58-.,10,Voicemail(u${ext})
-exten => _sw-58-.,11,Goto(s\,10)
+exten => _sw-58-.,11,Goto(s\,11)
 exten => sw-58-,10,Goto(sw-58-.|10)
 exten => sw-58-NOANSWER,10,Voicemail(u${ext})
-exten => sw-58-NOANSWER,11,Goto(s\,10)
-exten => sw-58-ANSWER,10,Goto(s\,10)
+exten => sw-58-NOANSWER,11,Goto(s\,11)
+exten => sw-58-ANSWER,10,Goto(s\,11)
 exten => sw-58-BUSY,10,Voicemail(b${ext})
-exten => sw-58-BUSY,11,Goto(s\,10)
+exten => sw-58-BUSY,11,Goto(s\,11)
 exten => sw-58-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-58-DONTCALL,11,Goto(s\,10)
+exten => sw-58-DONTCALL,11,Goto(s\,11)
 exten => sw-58-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-58-TORTURE,11,Goto(s\,10)
+exten => sw-58-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_57]
@@ -1493,21 +1550,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-59-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_57-59)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-59-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_57-59)
+exten => s,12,Return()
 exten => _sw-59-.,10,Voicemail(u${ext})
-exten => _sw-59-.,11,Goto(s\,10)
+exten => _sw-59-.,11,Goto(s\,11)
 exten => sw-59-,10,Goto(sw-59-.|10)
 exten => sw-59-NOANSWER,10,Voicemail(u${ext})
-exten => sw-59-NOANSWER,11,Goto(s\,10)
-exten => sw-59-ANSWER,10,Goto(s\,10)
+exten => sw-59-NOANSWER,11,Goto(s\,11)
+exten => sw-59-ANSWER,10,Goto(s\,11)
 exten => sw-59-BUSY,10,Voicemail(b${ext})
-exten => sw-59-BUSY,11,Goto(s\,10)
+exten => sw-59-BUSY,11,Goto(s\,11)
 exten => sw-59-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-59-DONTCALL,11,Goto(s\,10)
+exten => sw-59-DONTCALL,11,Goto(s\,11)
 exten => sw-59-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-59-TORTURE,11,Goto(s\,10)
+exten => sw-59-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_58]
@@ -1519,21 +1577,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-60-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_58-60)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-60-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_58-60)
+exten => s,12,Return()
 exten => _sw-60-.,10,Voicemail(u${ext})
-exten => _sw-60-.,11,Goto(s\,10)
+exten => _sw-60-.,11,Goto(s\,11)
 exten => sw-60-,10,Goto(sw-60-.|10)
 exten => sw-60-NOANSWER,10,Voicemail(u${ext})
-exten => sw-60-NOANSWER,11,Goto(s\,10)
-exten => sw-60-ANSWER,10,Goto(s\,10)
+exten => sw-60-NOANSWER,11,Goto(s\,11)
+exten => sw-60-ANSWER,10,Goto(s\,11)
 exten => sw-60-BUSY,10,Voicemail(b${ext})
-exten => sw-60-BUSY,11,Goto(s\,10)
+exten => sw-60-BUSY,11,Goto(s\,11)
 exten => sw-60-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-60-DONTCALL,11,Goto(s\,10)
+exten => sw-60-DONTCALL,11,Goto(s\,11)
 exten => sw-60-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-60-TORTURE,11,Goto(s\,10)
+exten => sw-60-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_59]
@@ -1545,21 +1604,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-61-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_59-61)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-61-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_59-61)
+exten => s,12,Return()
 exten => _sw-61-.,10,Voicemail(u${ext})
-exten => _sw-61-.,11,Goto(s\,10)
+exten => _sw-61-.,11,Goto(s\,11)
 exten => sw-61-,10,Goto(sw-61-.|10)
 exten => sw-61-NOANSWER,10,Voicemail(u${ext})
-exten => sw-61-NOANSWER,11,Goto(s\,10)
-exten => sw-61-ANSWER,10,Goto(s\,10)
+exten => sw-61-NOANSWER,11,Goto(s\,11)
+exten => sw-61-ANSWER,10,Goto(s\,11)
 exten => sw-61-BUSY,10,Voicemail(b${ext})
-exten => sw-61-BUSY,11,Goto(s\,10)
+exten => sw-61-BUSY,11,Goto(s\,11)
 exten => sw-61-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-61-DONTCALL,11,Goto(s\,10)
+exten => sw-61-DONTCALL,11,Goto(s\,11)
 exten => sw-61-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-61-TORTURE,11,Goto(s\,10)
+exten => sw-61-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_60]
@@ -1571,21 +1631,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-62-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_60-62)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-62-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_60-62)
+exten => s,12,Return()
 exten => _sw-62-.,10,Voicemail(u${ext})
-exten => _sw-62-.,11,Goto(s\,10)
+exten => _sw-62-.,11,Goto(s\,11)
 exten => sw-62-,10,Goto(sw-62-.|10)
 exten => sw-62-NOANSWER,10,Voicemail(u${ext})
-exten => sw-62-NOANSWER,11,Goto(s\,10)
-exten => sw-62-ANSWER,10,Goto(s\,10)
+exten => sw-62-NOANSWER,11,Goto(s\,11)
+exten => sw-62-ANSWER,10,Goto(s\,11)
 exten => sw-62-BUSY,10,Voicemail(b${ext})
-exten => sw-62-BUSY,11,Goto(s\,10)
+exten => sw-62-BUSY,11,Goto(s\,11)
 exten => sw-62-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-62-DONTCALL,11,Goto(s\,10)
+exten => sw-62-DONTCALL,11,Goto(s\,11)
 exten => sw-62-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-62-TORTURE,11,Goto(s\,10)
+exten => sw-62-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_61]
@@ -1597,21 +1658,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-63-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_61-63)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-63-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_61-63)
+exten => s,12,Return()
 exten => _sw-63-.,10,Voicemail(u${ext})
-exten => _sw-63-.,11,Goto(s\,10)
+exten => _sw-63-.,11,Goto(s\,11)
 exten => sw-63-,10,Goto(sw-63-.|10)
 exten => sw-63-NOANSWER,10,Voicemail(u${ext})
-exten => sw-63-NOANSWER,11,Goto(s\,10)
-exten => sw-63-ANSWER,10,Goto(s\,10)
+exten => sw-63-NOANSWER,11,Goto(s\,11)
+exten => sw-63-ANSWER,10,Goto(s\,11)
 exten => sw-63-BUSY,10,Voicemail(b${ext})
-exten => sw-63-BUSY,11,Goto(s\,10)
+exten => sw-63-BUSY,11,Goto(s\,11)
 exten => sw-63-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-63-DONTCALL,11,Goto(s\,10)
+exten => sw-63-DONTCALL,11,Goto(s\,11)
 exten => sw-63-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-63-TORTURE,11,Goto(s\,10)
+exten => sw-63-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_62]
@@ -1623,21 +1685,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-64-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_62-64)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-64-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_62-64)
+exten => s,12,Return()
 exten => _sw-64-.,10,Voicemail(u${ext})
-exten => _sw-64-.,11,Goto(s\,10)
+exten => _sw-64-.,11,Goto(s\,11)
 exten => sw-64-,10,Goto(sw-64-.|10)
 exten => sw-64-NOANSWER,10,Voicemail(u${ext})
-exten => sw-64-NOANSWER,11,Goto(s\,10)
-exten => sw-64-ANSWER,10,Goto(s\,10)
+exten => sw-64-NOANSWER,11,Goto(s\,11)
+exten => sw-64-ANSWER,10,Goto(s\,11)
 exten => sw-64-BUSY,10,Voicemail(b${ext})
-exten => sw-64-BUSY,11,Goto(s\,10)
+exten => sw-64-BUSY,11,Goto(s\,11)
 exten => sw-64-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-64-DONTCALL,11,Goto(s\,10)
+exten => sw-64-DONTCALL,11,Goto(s\,11)
 exten => sw-64-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-64-TORTURE,11,Goto(s\,10)
+exten => sw-64-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_63]
@@ -1649,21 +1712,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-65-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_63-65)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-65-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_63-65)
+exten => s,12,Return()
 exten => _sw-65-.,10,Voicemail(u${ext})
-exten => _sw-65-.,11,Goto(s\,10)
+exten => _sw-65-.,11,Goto(s\,11)
 exten => sw-65-,10,Goto(sw-65-.|10)
 exten => sw-65-NOANSWER,10,Voicemail(u${ext})
-exten => sw-65-NOANSWER,11,Goto(s\,10)
-exten => sw-65-ANSWER,10,Goto(s\,10)
+exten => sw-65-NOANSWER,11,Goto(s\,11)
+exten => sw-65-ANSWER,10,Goto(s\,11)
 exten => sw-65-BUSY,10,Voicemail(b${ext})
-exten => sw-65-BUSY,11,Goto(s\,10)
+exten => sw-65-BUSY,11,Goto(s\,11)
 exten => sw-65-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-65-DONTCALL,11,Goto(s\,10)
+exten => sw-65-DONTCALL,11,Goto(s\,11)
 exten => sw-65-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-65-TORTURE,11,Goto(s\,10)
+exten => sw-65-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_64]
@@ -1675,21 +1739,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-66-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_64-66)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-66-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_64-66)
+exten => s,12,Return()
 exten => _sw-66-.,10,Voicemail(u${ext})
-exten => _sw-66-.,11,Goto(s\,10)
+exten => _sw-66-.,11,Goto(s\,11)
 exten => sw-66-,10,Goto(sw-66-.|10)
 exten => sw-66-NOANSWER,10,Voicemail(u${ext})
-exten => sw-66-NOANSWER,11,Goto(s\,10)
-exten => sw-66-ANSWER,10,Goto(s\,10)
+exten => sw-66-NOANSWER,11,Goto(s\,11)
+exten => sw-66-ANSWER,10,Goto(s\,11)
 exten => sw-66-BUSY,10,Voicemail(b${ext})
-exten => sw-66-BUSY,11,Goto(s\,10)
+exten => sw-66-BUSY,11,Goto(s\,11)
 exten => sw-66-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-66-DONTCALL,11,Goto(s\,10)
+exten => sw-66-DONTCALL,11,Goto(s\,11)
 exten => sw-66-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-66-TORTURE,11,Goto(s\,10)
+exten => sw-66-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_65]
@@ -1701,21 +1766,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-67-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_65-67)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-67-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_65-67)
+exten => s,12,Return()
 exten => _sw-67-.,10,Voicemail(u${ext})
-exten => _sw-67-.,11,Goto(s\,10)
+exten => _sw-67-.,11,Goto(s\,11)
 exten => sw-67-,10,Goto(sw-67-.|10)
 exten => sw-67-NOANSWER,10,Voicemail(u${ext})
-exten => sw-67-NOANSWER,11,Goto(s\,10)
-exten => sw-67-ANSWER,10,Goto(s\,10)
+exten => sw-67-NOANSWER,11,Goto(s\,11)
+exten => sw-67-ANSWER,10,Goto(s\,11)
 exten => sw-67-BUSY,10,Voicemail(b${ext})
-exten => sw-67-BUSY,11,Goto(s\,10)
+exten => sw-67-BUSY,11,Goto(s\,11)
 exten => sw-67-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-67-DONTCALL,11,Goto(s\,10)
+exten => sw-67-DONTCALL,11,Goto(s\,11)
 exten => sw-67-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-67-TORTURE,11,Goto(s\,10)
+exten => sw-67-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_66]
@@ -1727,21 +1793,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-68-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_66-68)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-68-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_66-68)
+exten => s,12,Return()
 exten => _sw-68-.,10,Voicemail(u${ext})
-exten => _sw-68-.,11,Goto(s\,10)
+exten => _sw-68-.,11,Goto(s\,11)
 exten => sw-68-,10,Goto(sw-68-.|10)
 exten => sw-68-NOANSWER,10,Voicemail(u${ext})
-exten => sw-68-NOANSWER,11,Goto(s\,10)
-exten => sw-68-ANSWER,10,Goto(s\,10)
+exten => sw-68-NOANSWER,11,Goto(s\,11)
+exten => sw-68-ANSWER,10,Goto(s\,11)
 exten => sw-68-BUSY,10,Voicemail(b${ext})
-exten => sw-68-BUSY,11,Goto(s\,10)
+exten => sw-68-BUSY,11,Goto(s\,11)
 exten => sw-68-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-68-DONTCALL,11,Goto(s\,10)
+exten => sw-68-DONTCALL,11,Goto(s\,11)
 exten => sw-68-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-68-TORTURE,11,Goto(s\,10)
+exten => sw-68-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_67]
@@ -1753,21 +1820,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-69-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_67-69)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-69-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_67-69)
+exten => s,12,Return()
 exten => _sw-69-.,10,Voicemail(u${ext})
-exten => _sw-69-.,11,Goto(s\,10)
+exten => _sw-69-.,11,Goto(s\,11)
 exten => sw-69-,10,Goto(sw-69-.|10)
 exten => sw-69-NOANSWER,10,Voicemail(u${ext})
-exten => sw-69-NOANSWER,11,Goto(s\,10)
-exten => sw-69-ANSWER,10,Goto(s\,10)
+exten => sw-69-NOANSWER,11,Goto(s\,11)
+exten => sw-69-ANSWER,10,Goto(s\,11)
 exten => sw-69-BUSY,10,Voicemail(b${ext})
-exten => sw-69-BUSY,11,Goto(s\,10)
+exten => sw-69-BUSY,11,Goto(s\,11)
 exten => sw-69-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-69-DONTCALL,11,Goto(s\,10)
+exten => sw-69-DONTCALL,11,Goto(s\,11)
 exten => sw-69-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-69-TORTURE,11,Goto(s\,10)
+exten => sw-69-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_68]
@@ -1779,21 +1847,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-70-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_68-70)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-70-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_68-70)
+exten => s,12,Return()
 exten => _sw-70-.,10,Voicemail(u${ext})
-exten => _sw-70-.,11,Goto(s\,10)
+exten => _sw-70-.,11,Goto(s\,11)
 exten => sw-70-,10,Goto(sw-70-.|10)
 exten => sw-70-NOANSWER,10,Voicemail(u${ext})
-exten => sw-70-NOANSWER,11,Goto(s\,10)
-exten => sw-70-ANSWER,10,Goto(s\,10)
+exten => sw-70-NOANSWER,11,Goto(s\,11)
+exten => sw-70-ANSWER,10,Goto(s\,11)
 exten => sw-70-BUSY,10,Voicemail(b${ext})
-exten => sw-70-BUSY,11,Goto(s\,10)
+exten => sw-70-BUSY,11,Goto(s\,11)
 exten => sw-70-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-70-DONTCALL,11,Goto(s\,10)
+exten => sw-70-DONTCALL,11,Goto(s\,11)
 exten => sw-70-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-70-TORTURE,11,Goto(s\,10)
+exten => sw-70-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_69]
@@ -1805,21 +1874,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-71-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_69-71)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-71-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_69-71)
+exten => s,12,Return()
 exten => _sw-71-.,10,Voicemail(u${ext})
-exten => _sw-71-.,11,Goto(s\,10)
+exten => _sw-71-.,11,Goto(s\,11)
 exten => sw-71-,10,Goto(sw-71-.|10)
 exten => sw-71-NOANSWER,10,Voicemail(u${ext})
-exten => sw-71-NOANSWER,11,Goto(s\,10)
-exten => sw-71-ANSWER,10,Goto(s\,10)
+exten => sw-71-NOANSWER,11,Goto(s\,11)
+exten => sw-71-ANSWER,10,Goto(s\,11)
 exten => sw-71-BUSY,10,Voicemail(b${ext})
-exten => sw-71-BUSY,11,Goto(s\,10)
+exten => sw-71-BUSY,11,Goto(s\,11)
 exten => sw-71-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-71-DONTCALL,11,Goto(s\,10)
+exten => sw-71-DONTCALL,11,Goto(s\,11)
 exten => sw-71-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-71-TORTURE,11,Goto(s\,10)
+exten => sw-71-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_70]
@@ -1831,21 +1901,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-72-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_70-72)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-72-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_70-72)
+exten => s,12,Return()
 exten => _sw-72-.,10,Voicemail(u${ext})
-exten => _sw-72-.,11,Goto(s\,10)
+exten => _sw-72-.,11,Goto(s\,11)
 exten => sw-72-,10,Goto(sw-72-.|10)
 exten => sw-72-NOANSWER,10,Voicemail(u${ext})
-exten => sw-72-NOANSWER,11,Goto(s\,10)
-exten => sw-72-ANSWER,10,Goto(s\,10)
+exten => sw-72-NOANSWER,11,Goto(s\,11)
+exten => sw-72-ANSWER,10,Goto(s\,11)
 exten => sw-72-BUSY,10,Voicemail(b${ext})
-exten => sw-72-BUSY,11,Goto(s\,10)
+exten => sw-72-BUSY,11,Goto(s\,11)
 exten => sw-72-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-72-DONTCALL,11,Goto(s\,10)
+exten => sw-72-DONTCALL,11,Goto(s\,11)
 exten => sw-72-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-72-TORTURE,11,Goto(s\,10)
+exten => sw-72-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_71]
@@ -1857,21 +1928,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-73-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_71-73)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-73-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_71-73)
+exten => s,12,Return()
 exten => _sw-73-.,10,Voicemail(u${ext})
-exten => _sw-73-.,11,Goto(s\,10)
+exten => _sw-73-.,11,Goto(s\,11)
 exten => sw-73-,10,Goto(sw-73-.|10)
 exten => sw-73-NOANSWER,10,Voicemail(u${ext})
-exten => sw-73-NOANSWER,11,Goto(s\,10)
-exten => sw-73-ANSWER,10,Goto(s\,10)
+exten => sw-73-NOANSWER,11,Goto(s\,11)
+exten => sw-73-ANSWER,10,Goto(s\,11)
 exten => sw-73-BUSY,10,Voicemail(b${ext})
-exten => sw-73-BUSY,11,Goto(s\,10)
+exten => sw-73-BUSY,11,Goto(s\,11)
 exten => sw-73-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-73-DONTCALL,11,Goto(s\,10)
+exten => sw-73-DONTCALL,11,Goto(s\,11)
 exten => sw-73-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-73-TORTURE,11,Goto(s\,10)
+exten => sw-73-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_72]
@@ -1883,21 +1955,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-74-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_72-74)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-74-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_72-74)
+exten => s,12,Return()
 exten => _sw-74-.,10,Voicemail(u${ext})
-exten => _sw-74-.,11,Goto(s\,10)
+exten => _sw-74-.,11,Goto(s\,11)
 exten => sw-74-,10,Goto(sw-74-.|10)
 exten => sw-74-NOANSWER,10,Voicemail(u${ext})
-exten => sw-74-NOANSWER,11,Goto(s\,10)
-exten => sw-74-ANSWER,10,Goto(s\,10)
+exten => sw-74-NOANSWER,11,Goto(s\,11)
+exten => sw-74-ANSWER,10,Goto(s\,11)
 exten => sw-74-BUSY,10,Voicemail(b${ext})
-exten => sw-74-BUSY,11,Goto(s\,10)
+exten => sw-74-BUSY,11,Goto(s\,11)
 exten => sw-74-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-74-DONTCALL,11,Goto(s\,10)
+exten => sw-74-DONTCALL,11,Goto(s\,11)
 exten => sw-74-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-74-TORTURE,11,Goto(s\,10)
+exten => sw-74-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten_73]
@@ -1909,21 +1982,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-75-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten_73-75)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s,10,Goto(sw-75-${DIALSTATUS}\,10)
+exten => s,11,NoOp(Finish switch-std-priv-exten_73-75)
+exten => s,12,Return()
 exten => _sw-75-.,10,Voicemail(u${ext})
-exten => _sw-75-.,11,Goto(s\,10)
+exten => _sw-75-.,11,Goto(s\,11)
 exten => sw-75-,10,Goto(sw-75-.|10)
 exten => sw-75-NOANSWER,10,Voicemail(u${ext})
-exten => sw-75-NOANSWER,11,Goto(s\,10)
-exten => sw-75-ANSWER,10,Goto(s\,10)
+exten => sw-75-NOANSWER,11,Goto(s\,11)
+exten => sw-75-ANSWER,10,Goto(s\,11)
 exten => sw-75-BUSY,10,Voicemail(b${ext})
-exten => sw-75-BUSY,11,Goto(s\,10)
+exten => sw-75-BUSY,11,Goto(s\,11)
 exten => sw-75-DONTCALL,10,Goto(${dontcont}\,s\,begin)
-exten => sw-75-DONTCALL,11,Goto(s\,10)
+exten => sw-75-DONTCALL,11,Goto(s\,11)
 exten => sw-75-TORTURE,10,Goto(${torcont}\,s\,begin)
-exten => sw-75-TORTURE,11,Goto(s\,10)
+exten => sw-75-TORTURE,11,Goto(s\,11)
 
 
 [std-priv-exten]
@@ -1935,21 +2009,22 @@ exten => s,5,Set(LOCAL(torcont)=${ARG5})
 exten => s,6,Set(LOCAL(dontcont)=${ARG6})
 exten => s,7,Dial(${dev}\,${timeout}\,${opts})
 exten => s,8,NoOp(${DIALSTATUS} was chosen)
-exten => s,9,Goto(sw-76-${DIALSTATUS}\,10)
-exten => s,10,NoOp(Finish switch-std-priv-exten-76)
-exten => s,11,Return()
+exten => s,9,Set(~~EXTEN~~=${EXTEN})
+exten => s