]> granicus.if.org Git - php/commitdiff
- Fixed bug #33536 (strtotime defaults to now even on non time string).
authorDerick Rethans <derick@php.net>
Sun, 3 Jul 2005 21:38:54 +0000 (21:38 +0000)
committerDerick Rethans <derick@php.net>
Sun, 3 Jul 2005 21:38:54 +0000 (21:38 +0000)
NEWS
ext/date/lib/parse_date.c
ext/date/lib/parse_date.re
ext/date/lib/resource/parse_date.re
ext/date/lib/timelib.h
ext/date/php_date.c
ext/date/tests/bug33536.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index ddfaee6df576161b336f9aba7829b1e7e03b0b3a..09f10c9b6912065bcc5e81b8e73ca35d817653ea 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,8 @@ PHP                                                                        NEWS
 - Added date_timezone_set() function to set the timezone that the date
   functions will use. (Derick)
 - Implemented feature request #33452 (Year belonging to ISO week). (Derick)
+- Fixed bug #33536 (strtotime() defaults to now even on non time string).
+  (Derick)
 - Fixed bug #33532 (Different output for strftime() and date()). (Derick)
 - Fixed bug #33523 (Memory leak in xmlrpc_encode_request()). (Ilia)
 - Fixed bug #33491 (crash after extending MySQLi internal class). (Tony)
index 68c087515f82415ced5821755a6142b57d063b57..a9627eb827af931f3bd03a46009c697ecb18387f 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.9.8.dev on Sun Jul  3 16:51:26 2005 */
+/* Generated by re2c 0.9.8.dev on Sun Jul  3 23:31:59 2005 */
 #line 1 "parse_date.re"
 /*
    +----------------------------------------------------------------------+
@@ -141,6 +141,7 @@ typedef struct Scanner {
        int           fd;
        uchar        *lim, *str, *ptr, *cur, *tok, *pos;
        unsigned int  line, len;
+       int           errors;
 
        struct timelib_time *time;
 } Scanner;
@@ -675,7 +676,7 @@ static timelib_tz_lookup_table* zone_search(const char *word, int left, int righ
        }
 }
 
-static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, char **tz_name)
+static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
 {
        char *word;
        char *begin = *ptr, *end;
@@ -688,26 +689,25 @@ static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, char **tz_
        end = *ptr;
        word = calloc(1, end - begin + 1);
        memcpy(word, begin, end - begin);
-       *tz_name = NULL;
 
        if ((tp = zone_search(word, 0, sizeof(timelib_timezone_lookup)/sizeof(*timelib_timezone_lookup)-1))) {
                value = tp->value;
                *dst = tp->type;
-/*
-               if (tp->full_tz_name) {
-                       *tz_name = tp->full_tz_name;
-               }
-*/
+               *found = 1;
+       } else {
+               *found = 0;
        }
 
        *tz_abbr = word;
        return value;
 }
 
-static long timelib_get_zone(char **ptr, int *dst, timelib_time *t)
+static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found)
 {
        timelib_tzinfo *res;
 
+       *tz_not_found = 0;
+
        while (**ptr == ' ') {
                ++*ptr;
        }
@@ -715,37 +715,44 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t)
                ++*ptr;
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
 
                return -1 * timelib_parse_tz_cor(ptr);
        } else if (**ptr == '-') {
                ++*ptr;
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
 
                return timelib_parse_tz_cor(ptr);
        } else {
+               int found = 0;
                long offset;
-               char *tz_abbr, *tz_name;
+               char *tz_abbr;
 
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_ABBR;
-               offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &tz_name);
+               offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+#if 0
                /* If we found a TimeZone identifier, use it */
                if (tz_name) {
                        t->tz_info = timelib_parse_tzfile(tz_name);
                        t->zone_type = TIMELIB_ZONETYPE_ID;
                }
+#endif
                /* If we have a TimeZone identifier to start with, use it */
                if (strstr(tz_abbr, "/")) {
                        if ((res = timelib_parse_tzfile(tz_abbr)) != NULL) {
                                t->tz_info = res;
                                t->zone_type = TIMELIB_ZONETYPE_ID;
+                               found++;
                        }
                }
                if (t->zone_type != TIMELIB_ZONETYPE_ID) {
                        timelib_time_tz_abbr_update(t, tz_abbr);
                }
                free(tz_abbr);
+               *tz_not_found = (found == 0);
                return offset;
        }
 }
@@ -768,7 +775,7 @@ static int scan(Scanner *s)
 std:
        s->tok = cursor;
        s->len = 0;
-#line 872 "parse_date.re"
+#line 879 "parse_date.re"
 
 
 {
@@ -781,14 +788,14 @@ std:
         64,  64,  64,  64, 192,  64, 192,   0, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,   0,   0,   0,   0,   0,   0, 
-         0,   4,   4,   4,   4,   4,   4,   4
-         4,   4,   4,   4,   4,   4,   4,   4
-         4,   4,   4,   4,   4,   4,   4,   4
-         4,   4,   4,   0,   0,   0,   0,   0, 
-         0,  12,  12,  12, 140,  12,  12,  12
-       140,  12,  12,  12,  12,  12, 140,  12
-        12,  12, 140, 140, 140,  12,  12,  12
-        12,  12,  12,   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,   8,   8,   8, 136,   8,   8,   8
+       136,   8,   8,   8,   8,   8, 136,   8
+         8,   8, 136, 136, 136,   8,   8,   8
+         8,   8,   8,   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, 
@@ -807,7 +814,7 @@ std:
          0,   0,   0,   0,   0,   0,   0,   0, 
        };
 
-#line 811 "<stdout>"
+#line 818 "<stdout>"
 {
        YYCTYPE yych;
        unsigned int yyaccept;
@@ -880,77 +887,101 @@ yy0:
 yy2:
        YYDEBUG(2, *YYCURSOR);
        ++YYCURSOR;
-       if((yych = *YYCURSOR) == 'e')   goto yy1157;
-       goto yy49;
+       if((yych = *YYCURSOR) <= '`'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'Z') goto yy48;
+               goto yy3;
+       } else {
+               if(yych == 'e') goto yy1157;
+               if(yych <= 'z') goto yy48;
+               goto yy3;
+       }
 yy3:
        YYDEBUG(3, *YYCURSOR);
 
-#line 1310 "parse_date.re"
+#line 1325 "parse_date.re"
 {
+               int tz_not_found;
                TIMELIB_INIT;
-               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+               s->errors += tz_not_found;
                TIMELIB_DEINIT;
                return TIMELIB_TIMEZONE;
        }
-#line 889 "<stdout>"
+#line 905 "<stdout>"
 yy4:
        YYDEBUG(4, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'O'){
+       if(yych <= 'Z'){
                if(yych <= 'H'){
+                       if(yych <= '@') goto yy3;
                        if(yych == 'E') goto yy472;
-                       goto yy49;
+                       goto yy48;
                } else {
                        if(yych <= 'I') goto yy473;
-                       if(yych <= 'N') goto yy49;
-                       goto yy468;
+                       if(yych == 'O') goto yy468;
+                       goto yy48;
                }
        } else {
                if(yych <= 'h'){
+                       if(yych <= '`') goto yy3;
                        if(yych == 'e') goto yy472;
-                       goto yy49;
+                       goto yy48;
                } else {
-                       if(yych <= 'i') goto yy473;
-                       if(yych == 'o') goto yy1154;
-                       goto yy49;
+                       if(yych <= 'n'){
+                               if(yych <= 'i') goto yy473;
+                               goto yy48;
+                       } else {
+                               if(yych <= 'o') goto yy1154;
+                               if(yych <= 'z') goto yy48;
+                               goto yy3;
+                       }
                }
        }
 yy5:
        YYDEBUG(5, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'd'){
-               if(yych <= 'H'){
-                       if(yych == 'E') goto yy343;
-                       if(yych <= 'G') goto yy49;
-                       goto yy344;
-               } else {
-                       if(yych <= 'U'){
-                               if(yych <= 'T') goto yy49;
-                               goto yy345;
-                       } else {
-                               if(yych == 'W') goto yy346;
-                               goto yy49;
-                       }
-               }
-       } else {
-               if(yych <= 'o'){
-                       if(yych <= 'g'){
-                               if(yych <= 'e') goto yy343;
-                               goto yy49;
-                       } else {
-                               if(yych <= 'h') goto yy344;
-                               if(yych <= 'n') goto yy49;
-                               goto yy1142;
-                       }
-               } else {
-                       if(yych <= 'u'){
-                               if(yych <= 't') goto yy49;
-                               goto yy345;
-                       } else {
-                               if(yych == 'w') goto yy346;
-                               goto yy49;
-                       }
-               }
+       YYDEBUG(-1, yych);
+       switch(yych){
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':       case 'F':
+       case 'G':       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':       case 'V':       case 'X':
+       case 'Y':
+       case 'Z':       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':       case 'f':
+       case 'g':       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':       case 'v':       case 'x':
+       case 'y':
+       case 'z':       goto yy48;
+       case 'E':       case 'e':       goto yy341;
+       case 'H':       case 'h':       goto yy342;
+       case 'U':       case 'u':       goto yy343;
+       case 'W':       case 'w':       goto yy344;
+       case 'o':       goto yy1142;
+       default:        goto yy3;
        }
 yy6:
        YYDEBUG(6, *YYCURSOR);
@@ -963,12 +994,13 @@ yy6:
 yy7:
        YYDEBUG(7, *YYCURSOR);
 
-#line 1370 "parse_date.re"
+#line 1389 "parse_date.re"
 {
-/*             printf("unexpected character: #%d, %c\n", *s->tok, *s->tok); */
+/*             printf("unexpected character: #%d, %c ", *s->tok, *s->tok); */
+               s->errors++;
                goto std;
        }
-#line 957 "<stdout>"
+#line 988 "<stdout>"
 yy8:
        YYDEBUG(8, *YYCURSOR);
        yyaccept = 0;
@@ -1184,12 +1216,12 @@ yy13:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
        if(yych <= 'U'){
                if(yych <= '@'){
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                } else {
                        if(yych == 'I') goto yy646;
@@ -1198,11 +1230,11 @@ yy13:
        } else {
                if(yych <= 'X'){
                        if(yych == 'W') goto yy48;
-                       goto yy395;
+                       goto yy645;
                } else {
                        if(yych <= 'Z') goto yy48;
                        if(yych <= '`') goto yy3;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'z') goto yy51;
                        goto yy3;
                }
        }
@@ -1211,20 +1243,20 @@ yy14:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
        if(yych <= 'H'){
                if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
+               if(yych <= '9') goto yy383;
                if(yych <= '@') goto yy3;
                goto yy48;
        } else {
                if(yych <= 'Z'){
-                       if(yych <= 'I') goto yy644;
+                       if(yych <= 'I') goto yy643;
                        goto yy48;
                } else {
                        if(yych <= '`') goto yy3;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'z') goto yy51;
                        goto yy3;
                }
        }
@@ -1233,469 +1265,635 @@ yy15:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
        if(yych <= 'H'){
                if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
+               if(yych <= '9') goto yy383;
                if(yych <= '@') goto yy3;
                goto yy48;
        } else {
                if(yych <= 'Z'){
-                       if(yych <= 'I') goto yy643;
+                       if(yych <= 'I') goto yy641;
                        goto yy48;
                } else {
                        if(yych <= '`') goto yy3;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'z') goto yy51;
                        goto yy3;
                }
        }
 yy16:
        YYDEBUG(16, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
                if(yych <= 'A'){
-                       if(yych <= '@') goto yy49;
-                       goto yy628;
+                       if(yych <= '@') goto yy3;
+                       goto yy624;
                } else {
-                       if(yych == 'U') goto yy627;
-                       goto yy49;
+                       if(yych == 'U') goto yy623;
+                       goto yy48;
                }
        } else {
                if(yych <= 't'){
-                       if(yych <= 'a') goto yy636;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'a') goto yy633;
+                       goto yy51;
                } else {
-                       if(yych <= 'u') goto yy635;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'u') goto yy632;
+                       if(yych <= 'z') goto yy51;
+                       goto yy3;
                }
        }
 yy17:
        YYDEBUG(17, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'U'){
-               if(yych == 'A') goto yy628;
-               if(yych <= 'T') goto yy49;
-               goto yy627;
+       if(yych <= 'Z'){
+               if(yych <= 'A'){
+                       if(yych <= '@') goto yy3;
+                       goto yy624;
+               } else {
+                       if(yych == 'U') goto yy623;
+                       goto yy48;
+               }
        } else {
-               if(yych <= 'a'){
-                       if(yych <= '`') goto yy49;
-                       goto yy628;
+               if(yych <= 't'){
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'a') goto yy624;
+                       goto yy48;
                } else {
-                       if(yych == 'u') goto yy627;
-                       goto yy49;
+                       if(yych <= 'u') goto yy623;
+                       if(yych <= 'z') goto yy48;
+                       goto yy3;
                }
        }
 yy18:
        YYDEBUG(18, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
                if(yych <= 'I'){
-                       if(yych == 'E') goto yy589;
-                       if(yych <= 'H') goto yy49;
-                       goto yy590;
+                       if(yych <= 'D'){
+                               if(yych <= '@') goto yy3;
+                               goto yy48;
+                       } else {
+                               if(yych <= 'E') goto yy586;
+                               if(yych <= 'H') goto yy48;
+                               goto yy587;
+                       }
                } else {
                        if(yych <= 'O'){
-                               if(yych <= 'N') goto yy49;
-                               goto yy591;
+                               if(yych <= 'N') goto yy48;
+                               goto yy588;
                        } else {
-                               if(yych == 'R') goto yy592;
-                               goto yy49;
+                               if(yych == 'R') goto yy589;
+                               goto yy48;
                        }
                }
        } else {
-               if(yych <= 'n'){
-                       if(yych <= 'e'){
-                               if(yych <= 'd') goto yy50;
-                               goto yy608;
+               if(yych <= 'i'){
+                       if(yych <= 'd'){
+                               if(yych <= '`') goto yy3;
+                               goto yy51;
                        } else {
-                               if(yych == 'i') goto yy609;
-                               goto yy50;
+                               if(yych <= 'e') goto yy604;
+                               if(yych <= 'h') goto yy51;
+                               goto yy605;
                        }
                } else {
                        if(yych <= 'q'){
-                               if(yych <= 'o') goto yy610;
-                               goto yy50;
+                               if(yych == 'o') goto yy606;
+                               goto yy51;
                        } else {
-                               if(yych <= 'r') goto yy611;
-                               if(yych <= 'z') goto yy50;
-                               goto yy49;
+                               if(yych <= 'r') goto yy607;
+                               if(yych <= 'z') goto yy51;
+                               goto yy3;
                        }
                }
        }
 yy19:
        YYDEBUG(19, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'R'){
+       if(yych <= 'Z'){
                if(yych <= 'I'){
-                       if(yych == 'E') goto yy589;
-                       if(yych <= 'H') goto yy49;
-                       goto yy590;
+                       if(yych <= 'D'){
+                               if(yych <= '@') goto yy3;
+                               goto yy48;
+                       } else {
+                               if(yych <= 'E') goto yy586;
+                               if(yych <= 'H') goto yy48;
+                               goto yy587;
+                       }
                } else {
-                       if(yych == 'O') goto yy591;
-                       if(yych <= 'Q') goto yy49;
-                       goto yy592;
+                       if(yych <= 'O'){
+                               if(yych <= 'N') goto yy48;
+                               goto yy588;
+                       } else {
+                               if(yych == 'R') goto yy589;
+                               goto yy48;
+                       }
                }
        } else {
                if(yych <= 'i'){
-                       if(yych == 'e') goto yy589;
-                       if(yych <= 'h') goto yy49;
-                       goto yy590;
+                       if(yych <= 'd'){
+                               if(yych <= '`') goto yy3;
+                               goto yy48;
+                       } else {
+                               if(yych <= 'e') goto yy586;
+                               if(yych <= 'h') goto yy48;
+                               goto yy587;
+                       }
                } else {
-                       if(yych <= 'o'){
-                               if(yych <= 'n') goto yy49;
-                               goto yy591;
+                       if(yych <= 'q'){
+                               if(yych == 'o') goto yy588;
+                               goto yy48;
                        } else {
-                               if(yych == 'r') goto yy592;
-                               goto yy49;
+                               if(yych <= 'r') goto yy589;
+                               if(yych <= 'z') goto yy48;
+                               goto yy3;
                        }
                }
        }
 yy20:
        YYDEBUG(20, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
                if(yych <= 'A'){
-                       if(yych <= '@') goto yy49;
-                       goto yy573;
+                       if(yych <= '@') goto yy3;
+                       goto yy570;
                } else {
-                       if(yych == 'O') goto yy574;
-                       goto yy49;
+                       if(yych == 'O') goto yy571;
+                       goto yy48;
                }
        } else {
                if(yych <= 'n'){
-                       if(yych <= 'a') goto yy581;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'a') goto yy578;
+                       goto yy51;
                } else {
-                       if(yych <= 'o') goto yy582;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'o') goto yy579;
+                       if(yych <= 'z') goto yy51;
+                       goto yy3;
                }
        }
 yy21:
        YYDEBUG(21, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'O'){
-               if(yych == 'A') goto yy573;
-               if(yych <= 'N') goto yy49;
-               goto yy574;
+       if(yych <= 'Z'){
+               if(yych <= 'A'){
+                       if(yych <= '@') goto yy3;
+                       goto yy570;
+               } else {
+                       if(yych == 'O') goto yy571;
+                       goto yy48;
+               }
        } else {
-               if(yych <= 'a'){
-                       if(yych <= '`') goto yy49;
-                       goto yy573;
+               if(yych <= 'n'){
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'a') goto yy570;
+                       goto yy48;
                } else {
-                       if(yych == 'o') goto yy574;
-                       goto yy49;
+                       if(yych <= 'o') goto yy571;
+                       if(yych <= 'z') goto yy48;
+                       goto yy3;
                }
        }
 yy22:
        YYDEBUG(22, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
                if(yych <= 'O'){
-                       if(yych == 'G') goto yy556;
-                       goto yy49;
+                       if(yych <= '@') goto yy3;
+                       if(yych == 'G') goto yy553;
+                       goto yy48;
                } else {
-                       if(yych <= 'P') goto yy555;
-                       if(yych == 'U') goto yy554;
-                       goto yy49;
+                       if(yych <= 'P') goto yy552;
+                       if(yych == 'U') goto yy551;
+                       goto yy48;
                }
        } else {
-               if(yych <= 'p'){
-                       if(yych == 'g') goto yy566;
-                       if(yych <= 'o') goto yy50;
-                       goto yy565;
+               if(yych <= 'o'){
+                       if(yych <= '`') goto yy3;
+                       if(yych == 'g') goto yy563;
+                       goto yy51;
                } else {
-                       if(yych == 'u') goto yy564;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't'){
+                               if(yych <= 'p') goto yy562;
+                               goto yy51;
+                       } else {
+                               if(yych <= 'u') goto yy561;
+                               if(yych <= 'z') goto yy51;
+                               goto yy3;
+                       }
                }
        }
 yy23:
        YYDEBUG(23, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'U'){
+       if(yych <= 'Z'){
                if(yych <= 'O'){
-                       if(yych == 'G') goto yy556;
-                       goto yy49;
+                       if(yych <= '@') goto yy3;
+                       if(yych == 'G') goto yy553;
+                       goto yy48;
                } else {
-                       if(yych <= 'P') goto yy555;
-                       if(yych <= 'T') goto yy49;
-                       goto yy554;
+                       if(yych <= 'P') goto yy552;
+                       if(yych == 'U') goto yy551;
+                       goto yy48;
                }
        } else {
                if(yych <= 'o'){
-                       if(yych == 'g') goto yy556;
-                       goto yy49;
+                       if(yych <= '`') goto yy3;
+                       if(yych == 'g') goto yy553;
+                       goto yy48;
                } else {
-                       if(yych <= 'p') goto yy555;
-                       if(yych == 'u') goto yy554;
-                       goto yy49;
+                       if(yych <= 't'){
+                               if(yych <= 'p') goto yy552;
+                               goto yy48;
+                       } else {
+                               if(yych <= 'u') goto yy551;
+                               if(yych <= 'z') goto yy48;
+                               goto yy3;
+                       }
                }
        }
 yy24:
        YYDEBUG(24, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
                if(yych <= 'E'){
-                       if(yych == 'A') goto yy501;
-                       if(yych <= 'D') goto yy49;
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'A') goto yy501;
+                       if(yych <= 'D') goto yy48;
                        goto yy500;
                } else {
                        if(yych <= 'I'){
-                               if(yych <= 'H') goto yy49;
+                               if(yych <= 'H') goto yy48;
                                goto yy502;
                        } else {
                                if(yych == 'U') goto yy503;
-                               goto yy49;
+                               goto yy48;
                        }
                }
        } else {
                if(yych <= 'h'){
-                       if(yych <= 'a') goto yy528;
-                       if(yych == 'e') goto yy527;
-                       goto yy50;
+                       if(yych <= 'a'){
+                               if(yych <= '`') goto yy3;
+                               goto yy525;
+                       } else {
+                               if(yych == 'e') goto yy524;
+                               goto yy51;
+                       }
                } else {
                        if(yych <= 't'){
-                               if(yych <= 'i') goto yy529;
-                               goto yy50;
+                               if(yych <= 'i') goto yy526;
+                               goto yy51;
                        } else {
-                               if(yych <= 'u') goto yy530;
-                               if(yych <= 'z') goto yy50;
-                               goto yy49;
+                               if(yych <= 'u') goto yy527;
+                               if(yych <= 'z') goto yy51;
+                               goto yy3;
                        }
                }
        }
 yy25:
        YYDEBUG(25, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'U'){
+       if(yych <= 'Z'){
                if(yych <= 'E'){
-                       if(yych == 'A') goto yy501;
-                       if(yych <= 'D') goto yy49;
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'A') goto yy501;
+                       if(yych <= 'D') goto yy48;
                        goto yy500;
                } else {
-                       if(yych == 'I') goto yy502;
-                       if(yych <= 'T') goto yy49;
-                       goto yy503;
+                       if(yych <= 'I'){
+                               if(yych <= 'H') goto yy48;
+                               goto yy502;
+                       } else {
+                               if(yych == 'U') goto yy503;
+                               goto yy48;
+                       }
                }
        } else {
-               if(yych <= 'e'){
-                       if(yych == 'a') goto yy501;
-                       if(yych <= 'd') goto yy49;
-                       goto yy500;
+               if(yych <= 'h'){
+                       if(yych <= 'a'){
+                               if(yych <= '`') goto yy3;
+                               goto yy501;
+                       } else {
+                               if(yych == 'e') goto yy500;
+                               goto yy48;
+                       }
                } else {
-                       if(yych <= 'i'){
-                               if(yych <= 'h') goto yy49;
-                               goto yy502;
+                       if(yych <= 't'){
+                               if(yych <= 'i') goto yy502;
+                               goto yy48;
                        } else {
-                               if(yych == 'u') goto yy503;
-                               goto yy49;
+                               if(yych <= 'u') goto yy503;
+                               if(yych <= 'z') goto yy48;
+                               goto yy3;
                        }
                }
        }
 yy26:
        YYDEBUG(26, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
                if(yych == 'C') goto yy490;
-               goto yy49;
+               goto yy48;
        } else {
-               if(yych == 'c') goto yy495;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= 'b'){
+                       if(yych <= '`') goto yy3;
+                       goto yy51;
+               } else {
+                       if(yych <= 'c') goto yy495;
+                       if(yych <= 'z') goto yy51;
+                       goto yy3;
+               }
        }
 yy27:
        YYDEBUG(27, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'C') goto yy490;
-       if(yych == 'c') goto yy490;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'C') goto yy490;
+               goto yy48;
+       } else {
+               if(yych <= 'b'){
+                       if(yych <= '`') goto yy3;
+                       goto yy48;
+               } else {
+                       if(yych <= 'c') goto yy490;
+                       if(yych <= 'z') goto yy48;
+                       goto yy3;
+               }
+       }
 yy28:
        YYDEBUG(28, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
                if(yych <= 'H'){
+                       if(yych <= '@') goto yy3;
                        if(yych == 'E') goto yy472;
-                       goto yy49;
+                       goto yy48;
                } else {
                        if(yych <= 'I') goto yy473;
                        if(yych == 'O') goto yy468;
-                       goto yy49;
+                       goto yy48;
                }
        } else {
-               if(yych <= 'i'){
+               if(yych <= 'h'){
+                       if(yych <= '`') goto yy3;
                        if(yych == 'e') goto yy470;
-                       if(yych <= 'h') goto yy50;
-                       goto yy471;
+                       goto yy51;
                } else {
-                       if(yych == 'o') goto yy469;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'n'){
+                               if(yych <= 'i') goto yy471;
+                               goto yy51;
+                       } else {
+                               if(yych <= 'o') goto yy469;
+                               if(yych <= 'z') goto yy51;
+                               goto yy3;
+                       }
                }
        }
 yy29:
        YYDEBUG(29, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
-               if(yych == 'E') goto yy381;
-               goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'E') goto yy377;
+               goto yy48;
        } else {
-               if(yych == 'e') goto yy461;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy51;
+               } else {
+                       if(yych <= 'e') goto yy461;
+                       if(yych <= 'z') goto yy51;
+                       goto yy3;
+               }
        }
 yy30:
        YYDEBUG(30, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy381;
-       if(yych == 'e') goto yy381;
-       goto yy49;
-yy31:
-       YYDEBUG(31, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'E') goto yy377;
+               goto yy48;
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy48;
+               } else {
+                       if(yych <= 'e') goto yy377;
+                       if(yych <= 'z') goto yy48;
+                       goto yy3;
+               }
+       }
+yy31:
+       YYDEBUG(31, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
                if(yych <= 'H'){
-                       if(yych == 'E') goto yy343;
-                       if(yych <= 'G') goto yy49;
-                       goto yy344;
+                       if(yych <= 'D'){
+                               if(yych <= '@') goto yy3;
+                               goto yy48;
+                       } else {
+                               if(yych <= 'E') goto yy341;
+                               if(yych <= 'G') goto yy48;
+                               goto yy342;
+                       }
                } else {
                        if(yych <= 'U'){
-                               if(yych <= 'T') goto yy49;
-                               goto yy345;
+                               if(yych <= 'T') goto yy48;
+                               goto yy343;
                        } else {
-                               if(yych == 'W') goto yy346;
-                               goto yy49;
+                               if(yych == 'W') goto yy344;
+                               goto yy48;
                        }
                }
        } else {
-               if(yych <= 't'){
-                       if(yych <= 'e'){
-                               if(yych <= 'd') goto yy50;
-                               goto yy339;
+               if(yych <= 'h'){
+                       if(yych <= 'd'){
+                               if(yych <= '`') goto yy3;
+                               goto yy51;
                        } else {
-                               if(yych == 'h') goto yy340;
-                               goto yy50;
+                               if(yych <= 'e') goto yy337;
+                               if(yych <= 'g') goto yy51;
+                               goto yy338;
                        }
                } else {
                        if(yych <= 'v'){
-                               if(yych <= 'u') goto yy341;
-                               goto yy50;
+                               if(yych == 'u') goto yy339;
+                               goto yy51;
                        } else {
-                               if(yych <= 'w') goto yy342;
-                               if(yych <= 'z') goto yy50;
-                               goto yy49;
+                               if(yych <= 'w') goto yy340;
+                               if(yych <= 'z') goto yy51;
+                               goto yy3;
                        }
                }
        }
 yy32:
        YYDEBUG(32, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
+       if(yych <= 'Z'){
                if(yych <= 'I'){
-                       if(yych <= 'H') goto yy49;
-                       goto yy321;
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'H') goto yy48;
+                       goto yy322;
                } else {
-                       if(yych == 'L') goto yy322;
-                       goto yy49;
+                       if(yych == 'L') goto yy323;
+                       goto yy48;
                }
        } else {
-               if(yych <= 'k'){
-                       if(yych == 'i') goto yy330;
-                       goto yy50;
+               if(yych <= 'i'){
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'h') goto yy51;
+                       goto yy328;
                } else {
-                       if(yych <= 'l') goto yy331;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 'l') goto yy329;
+                       if(yych <= 'z') goto yy51;
+                       goto yy3;
                }
        }
 yy33:
        YYDEBUG(33, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'L'){
-               if(yych == 'I') goto yy321;
-               if(yych <= 'K') goto yy49;
-               goto yy322;
+       if(yych <= 'Z'){
+               if(yych <= 'I'){
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'H') goto yy48;
+                       goto yy322;
+               } else {
+                       if(yych == 'L') goto yy323;
+                       goto yy48;
+               }
        } else {
                if(yych <= 'i'){
-                       if(yych <= 'h') goto yy49;
-                       goto yy321;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'h') goto yy48;
+                       goto yy322;
                } else {
-                       if(yych == 'l') goto yy322;
-                       goto yy49;
+                       if(yych == 'l') goto yy323;
+                       if(yych <= 'z') goto yy48;
+                       goto yy3;
                }
        }
 yy34:
        YYDEBUG(34, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
-               if(yych == 'A') goto yy317;
-               goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'A') goto yy316;
+               goto yy48;
        } else {
+               if(yych <= '`') goto yy3;
                if(yych <= 'a') goto yy319;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= 'z') goto yy51;
+               goto yy3;
        }
 yy35:
        YYDEBUG(35, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'A') goto yy317;
-       if(yych == 'a') goto yy317;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'A') goto yy316;
+               goto yy48;
+       } else {
+               if(yych <= '`') goto yy3;
+               if(yych <= 'a') goto yy316;
+               if(yych <= 'z') goto yy48;
+               goto yy3;
+       }
 yy36:
        YYDEBUG(36, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
-               if(yych == 'R') goto yy164;
-               goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'R') goto yy167;
+               goto yy48;
        } else {
-               if(yych == 'r') goto yy310;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= 'q'){
+                       if(yych <= '`') goto yy3;
+                       goto yy51;
+               } else {
+                       if(yych <= 'r') goto yy309;
+                       if(yych <= 'z') goto yy51;
+                       goto yy3;
+               }
        }
 yy37:
        YYDEBUG(37, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'R') goto yy164;
-       if(yych == 'r') goto yy164;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'R') goto yy167;
+               goto yy48;
+       } else {
+               if(yych <= 'q'){
+                       if(yych <= '`') goto yy3;
+                       goto yy48;
+               } else {
+                       if(yych <= 'r') goto yy167;
+                       if(yych <= 'z') goto yy48;
+                       goto yy3;
+               }
+       }
 yy38:
        YYDEBUG(38, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '`'){
-               if(yych == 'E') goto yy146;
-               goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'E') goto yy149;
+               goto yy48;
        } else {
-               if(yych == 'e') goto yy156;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy51;
+               } else {
+                       if(yych <= 'e') goto yy159;
+                       if(yych <= 'z') goto yy51;
+                       goto yy3;
+               }
        }
 yy39:
        YYDEBUG(39, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy146;
-       if(yych == 'e') goto yy146;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'E') goto yy149;
+               goto yy48;
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy48;
+               } else {
+                       if(yych <= 'e') goto yy149;
+                       if(yych <= 'z') goto yy48;
+                       goto yy3;
+               }
+       }
 yy40:
        YYDEBUG(40, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= '/') goto yy7;
-       if(yych <= '1') goto yy57;
-       if(yych <= '2') goto yy58;
-       if(yych <= '9') goto yy59;
+       if(yych <= '1') goto yy61;
+       if(yych <= '2') goto yy62;
+       if(yych <= '9') goto yy63;
        goto yy7;
 yy41:
        YYDEBUG(41, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yybm[0+yych] & 8) {
-               goto yy50;
-       }
-       goto yy49;
+       if(yych <= '@') goto yy3;
+       if(yych <= 'Z') goto yy48;
+       if(yych <= '`') goto yy3;
+       if(yych <= 'z') goto yy51;
+       goto yy3;
 yy42:
        YYDEBUG(42, *YYCURSOR);
        yych = *++YYCURSOR;
-       goto yy49;
+       if(yych <= '@') goto yy3;
+       if(yych <= 'Z') goto yy48;
+       if(yych <= '`') goto yy3;
+       if(yych <= 'z') goto yy48;
+       goto yy3;
 yy43:
        YYDEBUG(43, *YYCURSOR);
        ++YYCURSOR;
@@ -1703,11 +1901,11 @@ yy43:
 yy44:
        YYDEBUG(44, *YYCURSOR);
 
-#line 1359 "parse_date.re"
+#line 1378 "parse_date.re"
 {
                goto std;
        }
-#line 1617 "<stdout>"
+#line 1814 "<stdout>"
 yy45:
        YYDEBUG(45, *YYCURSOR);
        ++YYCURSOR;
@@ -1715,54 +1913,72 @@ yy45:
 yy46:
        YYDEBUG(46, *YYCURSOR);
 
-#line 1364 "parse_date.re"
+#line 1383 "parse_date.re"
 {
                s->pos = cursor; s->line++;
                goto std;
        }
-#line 1626 "<stdout>"
+#line 1823 "<stdout>"
 yy47:
        YYDEBUG(47, *YYCURSOR);
        yych = *++YYCURSOR;
        goto yy7;
 yy48:
        YYDEBUG(48, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = *++YYCURSOR;
+       if(yych <= '@') goto yy3;
+       if(yych <= 'Z') goto yy49;
+       if(yych <= '`') goto yy3;
+       if(yych >= '{') goto yy3;
        goto yy49;
 yy49:
        YYDEBUG(49, *YYCURSOR);
-       if(yybm[0+yych] & 4) {
-               goto yy48;
-       }
-       goto yy3;
+       yych = *++YYCURSOR;
+       if(yych <= '@') goto yy3;
+       if(yych <= 'Z') goto yy50;
+       if(yych <= '`') goto yy3;
+       if(yych >= '{') goto yy3;
+       goto yy50;
 yy50:
        YYDEBUG(50, *YYCURSOR);
-       yyaccept = 1;
-       YYMARKER = ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       goto yy51;
+       yych = *++YYCURSOR;
+       goto yy3;
 yy51:
        YYDEBUG(51, *YYCURSOR);
-       if(yybm[0+yych] & 8) {
-               goto yy50;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= '@'){
+               if(yych == '/') goto yy53;
+               goto yy3;
+       } else {
+               if(yych <= 'Z') goto yy49;
+               if(yych <= '`') goto yy3;
+               if(yych >= '{') goto yy3;
+               goto yy52;
        }
-       if(yych == '/') goto yy52;
-       if(yych <= '@') goto yy3;
-       if(yych <= 'Z') goto yy48;
-       goto yy3;
 yy52:
        YYDEBUG(52, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= '@'){
+               if(yych != '/') goto yy3;
+               goto yy53;
+       } else {
+               if(yych <= 'Z') goto yy50;
+               if(yych <= '`') goto yy3;
+               if(yych <= 'z') goto yy58;
+               goto yy3;
+       }
+yy53:
+       YYDEBUG(53, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= '@') goto yy53;
-       if(yych <= 'Z') goto yy54;
-       goto yy53;
-yy53:
-       YYDEBUG(53, *YYCURSOR);
+       if(yych <= '@') goto yy54;
+       if(yych <= 'Z') goto yy55;
+       goto yy54;
+yy54:
+       YYDEBUG(54, *YYCURSOR);
        YYCURSOR = YYMARKER;
        switch(yyaccept){
        case 10:        goto yy668;
@@ -1770,310 +1986,332 @@ yy53:
        case 19:        goto yy1124;
        case 11:        goto yy804;
        case 16:        goto yy1035;
-       case 8: goto yy391;
+       case 8: goto yy387;
        case 15:        goto yy897;
-       case 6: goto yy397;
+       case 6: goto yy393;
        case 14:        goto yy930;
        case 17:        goto yy941;
        case 13:        goto yy923;
        case 12:        goto yy837;
-       case 9: goto yy558;
-       case 5: goto yy188;
-       case 4: goto yy155;
-       case 3: goto yy148;
+       case 9: goto yy555;
+       case 5: goto yy191;
+       case 4: goto yy158;
+       case 3: goto yy151;
        case 1: goto yy3;
-       case 7: goto yy409;
-       case 2: goto yy81;
+       case 7: goto yy405;
+       case 2: goto yy85;
        case 0: goto yy7;
        }
-yy54:
-       YYDEBUG(54, *YYCURSOR);
+yy55:
+       YYDEBUG(55, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= '`') goto yy53;
-       if(yych >= '{') goto yy53;
-       goto yy55;
-yy55:
-       YYDEBUG(55, *YYCURSOR);
+       if(yybm[0+yych] & 8) {
+               goto yy56;
+       }
+       goto yy54;
+yy56:
+       YYDEBUG(56, *YYCURSOR);
        yyaccept = 1;
        YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       goto yy56;
-yy56:
-       YYDEBUG(56, *YYCURSOR);
-       if(yych == '/') goto yy52;
-       if(yych <= '`') goto yy3;
-       if(yych <= 'z') goto yy55;
-       goto yy3;
+       goto yy57;
 yy57:
        YYDEBUG(57, *YYCURSOR);
+       if(yybm[0+yych] & 8) {
+               goto yy56;
+       }
+       if(yych == '/') goto yy53;
+       goto yy3;
+yy58:
+       YYDEBUG(58, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == '/') goto yy53;
+       if(yych <= '`') goto yy3;
+       if(yych >= '{') goto yy3;
+       goto yy59;
+yy59:
+       YYDEBUG(59, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       goto yy60;
+yy60:
+       YYDEBUG(60, *YYCURSOR);
+       if(yych == '/') goto yy53;
+       if(yych <= '`') goto yy54;
+       if(yych <= 'z') goto yy59;
+       goto yy54;
+yy61:
+       YYDEBUG(61, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy3;
-       if(yych <= '5') goto yy144;
-       if(yych <= '9') goto yy59;
-       if(yych <= ':') goto yy60;
+       if(yych <= '5') goto yy147;
+       if(yych <= '9') goto yy63;
+       if(yych <= ':') goto yy64;
        goto yy3;
-yy58:
-       YYDEBUG(58, *YYCURSOR);
+yy62:
+       YYDEBUG(62, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '5'){
                if(yych <= '/') goto yy3;
-               if(yych <= '3') goto yy144;
-               goto yy61;
+               if(yych <= '3') goto yy147;
+               goto yy65;
        } else {
-               if(yych <= '9') goto yy64;
-               if(yych <= ':') goto yy60;
+               if(yych <= '9') goto yy68;
+               if(yych <= ':') goto yy64;
                goto yy3;
        }
-yy59:
-       YYDEBUG(59, *YYCURSOR);
+yy63:
+       YYDEBUG(63, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy3;
-       if(yych <= '5') goto yy61;
-       if(yych <= '9') goto yy64;
+       if(yych <= '5') goto yy65;
+       if(yych <= '9') goto yy68;
        if(yych >= ';') goto yy3;
-       goto yy60;
-yy60:
-       YYDEBUG(60, *YYCURSOR);
+       goto yy64;
+yy64:
+       YYDEBUG(64, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '/') goto yy3;
-       if(yych <= '5') goto yy142;
+       if(yych <= '5') goto yy146;
        goto yy3;
-yy61:
-       YYDEBUG(61, *YYCURSOR);
+yy65:
+       YYDEBUG(65, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
-       if(yych <= '9') goto yy141;
-       goto yy53;
-yy62:
-       YYDEBUG(62, *YYCURSOR);
+       if(yych <= '/') goto yy54;
+       if(yych <= '9') goto yy145;
+       goto yy54;
+yy66:
+       YYDEBUG(66, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       goto yy63;
-yy63:
-       YYDEBUG(63, *YYCURSOR);
+       goto yy67;
+yy67:
+       YYDEBUG(67, *YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        YYDEBUG(-1, yych);
        switch(yych){
-       case 'D':       case 'd':       goto yy69;
-       case 'F':       case 'f':       goto yy71;
-       case 'H':       case 'h':       goto yy68;
-       case 'M':       case 'm':       goto yy67;
-       case 'S':       case 's':       goto yy66;
-       case 'T':       case 't':       goto yy73;
-       case 'W':       case 'w':       goto yy70;
-       case 'Y':       case 'y':       goto yy72;
-       default:        goto yy53;
+       case 'D':       case 'd':       goto yy73;
+       case 'F':       case 'f':       goto yy75;
+       case 'H':       case 'h':       goto yy72;
+       case 'M':       case 'm':       goto yy71;
+       case 'S':       case 's':       goto yy70;
+       case 'T':       case 't':       goto yy77;
+       case 'W':       case 'w':       goto yy74;
+       case 'Y':       case 'y':       goto yy76;
+       default:        goto yy54;
        }
-yy64:
-       YYDEBUG(64, *YYCURSOR);
+yy68:
+       YYDEBUG(68, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       goto yy65;
-yy65:
-       YYDEBUG(65, *YYCURSOR);
+       goto yy69;
+yy69:
+       YYDEBUG(69, *YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
-       if(yych <= '9') goto yy64;
-       goto yy53;
-yy66:
-       YYDEBUG(66, *YYCURSOR);
+       if(yych <= '/') goto yy54;
+       if(yych <= '9') goto yy68;
+       goto yy54;
+yy70:
+       YYDEBUG(70, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'U'){
                if(yych <= 'D'){
-                       if(yych == 'A') goto yy127;
-                       goto yy53;
+                       if(yych == 'A') goto yy131;
+                       goto yy54;
                } else {
-                       if(yych <= 'E') goto yy129;
-                       if(yych <= 'T') goto yy53;
-                       goto yy128;
+                       if(yych <= 'E') goto yy133;
+                       if(yych <= 'T') goto yy54;
+                       goto yy132;
                }
        } else {
                if(yych <= 'd'){
-                       if(yych == 'a') goto yy127;
-                       goto yy53;
+                       if(yych == 'a') goto yy131;
+                       goto yy54;
                } else {
-                       if(yych <= 'e') goto yy129;
-                       if(yych == 'u') goto yy128;
-                       goto yy53;
+                       if(yych <= 'e') goto yy133;
+                       if(yych == 'u') goto yy132;
+                       goto yy54;
                }
        }
-yy67:
-       YYDEBUG(67, *YYCURSOR);
+yy71:
+       YYDEBUG(71, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'O'){
-               if(yych == 'I') goto yy119;
-               if(yych <= 'N') goto yy53;
-               goto yy118;
+               if(yych == 'I') goto yy123;
+               if(yych <= 'N') goto yy54;
+               goto yy122;
        } else {
                if(yych <= 'i'){
-                       if(yych <= 'h') goto yy53;
-                       goto yy119;
+                       if(yych <= 'h') goto yy54;
+                       goto yy123;
                } else {
-                       if(yych == 'o') goto yy118;
-                       goto yy53;
+                       if(yych == 'o') goto yy122;
+                       goto yy54;
                }
        }
-yy68:
-       YYDEBUG(68, *YYCURSOR);
+yy72:
+       YYDEBUG(72, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'O') goto yy116;
-       if(yych == 'o') goto yy116;
-       goto yy53;
-yy69:
-       YYDEBUG(69, *YYCURSOR);
+       if(yych == 'O') goto yy120;
+       if(yych == 'o') goto yy120;
+       goto yy54;
+yy73:
+       YYDEBUG(73, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy115;
-       if(yych == 'a') goto yy115;
-       goto yy53;
-yy70:
-       YYDEBUG(70, *YYCURSOR);
+       if(yych == 'A') goto yy119;
+       if(yych == 'a') goto yy119;
+       goto yy54;
+yy74:
+       YYDEBUG(74, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy107;
-       if(yych == 'e') goto yy107;
-       goto yy53;
-yy71:
-       YYDEBUG(71, *YYCURSOR);
+       if(yych == 'E') goto yy111;
+       if(yych == 'e') goto yy111;
+       goto yy54;
+yy75:
+       YYDEBUG(75, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'R'){
-               if(yych == 'O') goto yy92;
-               if(yych <= 'Q') goto yy53;
-               goto yy91;
+               if(yych == 'O') goto yy96;
+               if(yych <= 'Q') goto yy54;
+               goto yy95;
        } else {
                if(yych <= 'o'){
-                       if(yych <= 'n') goto yy53;
-                       goto yy92;
+                       if(yych <= 'n') goto yy54;
+                       goto yy96;
                } else {
-                       if(yych == 'r') goto yy91;
-                       goto yy53;
+                       if(yych == 'r') goto yy95;
+                       goto yy54;
                }
        }
-yy72:
-       YYDEBUG(72, *YYCURSOR);
+yy76:
+       YYDEBUG(76, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy88;
-       if(yych == 'e') goto yy88;
-       goto yy53;
-yy73:
-       YYDEBUG(73, *YYCURSOR);
+       if(yych == 'E') goto yy92;
+       if(yych == 'e') goto yy92;
+       goto yy54;
+yy77:
+       YYDEBUG(77, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'U'){
-               if(yych == 'H') goto yy74;
-               if(yych <= 'T') goto yy53;
-               goto yy75;
+               if(yych == 'H') goto yy78;
+               if(yych <= 'T') goto yy54;
+               goto yy79;
        } else {
                if(yych <= 'h'){
-                       if(yych <= 'g') goto yy53;
-                       goto yy74;
+                       if(yych <= 'g') goto yy54;
+                       goto yy78;
                } else {
-                       if(yych == 'u') goto yy75;
-                       goto yy53;
+                       if(yych == 'u') goto yy79;
+                       goto yy54;
                }
        }
-yy74:
-       YYDEBUG(74, *YYCURSOR);
+yy78:
+       YYDEBUG(78, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy83;
-       if(yych == 'u') goto yy83;
-       goto yy53;
-yy75:
-       YYDEBUG(75, *YYCURSOR);
+       if(yych == 'U') goto yy87;
+       if(yych == 'u') goto yy87;
+       goto yy54;
+yy79:
+       YYDEBUG(79, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy76;
-       if(yych != 'e') goto yy53;
-       goto yy76;
-yy76:
-       YYDEBUG(76, *YYCURSOR);
+       if(yych == 'E') goto yy80;
+       if(yych != 'e') goto yy54;
+       goto yy80;
+yy80:
+       YYDEBUG(80, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy77;
-       if(yych != 's') goto yy53;
-       goto yy77;
-yy77:
-       YYDEBUG(77, *YYCURSOR);
+       if(yych == 'S') goto yy81;
+       if(yych != 's') goto yy54;
+       goto yy81;
+yy81:
+       YYDEBUG(81, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy78;
-       if(yych != 'd') goto yy53;
-       goto yy78;
-yy78:
-       YYDEBUG(78, *YYCURSOR);
+       if(yych == 'D') goto yy82;
+       if(yych != 'd') goto yy54;
+       goto yy82;
+yy82:
+       YYDEBUG(82, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy79;
-       if(yych != 'a') goto yy53;
-       goto yy79;
-yy79:
-       YYDEBUG(79, *YYCURSOR);
+       if(yych == 'A') goto yy83;
+       if(yych != 'a') goto yy54;
+       goto yy83;
+yy83:
+       YYDEBUG(83, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy80;
-       if(yych != 'y') goto yy53;
-       goto yy80;
-yy80:
-       YYDEBUG(80, *YYCURSOR);
+       if(yych == 'Y') goto yy84;
+       if(yych != 'y') goto yy54;
+       goto yy84;
+yy84:
+       YYDEBUG(84, *YYCURSOR);
        yyaccept = 2;
        YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yybm[0+yych] & 32) {
-               goto yy64;
+               goto yy68;
        }
-       if(yych == '+') goto yy82;
-       if(yych == '-') goto yy82;
-       goto yy81;
-yy81:
-       YYDEBUG(81, *YYCURSOR);
+       if(yych == '+') goto yy86;
+       if(yych == '-') goto yy86;
+       goto yy85;
+yy85:
+       YYDEBUG(85, *YYCURSOR);
 
-#line 1343 "parse_date.re"
+#line 1362 "parse_date.re"
 {
                timelib_ull i;
 
@@ -2088,134 +2326,92 @@ yy81:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 1923 "<stdout>"
-yy82:
-       YYDEBUG(82, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yybm[0+yych] & 32) {
-               goto yy64;
-       }
-       goto yy53;
-yy83:
-       YYDEBUG(83, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'R') goto yy84;
-       if(yych != 'r') goto yy53;
-       goto yy84;
-yy84:
-       YYDEBUG(84, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'S') goto yy85;
-       if(yych != 's') goto yy53;
-       goto yy85;
-yy85:
-       YYDEBUG(85, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'D') goto yy86;
-       if(yych != 'd') goto yy53;
-       goto yy86;
+#line 2152 "<stdout>"
 yy86:
        YYDEBUG(86, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy87;
-       if(yych != 'a') goto yy53;
-       goto yy87;
+       if(yybm[0+yych] & 32) {
+               goto yy68;
+       }
+       goto yy54;
 yy87:
        YYDEBUG(87, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy80;
-       if(yych == 'y') goto yy80;
-       goto yy53;
+       if(yych == 'R') goto yy88;
+       if(yych != 'r') goto yy54;
+       goto yy88;
 yy88:
        YYDEBUG(88, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy89;
-       if(yych != 'a') goto yy53;
+       if(yych == 'S') goto yy89;
+       if(yych != 's') goto yy54;
        goto yy89;
 yy89:
        YYDEBUG(89, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy90;
-       if(yych != 'r') goto yy53;
+       if(yych == 'D') goto yy90;
+       if(yych != 'd') goto yy54;
        goto yy90;
 yy90:
        YYDEBUG(90, *YYCURSOR);
-       yyaccept = 2;
-       YYMARKER = ++YYCURSOR;
+       ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yybm[0+yych] & 32) {
-               goto yy64;
-       }
-       if(yych <= '-'){
-               if(yych == '+') goto yy82;
-               if(yych <= ',') goto yy81;
-               goto yy82;
-       } else {
-               if(yych <= 'S'){
-                       if(yych <= 'R') goto yy81;
-                       goto yy80;
-               } else {
-                       if(yych == 's') goto yy80;
-                       goto yy81;
-               }
-       }
+       if(yych == 'A') goto yy91;
+       if(yych != 'a') goto yy54;
+       goto yy91;
 yy91:
        YYDEBUG(91, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy104;
-       if(yych == 'i') goto yy104;
-       goto yy53;
+       if(yych == 'Y') goto yy84;
+       if(yych == 'y') goto yy84;
+       goto yy54;
 yy92:
        YYDEBUG(92, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy93;
-       if(yych != 'r') goto yy53;
+       if(yych == 'A') goto yy93;
+       if(yych != 'a') goto yy54;
        goto yy93;
 yy93:
        YYDEBUG(93, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy94;
-       if(yych != 't') goto yy53;
+       if(yych == 'R') goto yy94;
+       if(yych != 'r') goto yy54;
        goto yy94;
 yy94:
        YYDEBUG(94, *YYCURSOR);
-       ++YYCURSOR;
+       yyaccept = 2;
+       YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= 'N'){
-               if(yych == 'H') goto yy96;
-               if(yych <= 'M') goto yy53;
-               goto yy95;
+       if(yybm[0+yych] & 32) {
+               goto yy68;
+       }
+       if(yych <= '-'){
+               if(yych == '+') goto yy86;
+               if(yych <= ',') goto yy85;
+               goto yy86;
        } else {
-               if(yych <= 'h'){
-                       if(yych <= 'g') goto yy53;
-                       goto yy96;
+               if(yych <= 'S'){
+                       if(yych <= 'R') goto yy85;
+                       goto yy84;
                } else {
-                       if(yych != 'n') goto yy53;
-                       goto yy95;
+                       if(yych == 's') goto yy84;
+                       goto yy85;
                }
        }
 yy95:
@@ -2223,541 +2419,587 @@ yy95:
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy101;
-       if(yych == 'i') goto yy101;
-       goto yy53;
+       if(yych == 'I') goto yy108;
+       if(yych == 'i') goto yy108;
+       goto yy54;
 yy96:
        YYDEBUG(96, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy97;
-       if(yych != 'n') goto yy53;
+       if(yych == 'R') goto yy97;
+       if(yych != 'r') goto yy54;
        goto yy97;
 yy97:
        YYDEBUG(97, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy98;
-       if(yych != 'i') goto yy53;
+       if(yych == 'T') goto yy98;
+       if(yych != 't') goto yy54;
        goto yy98;
 yy98:
        YYDEBUG(98, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'G') goto yy99;
-       if(yych != 'g') goto yy53;
-       goto yy99;
+       if(yych <= 'N'){
+               if(yych == 'H') goto yy100;
+               if(yych <= 'M') goto yy54;
+               goto yy99;
+       } else {
+               if(yych <= 'h'){
+                       if(yych <= 'g') goto yy54;
+                       goto yy100;
+               } else {
+                       if(yych != 'n') goto yy54;
+                       goto yy99;
+               }
+       }
 yy99:
        YYDEBUG(99, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy100;
-       if(yych != 'h') goto yy53;
-       goto yy100;
+       if(yych == 'I') goto yy105;
+       if(yych == 'i') goto yy105;
+       goto yy54;
 yy100:
        YYDEBUG(100, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy90;
-       if(yych == 't') goto yy90;
-       goto yy53;
+       if(yych == 'N') goto yy101;
+       if(yych != 'n') goto yy54;
+       goto yy101;
 yy101:
        YYDEBUG(101, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'G') goto yy102;
-       if(yych != 'g') goto yy53;
+       if(yych == 'I') goto yy102;
+       if(yych != 'i') goto yy54;
        goto yy102;
 yy102:
        YYDEBUG(102, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy103;
-       if(yych != 'h') goto yy53;
+       if(yych == 'G') goto yy103;
+       if(yych != 'g') goto yy54;
        goto yy103;
 yy103:
        YYDEBUG(103, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy90;
-       if(yych == 't') goto yy90;
-       goto yy53;
+       if(yych == 'H') goto yy104;
+       if(yych != 'h') goto yy54;
+       goto yy104;
 yy104:
        YYDEBUG(104, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy105;
-       if(yych != 'd') goto yy53;
-       goto yy105;
+       if(yych == 'T') goto yy94;
+       if(yych == 't') goto yy94;
+       goto yy54;
 yy105:
        YYDEBUG(105, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy106;
-       if(yych != 'a') goto yy53;
+       if(yych == 'G') goto yy106;
+       if(yych != 'g') goto yy54;
        goto yy106;
 yy106:
        YYDEBUG(106, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy80;
-       if(yych == 'y') goto yy80;
-       goto yy53;
+       if(yych == 'H') goto yy107;
+       if(yych != 'h') goto yy54;
+       goto yy107;
 yy107:
        YYDEBUG(107, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= 'E'){
-               if(yych <= 'C') goto yy53;
-               if(yych <= 'D') goto yy109;
-               goto yy108;
-       } else {
-               if(yych <= 'c') goto yy53;
-               if(yych <= 'd') goto yy109;
-               if(yych >= 'f') goto yy53;
-               goto yy108;
-       }
+       if(yych == 'T') goto yy94;
+       if(yych == 't') goto yy94;
+       goto yy54;
 yy108:
        YYDEBUG(108, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'K') goto yy90;
-       if(yych == 'k') goto yy90;
-       goto yy53;
+       if(yych == 'D') goto yy109;
+       if(yych != 'd') goto yy54;
+       goto yy109;
 yy109:
        YYDEBUG(109, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy110;
-       if(yych != 'n') goto yy53;
+       if(yych == 'A') goto yy110;
+       if(yych != 'a') goto yy54;
        goto yy110;
 yy110:
        YYDEBUG(110, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy111;
-       if(yych != 'e') goto yy53;
-       goto yy111;
+       if(yych == 'Y') goto yy84;
+       if(yych == 'y') goto yy84;
+       goto yy54;
 yy111:
        YYDEBUG(111, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy112;
-       if(yych != 's') goto yy53;
-       goto yy112;
+       if(yych <= 'E'){
+               if(yych <= 'C') goto yy54;
+               if(yych <= 'D') goto yy113;
+               goto yy112;
+       } else {
+               if(yych <= 'c') goto yy54;
+               if(yych <= 'd') goto yy113;
+               if(yych >= 'f') goto yy54;
+               goto yy112;
+       }
 yy112:
        YYDEBUG(112, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy113;
-       if(yych != 'd') goto yy53;
-       goto yy113;
+       if(yych == 'K') goto yy94;
+       if(yych == 'k') goto yy94;
+       goto yy54;
 yy113:
        YYDEBUG(113, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy114;
-       if(yych != 'a') goto yy53;
+       if(yych == 'N') goto yy114;
+       if(yych != 'n') goto yy54;
        goto yy114;
 yy114:
        YYDEBUG(114, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy80;
-       if(yych == 'y') goto yy80;
-       goto yy53;
+       if(yych == 'E') goto yy115;
+       if(yych != 'e') goto yy54;
+       goto yy115;
 yy115:
        YYDEBUG(115, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy90;
-       if(yych == 'y') goto yy90;
-       goto yy53;
+       if(yych == 'S') goto yy116;
+       if(yych != 's') goto yy54;
+       goto yy116;
 yy116:
        YYDEBUG(116, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy117;
-       if(yych != 'u') goto yy53;
+       if(yych == 'D') goto yy117;
+       if(yych != 'd') goto yy54;
        goto yy117;
 yy117:
        YYDEBUG(117, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy90;
-       if(yych == 'r') goto yy90;
-       goto yy53;
+       if(yych == 'A') goto yy118;
+       if(yych != 'a') goto yy54;
+       goto yy118;
 yy118:
        YYDEBUG(118, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy123;
-       if(yych == 'n') goto yy123;
-       goto yy53;
+       if(yych == 'Y') goto yy84;
+       if(yych == 'y') goto yy84;
+       goto yy54;
 yy119:
        YYDEBUG(119, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy120;
-       if(yych != 'n') goto yy53;
-       goto yy120;
+       if(yych == 'Y') goto yy94;
+       if(yych == 'y') goto yy94;
+       goto yy54;
 yy120:
        YYDEBUG(120, *YYCURSOR);
-       yyaccept = 2;
-       YYMARKER = ++YYCURSOR;
+       ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yybm[0+yych] & 32) {
-               goto yy64;
-       }
-       if(yych <= 'S'){
-               if(yych <= ','){
-                       if(yych == '+') goto yy82;
-                       goto yy81;
-               } else {
-                       if(yych <= '-') goto yy82;
-                       if(yych <= 'R') goto yy81;
-                       goto yy80;
-               }
-       } else {
-               if(yych <= 'r'){
-                       if(yych != 'U') goto yy81;
-                       goto yy121;
-               } else {
-                       if(yych <= 's') goto yy80;
-                       if(yych != 'u') goto yy81;
-                       goto yy121;
-               }
-       }
+       if(yych == 'U') goto yy121;
+       if(yych != 'u') goto yy54;
+       goto yy121;
 yy121:
        YYDEBUG(121, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy122;
-       if(yych != 't') goto yy53;
-       goto yy122;
+       if(yych == 'R') goto yy94;
+       if(yych == 'r') goto yy94;
+       goto yy54;
 yy122:
        YYDEBUG(122, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy90;
-       if(yych == 'e') goto yy90;
-       goto yy53;
+       if(yych == 'N') goto yy127;
+       if(yych == 'n') goto yy127;
+       goto yy54;
 yy123:
        YYDEBUG(123, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= 'T'){
-               if(yych == 'D') goto yy124;
-               if(yych <= 'S') goto yy53;
-               goto yy125;
-       } else {
-               if(yych <= 'd'){
-                       if(yych <= 'c') goto yy53;
-                       goto yy124;
-               } else {
-                       if(yych == 't') goto yy125;
-                       goto yy53;
-               }
-       }
+       if(yych == 'N') goto yy124;
+       if(yych != 'n') goto yy54;
+       goto yy124;
 yy124:
        YYDEBUG(124, *YYCURSOR);
-       ++YYCURSOR;
+       yyaccept = 2;
+       YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy126;
-       if(yych == 'a') goto yy126;
-       goto yy53;
+       if(yybm[0+yych] & 32) {
+               goto yy68;
+       }
+       if(yych <= 'S'){
+               if(yych <= ','){
+                       if(yych == '+') goto yy86;
+                       goto yy85;
+               } else {
+                       if(yych <= '-') goto yy86;
+                       if(yych <= 'R') goto yy85;
+                       goto yy84;
+               }
+       } else {
+               if(yych <= 'r'){
+                       if(yych != 'U') goto yy85;
+                       goto yy125;
+               } else {
+                       if(yych <= 's') goto yy84;
+                       if(yych != 'u') goto yy85;
+                       goto yy125;
+               }
+       }
 yy125:
        YYDEBUG(125, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy90;
-       if(yych == 'h') goto yy90;
-       goto yy53;
+       if(yych == 'T') goto yy126;
+       if(yych != 't') goto yy54;
+       goto yy126;
 yy126:
        YYDEBUG(126, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy80;
-       if(yych == 'y') goto yy80;
-       goto yy53;
+       if(yych == 'E') goto yy94;
+       if(yych == 'e') goto yy94;
+       goto yy54;
 yy127:
        YYDEBUG(127, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy136;
-       if(yych == 't') goto yy136;
-       goto yy53;
+       if(yych <= 'T'){
+               if(yych == 'D') goto yy128;
+               if(yych <= 'S') goto yy54;
+               goto yy129;
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= 'c') goto yy54;
+                       goto yy128;
+               } else {
+                       if(yych == 't') goto yy129;
+                       goto yy54;
+               }
+       }
 yy128:
        YYDEBUG(128, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy133;
-       if(yych == 'n') goto yy133;
-       goto yy53;
+       if(yych == 'A') goto yy130;
+       if(yych == 'a') goto yy130;
+       goto yy54;
 yy129:
        YYDEBUG(129, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'C') goto yy130;
-       if(yych != 'c') goto yy53;
-       goto yy130;
+       if(yych == 'H') goto yy94;
+       if(yych == 'h') goto yy94;
+       goto yy54;
 yy130:
        YYDEBUG(130, *YYCURSOR);
-       yyaccept = 2;
-       YYMARKER = ++YYCURSOR;
+       ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yybm[0+yych] & 32) {
-               goto yy64;
-       }
-       if(yych <= 'O'){
-               if(yych <= ','){
-                       if(yych == '+') goto yy82;
-                       goto yy81;
-               } else {
-                       if(yych <= '-') goto yy82;
-                       if(yych <= 'N') goto yy81;
-                       goto yy131;
-               }
-       } else {
-               if(yych <= 'n'){
-                       if(yych == 'S') goto yy80;
-                       goto yy81;
-               } else {
-                       if(yych <= 'o') goto yy131;
-                       if(yych == 's') goto yy80;
-                       goto yy81;
-               }
-       }
+       if(yych == 'Y') goto yy84;
+       if(yych == 'y') goto yy84;
+       goto yy54;
 yy131:
        YYDEBUG(131, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy132;
-       if(yych != 'n') goto yy53;
-       goto yy132;
+       if(yych == 'T') goto yy140;
+       if(yych == 't') goto yy140;
+       goto yy54;
 yy132:
        YYDEBUG(132, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy90;
-       if(yych == 'd') goto yy90;
-       goto yy53;
+       if(yych == 'N') goto yy137;
+       if(yych == 'n') goto yy137;
+       goto yy54;
 yy133:
        YYDEBUG(133, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy134;
-       if(yych != 'd') goto yy53;
+       if(yych == 'C') goto yy134;
+       if(yych != 'c') goto yy54;
        goto yy134;
 yy134:
        YYDEBUG(134, *YYCURSOR);
-       ++YYCURSOR;
+       yyaccept = 2;
+       YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy135;
-       if(yych != 'a') goto yy53;
-       goto yy135;
+       if(yybm[0+yych] & 32) {
+               goto yy68;
+       }
+       if(yych <= 'O'){
+               if(yych <= ','){
+                       if(yych == '+') goto yy86;
+                       goto yy85;
+               } else {
+                       if(yych <= '-') goto yy86;
+                       if(yych <= 'N') goto yy85;
+                       goto yy135;
+               }
+       } else {
+               if(yych <= 'n'){
+                       if(yych == 'S') goto yy84;
+                       goto yy85;
+               } else {
+                       if(yych <= 'o') goto yy135;
+                       if(yych == 's') goto yy84;
+                       goto yy85;
+               }
+       }
 yy135:
        YYDEBUG(135, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy80;
-       if(yych == 'y') goto yy80;
-       goto yy53;
+       if(yych == 'N') goto yy136;
+       if(yych != 'n') goto yy54;
+       goto yy136;
 yy136:
        YYDEBUG(136, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy137;
-       if(yych != 'u') goto yy53;
-       goto yy137;
+       if(yych == 'D') goto yy94;
+       if(yych == 'd') goto yy94;
+       goto yy54;
 yy137:
        YYDEBUG(137, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy138;
-       if(yych != 'r') goto yy53;
+       if(yych == 'D') goto yy138;
+       if(yych != 'd') goto yy54;
        goto yy138;
 yy138:
        YYDEBUG(138, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy139;
-       if(yych != 'd') goto yy53;
+       if(yych == 'A') goto yy139;
+       if(yych != 'a') goto yy54;
        goto yy139;
 yy139:
        YYDEBUG(139, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy140;
-       if(yych != 'a') goto yy53;
-       goto yy140;
+       if(yych == 'Y') goto yy84;
+       if(yych == 'y') goto yy84;
+       goto yy54;
 yy140:
        YYDEBUG(140, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy80;
-       if(yych == 'y') goto yy80;
-       goto yy53;
+       if(yych == 'U') goto yy141;
+       if(yych != 'u') goto yy54;
+       goto yy141;
 yy141:
        YYDEBUG(141, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 16) {
-               goto yy62;
-       }
-       if(yych <= '/') goto yy3;
-       if(yych <= '9') goto yy64;
-       goto yy3;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'R') goto yy142;
+       if(yych != 'r') goto yy54;
+       goto yy142;
 yy142:
        YYDEBUG(142, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'D') goto yy143;
+       if(yych != 'd') goto yy54;
        goto yy143;
 yy143:
        YYDEBUG(143, *YYCURSOR);
-       yych = *++YYCURSOR;
-       goto yy3;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'A') goto yy144;
+       if(yych != 'a') goto yy54;
+       goto yy144;
 yy144:
        YYDEBUG(144, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 16) {
-               goto yy62;
-       }
-       if(yych <= '/') goto yy3;
-       if(yych <= '5') goto yy145;
-       if(yych <= '9') goto yy141;
-       if(yych <= ':') goto yy60;
-       goto yy3;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'Y') goto yy84;
+       if(yych == 'y') goto yy84;
+       goto yy54;
 yy145:
        YYDEBUG(145, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy3;
-       if(yych <= '9') goto yy141;
+       if(yych <= '9') goto yy68;
        goto yy3;
 yy146:
        YYDEBUG(146, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'D') goto yy147;
-       if(yych != 'd') goto yy49;
-       goto yy147;
+       if(yych <= '/') goto yy54;
+       if(yych <= '9') goto yy50;
+       goto yy54;
 yy147:
        YYDEBUG(147, *YYCURSOR);
-       ++YYCURSOR;
-       if((yych = *YYCURSOR) <= 'Z'){
-               if(yych <= '@') goto yy148;
-               if(yych == 'N') goto yy149;
-               goto yy48;
-       } else {
-               if(yych <= 'm'){
-                       if(yych >= 'a') goto yy48;
-                       goto yy148;
-               } else {
-                       if(yych <= 'n') goto yy149;
-                       if(yych <= 'z') goto yy48;
-                       goto yy148;
-               }
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yybm[0+yych] & 16) {
+               goto yy66;
        }
+       if(yych <= '/') goto yy3;
+       if(yych <= '5') goto yy148;
+       if(yych <= '9') goto yy145;
+       if(yych <= ':') goto yy64;
+       goto yy3;
 yy148:
        YYDEBUG(148, *YYCURSOR);
-
-#line 1305 "parse_date.re"
-{
-               goto std;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yybm[0+yych] & 16) {
+               goto yy66;
        }
-#line 2416 "<stdout>"
+       if(yych <= '/') goto yy3;
+       if(yych <= '9') goto yy145;
+       goto yy3;
 yy149:
        YYDEBUG(149, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy150;
-       if(yych != 'e') goto yy49;
-       goto yy150;
-yy150:
-       YYDEBUG(150, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'S') goto yy151;
-       if(yych != 's') goto yy49;
-       goto yy151;
-yy151:
-       YYDEBUG(151, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'D') goto yy152;
-       if(yych != 'd') goto yy49;
-       goto yy152;
-yy152:
-       YYDEBUG(152, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'A') goto yy153;
-       if(yych != 'a') goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'D') goto yy49;
+               goto yy150;
+       } else {
+               if(yych <= 'c'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'd') goto yy150;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
+yy150:
+       YYDEBUG(150, *YYCURSOR);
+       ++YYCURSOR;
+       if((yych = *YYCURSOR) <= 'Z'){
+               if(yych <= '@') goto yy151;
+               if(yych == 'N') goto yy152;
+               goto yy50;
+       } else {
+               if(yych <= 'm'){
+                       if(yych >= 'a') goto yy50;
+                       goto yy151;
+               } else {
+                       if(yych <= 'n') goto yy152;
+                       if(yych <= 'z') goto yy50;
+                       goto yy151;
+               }
+       }
+yy151:
+       YYDEBUG(151, *YYCURSOR);
+
+#line 1320 "parse_date.re"
+{
+               goto std;
+       }
+#line 2654 "<stdout>"
+yy152:
+       YYDEBUG(152, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'E') goto yy153;
+       if(yych != 'e') goto yy3;
        goto yy153;
 yy153:
        YYDEBUG(153, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy154;
-       if(yych != 'y') goto yy49;
+       if(yych == 'S') goto yy154;
+       if(yych != 's') goto yy54;
        goto yy154;
 yy154:
        YYDEBUG(154, *YYCURSOR);
-       ++YYCURSOR;
-       if(yybm[0+(yych = *YYCURSOR)] & 4) {
-               yych = *YYCURSOR;
-               goto yy48;
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'D') goto yy155;
+       if(yych != 'd') goto yy54;
        goto yy155;
 yy155:
        YYDEBUG(155, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'A') goto yy156;
+       if(yych != 'a') goto yy54;
+       goto yy156;
+yy156:
+       YYDEBUG(156, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy157;
+       if(yych != 'y') goto yy54;
+       goto yy157;
+yy157:
+       YYDEBUG(157, *YYCURSOR);
+       ++YYCURSOR;
+       goto yy158;
+yy158:
+       YYDEBUG(158, *YYCURSOR);
 
-#line 1289 "parse_date.re"
+#line 1304 "parse_date.re"
 {
                const timelib_relunit* relunit;
 
@@ -2772,391 +3014,377 @@ yy155:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 2459 "<stdout>"
-yy156:
-       YYDEBUG(156, *YYCURSOR);
+#line 2694 "<stdout>"
+yy159:
+       YYDEBUG(159, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'D'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'C') goto yy49;
-               goto yy147;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'C') goto yy49;
+                       goto yy150;
+               }
        } else {
                if(yych <= 'c'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'd') goto yy157;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'd') goto yy160;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy157:
-       YYDEBUG(157, *YYCURSOR);
+yy160:
+       YYDEBUG(160, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'N'){
                if(yych <= '/'){
-                       if(yych <= '.') goto yy148;
-                       goto yy52;
+                       if(yych <= '.') goto yy151;
+                       goto yy53;
                } else {
-                       if(yych <= '@') goto yy148;
-                       if(yych <= 'M') goto yy48;
-                       goto yy149;
+                       if(yych <= '@') goto yy151;
+                       if(yych <= 'M') goto yy50;
+                       goto yy152;
                }
        } else {
                if(yych <= 'm'){
-                       if(yych <= 'Z') goto yy48;
-                       if(yych <= '`') goto yy148;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy151;
+                       goto yy58;
                } else {
-                       if(yych <= 'n') goto yy158;
-                       if(yych <= 'z') goto yy50;
-                       goto yy148;
+                       if(yych <= 'n') goto yy161;
+                       if(yych <= 'z') goto yy58;
+                       goto yy151;
                }
        }
-yy158:
-       YYDEBUG(158, *YYCURSOR);
+yy161:
+       YYDEBUG(161, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy150;
+               if(yych == '/') goto yy53;
+               if(yych <= 'D') goto yy3;
+               goto yy153;
        } else {
                if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'e') goto yy159;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy159:
-       YYDEBUG(159, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'S'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'R') goto yy49;
-               goto yy151;
-       } else {
-               if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 's') goto yy160;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy160:
-       YYDEBUG(160, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'D'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'C') goto yy49;
-               goto yy152;
-       } else {
-               if(yych <= 'c'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'd') goto yy161;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'e') goto yy162;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy161:
-       YYDEBUG(161, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy153;
-       } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy162;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
-       }
 yy162:
        YYDEBUG(162, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy154;
-       } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'y') goto yy163;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'S') goto yy154;
+       if(yych != 's') goto yy60;
+       goto yy163;
 yy163:
        YYDEBUG(163, *YYCURSOR);
-       yyaccept = 4;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 8) {
-               goto yy50;
-       }
-       if(yych == '/') goto yy52;
-       if(yych <= '@') goto yy155;
-       if(yych <= 'Z') goto yy48;
-       goto yy155;
+       yych = *++YYCURSOR;
+       if(yych == 'D') goto yy155;
+       if(yych != 'd') goto yy60;
+       goto yy164;
 yy164:
        YYDEBUG(164, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy165;
-       if(yych != 'e') goto yy49;
+       if(yych == 'A') goto yy156;
+       if(yych != 'a') goto yy60;
        goto yy165;
 yy165:
        YYDEBUG(165, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'V') goto yy166;
-       if(yych != 'v') goto yy49;
+       if(yych == 'Y') goto yy157;
+       if(yych != 'y') goto yy60;
        goto yy166;
 yy166:
        YYDEBUG(166, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'I') goto yy167;
-       if(yych != 'i') goto yy49;
-       goto yy167;
+       yyaccept = 4;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == '/') goto yy53;
+       if(yych <= '`') goto yy158;
+       if(yych <= 'z') goto yy59;
+       goto yy158;
 yy167:
        YYDEBUG(167, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'O') goto yy168;
-       if(yych != 'o') goto yy49;
-       goto yy168;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'E') goto yy49;
+               goto yy168;
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'e') goto yy168;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy168:
        YYDEBUG(168, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'U') goto yy169;
-       if(yych != 'u') goto yy49;
-       goto yy169;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'V') goto yy50;
+               goto yy169;
+       } else {
+               if(yych <= 'u'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 'v') goto yy169;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy169:
        YYDEBUG(169, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'S') goto yy170;
-       if(yych != 's') goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'I') goto yy170;
+       if(yych != 'i') goto yy3;
        goto yy170;
 yy170:
        YYDEBUG(170, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 4) {
-               goto yy48;
-       }
-       if(yych != ' ') goto yy3;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'O') goto yy171;
+       if(yych != 'o') goto yy54;
        goto yy171;
 yy171:
        YYDEBUG(171, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       if(yych == 'U') goto yy172;
+       if(yych != 'u') goto yy54;
        goto yy172;
 yy172:
        YYDEBUG(172, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'S') goto yy173;
+       if(yych != 's') goto yy54;
+       goto yy173;
+yy173:
+       YYDEBUG(173, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych != ' ') goto yy54;
+       goto yy174;
+yy174:
+       YYDEBUG(174, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       goto yy175;
+yy175:
+       YYDEBUG(175, *YYCURSOR);
        YYDEBUG(-1, yych);
        switch(yych){
-       case ' ':       goto yy171;
-       case 'D':       case 'd':       goto yy176;
-       case 'F':       case 'f':       goto yy178;
-       case 'H':       case 'h':       goto yy175;
-       case 'M':       case 'm':       goto yy174;
-       case 'S':       case 's':       goto yy173;
-       case 'T':       case 't':       goto yy180;
-       case 'W':       case 'w':       goto yy177;
-       case 'Y':       case 'y':       goto yy179;
-       default:        goto yy53;
+       case ' ':       goto yy174;
+       case 'D':       case 'd':       goto yy179;
+       case 'F':       case 'f':       goto yy181;
+       case 'H':       case 'h':       goto yy178;
+       case 'M':       case 'm':       goto yy177;
+       case 'S':       case 's':       goto yy176;
+       case 'T':       case 't':       goto yy183;
+       case 'W':       case 'w':       goto yy180;
+       case 'Y':       case 'y':       goto yy182;
+       default:        goto yy54;
        }
-yy173:
-       YYDEBUG(173, *YYCURSOR);
+yy176:
+       YYDEBUG(176, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'U'){
                if(yych <= 'D'){
-                       if(yych == 'A') goto yy296;
-                       goto yy53;
+                       if(yych == 'A') goto yy295;
+                       goto yy54;
                } else {
-                       if(yych <= 'E') goto yy298;
-                       if(yych <= 'T') goto yy53;
-                       goto yy297;
+                       if(yych <= 'E') goto yy297;
+                       if(yych <= 'T') goto yy54;
+                       goto yy296;
                }
        } else {
                if(yych <= 'd'){
-                       if(yych == 'a') goto yy296;
-                       goto yy53;
+                       if(yych == 'a') goto yy295;
+                       goto yy54;
                } else {
-                       if(yych <= 'e') goto yy298;
-                       if(yych == 'u') goto yy297;
-                       goto yy53;
+                       if(yych <= 'e') goto yy297;
+                       if(yych == 'u') goto yy296;
+                       goto yy54;
                }
        }
-yy174:
-       YYDEBUG(174, *YYCURSOR);
+yy177:
+       YYDEBUG(177, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'O'){
-               if(yych == 'I') goto yy288;
-               if(yych <= 'N') goto yy53;
-               goto yy287;
+               if(yych == 'I') goto yy287;
+               if(yych <= 'N') goto yy54;
+               goto yy286;
        } else {
                if(yych <= 'i'){
-                       if(yych <= 'h') goto yy53;
-                       goto yy288;
+                       if(yych <= 'h') goto yy54;
+                       goto yy287;
                } else {
-                       if(yych == 'o') goto yy287;
-                       goto yy53;
+                       if(yych == 'o') goto yy286;
+                       goto yy54;
                }
        }
-yy175:
-       YYDEBUG(175, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'O') goto yy285;
-       if(yych == 'o') goto yy285;
-       goto yy53;
-yy176:
-       YYDEBUG(176, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'A') goto yy284;
-       if(yych == 'a') goto yy284;
-       goto yy53;
-yy177:
-       YYDEBUG(177, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'E') goto yy276;
-       if(yych == 'e') goto yy276;
-       goto yy53;
 yy178:
        YYDEBUG(178, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= 'R'){
-               if(yych == 'O') goto yy261;
-               if(yych <= 'Q') goto yy53;
-               goto yy260;
-       } else {
-               if(yych <= 'o'){
-                       if(yych <= 'n') goto yy53;
-                       goto yy261;
-               } else {
-                       if(yych == 'r') goto yy260;
-                       goto yy53;
-               }
-       }
+       if(yych == 'O') goto yy284;
+       if(yych == 'o') goto yy284;
+       goto yy54;
 yy179:
        YYDEBUG(179, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy255;
-       if(yych == 'e') goto yy255;
-       goto yy53;
+       if(yych == 'A') goto yy283;
+       if(yych == 'a') goto yy283;
+       goto yy54;
 yy180:
        YYDEBUG(180, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= 'U'){
-               if(yych == 'H') goto yy181;
-               if(yych <= 'T') goto yy53;
-               goto yy182;
-       } else {
-               if(yych <= 'h'){
-                       if(yych <= 'g') goto yy53;
-                       goto yy181;
-               } else {
-                       if(yych == 'u') goto yy182;
-                       goto yy53;
-               }
-       }
+       if(yych == 'E') goto yy275;
+       if(yych == 'e') goto yy275;
+       goto yy54;
 yy181:
        YYDEBUG(181, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy250;
-       if(yych == 'u') goto yy250;
-       goto yy53;
+       if(yych <= 'R'){
+               if(yych == 'O') goto yy260;
+               if(yych <= 'Q') goto yy54;
+               goto yy259;
+       } else {
+               if(yych <= 'o'){
+                       if(yych <= 'n') goto yy54;
+                       goto yy260;
+               } else {
+                       if(yych == 'r') goto yy259;
+                       goto yy54;
+               }
+       }
 yy182:
        YYDEBUG(182, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy183;
-       if(yych != 'e') goto yy53;
-       goto yy183;
+       if(yych == 'E') goto yy254;
+       if(yych == 'e') goto yy254;
+       goto yy54;
 yy183:
        YYDEBUG(183, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy184;
-       if(yych != 's') goto yy53;
-       goto yy184;
+       if(yych <= 'U'){
+               if(yych == 'H') goto yy184;
+               if(yych <= 'T') goto yy54;
+               goto yy185;
+       } else {
+               if(yych <= 'h'){
+                       if(yych <= 'g') goto yy54;
+                       goto yy184;
+               } else {
+                       if(yych == 'u') goto yy185;
+                       goto yy54;
+               }
+       }
 yy184:
        YYDEBUG(184, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy185;
-       if(yych != 'd') goto yy53;
-       goto yy185;
+       if(yych == 'U') goto yy249;
+       if(yych == 'u') goto yy249;
+       goto yy54;
 yy185:
        YYDEBUG(185, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy186;
-       if(yych != 'a') goto yy53;
+       if(yych == 'E') goto yy186;
+       if(yych != 'e') goto yy54;
        goto yy186;
 yy186:
        YYDEBUG(186, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy187;
-       if(yych != 'y') goto yy53;
+       if(yych == 'S') goto yy187;
+       if(yych != 's') goto yy54;
        goto yy187;
 yy187:
        YYDEBUG(187, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'D') goto yy188;
+       if(yych != 'd') goto yy54;
+       goto yy188;
+yy188:
+       YYDEBUG(188, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'A') goto yy189;
+       if(yych != 'a') goto yy54;
+       goto yy189;
+yy189:
+       YYDEBUG(189, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'Y') goto yy190;
+       if(yych != 'y') goto yy54;
+       goto yy190;
+yy190:
+       YYDEBUG(190, *YYCURSOR);
        yyaccept = 5;
        YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        YYDEBUG(-1, yych);
        switch(yych){
-       case 'E':       case 'e':       goto yy193;
-       case 'F':       case 'f':       goto yy189;
-       case 'L':       case 'l':       goto yy194;
-       case 'N':       case 'n':       goto yy190;
-       case 'P':       case 'p':       goto yy195;
-       case 'S':       case 's':       goto yy191;
-       case 'T':       case 't':       goto yy192;
-       default:        goto yy188;
+       case 'E':       case 'e':       goto yy196;
+       case 'F':       case 'f':       goto yy192;
+       case 'L':       case 'l':       goto yy197;
+       case 'N':       case 'n':       goto yy193;
+       case 'P':       case 'p':       goto yy198;
+       case 'S':       case 's':       goto yy194;
+       case 'T':       case 't':       goto yy195;
+       default:        goto yy191;
        }
-yy188:
-       YYDEBUG(188, *YYCURSOR);
+yy191:
+       YYDEBUG(191, *YYCURSOR);
 
-#line 1273 "parse_date.re"
+#line 1288 "parse_date.re"
 {
                timelib_sll i;
 
@@ -3171,1297 +3399,1272 @@ yy188:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 2790 "<stdout>"
-yy189:
-       YYDEBUG(189, *YYCURSOR);
+#line 3011 "<stdout>"
+yy192:
+       YYDEBUG(192, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'O'){
-               if(yych == 'I') goto yy241;
-               if(yych <= 'N') goto yy53;
-               goto yy242;
+               if(yych == 'I') goto yy240;
+               if(yych <= 'N') goto yy54;
+               goto yy241;
        } else {
                if(yych <= 'i'){
-                       if(yych <= 'h') goto yy53;
-                       goto yy241;
+                       if(yych <= 'h') goto yy54;
+                       goto yy240;
                } else {
-                       if(yych == 'o') goto yy242;
-                       goto yy53;
+                       if(yych == 'o') goto yy241;
+                       goto yy54;
                }
        }
-yy190:
-       YYDEBUG(190, *YYCURSOR);
+yy193:
+       YYDEBUG(193, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'I'){
-               if(yych == 'E') goto yy237;
-               if(yych <= 'H') goto yy53;
-               goto yy236;
+               if(yych == 'E') goto yy236;
+               if(yych <= 'H') goto yy54;
+               goto yy235;
        } else {
                if(yych <= 'e'){
-                       if(yych <= 'd') goto yy53;
-                       goto yy237;
+                       if(yych <= 'd') goto yy54;
+                       goto yy236;
                } else {
-                       if(yych == 'i') goto yy236;
-                       goto yy53;
+                       if(yych == 'i') goto yy235;
+                       goto yy54;
                }
        }
-yy191:
-       YYDEBUG(191, *YYCURSOR);
+yy194:
+       YYDEBUG(194, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'I'){
-               if(yych == 'E') goto yy225;
-               if(yych <= 'H') goto yy53;
-               goto yy226;
+               if(yych == 'E') goto yy224;
+               if(yych <= 'H') goto yy54;
+               goto yy225;
        } else {
                if(yych <= 'e'){
-                       if(yych <= 'd') goto yy53;
-                       goto yy225;
+                       if(yych <= 'd') goto yy54;
+                       goto yy224;
                } else {
-                       if(yych == 'i') goto yy226;
-                       goto yy53;
+                       if(yych == 'i') goto yy225;
+                       goto yy54;
                }
        }
-yy192:
-       YYDEBUG(192, *YYCURSOR);
+yy195:
+       YYDEBUG(195, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'W'){
                if(yych <= 'G'){
-                       if(yych == 'E') goto yy216;
-                       goto yy53;
+                       if(yych == 'E') goto yy215;
+                       goto yy54;
                } else {
-                       if(yych <= 'H') goto yy214;
-                       if(yych <= 'V') goto yy53;
-                       goto yy215;
+                       if(yych <= 'H') goto yy213;
+                       if(yych <= 'V') goto yy54;
+                       goto yy214;
                }
        } else {
                if(yych <= 'g'){
-                       if(yych == 'e') goto yy216;
-                       goto yy53;
+                       if(yych == 'e') goto yy215;
+                       goto yy54;
                } else {
-                       if(yych <= 'h') goto yy214;
-                       if(yych == 'w') goto yy215;
-                       goto yy53;
+                       if(yych <= 'h') goto yy213;
+                       if(yych == 'w') goto yy214;
+                       goto yy54;
                }
        }
-yy193:
-       YYDEBUG(193, *YYCURSOR);
+yy196:
+       YYDEBUG(196, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'L'){
-               if(yych == 'I') goto yy206;
-               if(yych <= 'K') goto yy53;
-               goto yy205;
+               if(yych == 'I') goto yy205;
+               if(yych <= 'K') goto yy54;
+               goto yy204;
        } else {
                if(yych <= 'i'){
-                       if(yych <= 'h') goto yy53;
-                       goto yy206;
+                       if(yych <= 'h') goto yy54;
+                       goto yy205;
                } else {
-                       if(yych == 'l') goto yy205;
-                       goto yy53;
+                       if(yych == 'l') goto yy204;
+                       goto yy54;
                }
        }
-yy194:
-       YYDEBUG(194, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'A') goto yy203;
-       if(yych == 'a') goto yy203;
-       goto yy53;
-yy195:
-       YYDEBUG(195, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'R') goto yy196;
-       if(yych != 'r') goto yy53;
-       goto yy196;
-yy196:
-       YYDEBUG(196, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'E') goto yy197;
-       if(yych != 'e') goto yy53;
-       goto yy197;
 yy197:
        YYDEBUG(197, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'V') goto yy198;
-       if(yych != 'v') goto yy53;
-       goto yy198;
+       if(yych == 'A') goto yy202;
+       if(yych == 'a') goto yy202;
+       goto yy54;
 yy198:
        YYDEBUG(198, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy199;
-       if(yych != 'i') goto yy53;
+       if(yych == 'R') goto yy199;
+       if(yych != 'r') goto yy54;
        goto yy199;
 yy199:
        YYDEBUG(199, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'O') goto yy200;
-       if(yych != 'o') goto yy53;
+       if(yych == 'E') goto yy200;
+       if(yych != 'e') goto yy54;
        goto yy200;
 yy200:
        YYDEBUG(200, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy201;
-       if(yych != 'u') goto yy53;
+       if(yych == 'V') goto yy201;
+       if(yych != 'v') goto yy54;
        goto yy201;
 yy201:
        YYDEBUG(201, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy202;
-       if(yych != 's') goto yy53;
-       goto yy202;
+       if(yych == 'I') goto yy170;
+       if(yych == 'i') goto yy170;
+       goto yy54;
 yy202:
        YYDEBUG(202, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == ' ') goto yy171;
-       goto yy53;
+       if(yych == 'S') goto yy203;
+       if(yych != 's') goto yy54;
+       goto yy203;
 yy203:
        YYDEBUG(203, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy204;
-       if(yych != 's') goto yy53;
-       goto yy204;
+       if(yych == 'T') goto yy173;
+       if(yych == 't') goto yy173;
+       goto yy54;
 yy204:
        YYDEBUG(204, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy202;
-       if(yych == 't') goto yy202;
-       goto yy53;
+       if(yych == 'E') goto yy208;
+       if(yych == 'e') goto yy208;
+       goto yy54;
 yy205:
        YYDEBUG(205, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy209;
-       if(yych == 'e') goto yy209;
-       goto yy53;
+       if(yych == 'G') goto yy206;
+       if(yych != 'g') goto yy54;
+       goto yy206;
 yy206:
        YYDEBUG(206, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'G') goto yy207;
-       if(yych != 'g') goto yy53;
+       if(yych == 'H') goto yy207;
+       if(yych != 'h') goto yy54;
        goto yy207;
 yy207:
        YYDEBUG(207, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy208;
-       if(yych != 'h') goto yy53;
-       goto yy208;
+       if(yych == 'T') goto yy173;
+       if(yych == 't') goto yy173;
+       goto yy54;
 yy208:
        YYDEBUG(208, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy202;
-       if(yych == 't') goto yy202;
-       goto yy53;
+       if(yych == 'V') goto yy209;
+       if(yych != 'v') goto yy54;
+       goto yy209;
 yy209:
        YYDEBUG(209, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'V') goto yy210;
-       if(yych != 'v') goto yy53;
+       if(yych == 'E') goto yy210;
+       if(yych != 'e') goto yy54;
        goto yy210;
 yy210:
        YYDEBUG(210, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy211;
-       if(yych != 'e') goto yy53;
+       if(yych == 'N') goto yy211;
+       if(yych != 'n') goto yy54;
        goto yy211;
 yy211:
        YYDEBUG(211, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy212;
-       if(yych != 'n') goto yy53;
+       if(yych == 'T') goto yy212;
+       if(yych != 't') goto yy54;
        goto yy212;
 yy212:
        YYDEBUG(212, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy213;
-       if(yych != 't') goto yy53;
-       goto yy213;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy213:
        YYDEBUG(213, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
+       if(yych == 'I') goto yy222;
+       if(yych == 'i') goto yy222;
+       goto yy54;
 yy214:
        YYDEBUG(214, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy223;
-       if(yych == 'i') goto yy223;
-       goto yy53;
+       if(yych == 'E') goto yy218;
+       if(yych == 'e') goto yy218;
+       goto yy54;
 yy215:
        YYDEBUG(215, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy219;
-       if(yych == 'e') goto yy219;
-       goto yy53;
+       if(yych == 'N') goto yy216;
+       if(yych != 'n') goto yy54;
+       goto yy216;
 yy216:
        YYDEBUG(216, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy217;
-       if(yych != 'n') goto yy53;
+       if(yych == 'T') goto yy217;
+       if(yych != 't') goto yy54;
        goto yy217;
 yy217:
        YYDEBUG(217, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy218;
-       if(yych != 't') goto yy53;
-       goto yy218;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy218:
        YYDEBUG(218, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
+       if(yych == 'L') goto yy219;
+       if(yych != 'l') goto yy54;
+       goto yy219;
 yy219:
        YYDEBUG(219, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'L') goto yy220;
-       if(yych != 'l') goto yy53;
+       if(yych == 'F') goto yy220;
+       if(yych != 'f') goto yy54;
        goto yy220;
 yy220:
        YYDEBUG(220, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'F') goto yy221;
-       if(yych != 'f') goto yy53;
+       if(yych == 'T') goto yy221;
+       if(yych != 't') goto yy54;
        goto yy221;
 yy221:
        YYDEBUG(221, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy222;
-       if(yych != 't') goto yy53;
-       goto yy222;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy222:
        YYDEBUG(222, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
+       if(yych <= 'S'){
+               if(yych <= 'Q') goto yy54;
+               if(yych >= 'S') goto yy173;
+               goto yy223;
+       } else {
+               if(yych <= 'q') goto yy54;
+               if(yych <= 'r') goto yy223;
+               if(yych <= 's') goto yy173;
+               goto yy54;
+       }
 yy223:
        YYDEBUG(223, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= 'S'){
-               if(yych <= 'Q') goto yy53;
-               if(yych >= 'S') goto yy202;
-               goto yy224;
-       } else {
-               if(yych <= 'q') goto yy53;
-               if(yych <= 'r') goto yy224;
-               if(yych <= 's') goto yy202;
-               goto yy53;
-       }
+       if(yych == 'D') goto yy173;
+       if(yych == 'd') goto yy173;
+       goto yy54;
 yy224:
        YYDEBUG(224, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy202;
-       if(yych == 'd') goto yy202;
-       goto yy53;
-yy225:
-       YYDEBUG(225, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
        if(yych <= 'V'){
-               if(yych == 'C') goto yy229;
-               if(yych <= 'U') goto yy53;
-               goto yy230;
+               if(yych == 'C') goto yy228;
+               if(yych <= 'U') goto yy54;
+               goto yy229;
        } else {
                if(yych <= 'c'){
-                       if(yych <= 'b') goto yy53;
-                       goto yy229;
+                       if(yych <= 'b') goto yy54;
+                       goto yy228;
                } else {
-                       if(yych == 'v') goto yy230;
-                       goto yy53;
+                       if(yych == 'v') goto yy229;
+                       goto yy54;
                }
        }
+yy225:
+       YYDEBUG(225, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'X') goto yy226;
+       if(yych != 'x') goto yy54;
+       goto yy226;
 yy226:
        YYDEBUG(226, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'X') goto yy227;
-       if(yych != 'x') goto yy53;
+       if(yych == 'T') goto yy227;
+       if(yych != 't') goto yy54;
        goto yy227;
 yy227:
        YYDEBUG(227, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy228;
-       if(yych != 't') goto yy53;
-       goto yy228;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy228:
        YYDEBUG(228, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
+       if(yych == 'O') goto yy233;
+       if(yych == 'o') goto yy233;
+       goto yy54;
 yy229:
        YYDEBUG(229, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'O') goto yy234;
-       if(yych == 'o') goto yy234;
-       goto yy53;
+       if(yych == 'E') goto yy230;
+       if(yych != 'e') goto yy54;
+       goto yy230;
 yy230:
        YYDEBUG(230, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy231;
-       if(yych != 'e') goto yy53;
+       if(yych == 'N') goto yy231;
+       if(yych != 'n') goto yy54;
        goto yy231;
 yy231:
        YYDEBUG(231, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy232;
-       if(yych != 'n') goto yy53;
+       if(yych == 'T') goto yy232;
+       if(yych != 't') goto yy54;
        goto yy232;
 yy232:
        YYDEBUG(232, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy233;
-       if(yych != 't') goto yy53;
-       goto yy233;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy233:
        YYDEBUG(233, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
+       if(yych == 'N') goto yy234;
+       if(yych != 'n') goto yy54;
+       goto yy234;
 yy234:
        YYDEBUG(234, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy235;
-       if(yych != 'n') goto yy53;
-       goto yy235;
+       if(yych == 'D') goto yy173;
+       if(yych == 'd') goto yy173;
+       goto yy54;
 yy235:
        YYDEBUG(235, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy202;
-       if(yych == 'd') goto yy202;
-       goto yy53;
+       if(yych == 'N') goto yy238;
+       if(yych == 'n') goto yy238;
+       goto yy54;
 yy236:
        YYDEBUG(236, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy239;
-       if(yych == 'n') goto yy239;
-       goto yy53;
+       if(yych == 'X') goto yy237;
+       if(yych != 'x') goto yy54;
+       goto yy237;
 yy237:
        YYDEBUG(237, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'X') goto yy238;
-       if(yych != 'x') goto yy53;
-       goto yy238;
+       if(yych == 'T') goto yy173;
+       if(yych == 't') goto yy173;
+       goto yy54;
 yy238:
        YYDEBUG(238, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy202;
-       if(yych == 't') goto yy202;
-       goto yy53;
+       if(yych == 'T') goto yy239;
+       if(yych != 't') goto yy54;
+       goto yy239;
 yy239:
        YYDEBUG(239, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy240;
-       if(yych != 't') goto yy53;
-       goto yy240;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy240:
        YYDEBUG(240, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
-yy241:
-       YYDEBUG(241, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
        if(yych <= 'R'){
-               if(yych == 'F') goto yy247;
-               if(yych <= 'Q') goto yy53;
-               goto yy246;
+               if(yych == 'F') goto yy246;
+               if(yych <= 'Q') goto yy54;
+               goto yy245;
        } else {
                if(yych <= 'f'){
-                       if(yych <= 'e') goto yy53;
-                       goto yy247;
+                       if(yych <= 'e') goto yy54;
+                       goto yy246;
                } else {
-                       if(yych == 'r') goto yy246;
-                       goto yy53;
+                       if(yych == 'r') goto yy245;
+                       goto yy54;
                }
        }
+yy241:
+       YYDEBUG(241, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'U') goto yy242;
+       if(yych != 'u') goto yy54;
+       goto yy242;
 yy242:
        YYDEBUG(242, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy243;
-       if(yych != 'u') goto yy53;
+       if(yych == 'R') goto yy243;
+       if(yych != 'r') goto yy54;
        goto yy243;
 yy243:
        YYDEBUG(243, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy244;
-       if(yych != 'r') goto yy53;
+       if(yych == 'T') goto yy244;
+       if(yych != 't') goto yy54;
        goto yy244;
 yy244:
        YYDEBUG(244, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy245;
-       if(yych != 't') goto yy53;
-       goto yy245;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy245:
        YYDEBUG(245, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
+       if(yych == 'S') goto yy248;
+       if(yych == 's') goto yy248;
+       goto yy54;
 yy246:
        YYDEBUG(246, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy249;
-       if(yych == 's') goto yy249;
-       goto yy53;
+       if(yych == 'T') goto yy247;
+       if(yych != 't') goto yy54;
+       goto yy247;
 yy247:
        YYDEBUG(247, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy248;
-       if(yych != 't') goto yy53;
-       goto yy248;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy54;
 yy248:
        YYDEBUG(248, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy202;
-       if(yych == 'h') goto yy202;
-       goto yy53;
+       if(yych == 'T') goto yy173;
+       if(yych == 't') goto yy173;
+       goto yy54;
 yy249:
        YYDEBUG(249, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy202;
-       if(yych == 't') goto yy202;
-       goto yy53;
+       if(yych == 'R') goto yy250;
+       if(yych != 'r') goto yy54;
+       goto yy250;
 yy250:
        YYDEBUG(250, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy251;
-       if(yych != 'r') goto yy53;
+       if(yych == 'S') goto yy251;
+       if(yych != 's') goto yy54;
        goto yy251;
 yy251:
        YYDEBUG(251, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy252;
-       if(yych != 's') goto yy53;
+       if(yych == 'D') goto yy252;
+       if(yych != 'd') goto yy54;
        goto yy252;
 yy252:
        YYDEBUG(252, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy253;
-       if(yych != 'd') goto yy53;
+       if(yych == 'A') goto yy253;
+       if(yych != 'a') goto yy54;
        goto yy253;
 yy253:
        YYDEBUG(253, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy254;
-       if(yych != 'a') goto yy53;
-       goto yy254;
+       if(yych == 'Y') goto yy190;
+       if(yych == 'y') goto yy190;
+       goto yy54;
 yy254:
        YYDEBUG(254, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy187;
-       if(yych == 'y') goto yy187;
-       goto yy53;
+       if(yych == 'A') goto yy255;
+       if(yych != 'a') goto yy54;
+       goto yy255;
 yy255:
        YYDEBUG(255, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy256;
-       if(yych != 'a') goto yy53;
+       if(yych == 'R') goto yy256;
+       if(yych != 'r') goto yy54;
        goto yy256;
 yy256:
        YYDEBUG(256, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'R') goto yy257;
-       if(yych != 'r') goto yy53;
-       goto yy257;
-yy257:
-       YYDEBUG(257, *YYCURSOR);
        yyaccept = 5;
        YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        YYDEBUG(-1, yych);
        switch(yych){
-       case 'E':       case 'e':       goto yy193;
-       case 'F':       case 'f':       goto yy189;
-       case 'L':       case 'l':       goto yy194;
-       case 'N':       case 'n':       goto yy190;
-       case 'P':       case 'p':       goto yy195;
-       case 'S':       case 's':       goto yy258;
-       case 'T':       case 't':       goto yy192;
-       default:        goto yy188;
+       case 'E':       case 'e':       goto yy196;
+       case 'F':       case 'f':       goto yy192;
+       case 'L':       case 'l':       goto yy197;
+       case 'N':       case 'n':       goto yy193;
+       case 'P':       case 'p':       goto yy198;
+       case 'S':       case 's':       goto yy257;
+       case 'T':       case 't':       goto yy195;
+       default:        goto yy191;
        }
-yy258:
-       YYDEBUG(258, *YYCURSOR);
+yy257:
+       YYDEBUG(257, *YYCURSOR);
        yyaccept = 5;
        YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        YYDEBUG(-1, yych);
        switch(yych){
-       case 'E':       case 'e':       goto yy259;
-       case 'F':       case 'f':       goto yy189;
-       case 'I':       case 'i':       goto yy226;
-       case 'L':       case 'l':       goto yy194;
-       case 'N':       case 'n':       goto yy190;
-       case 'P':       case 'p':       goto yy195;
-       case 'S':       case 's':       goto yy191;
-       case 'T':       case 't':       goto yy192;
-       default:        goto yy188;
+       case 'E':       case 'e':       goto yy258;
+       case 'F':       case 'f':       goto yy192;
+       case 'I':       case 'i':       goto yy225;
+       case 'L':       case 'l':       goto yy197;
+       case 'N':       case 'n':       goto yy193;
+       case 'P':       case 'p':       goto yy198;
+       case 'S':       case 's':       goto yy194;
+       case 'T':       case 't':       goto yy195;
+       default:        goto yy191;
        }
-yy259:
-       YYDEBUG(259, *YYCURSOR);
+yy258:
+       YYDEBUG(258, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        if(yych <= 'V'){
                if(yych <= 'I'){
-                       if(yych == 'C') goto yy229;
-                       if(yych <= 'H') goto yy53;
-                       goto yy206;
+                       if(yych == 'C') goto yy228;
+                       if(yych <= 'H') goto yy54;
+                       goto yy205;
                } else {
-                       if(yych == 'L') goto yy205;
-                       if(yych <= 'U') goto yy53;
-                       goto yy230;
+                       if(yych == 'L') goto yy204;
+                       if(yych <= 'U') goto yy54;
+                       goto yy229;
                }
        } else {
                if(yych <= 'i'){
-                       if(yych == 'c') goto yy229;
-                       if(yych <= 'h') goto yy53;
-                       goto yy206;
+                       if(yych == 'c') goto yy228;
+                       if(yych <= 'h') goto yy54;
+                       goto yy205;
                } else {
                        if(yych <= 'l'){
-                               if(yych <= 'k') goto yy53;
-                               goto yy205;
+                               if(yych <= 'k') goto yy54;
+                               goto yy204;
                        } else {
-                               if(yych == 'v') goto yy230;
-                               goto yy53;
+                               if(yych == 'v') goto yy229;
+                               goto yy54;
                        }
                }
        }
+yy259:
+       YYDEBUG(259, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'I') goto yy272;
+       if(yych == 'i') goto yy272;
+       goto yy54;
 yy260:
        YYDEBUG(260, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy273;
-       if(yych == 'i') goto yy273;
-       goto yy53;
+       if(yych == 'R') goto yy261;
+       if(yych != 'r') goto yy54;
+       goto yy261;
 yy261:
        YYDEBUG(261, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy262;
-       if(yych != 'r') goto yy53;
+       if(yych == 'T') goto yy262;
+       if(yych != 't') goto yy54;
        goto yy262;
 yy262:
        YYDEBUG(262, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy263;
-       if(yych != 't') goto yy53;
-       goto yy263;
-yy263:
-       YYDEBUG(263, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
        if(yych <= 'N'){
-               if(yych == 'H') goto yy265;
-               if(yych <= 'M') goto yy53;
-               goto yy264;
+               if(yych == 'H') goto yy264;
+               if(yych <= 'M') goto yy54;
+               goto yy263;
        } else {
                if(yych <= 'h'){
-                       if(yych <= 'g') goto yy53;
-                       goto yy265;
-               } else {
-                       if(yych != 'n') goto yy53;
+                       if(yych <= 'g') goto yy54;
                        goto yy264;
+               } else {
+                       if(yych != 'n') goto yy54;
+                       goto yy263;
                }
        }
+yy263:
+       YYDEBUG(263, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'I') goto yy269;
+       if(yych == 'i') goto yy269;
+       goto yy54;
 yy264:
        YYDEBUG(264, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy270;
-       if(yych == 'i') goto yy270;
-       goto yy53;
+       if(yych == 'N') goto yy265;
+       if(yych != 'n') goto yy54;
+       goto yy265;
 yy265:
        YYDEBUG(265, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy266;
-       if(yych != 'n') goto yy53;
+       if(yych == 'I') goto yy266;
+       if(yych != 'i') goto yy54;
        goto yy266;
 yy266:
        YYDEBUG(266, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'I') goto yy267;
-       if(yych != 'i') goto yy53;
+       if(yych == 'G') goto yy267;
+       if(yych != 'g') goto yy54;
        goto yy267;
 yy267:
        YYDEBUG(267, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'G') goto yy268;
-       if(yych != 'g') goto yy53;
+       if(yych == 'H') goto yy268;
+       if(yych != 'h') goto yy54;
        goto yy268;
 yy268:
        YYDEBUG(268, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy269;
-       if(yych != 'h') goto yy53;
-       goto yy269;
+       if(yych == 'T') goto yy256;
+       if(yych == 't') goto yy256;
+       goto yy54;
 yy269:
        YYDEBUG(269, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy257;
-       if(yych == 't') goto yy257;
-       goto yy53;
+       if(yych == 'G') goto yy270;
+       if(yych != 'g') goto yy54;
+       goto yy270;
 yy270:
        YYDEBUG(270, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'G') goto yy271;
-       if(yych != 'g') goto yy53;
+       if(yych == 'H') goto yy271;
+       if(yych != 'h') goto yy54;
        goto yy271;
 yy271:
        YYDEBUG(271, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy272;
-       if(yych != 'h') goto yy53;
-       goto yy272;
+       if(yych == 'T') goto yy256;
+       if(yych == 't') goto yy256;
+       goto yy54;
 yy272:
        YYDEBUG(272, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy257;
-       if(yych == 't') goto yy257;
-       goto yy53;
+       if(yych == 'D') goto yy273;
+       if(yych != 'd') goto yy54;
+       goto yy273;
 yy273:
        YYDEBUG(273, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy274;
-       if(yych != 'd') goto yy53;
+       if(yych == 'A') goto yy274;
+       if(yych != 'a') goto yy54;
        goto yy274;
 yy274:
        YYDEBUG(274, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy275;
-       if(yych != 'a') goto yy53;
-       goto yy275;
+       if(yych == 'Y') goto yy190;
+       if(yych == 'y') goto yy190;
+       goto yy54;
 yy275:
        YYDEBUG(275, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy187;
-       if(yych == 'y') goto yy187;
-       goto yy53;
+       if(yych <= 'E'){
+               if(yych <= 'C') goto yy54;
+               if(yych <= 'D') goto yy277;
+               goto yy276;
+       } else {
+               if(yych <= 'c') goto yy54;
+               if(yych <= 'd') goto yy277;
+               if(yych >= 'f') goto yy54;
+               goto yy276;
+       }
 yy276:
        YYDEBUG(276, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= 'E'){
-               if(yych <= 'C') goto yy53;
-               if(yych <= 'D') goto yy278;
-               goto yy277;
-       } else {
-               if(yych <= 'c') goto yy53;
-               if(yych <= 'd') goto yy278;
-               if(yych >= 'f') goto yy53;
-               goto yy277;
-       }
+       if(yych == 'K') goto yy256;
+       if(yych == 'k') goto yy256;
+       goto yy54;
 yy277:
        YYDEBUG(277, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'K') goto yy257;
-       if(yych == 'k') goto yy257;
-       goto yy53;
+       if(yych == 'N') goto yy278;
+       if(yych != 'n') goto yy54;
+       goto yy278;
 yy278:
        YYDEBUG(278, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy279;
-       if(yych != 'n') goto yy53;
+       if(yych == 'E') goto yy279;
+       if(yych != 'e') goto yy54;
        goto yy279;
 yy279:
        YYDEBUG(279, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy280;
-       if(yych != 'e') goto yy53;
+       if(yych == 'S') goto yy280;
+       if(yych != 's') goto yy54;
        goto yy280;
 yy280:
        YYDEBUG(280, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'S') goto yy281;
-       if(yych != 's') goto yy53;
+       if(yych == 'D') goto yy281;
+       if(yych != 'd') goto yy54;
        goto yy281;
 yy281:
        YYDEBUG(281, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy282;
-       if(yych != 'd') goto yy53;
+       if(yych == 'A') goto yy282;
+       if(yych != 'a') goto yy54;
        goto yy282;
 yy282:
        YYDEBUG(282, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy283;
-       if(yych != 'a') goto yy53;
-       goto yy283;
+       if(yych == 'Y') goto yy190;
+       if(yych == 'y') goto yy190;
+       goto yy54;
 yy283:
        YYDEBUG(283, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy187;
-       if(yych == 'y') goto yy187;
-       goto yy53;
+       if(yych == 'Y') goto yy256;
+       if(yych == 'y') goto yy256;
+       goto yy54;
 yy284:
        YYDEBUG(284, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy257;
-       if(yych == 'y') goto yy257;
-       goto yy53;
+       if(yych == 'U') goto yy285;
+       if(yych != 'u') goto yy54;
+       goto yy285;
 yy285:
        YYDEBUG(285, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy286;
-       if(yych != 'u') goto yy53;
-       goto yy286;
+       if(yych == 'R') goto yy256;
+       if(yych == 'r') goto yy256;
+       goto yy54;
 yy286:
        YYDEBUG(286, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy257;
-       if(yych == 'r') goto yy257;
-       goto yy53;
+       if(yych == 'N') goto yy291;
+       if(yych == 'n') goto yy291;
+       goto yy54;
 yy287:
        YYDEBUG(287, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy292;
-       if(yych == 'n') goto yy292;
-       goto yy53;
+       if(yych == 'N') goto yy288;
+       if(yych != 'n') goto yy54;
+       goto yy288;
 yy288:
        YYDEBUG(288, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'N') goto yy289;
-       if(yych != 'n') goto yy53;
-       goto yy289;
-yy289:
-       YYDEBUG(289, *YYCURSOR);
        yyaccept = 5;
        YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        YYDEBUG(-1, yych);
        switch(yych){
-       case 'E':       case 'e':       goto yy193;
-       case 'F':       case 'f':       goto yy189;
-       case 'L':       case 'l':       goto yy194;
-       case 'N':       case 'n':       goto yy190;
-       case 'P':       case 'p':       goto yy195;
-       case 'S':       case 's':       goto yy258;
-       case 'T':       case 't':       goto yy192;
-       case 'U':       case 'u':       goto yy290;
-       default:        goto yy188;
+       case 'E':       case 'e':       goto yy196;
+       case 'F':       case 'f':       goto yy192;
+       case 'L':       case 'l':       goto yy197;
+       case 'N':       case 'n':       goto yy193;
+       case 'P':       case 'p':       goto yy198;
+       case 'S':       case 's':       goto yy257;
+       case 'T':       case 't':       goto yy195;
+       case 'U':       case 'u':       goto yy289;
+       default:        goto yy191;
        }
+yy289:
+       YYDEBUG(289, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'T') goto yy290;
+       if(yych != 't') goto yy54;
+       goto yy290;
 yy290:
        YYDEBUG(290, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy291;
-       if(yych != 't') goto yy53;
-       goto yy291;
+       if(yych == 'E') goto yy256;
+       if(yych == 'e') goto yy256;
+       goto yy54;
 yy291:
        YYDEBUG(291, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'E') goto yy257;
-       if(yych == 'e') goto yy257;
-       goto yy53;
-yy292:
-       YYDEBUG(292, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
        if(yych <= 'T'){
-               if(yych == 'D') goto yy293;
-               if(yych <= 'S') goto yy53;
-               goto yy294;
+               if(yych == 'D') goto yy292;
+               if(yych <= 'S') goto yy54;
+               goto yy293;
        } else {
                if(yych <= 'd'){
-                       if(yych <= 'c') goto yy53;
-                       goto yy293;
+                       if(yych <= 'c') goto yy54;
+                       goto yy292;
                } else {
-                       if(yych == 't') goto yy294;
-                       goto yy53;
+                       if(yych == 't') goto yy293;
+                       goto yy54;
                }
        }
+yy292:
+       YYDEBUG(292, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'A') goto yy294;
+       if(yych == 'a') goto yy294;
+       goto yy54;
 yy293:
        YYDEBUG(293, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy295;
-       if(yych == 'a') goto yy295;
-       goto yy53;
+       if(yych == 'H') goto yy256;
+       if(yych == 'h') goto yy256;
+       goto yy54;
 yy294:
        YYDEBUG(294, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'H') goto yy257;
-       if(yych == 'h') goto yy257;
-       goto yy53;
+       if(yych == 'Y') goto yy190;
+       if(yych == 'y') goto yy190;
+       goto yy54;
 yy295:
        YYDEBUG(295, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy187;
-       if(yych == 'y') goto yy187;
-       goto yy53;
+       if(yych == 'T') goto yy304;
+       if(yych == 't') goto yy304;
+       goto yy54;
 yy296:
        YYDEBUG(296, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'T') goto yy305;
-       if(yych == 't') goto yy305;
-       goto yy53;
+       if(yych == 'N') goto yy301;
+       if(yych == 'n') goto yy301;
+       goto yy54;
 yy297:
        YYDEBUG(297, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy302;
-       if(yych == 'n') goto yy302;
-       goto yy53;
+       if(yych == 'C') goto yy298;
+       if(yych != 'c') goto yy54;
+       goto yy298;
 yy298:
        YYDEBUG(298, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'C') goto yy299;
-       if(yych != 'c') goto yy53;
-       goto yy299;
-yy299:
-       YYDEBUG(299, *YYCURSOR);
        yyaccept = 5;
        YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        YYDEBUG(-1, yych);
        switch(yych){
-       case 'E':       case 'e':       goto yy193;
-       case 'F':       case 'f':       goto yy189;
-       case 'L':       case 'l':       goto yy194;
-       case 'N':       case 'n':       goto yy190;
-       case 'O':       case 'o':       goto yy300;
-       case 'P':       case 'p':       goto yy195;
-       case 'S':       case 's':       goto yy258;
-       case 'T':       case 't':       goto yy192;
-       default:        goto yy188;
+       case 'E':       case 'e':       goto yy196;
+       case 'F':       case 'f':       goto yy192;
+       case 'L':       case 'l':       goto yy197;
+       case 'N':       case 'n':       goto yy193;
+       case 'O':       case 'o':       goto yy299;
+       case 'P':       case 'p':       goto yy198;
+       case 'S':       case 's':       goto yy257;
+       case 'T':       case 't':       goto yy195;
+       default:        goto yy191;
        }
+yy299:
+       YYDEBUG(299, *YYCURSOR);
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       if(yych == 'N') goto yy300;
+       if(yych != 'n') goto yy54;
+       goto yy300;
 yy300:
        YYDEBUG(300, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'N') goto yy301;
-       if(yych != 'n') goto yy53;
-       goto yy301;
+       if(yych == 'D') goto yy256;
+       if(yych == 'd') goto yy256;
+       goto yy54;
 yy301:
        YYDEBUG(301, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy257;
-       if(yych == 'd') goto yy257;
-       goto yy53;
+       if(yych == 'D') goto yy302;
+       if(yych != 'd') goto yy54;
+       goto yy302;
 yy302:
        YYDEBUG(302, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy303;
-       if(yych != 'd') goto yy53;
+       if(yych == 'A') goto yy303;
+       if(yych != 'a') goto yy54;
        goto yy303;
 yy303:
        YYDEBUG(303, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy304;
-       if(yych != 'a') goto yy53;
-       goto yy304;
+       if(yych == 'Y') goto yy190;
+       if(yych == 'y') goto yy190;
+       goto yy54;
 yy304:
        YYDEBUG(304, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'Y') goto yy187;
-       if(yych == 'y') goto yy187;
-       goto yy53;
+       if(yych == 'U') goto yy305;
+       if(yych != 'u') goto yy54;
+       goto yy305;
 yy305:
        YYDEBUG(305, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'U') goto yy306;
-       if(yych != 'u') goto yy53;
+       if(yych == 'R') goto yy306;
+       if(yych != 'r') goto yy54;
        goto yy306;
 yy306:
        YYDEBUG(306, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'R') goto yy307;
-       if(yych != 'r') goto yy53;
+       if(yych == 'D') goto yy307;
+       if(yych != 'd') goto yy54;
        goto yy307;
 yy307:
        YYDEBUG(307, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'D') goto yy308;
-       if(yych != 'd') goto yy53;
+       if(yych == 'A') goto yy308;
+       if(yych != 'a') goto yy54;
        goto yy308;
 yy308:
        YYDEBUG(308, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych == 'A') goto yy309;
-       if(yych != 'a') goto yy53;
-       goto yy309;
+       if(yych == 'Y') goto yy190;
+       if(yych == 'y') goto yy190;
+       goto yy54;
 yy309:
        YYDEBUG(309, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych == 'Y') goto yy187;
-       if(yych == 'y') goto yy187;
-       goto yy53;
-yy310:
-       YYDEBUG(310, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy165;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'D') goto yy49;
+                       goto yy168;
+               }
        } else {
                if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'e') goto yy311;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'e') goto yy310;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy311:
-       YYDEBUG(311, *YYCURSOR);
+yy310:
+       YYDEBUG(310, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'V'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'U') goto yy49;
-               goto yy166;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'U') goto yy50;
+                       goto yy169;
+               }
        } else {
                if(yych <= 'u'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 'v') goto yy312;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'v') goto yy311;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy312:
-       YYDEBUG(312, *YYCURSOR);
+yy311:
+       YYDEBUG(311, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'I'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'H') goto yy49;
-               goto yy167;
+               if(yych == '/') goto yy53;
+               if(yych <= 'H') goto yy3;
+               goto yy170;
        } else {
                if(yych <= 'h'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'i') goto yy313;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'i') goto yy312;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
+yy312:
+       YYDEBUG(312, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'O') goto yy171;
+       if(yych != 'o') goto yy60;
+       goto yy313;
 yy313:
        YYDEBUG(313, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'O'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'N') goto yy49;
-               goto yy168;
+       yych = *++YYCURSOR;
+       if(yych == 'U') goto yy172;
+       if(yych != 'u') goto yy60;
+       goto yy314;
+yy314:
+       YYDEBUG(314, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'S') goto yy173;
+       if(yych != 's') goto yy60;
+       goto yy315;
+yy315:
+       YYDEBUG(315, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '.'){
+               if(yych == ' ') goto yy174;
+               goto yy54;
        } else {
-               if(yych <= 'n'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'o') goto yy314;
-                       if(yych <= 'z') goto yy50;
+               if(yych <= '/') goto yy53;
+               if(yych <= '`') goto yy54;
+               if(yych <= 'z') goto yy59;
+               goto yy54;
+       }
+yy316:
+       YYDEBUG(316, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'S') goto yy49;
+               goto yy317;
+       } else {
+               if(yych <= 'r'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 's') goto yy317;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
-yy314:
-       YYDEBUG(314, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'U'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'T') goto yy49;
-               goto yy169;
+yy317:
+       YYDEBUG(317, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'T') goto yy50;
+               goto yy318;
        } else {
-               if(yych <= 't'){
-                       if(yych <= '`') goto yy49;
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
                        goto yy50;
                } else {
-                       if(yych <= 'u') goto yy315;
+                       if(yych <= 't') goto yy318;
                        if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       goto yy3;
                }
        }
-yy315:
-       YYDEBUG(315, *YYCURSOR);
+yy318:
+       YYDEBUG(318, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == ' ') goto yy174;
+       goto yy3;
+yy319:
+       YYDEBUG(319, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'S'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'R') goto yy49;
-               goto yy170;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'R') goto yy49;
+                       goto yy317;
+               }
        } else {
                if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 's') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy316:
-       YYDEBUG(316, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 8) {
-               goto yy50;
-       }
-       if(yych <= '.'){
-               if(yych == ' ') goto yy171;
-               goto yy3;
-       } else {
-               if(yych <= '/') goto yy52;
-               if(yych <= '@') goto yy3;
-               if(yych <= 'Z') goto yy48;
-               goto yy3;
-       }
-yy317:
-       YYDEBUG(317, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'S') goto yy318;
-       if(yych != 's') goto yy49;
-       goto yy318;
-yy318:
-       YYDEBUG(318, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy170;
-       if(yych == 't') goto yy170;
-       goto yy49;
-yy319:
-       YYDEBUG(319, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'S'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'R') goto yy49;
-               goto yy318;
-       } else {
-               if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
                        if(yych <= 's') goto yy320;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy320:
@@ -4469,944 +4672,1001 @@ yy320:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy170;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy50;
+                       goto yy318;
+               }
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy321;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
 yy321:
        YYDEBUG(321, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'G') goto yy328;
-       if(yych == 'g') goto yy328;
-       goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= '.'){
+               if(yych == ' ') goto yy174;
+               goto yy3;
+       } else {
+               if(yych <= '/') goto yy53;
+               if(yych <= '`') goto yy3;
+               if(yych <= 'z') goto yy59;
+               goto yy3;
+       }
 yy322:
        YYDEBUG(322, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy323;
-       if(yych != 'e') goto yy49;
-       goto yy323;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'G') goto yy326;
+               goto yy49;
+       } else {
+               if(yych <= 'f'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'g') goto yy326;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy323:
        YYDEBUG(323, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'V') goto yy324;
-       if(yych != 'v') goto yy49;
-       goto yy324;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'E') goto yy49;
+               goto yy324;
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'e') goto yy324;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy324:
        YYDEBUG(324, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy325;
-       if(yych != 'e') goto yy49;
-       goto yy325;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'V') goto yy50;
+               goto yy325;
+       } else {
+               if(yych <= 'u'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 'v') goto yy325;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy325:
        YYDEBUG(325, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'N') goto yy326;
-       if(yych != 'n') goto yy49;
-       goto yy326;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'E') goto yy210;
+       if(yych == 'e') goto yy210;
+       goto yy3;
 yy326:
        YYDEBUG(326, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'T') goto yy327;
-       if(yych != 't') goto yy49;
-       goto yy327;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'H') goto yy50;
+               goto yy327;
+       } else {
+               if(yych <= 'g'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 'h') goto yy327;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy327:
        YYDEBUG(327, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'T') goto yy173;
+       if(yych == 't') goto yy173;
+       goto yy3;
 yy328:
        YYDEBUG(328, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy329;
-       if(yych != 'h') goto yy49;
-       goto yy329;
-yy329:
-       YYDEBUG(329, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy170;
-       if(yych == 't') goto yy170;
-       goto yy49;
-yy330:
-       YYDEBUG(330, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'G'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'F') goto yy49;
-               goto yy328;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'F') goto yy49;
+                       goto yy326;
+               }
        } else {
                if(yych <= 'f'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'g') goto yy337;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'g') goto yy335;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy331:
-       YYDEBUG(331, *YYCURSOR);
+yy329:
+       YYDEBUG(329, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy323;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'D') goto yy49;
+                       goto yy324;
+               }
        } else {
                if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'e') goto yy332;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'e') goto yy330;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy332:
-       YYDEBUG(332, *YYCURSOR);
+yy330:
+       YYDEBUG(330, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'V'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'U') goto yy49;
-               goto yy324;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'U') goto yy50;
+                       goto yy325;
+               }
        } else {
                if(yych <= 'u'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 'v') goto yy333;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'v') goto yy331;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy333:
-       YYDEBUG(333, *YYCURSOR);
+yy331:
+       YYDEBUG(331, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy325;
+               if(yych == '/') goto yy53;
+               if(yych <= 'D') goto yy3;
+               goto yy210;
        } else {
                if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'e') goto yy334;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'e') goto yy332;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
+yy332:
+       YYDEBUG(332, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'N') goto yy211;
+       if(yych != 'n') goto yy60;
+       goto yy333;
+yy333:
+       YYDEBUG(333, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'T') goto yy212;
+       if(yych != 't') goto yy60;
+       goto yy334;
 yy334:
        YYDEBUG(334, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy326;
-       } else {
-               if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'n') goto yy335;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy315;
+       goto yy60;
 yy335:
        YYDEBUG(335, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy327;
+       if(yych <= 'H'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'G') goto yy50;
+                       goto yy327;
+               }
        } else {
-               if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'g'){
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy336;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'h') goto yy336;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
 yy336:
        YYDEBUG(336, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
+       if(yych <= 'T'){
+               if(yych == '/') goto yy53;
+               if(yych <= 'S') goto yy3;
+               goto yy173;
        } else {
-               if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy315;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
 yy337:
        YYDEBUG(337, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy329;
+       if(yych <= 'N'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'M') goto yy49;
+                       goto yy358;
+               }
        } else {
-               if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'm'){
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'h') goto yy338;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'n') goto yy375;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy338:
        YYDEBUG(338, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy170;
+       if(yych <= 'U'){
+               if(yych <= '@'){
+                       if(yych == '/') goto yy53;
+                       goto yy3;
+               } else {
+                       if(yych == 'I') goto yy351;
+                       if(yych <= 'T') goto yy49;
+                       goto yy352;
+               }
        } else {
-               if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'i'){
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'h') goto yy52;
+                       goto yy368;
                } else {
-                       if(yych <= 't') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 'u') goto yy369;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy339:
        YYDEBUG(339, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy362;
-       } else {
-               if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'n') goto yy379;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+       if(yych <= 'E'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'D') goto yy49;
+                       goto yy347;
+               }
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
+               } else {
+                       if(yych <= 'e') goto yy364;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy340:
        YYDEBUG(340, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'U'){
-               if(yych <= 'H'){
-                       if(yych == '/') goto yy52;
-                       goto yy49;
+       if(yych <= 'E'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
                } else {
-                       if(yych <= 'I') goto yy355;
-                       if(yych <= 'T') goto yy49;
-                       goto yy356;
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'D') goto yy49;
+                       goto yy345;
                }
        } else {
-               if(yych <= 'i'){
-                       if(yych <= '`') goto yy49;
-                       if(yych <= 'h') goto yy50;
-                       goto yy372;
+               if(yych <= 'd'){
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych == 'u') goto yy373;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'e') goto yy360;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy341:
        YYDEBUG(341, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy351;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'N') goto yy358;
+               goto yy49;
        } else {
-               if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'e') goto yy368;
-                       if(yych <= 'z') goto yy50;
+               if(yych <= 'm'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 'n') goto yy358;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
 yy342:
        YYDEBUG(342, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy347;
-       } else {
-               if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= 'I'){
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'H') goto yy49;
+                       goto yy351;
                } else {
-                       if(yych <= 'e') goto yy364;
-                       if(yych <= 'z') goto yy50;
+                       if(yych == 'U') goto yy352;
                        goto yy49;
                }
+       } else {
+               if(yych <= 'i'){
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'h') goto yy49;
+                       goto yy351;
+               } else {
+                       if(yych == 'u') goto yy352;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
        }
 yy343:
        YYDEBUG(343, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'N') goto yy362;
-       if(yych == 'n') goto yy362;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'E') goto yy347;
+               goto yy49;
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'e') goto yy347;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy344:
        YYDEBUG(344, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'U'){
-               if(yych == 'I') goto yy355;
-               if(yych <= 'T') goto yy49;
-               goto yy356;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'E') goto yy49;
+               goto yy345;
        } else {
-               if(yych <= 'i'){
-                       if(yych <= 'h') goto yy49;
-                       goto yy355;
-               } else {
-                       if(yych == 'u') goto yy356;
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 'e') goto yy345;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
 yy345:
        YYDEBUG(345, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy351;
-       if(yych == 'e') goto yy351;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'L') goto yy50;
+               goto yy346;
+       } else {
+               if(yych <= 'k'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 'l') goto yy346;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy346:
        YYDEBUG(346, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'E') goto yy347;
-       if(yych != 'e') goto yy49;
-       goto yy347;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'F') goto yy220;
+       if(yych == 'f') goto yy220;
+       goto yy3;
 yy347:
        YYDEBUG(347, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'L') goto yy348;
-       if(yych != 'l') goto yy49;
-       goto yy348;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy151;
+               if(yych != 'S') goto yy50;
+               goto yy348;
+       } else {
+               if(yych <= 'r'){
+                       if(yych <= '`') goto yy151;
+                       goto yy50;
+               } else {
+                       if(yych <= 's') goto yy348;
+                       if(yych <= 'z') goto yy50;
+                       goto yy151;
+               }
+       }
 yy348:
        YYDEBUG(348, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'F') goto yy349;
-       if(yych != 'f') goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'D') goto yy349;
+       if(yych != 'd') goto yy3;
        goto yy349;
 yy349:
        YYDEBUG(349, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'T') goto yy350;
-       if(yych != 't') goto yy49;
+       if(yych == 'A') goto yy350;
+       if(yych != 'a') goto yy54;
        goto yy350;
 yy350:
        YYDEBUG(350, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy157;
+       goto yy54;
 yy351:
        YYDEBUG(351, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Z'){
-               if(yych <= '@') goto yy148;
-               if(yych != 'S') goto yy48;
-               goto yy352;
+               if(yych <= 'Q'){
+                       if(yych <= '@') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 'R') goto yy357;
+                       if(yych <= 'S') goto yy318;
+                       goto yy50;
+               }
        } else {
                if(yych <= 'r'){
-                       if(yych <= '`') goto yy148;
-                       goto yy48;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'q') goto yy50;
+                       goto yy357;
                } else {
-                       if(yych <= 's') goto yy352;
-                       if(yych <= 'z') goto yy48;
-                       goto yy148;
+                       if(yych <= 's') goto yy318;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
                }
        }
 yy352:
        YYDEBUG(352, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'D') goto yy353;
-       if(yych != 'd') goto yy49;
-       goto yy353;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy151;
+               if(yych != 'R') goto yy50;
+               goto yy353;
+       } else {
+               if(yych <= 'q'){
+                       if(yych <= '`') goto yy151;
+                       goto yy50;
+               } else {
+                       if(yych <= 'r') goto yy353;
+                       if(yych <= 'z') goto yy50;
+                       goto yy151;
+               }
+       }
 yy353:
        YYDEBUG(353, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'A') goto yy354;
-       if(yych != 'a') goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'S') goto yy354;
+       if(yych != 's') goto yy3;
        goto yy354;
 yy354:
        YYDEBUG(354, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy154;
-       if(yych == 'y') goto yy154;
-       goto yy49;
+       if(yych == 'D') goto yy355;
+       if(yych != 'd') goto yy54;
+       goto yy355;
 yy355:
        YYDEBUG(355, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'S'){
-               if(yych <= 'Q') goto yy49;
-               if(yych <= 'R') goto yy361;
-               goto yy170;
-       } else {
-               if(yych <= 'q') goto yy49;
-               if(yych <= 'r') goto yy361;
-               if(yych <= 's') goto yy170;
-               goto yy49;
-       }
+       if(yych == 'A') goto yy356;
+       if(yych != 'a') goto yy54;
+       goto yy356;
 yy356:
        YYDEBUG(356, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'Z'){
-               if(yych <= '@') goto yy148;
-               if(yych != 'R') goto yy48;
-               goto yy357;
-       } else {
-               if(yych <= 'q'){
-                       if(yych <= '`') goto yy148;
-                       goto yy48;
-               } else {
-                       if(yych <= 'r') goto yy357;
-                       if(yych <= 'z') goto yy48;
-                       goto yy148;
-               }
-       }
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy157;
+       goto yy54;
 yy357:
        YYDEBUG(357, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'S') goto yy358;
-       if(yych != 's') goto yy49;
-       goto yy358;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'D') goto yy173;
+       if(yych == 'd') goto yy173;
+       goto yy3;
 yy358:
        YYDEBUG(358, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'D') goto yy359;
-       if(yych != 'd') goto yy49;
-       goto yy359;
-yy359:
-       YYDEBUG(359, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'A') goto yy360;
-       if(yych != 'a') goto yy49;
-       goto yy360;
-yy360:
-       YYDEBUG(360, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy154;
-       if(yych == 'y') goto yy154;
-       goto yy49;
-yy361:
-       YYDEBUG(361, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'D') goto yy170;
-       if(yych == 'd') goto yy170;
-       goto yy49;
-yy362:
-       YYDEBUG(362, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy363;
-       if(yych != 't') goto yy49;
-       goto yy363;
-yy363:
-       YYDEBUG(363, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
-yy364:
-       YYDEBUG(364, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'L'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'K') goto yy49;
-               goto yy348;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'T') goto yy50;
+               goto yy359;
        } else {
-               if(yych <= 'k'){
-                       if(yych <= '`') goto yy49;
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
                        goto yy50;
                } else {
-                       if(yych <= 'l') goto yy365;
+                       if(yych <= 't') goto yy359;
                        if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       goto yy3;
                }
        }
-yy365:
-       YYDEBUG(365, *YYCURSOR);
+yy359:
+       YYDEBUG(359, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'F'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'E') goto yy49;
-               goto yy349;
-       } else {
-               if(yych <= 'e'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'f') goto yy366;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy366:
-       YYDEBUG(366, *YYCURSOR);
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy3;
+yy360:
+       YYDEBUG(360, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy350;
+       if(yych <= 'L'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'K') goto yy50;
+                       goto yy346;
+               }
        } else {
-               if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'k'){
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy367;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'l') goto yy361;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy367:
-       YYDEBUG(367, *YYCURSOR);
+yy361:
+       YYDEBUG(361, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
+       if(yych <= 'F'){
+               if(yych == '/') goto yy53;
+               if(yych <= 'E') goto yy3;
+               goto yy220;
        } else {
-               if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'e'){
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'f') goto yy362;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy368:
-       YYDEBUG(368, *YYCURSOR);
+yy362:
+       YYDEBUG(362, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'T') goto yy221;
+       if(yych != 't') goto yy60;
+       goto yy363;
+yy363:
+       YYDEBUG(363, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy315;
+       goto yy60;
+yy364:
+       YYDEBUG(364, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'S'){
                if(yych <= '/'){
-                       if(yych <= '.') goto yy148;
-                       goto yy52;
+                       if(yych <= '.') goto yy151;
+                       goto yy53;
                } else {
-                       if(yych <= '@') goto yy148;
-                       if(yych <= 'R') goto yy48;
-                       goto yy352;
+                       if(yych <= '@') goto yy151;
+                       if(yych <= 'R') goto yy50;
+                       goto yy348;
                }
        } else {
                if(yych <= 'r'){
-                       if(yych <= 'Z') goto yy48;
-                       if(yych <= '`') goto yy148;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy151;
+                       goto yy58;
                } else {
-                       if(yych <= 's') goto yy369;
-                       if(yych <= 'z') goto yy50;
-                       goto yy148;
+                       if(yych <= 's') goto yy365;
+                       if(yych <= 'z') goto yy58;
+                       goto yy151;
                }
        }
-yy369:
-       YYDEBUG(369, *YYCURSOR);
+yy365:
+       YYDEBUG(365, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'D'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'C') goto yy49;
-               goto yy353;
+               if(yych == '/') goto yy53;
+               if(yych <= 'C') goto yy3;
+               goto yy349;
        } else {
                if(yych <= 'c'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'd') goto yy370;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy370:
-       YYDEBUG(370, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy354;
-       } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy371;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
-       }
-yy371:
-       YYDEBUG(371, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy154;
-       } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'y') goto yy163;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'd') goto yy366;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy372:
-       YYDEBUG(372, *YYCURSOR);
+yy366:
+       YYDEBUG(366, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'A') goto yy350;
+       if(yych != 'a') goto yy60;
+       goto yy367;
+yy367:
+       YYDEBUG(367, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy166;
+       goto yy60;
+yy368:
+       YYDEBUG(368, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'S'){
-               if(yych <= '/'){
-                       if(yych <= '.') goto yy49;
-                       goto yy52;
+               if(yych <= '@'){
+                       if(yych == '/') goto yy53;
+                       goto yy3;
                } else {
-                       if(yych <= 'Q') goto yy49;
-                       if(yych <= 'R') goto yy361;
-                       goto yy170;
+                       if(yych <= 'Q') goto yy50;
+                       if(yych <= 'R') goto yy357;
+                       goto yy318;
                }
        } else {
-               if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       if(yych <= 'q') goto yy50;
-                       goto yy378;
+               if(yych <= 'q'){
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 's') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'r') goto yy374;
+                       if(yych <= 's') goto yy321;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy373:
-       YYDEBUG(373, *YYCURSOR);
+yy369:
+       YYDEBUG(369, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'R'){
                if(yych <= '/'){
-                       if(yych <= '.') goto yy148;
-                       goto yy52;
+                       if(yych <= '.') goto yy151;
+                       goto yy53;
                } else {
-                       if(yych <= '@') goto yy148;
-                       if(yych <= 'Q') goto yy48;
-                       goto yy357;
+                       if(yych <= '@') goto yy151;
+                       if(yych <= 'Q') goto yy50;
+                       goto yy353;
                }
        } else {
                if(yych <= 'q'){
-                       if(yych <= 'Z') goto yy48;
-                       if(yych <= '`') goto yy148;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy151;
+                       goto yy58;
                } else {
-                       if(yych <= 'r') goto yy374;
-                       if(yych <= 'z') goto yy50;
-                       goto yy148;
+                       if(yych <= 'r') goto yy370;
+                       if(yych <= 'z') goto yy58;
+                       goto yy151;
                }
        }
-yy374:
-       YYDEBUG(374, *YYCURSOR);
+yy370:
+       YYDEBUG(370, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'S'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'R') goto yy49;
-               goto yy358;
+               if(yych == '/') goto yy53;
+               if(yych <= 'R') goto yy3;
+               goto yy354;
        } else {
                if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 's') goto yy375;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy375:
-       YYDEBUG(375, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'D'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'C') goto yy49;
-               goto yy359;
-       } else {
-               if(yych <= 'c'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'd') goto yy376;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy376:
-       YYDEBUG(376, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy360;
-       } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy377;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
-       }
-yy377:
-       YYDEBUG(377, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy154;
-       } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'y') goto yy163;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 's') goto yy371;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy378:
-       YYDEBUG(378, *YYCURSOR);
+yy371:
+       YYDEBUG(371, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'D') goto yy355;
+       if(yych != 'd') goto yy60;
+       goto yy372;
+yy372:
+       YYDEBUG(372, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'A') goto yy356;
+       if(yych != 'a') goto yy60;
+       goto yy373;
+yy373:
+       YYDEBUG(373, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy166;
+       goto yy60;
+yy374:
+       YYDEBUG(374, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'D'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'C') goto yy49;
-               goto yy170;
+               if(yych == '/') goto yy53;
+               if(yych <= 'C') goto yy3;
+               goto yy173;
        } else {
                if(yych <= 'c'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'd') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'd') goto yy315;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy379:
-       YYDEBUG(379, *YYCURSOR);
+yy375:
+       YYDEBUG(375, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy363;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy50;
+                       goto yy359;
+               }
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy380;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy376;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy380:
-       YYDEBUG(380, *YYCURSOR);
+yy376:
+       YYDEBUG(376, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
+               if(yych == '/') goto yy53;
+               if(yych <= 'G') goto yy3;
+               goto yy173;
        } else {
                if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'h') goto yy315;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy381:
-       YYDEBUG(381, *YYCURSOR);
+yy377:
+       YYDEBUG(377, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'C') goto yy382;
-       if(yych != 'c') goto yy49;
-       goto yy382;
-yy382:
-       YYDEBUG(382, *YYCURSOR);
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'C') goto yy49;
+               goto yy378;
+       } else {
+               if(yych <= 'b'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'c') goto yy378;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
+yy378:
+       YYDEBUG(378, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych >= '-') goto yy385;
-                       goto yy383;
+                       if(yych >= '-') goto yy381;
+                       goto yy379;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'E') goto yy386;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'E') goto yy382;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'e') goto yy386;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'e') goto yy382;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
-yy383:
-       YYDEBUG(383, *YYCURSOR);
+yy379:
+       YYDEBUG(379, *YYCURSOR);
        ++YYCURSOR;
        if((YYLIMIT - YYCURSOR) < 16) YYFILL(16);
        yych = *YYCURSOR;
-       goto yy384;
-yy384:
-       YYDEBUG(384, *YYCURSOR);
+       goto yy380;
+yy380:
+       YYDEBUG(380, *YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '2') goto yy458;
        if(yych <= '3') goto yy459;
-       if(yych <= '9') goto yy400;
-       goto yy53;
+       if(yych <= '9') goto yy396;
+       goto yy54;
+yy381:
+       YYDEBUG(381, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '/') goto yy380;
+       if(yych <= '0') goto yy392;
+       if(yych <= '2') goto yy394;
+       if(yych <= '3') goto yy395;
+       goto yy380;
+yy382:
+       YYDEBUG(382, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'M') goto yy388;
+       if(yych == 'm') goto yy388;
+       goto yy3;
+yy383:
+       YYDEBUG(383, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
+       goto yy384;
+yy384:
+       YYDEBUG(384, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
+       goto yy385;
 yy385:
        YYDEBUG(385, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy384;
-       if(yych <= '0') goto yy396;
-       if(yych <= '2') goto yy398;
-       if(yych <= '3') goto yy399;
-       goto yy384;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
+       goto yy386;
 yy386:
        YYDEBUG(386, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'M') goto yy392;
-       if(yych == 'm') goto yy392;
-       goto yy49;
+       ++YYCURSOR;
+       goto yy387;
 yy387:
        YYDEBUG(387, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
-       goto yy388;
+
+#line 1114 "parse_date.re"
+{
+               TIMELIB_INIT;
+               TIMELIB_HAVE_DATE();
+               s->time->m = timelib_get_month((char **) &ptr);
+               s->time->y = timelib_get_nr((char **) &ptr, 4);
+               s->time->d = 1;
+               TIMELIB_PROCESS_YEAR(s->time->y);
+               TIMELIB_DEINIT;
+               return TIMELIB_DATE_NO_DAY;
+       }
+#line 4842 "<stdout>"
 yy388:
        YYDEBUG(388, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych == 'B') goto yy389;
+       if(yych != 'b') goto yy54;
        goto yy389;
 yy389:
        YYDEBUG(389, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych == 'E') goto yy390;
+       if(yych != 'e') goto yy54;
        goto yy390;
 yy390:
        YYDEBUG(390, *YYCURSOR);
-       ++YYCURSOR;
+       yych = *++YYCURSOR;
+       if(yych == 'R') goto yy391;
+       if(yych != 'r') goto yy54;
        goto yy391;
 yy391:
        YYDEBUG(391, *YYCURSOR);
-
-#line 1103 "parse_date.re"
-{
-               TIMELIB_INIT;
-               TIMELIB_HAVE_DATE();
-               s->time->m = timelib_get_month((char **) &ptr);
-               s->time->y = timelib_get_nr((char **) &ptr, 4);
-               s->time->d = 1;
-               TIMELIB_PROCESS_YEAR(s->time->y);
-               TIMELIB_DEINIT;
-               return TIMELIB_DATE_NO_DAY;
-       }
-#line 4564 "<stdout>"
+       yych = *++YYCURSOR;
+       if(yych <= '/') goto yy380;
+       if(yych <= '9') goto yy383;
+       goto yy380;
 yy392:
        YYDEBUG(392, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'B') goto yy393;
-       if(yych != 'b') goto yy49;
-       goto yy393;
-yy393:
-       YYDEBUG(393, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'E') goto yy394;
-       if(yych != 'e') goto yy49;
-       goto yy394;
-yy394:
-       YYDEBUG(394, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'R') goto yy395;
-       if(yych != 'r') goto yy49;
-       goto yy395;
-yy395:
-       YYDEBUG(395, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 64) {
-               goto yy383;
-       }
-       if(yych <= '@'){
-               if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
-               goto yy3;
-       } else {
-               if(yych <= 'Z') goto yy48;
-               if(yych <= '`') goto yy3;
-               if(yych <= 'z') goto yy48;
-               goto yy3;
-       }
-yy396:
-       YYDEBUG(396, *YYCURSOR);
        ++YYCURSOR;
        if((yych = *YYCURSOR) <= '1'){
-               if(yych <= '/') goto yy402;
+               if(yych <= '/') goto yy398;
                if(yych <= '0') goto yy457;
                goto yy444;
        } else {
                if(yych <= '2') goto yy456;
                if(yych <= '9') goto yy444;
-               goto yy402;
+               goto yy398;
        }
-yy397:
-       YYDEBUG(397, *YYCURSOR);
+yy393:
+       YYDEBUG(393, *YYCURSOR);
 
-#line 1127 "parse_date.re"
+#line 1138 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -5417,97 +5677,98 @@ yy397:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_TEXT;
        }
-#line 4614 "<stdout>"
-yy398:
-       YYDEBUG(398, *YYCURSOR);
+#line 4881 "<stdout>"
+yy394:
+       YYDEBUG(394, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy402;
+       if(yych <= '/') goto yy398;
        if(yych == '2') goto yy456;
        if(yych <= '9') goto yy444;
-       goto yy402;
-yy399:
-       YYDEBUG(399, *YYCURSOR);
+       goto yy398;
+yy395:
+       YYDEBUG(395, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy402;
+       if(yych <= '/') goto yy398;
        if(yych <= '1') goto yy444;
-       if(yych <= '2') goto yy404;
-       if(yych <= '9') goto yy405;
-       goto yy402;
-yy400:
-       YYDEBUG(400, *YYCURSOR);
+       if(yych <= '2') goto yy400;
+       if(yych <= '9') goto yy401;
+       goto yy398;
+yy396:
+       YYDEBUG(396, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy402;
-       if(yych <= '1') goto yy403;
-       if(yych <= '2') goto yy404;
-       if(yych <= '9') goto yy405;
-       goto yy402;
-yy401:
-       YYDEBUG(401, *YYCURSOR);
+       if(yych <= '/') goto yy398;
+       if(yych <= '1') goto yy399;
+       if(yych <= '2') goto yy400;
+       if(yych <= '9') goto yy401;
+       goto yy398;
+yy397:
+       YYDEBUG(397, *YYCURSOR);
        ++YYCURSOR;
        if((YYLIMIT - YYCURSOR) < 14) YYFILL(14);
        yych = *YYCURSOR;
-       goto yy402;
-yy402:
-       YYDEBUG(402, *YYCURSOR);
+       goto yy398;
+yy398:
+       YYDEBUG(398, *YYCURSOR);
        if(yybm[0+yych] & 128) {
-               goto yy401;
+               goto yy397;
        }
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '1') goto yy438;
        if(yych <= '2') goto yy439;
        if(yych <= '9') goto yy440;
-       goto yy397;
-yy403:
-       YYDEBUG(403, *YYCURSOR);
+       goto yy393;
+yy399:
+       YYDEBUG(399, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy437;
-       if(yych <= ':') goto yy407;
-       goto yy397;
-yy404:
-       YYDEBUG(404, *YYCURSOR);
+       if(yych <= ':') goto yy403;
+       goto yy393;
+yy400:
+       YYDEBUG(400, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '3') goto yy437;
-       if(yych <= '9') goto yy406;
-       if(yych <= ':') goto yy407;
-       goto yy397;
-yy405:
-       YYDEBUG(405, *YYCURSOR);
+       if(yych <= '9') goto yy402;
+       if(yych <= ':') goto yy403;
+       goto yy393;
+yy401:
+       YYDEBUG(401, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
-       if(yych <= '9') goto yy406;
-       if(yych <= ':') goto yy407;
-       goto yy397;
-yy406:
-       YYDEBUG(406, *YYCURSOR);
+       if(yych <= '/') goto yy393;
+       if(yych <= '9') goto yy402;
+       if(yych <= ':') goto yy403;
+       goto yy393;
+yy402:
+       YYDEBUG(402, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy435;
-       goto yy397;
-yy407:
-       YYDEBUG(407, *YYCURSOR);
+       goto yy393;
+yy403:
+       YYDEBUG(403, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych <= '5') goto yy408;
-       if(yych <= '9') goto yy410;
-       goto yy53;
-yy408:
-       YYDEBUG(408, *YYCURSOR);
+       if(yych <= '/') goto yy54;
+       if(yych <= '5') goto yy404;
+       if(yych <= '9') goto yy406;
+       goto yy54;
+yy404:
+       YYDEBUG(404, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy409;
-       if(yych <= '9') goto yy410;
-       if(yych <= ':') goto yy411;
-       goto yy409;
-yy409:
-       YYDEBUG(409, *YYCURSOR);
+       if(yych <= '/') goto yy405;
+       if(yych <= '9') goto yy406;
+       if(yych <= ':') goto yy407;
+       goto yy405;
+yy405:
+       YYDEBUG(405, *YYCURSOR);
 
-#line 1318 "parse_date.re"
+#line 1335 "parse_date.re"
 {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
                s->time->m = timelib_get_month((char **) &ptr);
@@ -5525,327 +5786,369 @@ yy409:
                }
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_SHORTDATE_WITH_TIME;
        }
-#line 4703 "<stdout>"
-yy410:
-       YYDEBUG(410, *YYCURSOR);
+#line 4972 "<stdout>"
+yy406:
+       YYDEBUG(406, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych != ':') goto yy409;
-       goto yy411;
-yy411:
-       YYDEBUG(411, *YYCURSOR);
+       if(yych != ':') goto yy405;
+       goto yy407;
+yy407:
+       YYDEBUG(407, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych <= '5') goto yy412;
-       if(yych <= '6') goto yy413;
-       if(yych <= '9') goto yy414;
-       goto yy53;
-yy412:
-       YYDEBUG(412, *YYCURSOR);
+       if(yych <= '/') goto yy54;
+       if(yych <= '5') goto yy408;
+       if(yych <= '6') goto yy409;
+       if(yych <= '9') goto yy410;
+       goto yy54;
+yy408:
+       YYDEBUG(408, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy409;
-       if(yych <= '9') goto yy415;
-       goto yy409;
-yy413:
-       YYDEBUG(413, *YYCURSOR);
+       if(yych <= '/') goto yy405;
+       if(yych <= '9') goto yy411;
+       goto yy405;
+yy409:
+       YYDEBUG(409, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == '0') goto yy415;
-       goto yy409;
-yy414:
-       YYDEBUG(414, *YYCURSOR);
+       if(yych == '0') goto yy411;
+       goto yy405;
+yy410:
+       YYDEBUG(410, *YYCURSOR);
        yych = *++YYCURSOR;
-       goto yy409;
-yy415:
-       YYDEBUG(415, *YYCURSOR);
+       goto yy405;
+yy411:
+       YYDEBUG(411, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= ','){
                if(yych <= ' '){
-                       if(yych <= 0x1F)        goto yy409;
-                       goto yy416;
+                       if(yych <= 0x1F)        goto yy405;
+                       goto yy412;
                } else {
-                       if(yych == '+') goto yy418;
-                       goto yy409;
+                       if(yych == '+') goto yy414;
+                       goto yy405;
                }
        } else {
                if(yych <= 'Z'){
-                       if(yych <= '-') goto yy418;
-                       if(yych <= '@') goto yy409;
-                       goto yy419;
+                       if(yych <= '-') goto yy414;
+                       if(yych <= '@') goto yy405;
+                       goto yy415;
                } else {
-                       if(yych <= '`') goto yy409;
-                       if(yych <= 'z') goto yy420;
-                       goto yy409;
+                       if(yych <= '`') goto yy405;
+                       if(yych <= 'z') goto yy416;
+                       goto yy405;
                }
        }
-yy416:
-       YYDEBUG(416, *YYCURSOR);
+yy412:
+       YYDEBUG(412, *YYCURSOR);
        ++YYCURSOR;
        if((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
        yych = *YYCURSOR;
-       goto yy417;
-yy417:
-       YYDEBUG(417, *YYCURSOR);
+       goto yy413;
+yy413:
+       YYDEBUG(413, *YYCURSOR);
        if(yych <= ','){
                if(yych <= ' '){
-                       if(yych <= 0x1F)        goto yy53;
-                       goto yy416;
+                       if(yych <= 0x1F)        goto yy54;
+                       goto yy412;
                } else {
-                       if(yych != '+') goto yy53;
-                       goto yy418;
+                       if(yych != '+') goto yy54;
+                       goto yy414;
                }
        } else {
                if(yych <= 'Z'){
-                       if(yych <= '-') goto yy418;
-                       if(yych <= '@') goto yy53;
-                       goto yy419;
+                       if(yych <= '-') goto yy414;
+                       if(yych <= '@') goto yy54;
+                       goto yy415;
                } else {
-                       if(yych <= '`') goto yy53;
-                       if(yych <= 'z') goto yy420;
-                       goto yy53;
+                       if(yych <= '`') goto yy54;
+                       if(yych <= 'z') goto yy416;
+                       goto yy54;
                }
        }
+yy414:
+       YYDEBUG(414, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '/') goto yy54;
+       if(yych <= '1') goto yy428;
+       if(yych <= '2') goto yy429;
+       if(yych <= '9') goto yy430;
+       goto yy54;
+yy415:
+       YYDEBUG(415, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '@') goto yy405;
+       if(yych <= 'Z') goto yy417;
+       if(yych <= '`') goto yy405;
+       if(yych <= 'z') goto yy419;
+       goto yy405;
+yy416:
+       YYDEBUG(416, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '@') goto yy405;
+       if(yych <= 'Z') goto yy417;
+       if(yych <= '`') goto yy405;
+       if(yych >= '{') goto yy405;
+       goto yy417;
+yy417:
+       YYDEBUG(417, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= '@') goto yy405;
+       if(yych <= 'Z') goto yy418;
+       if(yych <= '`') goto yy405;
+       if(yych >= '{') goto yy405;
+       goto yy418;
 yy418:
        YYDEBUG(418, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych <= '1') goto yy428;
-       if(yych <= '2') goto yy429;
-       if(yych <= '9') goto yy430;
-       goto yy53;
+       if(yych <= '@') goto yy405;
+       if(yych <= 'Z') goto yy410;
+       if(yych <= '`') goto yy405;
+       if(yych <= 'z') goto yy410;
+       goto yy405;
 yy419:
        YYDEBUG(419, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych <= '`') goto yy421;
-       if(yych <= 'z') goto yy422;
-       goto yy421;
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= '@'){
+               if(yych == '/') goto yy421;
+               goto yy405;
+       } else {
+               if(yych <= 'Z') goto yy418;
+               if(yych <= '`') goto yy405;
+               if(yych >= '{') goto yy405;
+               goto yy420;
+       }
 yy420:
        YYDEBUG(420, *YYCURSOR);
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= '@'){
+               if(yych != '/') goto yy405;
+               goto yy421;
+       } else {
+               if(yych <= 'Z') goto yy410;
+               if(yych <= '`') goto yy405;
+               if(yych <= 'z') goto yy425;
+               goto yy405;
+       }
+yy421:
+       YYDEBUG(421, *YYCURSOR);
        ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       goto yy421;
-yy421:
-       YYDEBUG(421, *YYCURSOR);
-       if(yych <= '@') goto yy409;
-       if(yych <= 'Z') goto yy420;
-       if(yych <= '`') goto yy409;
-       if(yych <= 'z') goto yy420;
-       goto yy409;
+       if(yych <= '@') goto yy54;
+       if(yych >= '[') goto yy54;
+       goto yy422;
 yy422:
        YYDEBUG(422, *YYCURSOR);
-       yyaccept = 7;
-       YYMARKER = ++YYCURSOR;
+       ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
+       if(yych <= '`') goto yy54;
+       if(yych >= '{') goto yy54;
        goto yy423;
 yy423:
        YYDEBUG(423, *YYCURSOR);
-       if(yych <= '@'){
-               if(yych != '/') goto yy409;
-               goto yy424;
-       } else {
-               if(yych <= 'Z') goto yy420;
-               if(yych <= '`') goto yy409;
-               if(yych <= 'z') goto yy422;
-               goto yy409;
-       }
-yy424:
-       YYDEBUG(424, *YYCURSOR);
-       ++YYCURSOR;
+       yyaccept = 7;
+       YYMARKER = ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
-       if(yych <= '@') goto yy53;
-       if(yych >= '[') goto yy53;
-       goto yy425;
+       goto yy424;
+yy424:
+       YYDEBUG(424, *YYCURSOR);
+       if(yych == '/') goto yy421;
+       if(yych <= '`') goto yy405;
+       if(yych <= 'z') goto yy423;
+       goto yy405;
 yy425:
        YYDEBUG(425, *YYCURSOR);
-       ++YYCURSOR;
-       if(YYLIMIT == YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
-       if(yych <= '`') goto yy53;
-       if(yych >= '{') goto yy53;
+       yyaccept = 7;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == '/') goto yy421;
+       if(yych <= '`') goto yy405;
+       if(yych >= '{') goto yy405;
        goto yy426;
 yy426:
        YYDEBUG(426, *YYCURSOR);
-       yyaccept = 7;
-       YYMARKER = ++YYCURSOR;
+       ++YYCURSOR;
        if(YYLIMIT == YYCURSOR) YYFILL(1);
        yych = *YYCURSOR;
        goto yy427;
 yy427:
        YYDEBUG(427, *YYCURSOR);
-       if(yych == '/') goto yy424;
-       if(yych <= '`') goto yy409;
+       if(yych == '/') goto yy421;
+       if(yych <= '`') goto yy54;
        if(yych <= 'z') goto yy426;
-       goto yy409;
+       goto yy54;
 yy428:
        YYDEBUG(428, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy409;
+       if(yych <= '/') goto yy405;
        if(yych <= '5') goto yy433;
        if(yych <= '9') goto yy430;
        if(yych <= ':') goto yy431;
-       goto yy409;
+       goto yy405;
 yy429:
        YYDEBUG(429, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '5'){
-               if(yych <= '/') goto yy409;
+               if(yych <= '/') goto yy405;
                if(yych <= '3') goto yy433;
                goto yy432;
        } else {
                if(yych == ':') goto yy431;
-               goto yy409;
+               goto yy405;
        }
 yy430:
        YYDEBUG(430, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy409;
+       if(yych <= '/') goto yy405;
        if(yych <= '5') goto yy432;
-       if(yych != ':') goto yy409;
+       if(yych != ':') goto yy405;
        goto yy431;
 yy431:
        YYDEBUG(431, *YYCURSOR);
        yyaccept = 7;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy409;
-       if(yych >= '6') goto yy409;
+       if(yych <= '/') goto yy405;
+       if(yych >= '6') goto yy405;
        goto yy432;
 yy432:
        YYDEBUG(432, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych <= '9') goto yy414;
-       goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych <= '9') goto yy410;
+       goto yy54;
 yy433:
        YYDEBUG(433, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy409;
+       if(yych <= '/') goto yy405;
        if(yych <= '5') goto yy434;
-       if(yych <= '9') goto yy414;
+       if(yych <= '9') goto yy410;
        if(yych <= ':') goto yy431;
-       goto yy409;
+       goto yy405;
 yy434:
        YYDEBUG(434, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy409;
-       if(yych <= '9') goto yy414;
-       goto yy409;
+       if(yych <= '/') goto yy405;
+       if(yych <= '9') goto yy410;
+       goto yy405;
 yy435:
        YYDEBUG(435, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy391;
-       if(yych >= ':') goto yy391;
+       if(yych <= '/') goto yy387;
+       if(yych >= ':') goto yy387;
        goto yy436;
 yy436:
        YYDEBUG(436, *YYCURSOR);
        yych = *++YYCURSOR;
-       goto yy397;
+       goto yy393;
 yy437:
        YYDEBUG(437, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy435;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy438:
        YYDEBUG(438, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy443;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy439:
        YYDEBUG(439, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '3') goto yy443;
        if(yych <= '9') goto yy441;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy440:
        YYDEBUG(440, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy441;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy441:
        YYDEBUG(441, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy397;
-       if(yych >= ':') goto yy397;
+       if(yych <= '/') goto yy393;
+       if(yych >= ':') goto yy393;
        goto yy442;
 yy442:
        YYDEBUG(442, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy436;
-       goto yy397;
+       goto yy393;
 yy443:
        YYDEBUG(443, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy442;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy444:
        YYDEBUG(444, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '1'){
                if(yych == '-') goto yy448;
-               if(yych <= '/') goto yy402;
+               if(yych <= '/') goto yy398;
                goto yy445;
        } else {
                if(yych <= '2') goto yy446;
                if(yych <= '9') goto yy447;
-               if(yych <= ':') goto yy407;
-               goto yy402;
+               if(yych <= ':') goto yy403;
+               goto yy398;
        }
 yy445:
        YYDEBUG(445, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy455;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy446:
        YYDEBUG(446, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '3') goto yy455;
        if(yych <= '9') goto yy454;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy447:
        YYDEBUG(447, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy397;
+       if(yych <= '/') goto yy393;
        if(yych <= '9') goto yy454;
-       if(yych <= ':') goto yy407;
-       goto yy397;
+       if(yych <= ':') goto yy403;
+       goto yy393;
 yy448:
        YYDEBUG(448, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy449;
 yy449:
        YYDEBUG(449, *YYCURSOR);
@@ -5856,7 +6159,7 @@ yy449:
 yy450:
        YYDEBUG(450, *YYCURSOR);
 
-#line 1219 "parse_date.re"
+#line 1232 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -5867,7 +6170,7 @@ yy450:
                TIMELIB_DEINIT;
                return TIMELIB_PG_TEXT;
        }
-#line 4958 "<stdout>"
+#line 5260 "<stdout>"
 yy451:
        YYDEBUG(451, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -5887,88 +6190,94 @@ yy453:
 yy454:
        YYDEBUG(454, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy391;
+       if(yych <= '/') goto yy387;
        if(yych <= '9') goto yy442;
-       goto yy391;
+       goto yy387;
 yy455:
        YYDEBUG(455, *YYCURSOR);
        yyaccept = 8;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '/') goto yy391;
+       if(yych <= '/') goto yy387;
        if(yych <= '9') goto yy442;
-       if(yych <= ':') goto yy407;
-       goto yy391;
+       if(yych <= ':') goto yy403;
+       goto yy387;
 yy456:
        YYDEBUG(456, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '1'){
                if(yych == '-') goto yy448;
-               if(yych <= '/') goto yy402;
+               if(yych <= '/') goto yy398;
                goto yy445;
        } else {
                if(yych <= '2') goto yy446;
                if(yych <= '9') goto yy447;
-               if(yych <= ':') goto yy407;
-               goto yy402;
+               if(yych <= ':') goto yy403;
+               goto yy398;
        }
 yy457:
        YYDEBUG(457, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '2'){
-               if(yych <= '/') goto yy402;
+               if(yych <= '/') goto yy398;
                if(yych <= '1') goto yy445;
                goto yy446;
        } else {
                if(yych <= '9') goto yy447;
-               if(yych <= ':') goto yy407;
-               goto yy402;
+               if(yych <= ':') goto yy403;
+               goto yy398;
        }
 yy458:
        YYDEBUG(458, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy402;
+       if(yych <= '/') goto yy398;
        if(yych == '2') goto yy460;
        if(yych <= '9') goto yy457;
-       goto yy402;
+       goto yy398;
 yy459:
        YYDEBUG(459, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy402;
+       if(yych <= '/') goto yy398;
        if(yych <= '1') goto yy457;
-       if(yych <= '2') goto yy404;
-       if(yych <= '9') goto yy405;
-       goto yy402;
+       if(yych <= '2') goto yy400;
+       if(yych <= '9') goto yy401;
+       goto yy398;
 yy460:
        YYDEBUG(460, *YYCURSOR);
        yyaccept = 6;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '2'){
-               if(yych <= '/') goto yy402;
+               if(yych <= '/') goto yy398;
                if(yych <= '1') goto yy445;
                goto yy446;
        } else {
                if(yych <= '9') goto yy447;
-               if(yych <= ':') goto yy407;
-               goto yy402;
+               if(yych <= ':') goto yy403;
+               goto yy398;
        }
 yy461:
        YYDEBUG(461, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'C'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'B') goto yy49;
-               goto yy382;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'B') goto yy49;
+                       goto yy378;
+               }
        } else {
                if(yych <= 'b'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
                        if(yych <= 'c') goto yy462;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy462:
@@ -5978,22 +6287,22 @@ yy462:
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'E') goto yy386;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'E') goto yy382;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
                        if(yych == 'e') goto yy463;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'z') goto yy58;
                        goto yy3;
                }
        }
@@ -6002,113 +6311,88 @@ yy463:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'M'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'L') goto yy49;
-               goto yy392;
+               if(yych == '/') goto yy53;
+               if(yych <= 'L') goto yy3;
+               goto yy388;
        } else {
                if(yych <= 'l'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
                        if(yych <= 'm') goto yy464;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
 yy464:
        YYDEBUG(464, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'B'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'A') goto yy49;
-               goto yy393;
-       } else {
-               if(yych <= 'a'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'b') goto yy465;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'B') goto yy389;
+       if(yych != 'b') goto yy60;
+       goto yy465;
 yy465:
        YYDEBUG(465, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy394;
-       } else {
-               if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'e') goto yy466;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'E') goto yy390;
+       if(yych != 'e') goto yy60;
+       goto yy466;
 yy466:
        YYDEBUG(466, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy395;
-       } else {
-               if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'r') goto yy467;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'R') goto yy391;
+       if(yych != 'r') goto yy60;
+       goto yy467;
 yy467:
        YYDEBUG(467, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 64) {
+       yych = *++YYCURSOR;
+       if(yych <= '9'){
+               if(yych <= '.') goto yy380;
+               if(yych <= '/') goto yy53;
                goto yy383;
-       }
-       if(yych <= '@'){
-               if(yych <= '.') goto yy3;
-               if(yych <= '/') goto yy52;
-               if(yych <= '9') goto yy387;
-               goto yy3;
        } else {
-               if(yych <= 'Z') goto yy48;
-               if(yych <= '`') goto yy3;
-               if(yych <= 'z') goto yy50;
-               goto yy3;
+               if(yych <= '`') goto yy380;
+               if(yych <= 'z') goto yy59;
+               goto yy380;
        }
 yy468:
        YYDEBUG(468, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'V') goto yy480;
-       if(yych == 'v') goto yy480;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'V') goto yy480;
+               goto yy49;
+       } else {
+               if(yych <= 'u'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'v') goto yy480;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy469:
        YYDEBUG(469, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'V'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'U') goto yy49;
-               goto yy480;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'U') goto yy49;
+                       goto yy480;
+               }
        } else {
                if(yych <= 'u'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
                        if(yych <= 'v') goto yy481;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy470:
@@ -6116,17 +6400,23 @@ yy470:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'X'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'W') goto yy49;
-               goto yy476;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'W') goto yy49;
+                       goto yy476;
+               }
        } else {
                if(yych <= 'w'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
                        if(yych <= 'x') goto yy479;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy471:
@@ -6134,65 +6424,122 @@ yy471:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy474;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'M') goto yy49;
+                       goto yy474;
+               }
        } else {
                if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
                        if(yych <= 'n') goto yy477;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy472:
        YYDEBUG(472, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'X') goto yy476;
-       if(yych == 'x') goto yy476;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'X') goto yy476;
+               goto yy49;
+       } else {
+               if(yych <= 'w'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'x') goto yy476;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy473:
        YYDEBUG(473, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'N') goto yy474;
-       if(yych != 'n') goto yy49;
-       goto yy474;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'N') goto yy49;
+               goto yy474;
+       } else {
+               if(yych <= 'm'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'n') goto yy474;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy474:
        YYDEBUG(474, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'T') goto yy475;
-       if(yych != 't') goto yy49;
-       goto yy475;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'T') goto yy50;
+               goto yy475;
+       } else {
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 't') goto yy475;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy475:
        YYDEBUG(475, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy3;
 yy476:
        YYDEBUG(476, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'T') goto yy170;
-       if(yych == 't') goto yy170;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'T') goto yy318;
+               goto yy50;
+       } else {
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 't') goto yy318;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy477:
        YYDEBUG(477, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy475;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy50;
+                       goto yy475;
+               }
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
                        if(yych <= 't') goto yy478;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
 yy478:
@@ -6200,17 +6547,17 @@ yy478:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
+               if(yych == '/') goto yy53;
+               if(yych <= 'G') goto yy3;
+               goto yy173;
        } else {
                if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'h') goto yy315;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
 yy479:
@@ -6218,17 +6565,23 @@ yy479:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy170;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy50;
+                       goto yy318;
+               }
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy321;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
 yy480:
@@ -6238,22 +6591,22 @@ yy480:
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
                        if(yych == 'E') goto yy482;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
                        if(yych == 'e') goto yy482;
-                       if(yych <= 'z') goto yy48;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
@@ -6264,47 +6617,48 @@ yy481:
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
                        if(yych == 'E') goto yy482;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
                        if(yych == 'e') goto yy483;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'z') goto yy58;
                        goto yy3;
                }
        }
 yy482:
        YYDEBUG(482, *YYCURSOR);
-       yych = *++YYCURSOR;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
        if(yych == 'M') goto yy484;
        if(yych == 'm') goto yy484;
-       goto yy49;
+       goto yy3;
 yy483:
        YYDEBUG(483, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'M'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'L') goto yy49;
+               if(yych == '/') goto yy53;
+               if(yych <= 'L') goto yy3;
                goto yy484;
        } else {
                if(yych <= 'l'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
                        if(yych <= 'm') goto yy485;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
 yy484:
@@ -6312,79 +6666,54 @@ yy484:
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy486;
        if(yych == 'b') goto yy486;
-       goto yy49;
+       goto yy54;
 yy485:
        YYDEBUG(485, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'B'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'A') goto yy49;
-               goto yy486;
-       } else {
-               if(yych <= 'a'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'b') goto yy487;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'B') goto yy486;
+       if(yych == 'b') goto yy487;
+       goto yy60;
 yy486:
        YYDEBUG(486, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy488;
        if(yych == 'e') goto yy488;
-       goto yy49;
+       goto yy54;
 yy487:
        YYDEBUG(487, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy488;
-       } else {
-               if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'e') goto yy489;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'E') goto yy488;
+       if(yych == 'e') goto yy489;
+       goto yy60;
 yy488:
        YYDEBUG(488, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'R') goto yy395;
-       if(yych == 'r') goto yy395;
-       goto yy49;
+       if(yych == 'R') goto yy391;
+       if(yych == 'r') goto yy391;
+       goto yy54;
 yy489:
        YYDEBUG(489, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy395;
+       yych = *++YYCURSOR;
+       if(yych == 'R') goto yy391;
+       if(yych == 'r') goto yy467;
+       goto yy60;
+yy490:
+       YYDEBUG(490, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'T') goto yy49;
+               goto yy491;
        } else {
-               if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'r') goto yy467;
-                       if(yych <= 'z') goto yy50;
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 't') goto yy491;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
-yy490:
-       YYDEBUG(490, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy491;
-       if(yych != 't') goto yy49;
-       goto yy491;
 yy491:
        YYDEBUG(491, *YYCURSOR);
        yyaccept = 1;
@@ -6392,59 +6721,66 @@ yy491:
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
                        if(yych == 'O') goto yy492;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
                        if(yych == 'o') goto yy492;
-                       if(yych <= 'z') goto yy48;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
 yy492:
        YYDEBUG(492, *YYCURSOR);
-       yych = *++YYCURSOR;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
        if(yych == 'B') goto yy493;
-       if(yych != 'b') goto yy49;
+       if(yych != 'b') goto yy3;
        goto yy493;
 yy493:
        YYDEBUG(493, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy494;
-       if(yych != 'e') goto yy49;
+       if(yych != 'e') goto yy54;
        goto yy494;
 yy494:
        YYDEBUG(494, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'R') goto yy395;
-       if(yych == 'r') goto yy395;
-       goto yy49;
+       if(yych == 'R') goto yy391;
+       if(yych == 'r') goto yy391;
+       goto yy54;
 yy495:
        YYDEBUG(495, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy491;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy49;
+                       goto yy491;
+               }
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
                        if(yych <= 't') goto yy496;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
 yy496:
@@ -6454,22 +6790,22 @@ yy496:
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
                        if(yych == 'O') goto yy492;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
                        if(yych == 'o') goto yy497;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'z') goto yy58;
                        goto yy3;
                }
        }
@@ -6478,177 +6814,207 @@ yy497:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'B'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'A') goto yy49;
+               if(yych == '/') goto yy53;
+               if(yych <= 'A') goto yy3;
                goto yy493;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
                        if(yych <= 'b') goto yy498;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
 yy498:
        YYDEBUG(498, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy494;
-       } else {
-               if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'e') goto yy499;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'E') goto yy494;
+       if(yych != 'e') goto yy60;
+       goto yy499;
 yy499:
        YYDEBUG(499, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy395;
-       } else {
-               if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'r') goto yy467;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'R') goto yy391;
+       if(yych == 'r') goto yy467;
+       goto yy60;
 yy500:
        YYDEBUG(500, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'V'){
+       if(yych <= 'Z'){
                if(yych <= 'O'){
+                       if(yych <= '@') goto yy3;
                        if(yych == 'C') goto yy515;
                        goto yy49;
                } else {
                        if(yych <= 'P') goto yy514;
-                       if(yych <= 'U') goto yy49;
-                       goto yy516;
+                       if(yych == 'V') goto yy516;
+                       goto yy49;
                }
        } else {
                if(yych <= 'o'){
+                       if(yych <= '`') goto yy3;
                        if(yych == 'c') goto yy515;
                        goto yy49;
                } else {
-                       if(yych <= 'p') goto yy514;
-                       if(yych == 'v') goto yy516;
-                       goto yy49;
+                       if(yych <= 'u'){
+                               if(yych <= 'p') goto yy514;
+                               goto yy49;
+                       } else {
+                               if(yych <= 'v') goto yy516;
+                               if(yych <= 'z') goto yy49;
+                               goto yy3;
+                       }
                }
        }
 yy501:
        YYDEBUG(501, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'T') goto yy509;
-       if(yych == 't') goto yy509;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'T') goto yy509;
+               goto yy49;
+       } else {
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 't') goto yy509;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy502:
        YYDEBUG(502, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'X') goto yy507;
-       if(yych == 'x') goto yy507;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'X') goto yy507;
+               goto yy49;
+       } else {
+               if(yych <= 'w'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'x') goto yy507;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy503:
        YYDEBUG(503, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'N') goto yy504;
-       if(yych != 'n') goto yy49;
-       goto yy504;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'N') goto yy49;
+               goto yy504;
+       } else {
+               if(yych <= 'm'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'n') goto yy504;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy504:
        YYDEBUG(504, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Z'){
-               if(yych <= '@') goto yy148;
-               if(yych != 'D') goto yy48;
+               if(yych <= '@') goto yy151;
+               if(yych != 'D') goto yy50;
                goto yy505;
        } else {
                if(yych <= 'c'){
-                       if(yych <= '`') goto yy148;
-                       goto yy48;
+                       if(yych <= '`') goto yy151;
+                       goto yy50;
                } else {
                        if(yych <= 'd') goto yy505;
-                       if(yych <= 'z') goto yy48;
-                       goto yy148;
+                       if(yych <= 'z') goto yy50;
+                       goto yy151;
                }
        }
 yy505:
        YYDEBUG(505, *YYCURSOR);
-       yych = *++YYCURSOR;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
        if(yych == 'A') goto yy506;
-       if(yych != 'a') goto yy49;
+       if(yych != 'a') goto yy3;
        goto yy506;
 yy506:
        YYDEBUG(506, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy154;
-       if(yych == 'y') goto yy154;
-       goto yy49;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy157;
+       goto yy54;
 yy507:
        YYDEBUG(507, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'T') goto yy508;
-       if(yych != 't') goto yy49;
-       goto yy508;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'T') goto yy50;
+               goto yy508;
+       } else {
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 't') goto yy508;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy508:
        YYDEBUG(508, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy3;
 yy509:
        YYDEBUG(509, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Z'){
-               if(yych <= '@') goto yy148;
-               if(yych != 'U') goto yy48;
+               if(yych <= '@') goto yy151;
+               if(yych != 'U') goto yy50;
                goto yy510;
        } else {
                if(yych <= 't'){
-                       if(yych <= '`') goto yy148;
-                       goto yy48;
+                       if(yych <= '`') goto yy151;
+                       goto yy50;
                } else {
                        if(yych <= 'u') goto yy510;
-                       if(yych <= 'z') goto yy48;
-                       goto yy148;
+                       if(yych <= 'z') goto yy50;
+                       goto yy151;
                }
        }
 yy510:
        YYDEBUG(510, *YYCURSOR);
-       yych = *++YYCURSOR;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
        if(yych == 'R') goto yy511;
-       if(yych != 'r') goto yy49;
+       if(yych != 'r') goto yy3;
        goto yy511;
 yy511:
        YYDEBUG(511, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'D') goto yy512;
-       if(yych != 'd') goto yy49;
+       if(yych != 'd') goto yy54;
        goto yy512;
 yy512:
        YYDEBUG(512, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy513;
-       if(yych != 'a') goto yy49;
+       if(yych != 'a') goto yy54;
        goto yy513;
 yy513:
        YYDEBUG(513, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy154;
-       if(yych == 'y') goto yy154;
-       goto yy49;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy157;
+       goto yy54;
 yy514:
        YYDEBUG(514, *YYCURSOR);
        yyaccept = 1;
@@ -6656,665 +7022,616 @@ yy514:
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'T') goto yy522;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'T') goto yy519;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 't') goto yy522;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 't') goto yy519;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
 yy515:
        YYDEBUG(515, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'O') goto yy520;
-       if(yych == 'o') goto yy520;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'O') goto yy518;
+               goto yy50;
+       } else {
+               if(yych <= 'n'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 'o') goto yy518;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy516:
        YYDEBUG(516, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'E') goto yy517;
-       if(yych != 'e') goto yy49;
-       goto yy517;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'E') goto yy50;
+               goto yy517;
+       } else {
+               if(yych <= 'd'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 'e') goto yy517;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy517:
        YYDEBUG(517, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'N') goto yy518;
-       if(yych != 'n') goto yy49;
-       goto yy518;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'N') goto yy231;
+       if(yych == 'n') goto yy231;
+       goto yy3;
 yy518:
        YYDEBUG(518, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy519;
-       if(yych != 't') goto yy49;
-       goto yy519;
-yy519:
-       YYDEBUG(519, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
-yy520:
-       YYDEBUG(520, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'N') goto yy521;
-       if(yych != 'n') goto yy49;
-       goto yy521;
-yy521:
-       YYDEBUG(521, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'D') goto yy170;
-       if(yych == 'd') goto yy170;
-       goto yy49;
-yy522:
-       YYDEBUG(522, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '@'){
-               if(yych <= '-'){
+       if(yych == 'N') goto yy234;
+       if(yych == 'n') goto yy234;
+       goto yy3;
+yy519:
+       YYDEBUG(519, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= '/'){
+               if(yych <= ','){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       goto yy379;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '-') goto yy381;
+                       if(yych <= '.') goto yy379;
                        goto yy3;
                }
        } else {
-               if(yych <= '`'){
-                       if(yych == 'E') goto yy523;
-                       if(yych <= 'Z') goto yy48;
-                       goto yy3;
+               if(yych <= 'E'){
+                       if(yych <= '9') goto yy383;
+                       if(yych <= 'D') goto yy3;
+                       goto yy520;
                } else {
-                       if(yych == 'e') goto yy523;
-                       if(yych <= 'z') goto yy48;
-                       goto yy3;
+                       if(yych != 'e') goto yy3;
+                       goto yy520;
                }
        }
+yy520:
+       YYDEBUG(520, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'M') goto yy521;
+       if(yych != 'm') goto yy54;
+       goto yy521;
+yy521:
+       YYDEBUG(521, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'B') goto yy522;
+       if(yych != 'b') goto yy54;
+       goto yy522;
+yy522:
+       YYDEBUG(522, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'E') goto yy523;
+       if(yych != 'e') goto yy54;
+       goto yy523;
 yy523:
        YYDEBUG(523, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'M') goto yy524;
-       if(yych != 'm') goto yy49;
-       goto yy524;
+       if(yych == 'R') goto yy391;
+       if(yych == 'r') goto yy391;
+       goto yy54;
 yy524:
        YYDEBUG(524, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'B') goto yy525;
-       if(yych != 'b') goto yy49;
-       goto yy525;
-yy525:
-       YYDEBUG(525, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'E') goto yy526;
-       if(yych != 'e') goto yy49;
-       goto yy526;
-yy526:
-       YYDEBUG(526, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'R') goto yy395;
-       if(yych == 'r') goto yy395;
-       goto yy49;
-yy527:
-       YYDEBUG(527, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'V'){
-               if(yych <= 'C'){
-                       if(yych == '/') goto yy52;
-                       if(yych <= 'B') goto yy49;
-                       goto yy515;
+               if(yych <= 'B'){
+                       if(yych == '/') goto yy53;
+                       if(yych <= '@') goto yy3;
+                       goto yy49;
                } else {
-                       if(yych == 'P') goto yy514;
-                       if(yych <= 'U') goto yy49;
-                       goto yy516;
+                       if(yych <= 'O'){
+                               if(yych <= 'C') goto yy515;
+                               goto yy49;
+                       } else {
+                               if(yych <= 'P') goto yy514;
+                               if(yych <= 'U') goto yy49;
+                               goto yy516;
+                       }
                }
        } else {
                if(yych <= 'o'){
-                       if(yych <= '`') goto yy49;
-                       if(yych == 'c') goto yy542;
-                       goto yy50;
+                       if(yych <= '`'){
+                               if(yych <= 'Z') goto yy49;
+                               goto yy3;
+                       } else {
+                               if(yych == 'c') goto yy539;
+                               goto yy52;
+                       }
                } else {
                        if(yych <= 'u'){
-                               if(yych <= 'p') goto yy541;
-                               goto yy50;
+                               if(yych <= 'p') goto yy538;
+                               goto yy52;
                        } else {
-                               if(yych <= 'v') goto yy543;
-                               if(yych <= 'z') goto yy50;
-                               goto yy49;
+                               if(yych <= 'v') goto yy540;
+                               if(yych <= 'z') goto yy52;
+                               goto yy3;
                        }
                }
        }
-yy528:
-       YYDEBUG(528, *YYCURSOR);
+yy525:
+       YYDEBUG(525, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy509;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy49;
+                       goto yy509;
+               }
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 't') goto yy536;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy533;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy529:
-       YYDEBUG(529, *YYCURSOR);
+yy526:
+       YYDEBUG(526, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'X'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'W') goto yy49;
-               goto yy507;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'W') goto yy49;
+                       goto yy507;
+               }
        } else {
                if(yych <= 'w'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'x') goto yy534;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'x') goto yy531;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy530:
-       YYDEBUG(530, *YYCURSOR);
+yy527:
+       YYDEBUG(527, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy504;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'M') goto yy49;
+                       goto yy504;
+               }
        } else {
                if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'n') goto yy531;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'n') goto yy528;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy531:
-       YYDEBUG(531, *YYCURSOR);
+yy528:
+       YYDEBUG(528, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'D'){
                if(yych <= '/'){
-                       if(yych <= '.') goto yy148;
-                       goto yy52;
+                       if(yych <= '.') goto yy151;
+                       goto yy53;
                } else {
-                       if(yych <= '@') goto yy148;
-                       if(yych <= 'C') goto yy48;
+                       if(yych <= '@') goto yy151;
+                       if(yych <= 'C') goto yy50;
                        goto yy505;
                }
        } else {
                if(yych <= 'c'){
-                       if(yych <= 'Z') goto yy48;
-                       if(yych <= '`') goto yy148;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy151;
+                       goto yy58;
                } else {
-                       if(yych <= 'd') goto yy532;
-                       if(yych <= 'z') goto yy50;
-                       goto yy148;
+                       if(yych <= 'd') goto yy529;
+                       if(yych <= 'z') goto yy58;
+                       goto yy151;
                }
        }
-yy532:
-       YYDEBUG(532, *YYCURSOR);
+yy529:
+       YYDEBUG(529, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
+               if(yych == '/') goto yy53;
+               if(yych <= '@') goto yy3;
                goto yy506;
        } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy533;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= '`') goto yy3;
+               if(yych <= 'a') goto yy530;
+               if(yych <= 'z') goto yy59;
+               goto yy3;
        }
-yy533:
-       YYDEBUG(533, *YYCURSOR);
+yy530:
+       YYDEBUG(530, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy166;
+       goto yy60;
+yy531:
+       YYDEBUG(531, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy154;
-       } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+       if(yych <= 'T'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
                } else {
-                       if(yych <= 'y') goto yy163;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy50;
+                       goto yy508;
                }
-       }
-yy534:
-       YYDEBUG(534, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy508;
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy535;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy532;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy535:
-       YYDEBUG(535, *YYCURSOR);
+yy532:
+       YYDEBUG(532, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
+               if(yych == '/') goto yy53;
+               if(yych <= 'G') goto yy3;
+               goto yy173;
        } else {
                if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'h') goto yy315;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy536:
-       YYDEBUG(536, *YYCURSOR);
+yy533:
+       YYDEBUG(533, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'U'){
                if(yych <= '/'){
-                       if(yych <= '.') goto yy148;
-                       goto yy52;
+                       if(yych <= '.') goto yy151;
+                       goto yy53;
                } else {
-                       if(yych <= '@') goto yy148;
-                       if(yych <= 'T') goto yy48;
+                       if(yych <= '@') goto yy151;
+                       if(yych <= 'T') goto yy50;
                        goto yy510;
                }
        } else {
                if(yych <= 't'){
-                       if(yych <= 'Z') goto yy48;
-                       if(yych <= '`') goto yy148;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy151;
+                       goto yy58;
                } else {
-                       if(yych <= 'u') goto yy537;
-                       if(yych <= 'z') goto yy50;
-                       goto yy148;
+                       if(yych <= 'u') goto yy534;
+                       if(yych <= 'z') goto yy58;
+                       goto yy151;
                }
        }
-yy537:
-       YYDEBUG(537, *YYCURSOR);
+yy534:
+       YYDEBUG(534, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
+               if(yych == '/') goto yy53;
+               if(yych <= 'Q') goto yy3;
                goto yy511;
        } else {
                if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'r') goto yy538;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy538:
-       YYDEBUG(538, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'D'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'C') goto yy49;
-               goto yy512;
-       } else {
-               if(yych <= 'c'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'd') goto yy539;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy539:
-       YYDEBUG(539, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy513;
-       } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy540;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
-       }
-yy540:
-       YYDEBUG(540, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy154;
-       } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'y') goto yy163;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy541:
-       YYDEBUG(541, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '@'){
-               if(yych <= '-'){
-                       if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
-               } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
-                       goto yy3;
-               }
-       } else {
-               if(yych <= '`'){
-                       if(yych == 'T') goto yy522;
-                       if(yych <= 'Z') goto yy48;
-                       goto yy3;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych == 't') goto yy549;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'r') goto yy535;
+                       if(yych <= 'z') goto yy59;
                        goto yy3;
                }
        }
-yy542:
-       YYDEBUG(542, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'O'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'N') goto yy49;
-               goto yy520;
-       } else {
-               if(yych <= 'n'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'o') goto yy547;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy543:
-       YYDEBUG(543, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy517;
-       } else {
-               if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'e') goto yy544;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
-yy544:
-       YYDEBUG(544, *YYCURSOR);
+yy535:
+       YYDEBUG(535, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'D') goto yy512;
+       if(yych != 'd') goto yy60;
+       goto yy536;
+yy536:
+       YYDEBUG(536, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'A') goto yy513;
+       if(yych != 'a') goto yy60;
+       goto yy537;
+yy537:
+       YYDEBUG(537, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy166;
+       goto yy60;
+yy538:
+       YYDEBUG(538, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy518;
+       if(yych <= '@'){
+               if(yych <= '-'){
+                       if(yych <= 0x1F)        goto yy3;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
+               } else {
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
+                       goto yy3;
+               }
        } else {
-               if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= '`'){
+                       if(yych == 'T') goto yy519;
+                       if(yych <= 'Z') goto yy50;
+                       goto yy3;
                } else {
-                       if(yych <= 'n') goto yy545;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 't') goto yy546;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy545:
-       YYDEBUG(545, *YYCURSOR);
+yy539:
+       YYDEBUG(539, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy519;
+       if(yych <= 'O'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'N') goto yy50;
+                       goto yy518;
+               }
        } else {
-               if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'n'){
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy546;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'o') goto yy544;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy546:
-       YYDEBUG(546, *YYCURSOR);
+yy540:
+       YYDEBUG(540, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
+       if(yych <= 'E'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'D') goto yy50;
+                       goto yy517;
+               }
        } else {
-               if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'd'){
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'e') goto yy541;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy547:
-       YYDEBUG(547, *YYCURSOR);
+yy541:
+       YYDEBUG(541, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy521;
+               if(yych == '/') goto yy53;
+               if(yych <= 'M') goto yy3;
+               goto yy231;
        } else {
                if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'n') goto yy548;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'n') goto yy542;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy548:
-       YYDEBUG(548, *YYCURSOR);
+yy542:
+       YYDEBUG(542, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'T') goto yy232;
+       if(yych != 't') goto yy60;
+       goto yy543;
+yy543:
+       YYDEBUG(543, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy315;
+       goto yy60;
+yy544:
+       YYDEBUG(544, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'D'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'C') goto yy49;
-               goto yy170;
+       if(yych <= 'N'){
+               if(yych == '/') goto yy53;
+               if(yych <= 'M') goto yy3;
+               goto yy234;
        } else {
-               if(yych <= 'c'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= 'm'){
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'd') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'n') goto yy545;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy549:
-       YYDEBUG(549, *YYCURSOR);
+yy545:
+       YYDEBUG(545, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'D') goto yy173;
+       if(yych == 'd') goto yy315;
+       goto yy60;
+yy546:
+       YYDEBUG(546, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '@'){
+       if(yych <= '9'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
-                       goto yy3;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       goto yy383;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'E') goto yy523;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'E') goto yy520;
                        goto yy3;
                } else {
-                       if(yych == 'e') goto yy550;
-                       if(yych <= 'z') goto yy50;
+                       if(yych == 'e') goto yy547;
+                       if(yych <= 'z') goto yy59;
                        goto yy3;
                }
        }
+yy547:
+       YYDEBUG(547, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'M') goto yy521;
+       if(yych != 'm') goto yy60;
+       goto yy548;
+yy548:
+       YYDEBUG(548, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'B') goto yy522;
+       if(yych != 'b') goto yy60;
+       goto yy549;
+yy549:
+       YYDEBUG(549, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'E') goto yy523;
+       if(yych != 'e') goto yy60;
+       goto yy550;
 yy550:
        YYDEBUG(550, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'M'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'L') goto yy49;
-               goto yy524;
-       } else {
-               if(yych <= 'l'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'm') goto yy551;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       yych = *++YYCURSOR;
+       if(yych == 'R') goto yy391;
+       if(yych == 'r') goto yy467;
+       goto yy60;
 yy551:
        YYDEBUG(551, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'B'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'A') goto yy49;
-               goto yy525;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'G') goto yy558;
+               goto yy49;
        } else {
-               if(yych <= 'a'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'b') goto yy552;
-                       if(yych <= 'z') goto yy50;
+               if(yych <= 'f'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 'g') goto yy558;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
 yy552:
        YYDEBUG(552, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'E'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'D') goto yy49;
-               goto yy526;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'R') goto yy556;
+               goto yy49;
        } else {
-               if(yych <= 'd'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'e') goto yy553;
-                       if(yych <= 'z') goto yy50;
+               if(yych <= 'q'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 'r') goto yy556;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
 yy553:
        YYDEBUG(553, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy395;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'O') goto yy49;
+               goto yy554;
        } else {
-               if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'r') goto yy467;
-                       if(yych <= 'z') goto yy50;
+               if(yych <= 'n'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 'o') goto yy554;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
 yy554:
        YYDEBUG(554, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'G') goto yy561;
-       if(yych == 'g') goto yy561;
-       goto yy49;
+       ++YYCURSOR;
+       if((yych = *YYCURSOR) <= '@')   goto yy555;
+       if(yych <= 'Z') goto yy50;
+       if(yych <= '`') goto yy555;
+       if(yych <= 'z') goto yy50;
+       goto yy555;
 yy555:
        YYDEBUG(555, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'R') goto yy559;
-       if(yych == 'r') goto yy559;
-       goto yy49;
-yy556:
-       YYDEBUG(556, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'O') goto yy557;
-       if(yych != 'o') goto yy49;
-       goto yy557;
-yy557:
-       YYDEBUG(557, *YYCURSOR);
-       ++YYCURSOR;
-       if(yybm[0+(yych = *YYCURSOR)] & 4) {
-               yych = *YYCURSOR;
-               goto yy48;
-       }
-       goto yy558;
-yy558:
-       YYDEBUG(558, *YYCURSOR);
 
-#line 1259 "parse_date.re"
+#line 1274 "parse_date.re"
 {
                TIMELIB_INIT;
                s->time->relative.y = 0 - s->time->relative.y;
@@ -7327,1042 +7644,1193 @@ yy558:
                TIMELIB_DEINIT;
                return TIMELIB_AGO;
        }
-#line 6202 "<stdout>"
-yy559:
-       YYDEBUG(559, *YYCURSOR);
+#line 6524 "<stdout>"
+yy556:
+       YYDEBUG(556, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'I') goto yy560;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'I') goto yy557;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'i') goto yy560;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'i') goto yy557;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
-yy560:
-       YYDEBUG(560, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'L') goto yy395;
-       if(yych == 'l') goto yy395;
-       goto yy49;
-yy561:
-       YYDEBUG(561, *YYCURSOR);
+yy557:
+       YYDEBUG(557, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'L') goto yy391;
+       if(yych == 'l') goto yy391;
+       goto yy3;
+yy558:
+       YYDEBUG(558, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'U') goto yy562;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'U') goto yy559;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'u') goto yy562;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'u') goto yy559;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
-yy562:
-       YYDEBUG(562, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'S') goto yy563;
-       if(yych != 's') goto yy49;
-       goto yy563;
-yy563:
-       YYDEBUG(563, *YYCURSOR);
+yy559:
+       YYDEBUG(559, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'S') goto yy560;
+       if(yych != 's') goto yy3;
+       goto yy560;
+yy560:
+       YYDEBUG(560, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'T') goto yy395;
-       if(yych == 't') goto yy395;
-       goto yy49;
-yy564:
-       YYDEBUG(564, *YYCURSOR);
+       if(yych == 'T') goto yy391;
+       if(yych == 't') goto yy391;
+       goto yy54;
+yy561:
+       YYDEBUG(561, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'G'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'F') goto yy49;
-               goto yy561;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'F') goto yy49;
+                       goto yy558;
+               }
        } else {
                if(yych <= 'f'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'g') goto yy570;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'g') goto yy567;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy565:
-       YYDEBUG(565, *YYCURSOR);
+yy562:
+       YYDEBUG(562, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy559;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'Q') goto yy49;
+                       goto yy556;
+               }
        } else {
                if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'r') goto yy568;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'r') goto yy565;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy566:
-       YYDEBUG(566, *YYCURSOR);
+yy563:
+       YYDEBUG(563, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'O'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'N') goto yy49;
-               goto yy557;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'N') goto yy49;
+                       goto yy554;
+               }
        } else {
                if(yych <= 'n'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'o') goto yy567;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'o') goto yy564;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy567:
-       YYDEBUG(567, *YYCURSOR);
+yy564:
+       YYDEBUG(564, *YYCURSOR);
        yyaccept = 9;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 8) {
-               goto yy50;
+       if(yych <= '@'){
+               if(yych == '/') goto yy53;
+               goto yy555;
+       } else {
+               if(yych <= 'Z') goto yy50;
+               if(yych <= '`') goto yy555;
+               if(yych <= 'z') goto yy58;
+               goto yy555;
        }
-       if(yych == '/') goto yy52;
-       if(yych <= '@') goto yy558;
-       if(yych <= 'Z') goto yy48;
-       goto yy558;
-yy568:
-       YYDEBUG(568, *YYCURSOR);
+yy565:
+       YYDEBUG(565, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'I') goto yy560;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'I') goto yy557;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'i') goto yy569;
-                       if(yych <= 'z') goto yy50;
+                       if(yych == 'i') goto yy566;
+                       if(yych <= 'z') goto yy58;
                        goto yy3;
                }
        }
-yy569:
-       YYDEBUG(569, *YYCURSOR);
+yy566:
+       YYDEBUG(566, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'L'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'K') goto yy49;
-               goto yy395;
+               if(yych == '/') goto yy53;
+               if(yych <= 'K') goto yy3;
+               goto yy391;
        } else {
                if(yych <= 'k'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
                        if(yych <= 'l') goto yy467;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy570:
-       YYDEBUG(570, *YYCURSOR);
+yy567:
+       YYDEBUG(567, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'U') goto yy562;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'U') goto yy559;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'u') goto yy571;
-                       if(yych <= 'z') goto yy50;
+                       if(yych == 'u') goto yy568;
+                       if(yych <= 'z') goto yy58;
                        goto yy3;
                }
        }
-yy571:
-       YYDEBUG(571, *YYCURSOR);
+yy568:
+       YYDEBUG(568, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'S'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'R') goto yy49;
-               goto yy563;
+               if(yych == '/') goto yy53;
+               if(yych <= 'R') goto yy3;
+               goto yy560;
        } else {
                if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 's') goto yy572;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 's') goto yy569;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy572:
-       YYDEBUG(572, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy395;
-       } else {
-               if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+yy569:
+       YYDEBUG(569, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'T') goto yy391;
+       if(yych == 't') goto yy467;
+       goto yy60;
+yy570:
+       YYDEBUG(570, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= 'R'){
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'Q') goto yy49;
+                       goto yy575;
                } else {
-                       if(yych <= 't') goto yy467;
-                       if(yych <= 'z') goto yy50;
+                       if(yych == 'Y') goto yy576;
                        goto yy49;
                }
-       }
-yy573:
-       YYDEBUG(573, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych <= 'Y'){
-               if(yych == 'R') goto yy578;
-               if(yych <= 'X') goto yy49;
-               goto yy579;
        } else {
                if(yych <= 'r'){
+                       if(yych <= '`') goto yy3;
                        if(yych <= 'q') goto yy49;
-                       goto yy578;
+                       goto yy575;
                } else {
-                       if(yych == 'y') goto yy579;
-                       goto yy49;
+                       if(yych == 'y') goto yy576;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
-yy574:
-       YYDEBUG(574, *YYCURSOR);
+yy571:
+       YYDEBUG(571, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'N') goto yy575;
-       if(yych != 'n') goto yy49;
-       goto yy575;
-yy575:
-       YYDEBUG(575, *YYCURSOR);
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'N') goto yy49;
+               goto yy572;
+       } else {
+               if(yych <= 'm'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'n') goto yy572;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
+yy572:
+       YYDEBUG(572, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Z'){
-               if(yych <= '@') goto yy148;
-               if(yych != 'D') goto yy48;
-               goto yy576;
+               if(yych <= '@') goto yy151;
+               if(yych != 'D') goto yy50;
+               goto yy573;
        } else {
                if(yych <= 'c'){
-                       if(yych <= '`') goto yy148;
-                       goto yy48;
+                       if(yych <= '`') goto yy151;
+                       goto yy50;
                } else {
-                       if(yych <= 'd') goto yy576;
-                       if(yych <= 'z') goto yy48;
-                       goto yy148;
+                       if(yych <= 'd') goto yy573;
+                       if(yych <= 'z') goto yy50;
+                       goto yy151;
                }
        }
-yy576:
-       YYDEBUG(576, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'A') goto yy577;
-       if(yych != 'a') goto yy49;
-       goto yy577;
-yy577:
-       YYDEBUG(577, *YYCURSOR);
+yy573:
+       YYDEBUG(573, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'A') goto yy574;
+       if(yych != 'a') goto yy3;
+       goto yy574;
+yy574:
+       YYDEBUG(574, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy154;
-       if(yych == 'y') goto yy154;
-       goto yy49;
-yy578:
-       YYDEBUG(578, *YYCURSOR);
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy157;
+       goto yy54;
+yy575:
+       YYDEBUG(575, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'C') goto yy580;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'C') goto yy577;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'c') goto yy580;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'c') goto yy577;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
-yy579:
-       YYDEBUG(579, *YYCURSOR);
+yy576:
+       YYDEBUG(576, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 4) {
-               goto yy48;
-       }
-       if(yych <= '-'){
-               if(yych <= 0x1F)        goto yy3;
-               if(yych <= ',') goto yy383;
-               goto yy385;
+       if(yych <= '/'){
+               if(yych <= ','){
+                       if(yych <= 0x1F)        goto yy3;
+                       goto yy379;
+               } else {
+                       if(yych <= '-') goto yy381;
+                       if(yych <= '.') goto yy379;
+                       goto yy3;
+               }
        } else {
-               if(yych <= '.') goto yy383;
-               if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
-               goto yy3;
+               if(yych <= 'Z'){
+                       if(yych <= '9') goto yy383;
+                       if(yych <= '@') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
        }
-yy580:
-       YYDEBUG(580, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy395;
-       if(yych == 'h') goto yy395;
-       goto yy49;
-yy581:
-       YYDEBUG(581, *YYCURSOR);
+yy577:
+       YYDEBUG(577, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'H') goto yy391;
+       if(yych == 'h') goto yy391;
+       goto yy3;
+yy578:
+       YYDEBUG(578, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'Y'){
-               if(yych <= 'Q'){
-                       if(yych == '/') goto yy52;
-                       goto yy49;
+               if(yych <= '@'){
+                       if(yych == '/') goto yy53;
+                       goto yy3;
                } else {
-                       if(yych <= 'R') goto yy578;
+                       if(yych == 'R') goto yy575;
                        if(yych <= 'X') goto yy49;
-                       goto yy579;
+                       goto yy576;
                }
        } else {
                if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       if(yych <= 'q') goto yy50;
-                       goto yy586;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'q') goto yy52;
+                       goto yy583;
                } else {
-                       if(yych == 'y') goto yy587;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 'y') goto yy584;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy582:
-       YYDEBUG(582, *YYCURSOR);
+yy579:
+       YYDEBUG(579, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy575;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'M') goto yy49;
+                       goto yy572;
+               }
        } else {
                if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'n') goto yy583;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'n') goto yy580;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy583:
-       YYDEBUG(583, *YYCURSOR);
+yy580:
+       YYDEBUG(580, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'D'){
                if(yych <= '/'){
-                       if(yych <= '.') goto yy148;
-                       goto yy52;
+                       if(yych <= '.') goto yy151;
+                       goto yy53;
                } else {
-                       if(yych <= '@') goto yy148;
-                       if(yych <= 'C') goto yy48;
-                       goto yy576;
+                       if(yych <= '@') goto yy151;
+                       if(yych <= 'C') goto yy50;
+                       goto yy573;
                }
        } else {
                if(yych <= 'c'){
-                       if(yych <= 'Z') goto yy48;
-                       if(yych <= '`') goto yy148;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy151;
+                       goto yy58;
                } else {
-                       if(yych <= 'd') goto yy584;
-                       if(yych <= 'z') goto yy50;
-                       goto yy148;
+                       if(yych <= 'd') goto yy581;
+                       if(yych <= 'z') goto yy58;
+                       goto yy151;
                }
        }
-yy584:
-       YYDEBUG(584, *YYCURSOR);
+yy581:
+       YYDEBUG(581, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy577;
+               if(yych == '/') goto yy53;
+               if(yych <= '@') goto yy3;
+               goto yy574;
        } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy585;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= '`') goto yy3;
+               if(yych <= 'a') goto yy582;
+               if(yych <= 'z') goto yy59;
+               goto yy3;
        }
-yy585:
-       YYDEBUG(585, *YYCURSOR);
+yy582:
+       YYDEBUG(582, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy166;
+       goto yy60;
+yy583:
+       YYDEBUG(583, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy154;
+       if(yych <= '@'){
+               if(yych <= '-'){
+                       if(yych <= 0x1F)        goto yy3;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
+               } else {
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
+                       goto yy3;
+               }
        } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= '`'){
+                       if(yych == 'C') goto yy577;
+                       if(yych <= 'Z') goto yy50;
+                       goto yy3;
                } else {
-                       if(yych <= 'y') goto yy163;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 'c') goto yy585;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy586:
-       YYDEBUG(586, *YYCURSOR);
+yy584:
+       YYDEBUG(584, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '@'){
-               if(yych <= '-'){
+       if(yych <= '/'){
+               if(yych <= ','){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       goto yy379;
+               } else {
+                       if(yych <= '-') goto yy381;
+                       if(yych <= '.') goto yy379;
+                       goto yy53;
+               }
+       } else {
+               if(yych <= 'Z'){
+                       if(yych <= '9') goto yy383;
+                       if(yych <= '@') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
+               }
+       }
+yy585:
+       YYDEBUG(585, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= 'H'){
+               if(yych == '/') goto yy53;
+               if(yych <= 'G') goto yy3;
+               goto yy391;
+       } else {
+               if(yych <= 'g'){
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= 'h') goto yy467;
+                       if(yych <= 'z') goto yy59;
                        goto yy3;
                }
+       }
+yy586:
+       YYDEBUG(586, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'B') goto yy599;
+               goto yy49;
        } else {
-               if(yych <= '`'){
-                       if(yych == 'C') goto yy580;
-                       if(yych <= 'Z') goto yy48;
-                       goto yy3;
+               if(yych <= 'a'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
                } else {
-                       if(yych == 'c') goto yy588;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'b') goto yy599;
+                       if(yych <= 'z') goto yy49;
                        goto yy3;
                }
        }
 yy587:
        YYDEBUG(587, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yybm[0+yych] & 8) {
-               goto yy50;
-       }
-       if(yych <= '.'){
-               if(yych <= 0x1F)        goto yy3;
-               if(yych == '-') goto yy385;
-               goto yy383;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= 'F'){
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'E') goto yy49;
+                       goto yy596;
+               } else {
+                       if(yych == 'R') goto yy595;
+                       goto yy49;
+               }
        } else {
-               if(yych <= '9'){
-                       if(yych <= '/') goto yy52;
-                       goto yy387;
+               if(yych <= 'f'){
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'e') goto yy49;
+                       goto yy596;
                } else {
-                       if(yych <= '@') goto yy3;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'r') goto yy595;
+                       if(yych <= 'z') goto yy49;
                        goto yy3;
                }
        }
 yy588:
        YYDEBUG(588, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy395;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'U') goto yy593;
+               goto yy49;
        } else {
-               if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'h') goto yy467;
-                       if(yych <= 'z') goto yy50;
+               if(yych <= 't'){
+                       if(yych <= '`') goto yy3;
                        goto yy49;
+               } else {
+                       if(yych <= 'u') goto yy593;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
                }
        }
 yy589:
        YYDEBUG(589, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'B') goto yy603;
-       if(yych == 'b') goto yy603;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'I') goto yy49;
+               goto yy590;
+       } else {
+               if(yych <= 'h'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'i') goto yy590;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy590:
        YYDEBUG(590, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'R'){
-               if(yych == 'F') goto yy600;
-               if(yych <= 'Q') goto yy49;
-               goto yy599;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy151;
+               if(yych != 'D') goto yy50;
+               goto yy591;
        } else {
-               if(yych <= 'f'){
-                       if(yych <= 'e') goto yy49;
-                       goto yy600;
+               if(yych <= 'c'){
+                       if(yych <= '`') goto yy151;
+                       goto yy50;
                } else {
-                       if(yych == 'r') goto yy599;
-                       goto yy49;
+                       if(yych <= 'd') goto yy591;
+                       if(yych <= 'z') goto yy50;
+                       goto yy151;
                }
        }
 yy591:
        YYDEBUG(591, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'U') goto yy596;
-       if(yych == 'u') goto yy596;
-       goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'A') goto yy592;
+       if(yych != 'a') goto yy3;
+       goto yy592;
 yy592:
        YYDEBUG(592, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'I') goto yy593;
-       if(yych != 'i') goto yy49;
-       goto yy593;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy157;
+       goto yy54;
 yy593:
        YYDEBUG(593, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Z'){
-               if(yych <= '@') goto yy148;
-               if(yych != 'D') goto yy48;
+               if(yych <= '@') goto yy3;
+               if(yych != 'R') goto yy50;
                goto yy594;
        } else {
-               if(yych <= 'c'){
-                       if(yych <= '`') goto yy148;
-                       goto yy48;
+               if(yych <= 'q'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
                } else {
-                       if(yych <= 'd') goto yy594;
-                       if(yych <= 'z') goto yy48;
-                       goto yy148;
+                       if(yych <= 'r') goto yy594;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
                }
        }
 yy594:
        YYDEBUG(594, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'A') goto yy595;
-       if(yych != 'a') goto yy49;
-       goto yy595;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'T') goto yy244;
+       if(yych == 't') goto yy244;
+       goto yy3;
 yy595:
        YYDEBUG(595, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy154;
-       if(yych == 'y') goto yy154;
-       goto yy49;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych == 'S') goto yy598;
+               goto yy50;
+       } else {
+               if(yych <= 'r'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 's') goto yy598;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy596:
        YYDEBUG(596, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'R') goto yy597;
-       if(yych != 'r') goto yy49;
-       goto yy597;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'T') goto yy50;
+               goto yy597;
+       } else {
+               if(yych <= 's'){
+                       if(yych <= '`') goto yy3;
+                       goto yy50;
+               } else {
+                       if(yych <= 't') goto yy597;
+                       if(yych <= 'z') goto yy50;
+                       goto yy3;
+               }
+       }
 yy597:
        YYDEBUG(597, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy598;
-       if(yych != 't') goto yy49;
-       goto yy598;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy173;
+       goto yy3;
 yy598:
        YYDEBUG(598, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'T') goto yy173;
+       if(yych == 't') goto yy173;
+       goto yy3;
 yy599:
        YYDEBUG(599, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'S') goto yy602;
-       if(yych == 's') goto yy602;
-       goto yy49;
-yy600:
-       YYDEBUG(600, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy601;
-       if(yych != 't') goto yy49;
-       goto yy601;
-yy601:
-       YYDEBUG(601, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'H') goto yy170;
-       if(yych == 'h') goto yy170;
-       goto yy49;
-yy602:
-       YYDEBUG(602, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'T') goto yy170;
-       if(yych == 't') goto yy170;
-       goto yy49;
-yy603:
-       YYDEBUG(603, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'R') goto yy604;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'R') goto yy600;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'r') goto yy604;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'r') goto yy600;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
-yy604:
-       YYDEBUG(604, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'U') goto yy605;
-       if(yych != 'u') goto yy49;
-       goto yy605;
-yy605:
-       YYDEBUG(605, *YYCURSOR);
+yy600:
+       YYDEBUG(600, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych == 'U') goto yy601;
+       if(yych != 'u') goto yy3;
+       goto yy601;
+yy601:
+       YYDEBUG(601, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'A') goto yy606;
-       if(yych != 'a') goto yy49;
-       goto yy606;
-yy606:
-       YYDEBUG(606, *YYCURSOR);
+       if(yych == 'A') goto yy602;
+       if(yych != 'a') goto yy54;
+       goto yy602;
+yy602:
+       YYDEBUG(602, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'R') goto yy607;
-       if(yych != 'r') goto yy49;
-       goto yy607;
-yy607:
-       YYDEBUG(607, *YYCURSOR);
+       if(yych == 'R') goto yy603;
+       if(yych != 'r') goto yy54;
+       goto yy603;
+yy603:
+       YYDEBUG(603, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy395;
-       if(yych == 'y') goto yy395;
-       goto yy49;
-yy608:
-       YYDEBUG(608, *YYCURSOR);
+       if(yych == 'Y') goto yy391;
+       if(yych == 'y') goto yy391;
+       goto yy54;
+yy604:
+       YYDEBUG(604, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'B'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'A') goto yy49;
-               goto yy603;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'A') goto yy49;
+                       goto yy599;
+               }
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'b') goto yy622;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'b') goto yy618;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy609:
-       YYDEBUG(609, *YYCURSOR);
+yy605:
+       YYDEBUG(605, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'R'){
-               if(yych <= 'E'){
-                       if(yych == '/') goto yy52;
-                       goto yy49;
+               if(yych <= '@'){
+                       if(yych == '/') goto yy53;
+                       goto yy3;
                } else {
-                       if(yych <= 'F') goto yy600;
+                       if(yych == 'F') goto yy596;
                        if(yych <= 'Q') goto yy49;
-                       goto yy599;
+                       goto yy595;
                }
        } else {
                if(yych <= 'f'){
-                       if(yych <= '`') goto yy49;
-                       if(yych <= 'e') goto yy50;
-                       goto yy619;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'e') goto yy52;
+                       goto yy615;
                } else {
-                       if(yych == 'r') goto yy618;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 'r') goto yy614;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy610:
-       YYDEBUG(610, *YYCURSOR);
+yy606:
+       YYDEBUG(606, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'U'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'T') goto yy49;
-               goto yy596;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'T') goto yy49;
+                       goto yy593;
+               }
        } else {
                if(yych <= 't'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'u') goto yy615;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'u') goto yy611;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy611:
-       YYDEBUG(611, *YYCURSOR);
+yy607:
+       YYDEBUG(607, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'I'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'H') goto yy49;
-               goto yy593;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'H') goto yy49;
+                       goto yy590;
+               }
        } else {
                if(yych <= 'h'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych <= 'i') goto yy612;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'i') goto yy608;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy612:
-       YYDEBUG(612, *YYCURSOR);
+yy608:
+       YYDEBUG(608, *YYCURSOR);
        yyaccept = 3;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'D'){
                if(yych <= '/'){
-                       if(yych <= '.') goto yy148;
-                       goto yy52;
+                       if(yych <= '.') goto yy151;
+                       goto yy53;
                } else {
-                       if(yych <= '@') goto yy148;
-                       if(yych <= 'C') goto yy48;
-                       goto yy594;
+                       if(yych <= '@') goto yy151;
+                       if(yych <= 'C') goto yy50;
+                       goto yy591;
                }
        } else {
                if(yych <= 'c'){
-                       if(yych <= 'Z') goto yy48;
-                       if(yych <= '`') goto yy148;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy151;
+                       goto yy58;
                } else {
-                       if(yych <= 'd') goto yy613;
-                       if(yych <= 'z') goto yy50;
-                       goto yy148;
+                       if(yych <= 'd') goto yy609;
+                       if(yych <= 'z') goto yy58;
+                       goto yy151;
                }
        }
-yy613:
-       YYDEBUG(613, *YYCURSOR);
+yy609:
+       YYDEBUG(609, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy595;
-       } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy614;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
-       }
-yy614:
-       YYDEBUG(614, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy154;
+               if(yych == '/') goto yy53;
+               if(yych <= '@') goto yy3;
+               goto yy592;
        } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'y') goto yy163;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
+               if(yych <= '`') goto yy3;
+               if(yych <= 'a') goto yy610;
+               if(yych <= 'z') goto yy59;
+               goto yy3;
        }
-yy615:
-       YYDEBUG(615, *YYCURSOR);
+yy610:
+       YYDEBUG(610, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy157;
+       if(yych == 'y') goto yy166;
+       goto yy60;
+yy611:
+       YYDEBUG(611, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy597;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'Q') goto yy50;
+                       goto yy594;
+               }
        } else {
                if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 'r') goto yy616;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'r') goto yy612;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy616:
-       YYDEBUG(616, *YYCURSOR);
+yy612:
+       YYDEBUG(612, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy598;
+               if(yych == '/') goto yy53;
+               if(yych <= 'S') goto yy3;
+               goto yy244;
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 't') goto yy617;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy613;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy617:
-       YYDEBUG(617, *YYCURSOR);
+yy613:
+       YYDEBUG(613, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'H') goto yy173;
+       if(yych == 'h') goto yy315;
+       goto yy60;
+yy614:
+       YYDEBUG(614, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
-       } else {
-               if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+       if(yych <= 'S'){
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'R') goto yy50;
+                       goto yy598;
                }
-       }
-yy618:
-       YYDEBUG(618, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'S'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'R') goto yy49;
-               goto yy602;
        } else {
                if(yych <= 'r'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 's') goto yy621;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 's') goto yy617;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy619:
-       YYDEBUG(619, *YYCURSOR);
+yy615:
+       YYDEBUG(615, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy601;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
+               } else {
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'S') goto yy50;
+                       goto yy597;
+               }
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= 'Z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy58;
                } else {
-                       if(yych <= 't') goto yy620;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy616;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
-yy620:
-       YYDEBUG(620, *YYCURSOR);
+yy616:
+       YYDEBUG(616, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'H'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'G') goto yy49;
-               goto yy170;
+               if(yych == '/') goto yy53;
+               if(yych <= 'G') goto yy3;
+               goto yy173;
        } else {
                if(yych <= 'g'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'h') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'h') goto yy315;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy621:
-       YYDEBUG(621, *YYCURSOR);
+yy617:
+       YYDEBUG(617, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'T'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'S') goto yy49;
-               goto yy170;
+               if(yych == '/') goto yy53;
+               if(yych <= 'S') goto yy3;
+               goto yy173;
        } else {
                if(yych <= 's'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 't') goto yy316;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 't') goto yy315;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
                }
        }
-yy622:
-       YYDEBUG(622, *YYCURSOR);
+yy618:
+       YYDEBUG(618, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'R') goto yy604;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'R') goto yy600;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'r') goto yy623;
-                       if(yych <= 'z') goto yy50;
+                       if(yych == 'r') goto yy619;
+                       if(yych <= 'z') goto yy58;
                        goto yy3;
                }
        }
-yy623:
-       YYDEBUG(623, *YYCURSOR);
+yy619:
+       YYDEBUG(619, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'U'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'T') goto yy49;
-               goto yy605;
+               if(yych == '/') goto yy53;
+               if(yych <= 'T') goto yy3;
+               goto yy601;
        } else {
                if(yych <= 't'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+                       if(yych <= '`') goto yy3;
+                       goto yy59;
                } else {
-                       if(yych <= 'u') goto yy624;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= 'u') goto yy620;
+                       if(yych <= 'z') goto yy59;
+                       goto yy3;
+               }
+       }
+yy620:
+       YYDEBUG(620, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'A') goto yy602;
+       if(yych != 'a') goto yy60;
+       goto yy621;
+yy621:
+       YYDEBUG(621, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'R') goto yy603;
+       if(yych != 'r') goto yy60;
+       goto yy622;
+yy622:
+       YYDEBUG(622, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy391;
+       if(yych == 'y') goto yy467;
+       goto yy60;
+yy623:
+       YYDEBUG(623, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= 'L'){
+                       if(yych <= '@') goto yy3;
+                       if(yych <= 'K') goto yy49;
+                       goto yy630;
+               } else {
+                       if(yych == 'N') goto yy629;
                        goto yy49;
                }
+       } else {
+               if(yych <= 'l'){
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'k') goto yy49;
+                       goto yy630;
+               } else {
+                       if(yych == 'n') goto yy629;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
        }
 yy624:
        YYDEBUG(624, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy606;
+       yych = *++YYCURSOR;
+       if(yych <= 'Z'){
+               if(yych <= '@') goto yy3;
+               if(yych != 'N') goto yy49;
+               goto yy625;
        } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy625;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
+               if(yych <= 'm'){
+                       if(yych <= '`') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'n') goto yy625;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
        }
 yy625:
        YYDEBUG(625, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy607;
+       if(yych <= '@'){
+               if(yych <= '-'){
+                       if(yych <= 0x1F)        goto yy3;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
+               } else {
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy3;
+                       if(yych <= '9') goto yy383;
+                       goto yy3;
+               }
        } else {
-               if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= '`'){
+                       if(yych == 'U') goto yy626;
+                       if(yych <= 'Z') goto yy50;
+                       goto yy3;
                } else {
-                       if(yych <= 'r') goto yy626;
+                       if(yych == 'u') goto yy626;
                        if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       goto yy3;
                }
        }
 yy626:
        YYDEBUG(626, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy395;
-       } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'y') goto yy467;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
-       }
+       if(yych == 'A') goto yy627;
+       if(yych != 'a') goto yy3;
+       goto yy627;
 yy627:
        YYDEBUG(627, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'N'){
-               if(yych == 'L') goto yy634;
-               if(yych <= 'M') goto yy49;
-               goto yy633;
-       } else {
-               if(yych <= 'l'){
-                       if(yych <= 'k') goto yy49;
-                       goto yy634;
-               } else {
-                       if(yych == 'n') goto yy633;
-                       goto yy49;
-               }
-       }
+       if(yych == 'R') goto yy628;
+       if(yych != 'r') goto yy54;
+       goto yy628;
 yy628:
        YYDEBUG(628, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'N') goto yy629;
-       if(yych != 'n') goto yy49;
-       goto yy629;
+       if(yych == 'Y') goto yy391;
+       if(yych == 'y') goto yy391;
+       goto yy54;
 yy629:
        YYDEBUG(629, *YYCURSOR);
        yyaccept = 1;
@@ -8370,236 +8838,249 @@ yy629:
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'U') goto yy630;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'E') goto yy631;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'u') goto yy630;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'e') goto yy631;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
 yy630:
        YYDEBUG(630, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'A') goto yy631;
-       if(yych != 'a') goto yy49;
-       goto yy631;
-yy631:
-       YYDEBUG(631, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'R') goto yy632;
-       if(yych != 'r') goto yy49;
-       goto yy632;
-yy632:
-       YYDEBUG(632, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych == 'Y') goto yy395;
-       if(yych == 'y') goto yy395;
-       goto yy49;
-yy633:
-       YYDEBUG(633, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
+                       if(yych <= '.') goto yy379;
                        if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'E') goto yy395;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'Y') goto yy631;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'e') goto yy395;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'y') goto yy631;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
-yy634:
-       YYDEBUG(634, *YYCURSOR);
+yy631:
+       YYDEBUG(631, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '@'){
-               if(yych <= '-'){
-                       if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
-               } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy3;
-                       if(yych <= '9') goto yy387;
+       if(yybm[0+yych] & 64) {
+               goto yy379;
+       }
+       if(yych <= '/') goto yy3;
+       if(yych <= '9') goto yy383;
+       goto yy3;
+yy632:
+       YYDEBUG(632, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= 'N'){
+               if(yych <= '@'){
+                       if(yych == '/') goto yy53;
                        goto yy3;
+               } else {
+                       if(yych == 'L') goto yy630;
+                       if(yych <= 'M') goto yy49;
+                       goto yy629;
                }
        } else {
-               if(yych <= '`'){
-                       if(yych == 'Y') goto yy395;
-                       if(yych <= 'Z') goto yy48;
-                       goto yy3;
+               if(yych <= 'l'){
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'k') goto yy52;
+                       goto yy639;
                } else {
-                       if(yych == 'y') goto yy395;
-                       if(yych <= 'z') goto yy48;
+                       if(yych == 'n') goto yy638;
+                       if(yych <= 'z') goto yy52;
                        goto yy3;
                }
        }
-yy635:
-       YYDEBUG(635, *YYCURSOR);
+yy633:
+       YYDEBUG(633, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= 'N'){
-               if(yych <= 'K'){
-                       if(yych == '/') goto yy52;
-                       goto yy49;
+               if(yych <= '/'){
+                       if(yych <= '.') goto yy3;
+                       goto yy53;
                } else {
-                       if(yych <= 'L') goto yy634;
+                       if(yych <= '@') goto yy3;
                        if(yych <= 'M') goto yy49;
-                       goto yy633;
+                       goto yy625;
                }
        } else {
-               if(yych <= 'l'){
-                       if(yych <= '`') goto yy49;
-                       if(yych <= 'k') goto yy50;
-                       goto yy642;
+               if(yych <= 'm'){
+                       if(yych <= 'Z') goto yy49;
+                       if(yych <= '`') goto yy3;
+                       goto yy52;
                } else {
-                       if(yych == 'n') goto yy641;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych <= 'n') goto yy634;
+                       if(yych <= 'z') goto yy52;
+                       goto yy3;
                }
        }
-yy636:
-       YYDEBUG(636, *YYCURSOR);
+yy634:
+       YYDEBUG(634, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'N'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'M') goto yy49;
-               goto yy629;
+       if(yych <= '@'){
+               if(yych <= '-'){
+                       if(yych <= 0x1F)        goto yy3;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
+               } else {
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
+                       goto yy3;
+               }
        } else {
-               if(yych <= 'm'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= '`'){
+                       if(yych == 'U') goto yy626;
+                       if(yych <= 'Z') goto yy50;
+                       goto yy3;
                } else {
-                       if(yych <= 'n') goto yy637;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 'u') goto yy635;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
+yy635:
+       YYDEBUG(635, *YYCURSOR);
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych <= 'A'){
+               if(yych == '/') goto yy53;
+               if(yych <= '@') goto yy3;
+               goto yy627;
+       } else {
+               if(yych <= '`') goto yy3;
+               if(yych <= 'a') goto yy636;
+               if(yych <= 'z') goto yy59;
+               goto yy3;
+       }
+yy636:
+       YYDEBUG(636, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'R') goto yy628;
+       if(yych != 'r') goto yy60;
+       goto yy637;
 yy637:
        YYDEBUG(637, *YYCURSOR);
+       yych = *++YYCURSOR;
+       if(yych == 'Y') goto yy391;
+       if(yych == 'y') goto yy467;
+       goto yy60;
+yy638:
+       YYDEBUG(638, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yych <= '@'){
                if(yych <= '-'){
                        if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
                } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
                        goto yy3;
                }
        } else {
                if(yych <= '`'){
-                       if(yych == 'U') goto yy630;
-                       if(yych <= 'Z') goto yy48;
+                       if(yych == 'E') goto yy631;
+                       if(yych <= 'Z') goto yy50;
                        goto yy3;
                } else {
-                       if(yych == 'u') goto yy638;
-                       if(yych <= 'z') goto yy50;
+                       if(yych == 'e') goto yy640;
+                       if(yych <= 'z') goto yy58;
                        goto yy3;
                }
        }
-yy638:
-       YYDEBUG(638, *YYCURSOR);
-       yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'A'){
-               if(yych == '/') goto yy52;
-               if(yych <= '@') goto yy49;
-               goto yy631;
-       } else {
-               if(yych <= '`') goto yy49;
-               if(yych <= 'a') goto yy639;
-               if(yych <= 'z') goto yy50;
-               goto yy49;
-       }
 yy639:
        YYDEBUG(639, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'R'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'Q') goto yy49;
-               goto yy632;
+       if(yych <= '@'){
+               if(yych <= '-'){
+                       if(yych <= 0x1F)        goto yy3;
+                       if(yych <= ',') goto yy379;
+                       goto yy381;
+               } else {
+                       if(yych <= '.') goto yy379;
+                       if(yych <= '/') goto yy53;
+                       if(yych <= '9') goto yy383;
+                       goto yy3;
+               }
        } else {
-               if(yych <= 'q'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
+               if(yych <= '`'){
+                       if(yych == 'Y') goto yy631;
+                       if(yych <= 'Z') goto yy50;
+                       goto yy3;
                } else {
-                       if(yych <= 'r') goto yy640;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
+                       if(yych == 'y') goto yy640;
+                       if(yych <= 'z') goto yy58;
+                       goto yy3;
                }
        }
 yy640:
        YYDEBUG(640, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= 'Y'){
-               if(yych == '/') goto yy52;
-               if(yych <= 'X') goto yy49;
-               goto yy395;
+       if(yybm[0+yych] & 64) {
+               goto yy379;
+       }
+       if(yych <= '9'){
+               if(yych <= '.') goto yy3;
+               if(yych <= '/') goto yy53;
+               goto yy383;
        } else {
-               if(yych <= 'x'){
-                       if(yych <= '`') goto yy49;
-                       goto yy50;
-               } else {
-                       if(yych <= 'y') goto yy467;
-                       if(yych <= 'z') goto yy50;
-                       goto yy49;
-               }
+               if(yych <= '`') goto yy3;
+               if(yych <= 'z') goto yy59;
+               goto yy3;
        }
 yy641:
        YYDEBUG(641, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
-       if(yych <= '@'){
-               if(yych <= '-'){
-                       if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
-               } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
-                       goto yy3;
-               }
+       if(yybm[0+yych] & 64) {
+               goto yy379;
+       }
+       if(yych <= 'H'){
+               if(yych <= '/') goto yy3;
+               if(yych <= '9') goto yy383;
+               if(yych <= '@') goto yy3;
+               goto yy49;
        } else {
-               if(yych <= '`'){
-                       if(yych == 'E') goto yy395;
-                       if(yych <= 'Z') goto yy48;
-                       goto yy3;
+               if(yych <= 'Z'){
+                       if(yych >= 'J') goto yy49;
+                       goto yy642;
                } else {
-                       if(yych == 'e') goto yy467;
-                       if(yych <= 'z') goto yy50;
+                       if(yych <= '`') goto yy3;
+                       if(yych <= 'z') goto yy49;
                        goto yy3;
                }
        }
@@ -8607,47 +9088,38 @@ yy642:
        YYDEBUG(642, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
+       if(yybm[0+yych] & 64) {
+               goto yy379;
+       }
        if(yych <= '@'){
-               if(yych <= '-'){
-                       if(yych <= 0x1F)        goto yy3;
-                       if(yych <= ',') goto yy383;
-                       goto yy385;
-               } else {
-                       if(yych <= '.') goto yy383;
-                       if(yych <= '/') goto yy52;
-                       if(yych <= '9') goto yy387;
-                       goto yy3;
-               }
+               if(yych <= '/') goto yy3;
+               if(yych <= '9') goto yy383;
+               goto yy3;
        } else {
-               if(yych <= '`'){
-                       if(yych == 'Y') goto yy395;
-                       if(yych <= 'Z') goto yy48;
-                       goto yy3;
-               } else {
-                       if(yych == 'y') goto yy467;
-                       if(yych <= 'z') goto yy50;
-                       goto yy3;
-               }
+               if(yych <= 'Z') goto yy50;
+               if(yych <= '`') goto yy3;
+               if(yych <= 'z') goto yy50;
+               goto yy3;
        }
 yy643:
        YYDEBUG(643, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
        if(yych <= 'H'){
                if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
+               if(yych <= '9') goto yy383;
                if(yych <= '@') goto yy3;
-               goto yy48;
+               goto yy49;
        } else {
                if(yych <= 'Z'){
-                       if(yych <= 'I') goto yy395;
-                       goto yy48;
+                       if(yych >= 'J') goto yy49;
+                       goto yy644;
                } else {
                        if(yych <= '`') goto yy3;
-                       if(yych <= 'z') goto yy48;
+                       if(yych <= 'z') goto yy49;
                        goto yy3;
                }
        }
@@ -8656,20 +9128,20 @@ yy644:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
        if(yych <= 'H'){
                if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
+               if(yych <= '9') goto yy383;
                if(yych <= '@') goto yy3;
-               goto yy48;
+               goto yy50;
        } else {
                if(yych <= 'Z'){
-                       if(yych >= 'J') goto yy48;
-                       goto yy645;
+                       if(yych <= 'I') goto yy631;
+                       goto yy50;
                } else {
                        if(yych <= '`') goto yy3;
-                       if(yych <= 'z') goto yy48;
+                       if(yych <= 'z') goto yy50;
                        goto yy3;
                }
        }
@@ -8678,42 +9150,37 @@ yy645:
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
-       if(yych <= 'H'){
+       if(yych <= '@'){
                if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
-               if(yych <= '@') goto yy3;
-               goto yy48;
+               if(yych <= '9') goto yy383;
+               goto yy3;
        } else {
-               if(yych <= 'Z'){
-                       if(yych <= 'I') goto yy395;
-                       goto yy48;
-               } else {
-                       if(yych <= '`') goto yy3;
-                       if(yych <= 'z') goto yy48;
-                       goto yy3;
-               }
+               if(yych <= 'Z') goto yy49;
+               if(yych <= '`') goto yy3;
+               if(yych <= 'z') goto yy49;
+               goto yy3;
        }
 yy646:
        YYDEBUG(646, *YYCURSOR);
        yyaccept = 1;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 64) {
-               goto yy383;
+               goto yy379;
        }
        if(yych <= 'H'){
                if(yych <= '/') goto yy3;
-               if(yych <= '9') goto yy387;
+               if(yych <= '9') goto yy383;
                if(yych <= '@') goto yy3;
-               goto yy48;
+               goto yy49;
        } else {
                if(yych <= 'Z'){
-                       if(yych <= 'I') goto yy395;
-                       goto yy48;
+                       if(yych <= 'I') goto yy642;
+                       goto yy49;
                } else {
                        if(yych <= '`') goto yy3;
-                       if(yych <= 'z') goto yy48;
+                       if(yych <= 'z') goto yy49;
                        goto yy3;
                }
        }
@@ -8745,30 +9212,30 @@ yy648:
        case 'A':       case 'a':       goto yy661;
        case 'D':       case 'd':       goto yy1108;
        case 'F':       case 'f':       goto yy1105;
-       case 'H':       case 'h':       goto yy68;
+       case 'H':       case 'h':       goto yy72;
        case 'I':       goto yy655;
        case 'J':       case 'j':       goto yy658;
        case 'M':       case 'm':       goto yy1106;
        case 'N':       case 'n':       goto yy664;
        case 'O':       case 'o':       goto yy663;
        case 'S':       case 's':       goto yy1107;
-       case 'T':       case 't':       goto yy73;
+       case 'T':       case 't':       goto yy77;
        case 'V':       goto yy656;
-       case 'W':       case 'w':       goto yy70;
+       case 'W':       case 'w':       goto yy74;
        case 'X':       goto yy657;
-       case 'Y':       case 'y':       goto yy72;
-       default:        goto yy53;
+       case 'Y':       case 'y':       goto yy76;
+       default:        goto yy54;
        }
 yy649:
        YYDEBUG(649, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych == '-') goto yy861;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy860;
-       goto yy53;
+       goto yy54;
 yy650:
        YYDEBUG(650, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -8792,7 +9259,7 @@ yy650:
        case 'N':       case 'n':       goto yy813;
        case 'O':       case 'o':       goto yy812;
        case 'S':       case 's':       goto yy811;
-       default:        goto yy53;
+       default:        goto yy54;
        }
 yy651:
        YYDEBUG(651, *YYCURSOR);
@@ -8863,7 +9330,7 @@ yy654:
        case 'S':       case 's':       goto yy662;
        case 'V':       goto yy656;
        case 'X':       goto yy657;
-       default:        goto yy53;
+       default:        goto yy54;
        }
 yy655:
        YYDEBUG(655, *YYCURSOR);
@@ -8891,15 +9358,15 @@ yy658:
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'A') goto yy739;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy738;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy739;
                } else {
                        if(yych == 'u') goto yy738;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy659:
@@ -8907,27 +9374,27 @@ yy659:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy732;
        if(yych == 'e') goto yy732;
-       goto yy53;
+       goto yy54;
 yy660:
        YYDEBUG(660, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy729;
        if(yych == 'a') goto yy729;
-       goto yy53;
+       goto yy54;
 yy661:
        YYDEBUG(661, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'P') goto yy723;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy722;
        } else {
                if(yych <= 'p'){
-                       if(yych <= 'o') goto yy53;
+                       if(yych <= 'o') goto yy54;
                        goto yy723;
                } else {
                        if(yych == 'u') goto yy722;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy662:
@@ -8935,32 +9402,32 @@ yy662:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy715;
        if(yych == 'e') goto yy715;
-       goto yy53;
+       goto yy54;
 yy663:
        YYDEBUG(663, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy710;
        if(yych == 'c') goto yy710;
-       goto yy53;
+       goto yy54;
 yy664:
        YYDEBUG(664, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'O') goto yy704;
        if(yych == 'o') goto yy704;
-       goto yy53;
+       goto yy54;
 yy665:
        YYDEBUG(665, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy691;
        if(yych == 'e') goto yy691;
-       goto yy53;
+       goto yy54;
 yy666:
        YYDEBUG(666, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy667;
        if(yych <= '9') goto yy669;
-       goto yy53;
+       goto yy54;
 yy667:
        YYDEBUG(667, *YYCURSOR);
        yyaccept = 10;
@@ -8972,8 +9439,9 @@ yy667:
 yy668:
        YYDEBUG(668, *YYCURSOR);
 
-#line 959 "parse_date.re"
+#line 966 "parse_date.re"
 {
+               int tz_not_found;
                DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
@@ -8988,12 +9456,13 @@ yy668:
                }
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_TIME24_WITH_ZONE;
        }
-#line 7644 "<stdout>"
+#line 8112 "<stdout>"
 yy669:
        YYDEBUG(669, *YYCURSOR);
        yyaccept = 10;
@@ -9003,11 +9472,11 @@ yy669:
 yy670:
        YYDEBUG(670, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy671;
        if(yych <= '6') goto yy672;
        if(yych <= '9') goto yy673;
-       goto yy53;
+       goto yy54;
 yy671:
        YYDEBUG(671, *YYCURSOR);
        yyaccept = 10;
@@ -9032,8 +9501,8 @@ yy673:
 yy674:
        YYDEBUG(674, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy675;
 yy675:
        YYDEBUG(675, *YYCURSOR);
@@ -9079,19 +9548,19 @@ yy679:
        YYDEBUG(679, *YYCURSOR);
        if(yych <= 'O'){
                if(yych <= ' '){
-                       if(yych <= 0x1F)        goto yy53;
+                       if(yych <= 0x1F)        goto yy54;
                        goto yy678;
                } else {
-                       if(yych != 'A') goto yy53;
+                       if(yych != 'A') goto yy54;
                        goto yy680;
                }
        } else {
                if(yych <= 'a'){
                        if(yych <= 'P') goto yy680;
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy680;
                } else {
-                       if(yych != 'p') goto yy53;
+                       if(yych != 'p') goto yy54;
                        goto yy680;
                }
        }
@@ -9099,18 +9568,18 @@ yy680:
        YYDEBUG(680, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'L'){
-               if(yych != '.') goto yy53;
+               if(yych != '.') goto yy54;
                goto yy681;
        } else {
                if(yych <= 'M') goto yy682;
                if(yych == 'm') goto yy682;
-               goto yy53;
+               goto yy54;
        }
 yy681:
        YYDEBUG(681, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy682;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy682;
 yy682:
        YYDEBUG(682, *YYCURSOR);
@@ -9120,7 +9589,7 @@ yy682:
 yy683:
        YYDEBUG(683, *YYCURSOR);
 
-#line 944 "parse_date.re"
+#line 951 "parse_date.re"
 {
                DEBUG_OUTPUT("timeshort12 | timelong12");
                TIMELIB_INIT;
@@ -9134,7 +9603,7 @@ yy683:
                TIMELIB_DEINIT;
                return TIMELIB_TIME12;
        }
-#line 7755 "<stdout>"
+#line 8223 "<stdout>"
 yy684:
        YYDEBUG(684, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -9172,19 +9641,19 @@ yy687:
        YYDEBUG(687, *YYCURSOR);
        if(yych <= 'O'){
                if(yych <= ' '){
-                       if(yych <= 0x1F)        goto yy53;
+                       if(yych <= 0x1F)        goto yy54;
                        goto yy686;
                } else {
-                       if(yych != 'A') goto yy53;
+                       if(yych != 'A') goto yy54;
                        goto yy688;
                }
        } else {
                if(yych <= 'a'){
                        if(yych <= 'P') goto yy688;
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy688;
                } else {
-                       if(yych != 'p') goto yy53;
+                       if(yych != 'p') goto yy54;
                        goto yy688;
                }
        }
@@ -9192,18 +9661,18 @@ yy688:
        YYDEBUG(688, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'L'){
-               if(yych != '.') goto yy53;
+               if(yych != '.') goto yy54;
                goto yy689;
        } else {
                if(yych <= 'M') goto yy690;
                if(yych == 'm') goto yy690;
-               goto yy53;
+               goto yy54;
        }
 yy689:
        YYDEBUG(689, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy690;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy690;
 yy690:
        YYDEBUG(690, *YYCURSOR);
@@ -9214,7 +9683,7 @@ yy691:
        YYDEBUG(691, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy692;
-       if(yych != 'c') goto yy53;
+       if(yych != 'c') goto yy54;
        goto yy692;
 yy692:
        YYDEBUG(692, *YYCURSOR);
@@ -9230,10 +9699,10 @@ yy693:
        goto yy694;
 yy694:
        YYDEBUG(694, *YYCURSOR);
-       if(yych <= 0x1F)        goto yy53;
+       if(yych <= 0x1F)        goto yy54;
        if(yych <= '.') goto yy693;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy695;
 yy695:
        YYDEBUG(695, *YYCURSOR);
@@ -9244,7 +9713,7 @@ yy695:
 yy696:
        YYDEBUG(696, *YYCURSOR);
 
-#line 1079 "parse_date.re"
+#line 1090 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -9255,31 +9724,31 @@ yy696:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL;
        }
-#line 7850 "<stdout>"
+#line 8318 "<stdout>"
 yy697:
        YYDEBUG(697, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy698;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy698;
 yy698:
        YYDEBUG(698, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy699;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy699;
 yy699:
        YYDEBUG(699, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy700;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy700;
 yy700:
        YYDEBUG(700, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy693;
        if(yych == 'r') goto yy693;
-       goto yy53;
+       goto yy54;
 yy701:
        YYDEBUG(701, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -9300,7 +9769,7 @@ yy704:
        YYDEBUG(704, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'V') goto yy705;
-       if(yych != 'v') goto yy53;
+       if(yych != 'v') goto yy54;
        goto yy705;
 yy705:
        YYDEBUG(705, *YYCURSOR);
@@ -9312,31 +9781,31 @@ yy706:
        YYDEBUG(706, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy707;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy707;
 yy707:
        YYDEBUG(707, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy708;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy708;
 yy708:
        YYDEBUG(708, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy709;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy709;
 yy709:
        YYDEBUG(709, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy693;
        if(yych == 'r') goto yy693;
-       goto yy53;
+       goto yy54;
 yy710:
        YYDEBUG(710, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy711;
-       if(yych != 't') goto yy53;
+       if(yych != 't') goto yy54;
        goto yy711;
 yy711:
        YYDEBUG(711, *YYCURSOR);
@@ -9348,25 +9817,25 @@ yy712:
        YYDEBUG(712, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy713;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy713;
 yy713:
        YYDEBUG(713, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy714;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy714;
 yy714:
        YYDEBUG(714, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy693;
        if(yych == 'r') goto yy693;
-       goto yy53;
+       goto yy54;
 yy715:
        YYDEBUG(715, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'P') goto yy716;
-       if(yych != 'p') goto yy53;
+       if(yych != 'p') goto yy54;
        goto yy716;
 yy716:
        YYDEBUG(716, *YYCURSOR);
@@ -9384,37 +9853,37 @@ yy718:
        YYDEBUG(718, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy719;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy719;
 yy719:
        YYDEBUG(719, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy720;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy720;
 yy720:
        YYDEBUG(720, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy721;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy721;
 yy721:
        YYDEBUG(721, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy693;
        if(yych == 'r') goto yy693;
-       goto yy53;
+       goto yy54;
 yy722:
        YYDEBUG(722, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'G') goto yy726;
        if(yych == 'g') goto yy726;
-       goto yy53;
+       goto yy54;
 yy723:
        YYDEBUG(723, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy724;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy724;
 yy724:
        YYDEBUG(724, *YYCURSOR);
@@ -9427,7 +9896,7 @@ yy725:
        yych = *++YYCURSOR;
        if(yych == 'L') goto yy693;
        if(yych == 'l') goto yy693;
-       goto yy53;
+       goto yy54;
 yy726:
        YYDEBUG(726, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -9438,28 +9907,28 @@ yy727:
        YYDEBUG(727, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'S') goto yy728;
-       if(yych != 's') goto yy53;
+       if(yych != 's') goto yy54;
        goto yy728;
 yy728:
        YYDEBUG(728, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy693;
        if(yych == 't') goto yy693;
-       goto yy53;
+       goto yy54;
 yy729:
        YYDEBUG(729, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Y'){
                if(yych == 'R') goto yy730;
-               if(yych <= 'X') goto yy53;
+               if(yych <= 'X') goto yy54;
                goto yy693;
        } else {
                if(yych <= 'r'){
-                       if(yych <= 'q') goto yy53;
+                       if(yych <= 'q') goto yy54;
                        goto yy730;
                } else {
                        if(yych == 'y') goto yy693;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy730:
@@ -9473,12 +9942,12 @@ yy731:
        yych = *++YYCURSOR;
        if(yych == 'H') goto yy693;
        if(yych == 'h') goto yy693;
-       goto yy53;
+       goto yy54;
 yy732:
        YYDEBUG(732, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy733;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy733;
 yy733:
        YYDEBUG(733, *YYCURSOR);
@@ -9490,47 +9959,47 @@ yy734:
        YYDEBUG(734, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'U') goto yy735;
-       if(yych != 'u') goto yy53;
+       if(yych != 'u') goto yy54;
        goto yy735;
 yy735:
        YYDEBUG(735, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy736;
-       if(yych != 'a') goto yy53;
+       if(yych != 'a') goto yy54;
        goto yy736;
 yy736:
        YYDEBUG(736, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy737;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy737;
 yy737:
        YYDEBUG(737, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'Y') goto yy693;
        if(yych == 'y') goto yy693;
-       goto yy53;
+       goto yy54;
 yy738:
        YYDEBUG(738, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'N'){
                if(yych == 'L') goto yy745;
-               if(yych <= 'M') goto yy53;
+               if(yych <= 'M') goto yy54;
                goto yy744;
        } else {
                if(yych <= 'l'){
-                       if(yych <= 'k') goto yy53;
+                       if(yych <= 'k') goto yy54;
                        goto yy745;
                } else {
                        if(yych == 'n') goto yy744;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy739:
        YYDEBUG(739, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'N') goto yy740;
-       if(yych != 'n') goto yy53;
+       if(yych != 'n') goto yy54;
        goto yy740;
 yy740:
        YYDEBUG(740, *YYCURSOR);
@@ -9542,20 +10011,20 @@ yy741:
        YYDEBUG(741, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy742;
-       if(yych != 'a') goto yy53;
+       if(yych != 'a') goto yy54;
        goto yy742;
 yy742:
        YYDEBUG(742, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy743;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy743;
 yy743:
        YYDEBUG(743, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'Y') goto yy693;
        if(yych == 'y') goto yy693;
-       goto yy53;
+       goto yy54;
 yy744:
        YYDEBUG(744, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -9592,26 +10061,26 @@ yy750:
        YYDEBUG(750, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '.') goto yy753;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy752;
-       goto yy53;
+       goto yy54;
 yy751:
        YYDEBUG(751, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '.') goto yy753;
-       if(yych <= '/') goto yy53;
-       if(yych >= '3') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '3') goto yy54;
        goto yy752;
 yy752:
        YYDEBUG(752, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '.') goto yy53;
+       if(yych != '.') goto yy54;
        goto yy753;
 yy753:
        YYDEBUG(753, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy754;
 yy754:
        YYDEBUG(754, *YYCURSOR);
@@ -9622,7 +10091,7 @@ yy754:
 yy755:
        YYDEBUG(755, *YYCURSOR);
 
-#line 1091 "parse_date.re"
+#line 1102 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -9633,7 +10102,7 @@ yy755:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_FULL_POINTED;
        }
-#line 8110 "<stdout>"
+#line 8578 "<stdout>"
 yy756:
        YYDEBUG(756, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -9654,35 +10123,35 @@ yy759:
        YYDEBUG(759, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '-') goto yy798;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy761;
-       goto yy53;
+       goto yy54;
 yy760:
        YYDEBUG(760, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '-') goto yy798;
-       if(yych <= '/') goto yy53;
-       if(yych >= '3') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '3') goto yy54;
        goto yy761;
 yy761:
        YYDEBUG(761, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '-') goto yy798;
-       goto yy53;
+       goto yy54;
 yy762:
        YYDEBUG(762, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'A') goto yy794;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy793;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy794;
                } else {
                        if(yych == 'u') goto yy793;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy763:
@@ -9690,27 +10159,27 @@ yy763:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy791;
        if(yych == 'e') goto yy791;
-       goto yy53;
+       goto yy54;
 yy764:
        YYDEBUG(764, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy788;
        if(yych == 'a') goto yy788;
-       goto yy53;
+       goto yy54;
 yy765:
        YYDEBUG(765, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'P') goto yy785;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy784;
        } else {
                if(yych <= 'p'){
-                       if(yych <= 'o') goto yy53;
+                       if(yych <= 'o') goto yy54;
                        goto yy785;
                } else {
                        if(yych == 'u') goto yy784;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy766:
@@ -9718,30 +10187,30 @@ yy766:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy781;
        if(yych == 'e') goto yy781;
-       goto yy53;
+       goto yy54;
 yy767:
        YYDEBUG(767, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy779;
        if(yych == 'c') goto yy779;
-       goto yy53;
+       goto yy54;
 yy768:
        YYDEBUG(768, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'O') goto yy777;
        if(yych == 'o') goto yy777;
-       goto yy53;
+       goto yy54;
 yy769:
        YYDEBUG(769, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy770;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy770;
 yy770:
        YYDEBUG(770, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy771;
-       if(yych != 'c') goto yy53;
+       if(yych != 'c') goto yy54;
        goto yy771;
 yy771:
        YYDEBUG(771, *YYCURSOR);
@@ -9792,7 +10261,7 @@ yy777:
        YYDEBUG(777, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'V') goto yy778;
-       if(yych != 'v') goto yy53;
+       if(yych != 'v') goto yy54;
        goto yy778;
 yy778:
        YYDEBUG(778, *YYCURSOR);
@@ -9809,7 +10278,7 @@ yy779:
        YYDEBUG(779, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy780;
-       if(yych != 't') goto yy53;
+       if(yych != 't') goto yy54;
        goto yy780;
 yy780:
        YYDEBUG(780, *YYCURSOR);
@@ -9826,7 +10295,7 @@ yy781:
        YYDEBUG(781, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'P') goto yy782;
-       if(yych != 'p') goto yy53;
+       if(yych != 'p') goto yy54;
        goto yy782;
 yy782:
        YYDEBUG(782, *YYCURSOR);
@@ -9855,12 +10324,12 @@ yy784:
        yych = *++YYCURSOR;
        if(yych == 'G') goto yy787;
        if(yych == 'g') goto yy787;
-       goto yy53;
+       goto yy54;
 yy785:
        YYDEBUG(785, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy786;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy786;
 yy786:
        YYDEBUG(786, *YYCURSOR);
@@ -9889,15 +10358,15 @@ yy788:
        yych = *++YYCURSOR;
        if(yych <= 'Y'){
                if(yych == 'R') goto yy789;
-               if(yych <= 'X') goto yy53;
+               if(yych <= 'X') goto yy54;
                goto yy790;
        } else {
                if(yych <= 'r'){
-                       if(yych <= 'q') goto yy53;
+                       if(yych <= 'q') goto yy54;
                        goto yy789;
                } else {
                        if(yych == 'y') goto yy790;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy789:
@@ -9920,7 +10389,7 @@ yy791:
        YYDEBUG(791, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy792;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy792;
 yy792:
        YYDEBUG(792, *YYCURSOR);
@@ -9938,22 +10407,22 @@ yy793:
        yych = *++YYCURSOR;
        if(yych <= 'N'){
                if(yych == 'L') goto yy797;
-               if(yych <= 'M') goto yy53;
+               if(yych <= 'M') goto yy54;
                goto yy796;
        } else {
                if(yych <= 'l'){
-                       if(yych <= 'k') goto yy53;
+                       if(yych <= 'k') goto yy54;
                        goto yy797;
                } else {
                        if(yych == 'n') goto yy796;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy794:
        YYDEBUG(794, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'N') goto yy795;
-       if(yych != 'n') goto yy53;
+       if(yych != 'n') goto yy54;
        goto yy795;
 yy795:
        YYDEBUG(795, *YYCURSOR);
@@ -9991,11 +10460,11 @@ yy797:
 yy798:
        YYDEBUG(798, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '2') goto yy799;
        if(yych <= '3') goto yy801;
        if(yych <= '9') goto yy802;
-       goto yy53;
+       goto yy54;
 yy799:
        YYDEBUG(799, *YYCURSOR);
        ++YYCURSOR;
@@ -10005,7 +10474,7 @@ yy799:
 yy800:
        YYDEBUG(800, *YYCURSOR);
 
-#line 1067 "parse_date.re"
+#line 1078 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -10016,7 +10485,7 @@ yy800:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 8403 "<stdout>"
+#line 8871 "<stdout>"
 yy801:
        YYDEBUG(801, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -10038,7 +10507,7 @@ yy803:
 yy804:
        YYDEBUG(804, *YYCURSOR);
 
-#line 1042 "parse_date.re"
+#line 1053 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -10051,7 +10520,7 @@ yy804:
                TIMELIB_DEINIT;
                return TIMELIB_AMERICAN;
        }
-#line 8430 "<stdout>"
+#line 8898 "<stdout>"
 yy805:
        YYDEBUG(805, *YYCURSOR);
        yyaccept = 11;
@@ -10071,15 +10540,15 @@ yy807:
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'A') goto yy854;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy853;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy854;
                } else {
                        if(yych == 'u') goto yy853;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy808:
@@ -10087,27 +10556,27 @@ yy808:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy852;
        if(yych == 'e') goto yy852;
-       goto yy53;
+       goto yy54;
 yy809:
        YYDEBUG(809, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy851;
        if(yych == 'a') goto yy851;
-       goto yy53;
+       goto yy54;
 yy810:
        YYDEBUG(810, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'P') goto yy850;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy849;
        } else {
                if(yych <= 'p'){
-                       if(yych <= 'o') goto yy53;
+                       if(yych <= 'o') goto yy54;
                        goto yy850;
                } else {
                        if(yych == 'u') goto yy849;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy811:
@@ -10115,128 +10584,128 @@ yy811:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy847;
        if(yych == 'e') goto yy847;
-       goto yy53;
+       goto yy54;
 yy812:
        YYDEBUG(812, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy846;
        if(yych == 'c') goto yy846;
-       goto yy53;
+       goto yy54;
 yy813:
        YYDEBUG(813, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'O') goto yy845;
        if(yych == 'o') goto yy845;
-       goto yy53;
+       goto yy54;
 yy814:
        YYDEBUG(814, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy815;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy815;
 yy815:
        YYDEBUG(815, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy816;
-       if(yych != 'c') goto yy53;
+       if(yych != 'c') goto yy54;
        goto yy816;
 yy816:
        YYDEBUG(816, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '/') goto yy53;
+       if(yych != '/') goto yy54;
        goto yy817;
 yy817:
        YYDEBUG(817, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy818;
 yy818:
        YYDEBUG(818, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy819;
 yy819:
        YYDEBUG(819, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy820;
 yy820:
        YYDEBUG(820, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy821;
 yy821:
        YYDEBUG(821, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy822;
 yy822:
        YYDEBUG(822, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '1') goto yy823;
        if(yych <= '2') goto yy824;
-       goto yy53;
+       goto yy54;
 yy823:
        YYDEBUG(823, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy825;
-       goto yy53;
+       goto yy54;
 yy824:
        YYDEBUG(824, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '4') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '4') goto yy54;
        goto yy825;
 yy825:
        YYDEBUG(825, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy826;
 yy826:
        YYDEBUG(826, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '6') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '6') goto yy54;
        goto yy827;
 yy827:
        YYDEBUG(827, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy828;
 yy828:
        YYDEBUG(828, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy829;
 yy829:
        YYDEBUG(829, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy830;
        if(yych <= '6') goto yy831;
-       goto yy53;
+       goto yy54;
 yy830:
        YYDEBUG(830, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy832;
-       goto yy53;
+       goto yy54;
 yy831:
        YYDEBUG(831, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '0') goto yy53;
+       if(yych != '0') goto yy54;
        goto yy832;
 yy832:
        YYDEBUG(832, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ' ') goto yy53;
+       if(yych != ' ') goto yy54;
        goto yy833;
 yy833:
        YYDEBUG(833, *YYCURSOR);
@@ -10248,20 +10717,20 @@ yy834:
        YYDEBUG(834, *YYCURSOR);
        if(yych <= '*'){
                if(yych == ' ') goto yy833;
-               goto yy53;
+               goto yy54;
        } else {
-               if(yych == ',') goto yy53;
-               if(yych >= '.') goto yy53;
+               if(yych == ',') goto yy54;
+               if(yych >= '.') goto yy54;
                goto yy835;
        }
 yy835:
        YYDEBUG(835, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '1') goto yy836;
        if(yych <= '2') goto yy838;
        if(yych <= '9') goto yy839;
-       goto yy53;
+       goto yy54;
 yy836:
        YYDEBUG(836, *YYCURSOR);
        ++YYCURSOR;
@@ -10273,8 +10742,9 @@ yy836:
 yy837:
        YYDEBUG(837, *YYCURSOR);
 
-#line 1243 "parse_date.re"
+#line 1256 "parse_date.re"
 {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
                TIMELIB_HAVE_DATE();
@@ -10284,11 +10754,12 @@ yy837:
                s->time->h = timelib_get_nr((char **) &ptr, 2);
                s->time->i = timelib_get_nr((char **) &ptr, 2);
                s->time->s = timelib_get_nr((char **) &ptr, 2);
-               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+               s->errors += tz_not_found;
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
        }
-#line 8601 "<stdout>"
+#line 9071 "<stdout>"
 yy838:
        YYDEBUG(838, *YYCURSOR);
        yyaccept = 12;
@@ -10319,8 +10790,8 @@ yy840:
 yy841:
        YYDEBUG(841, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy842;
 yy842:
        YYDEBUG(842, *YYCURSOR);
@@ -10345,56 +10816,56 @@ yy845:
        yych = *++YYCURSOR;
        if(yych == 'V') goto yy816;
        if(yych == 'v') goto yy816;
-       goto yy53;
+       goto yy54;
 yy846:
        YYDEBUG(846, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy816;
        if(yych == 't') goto yy816;
-       goto yy53;
+       goto yy54;
 yy847:
        YYDEBUG(847, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'P') goto yy848;
-       if(yych != 'p') goto yy53;
+       if(yych != 'p') goto yy54;
        goto yy848;
 yy848:
        YYDEBUG(848, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'S'){
                if(yych == '/') goto yy817;
-               goto yy53;
+               goto yy54;
        } else {
                if(yych <= 'T') goto yy816;
                if(yych == 't') goto yy816;
-               goto yy53;
+               goto yy54;
        }
 yy849:
        YYDEBUG(849, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'G') goto yy816;
        if(yych == 'g') goto yy816;
-       goto yy53;
+       goto yy54;
 yy850:
        YYDEBUG(850, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy816;
        if(yych == 'r') goto yy816;
-       goto yy53;
+       goto yy54;
 yy851:
        YYDEBUG(851, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Y'){
                if(yych == 'R') goto yy816;
-               if(yych <= 'X') goto yy53;
+               if(yych <= 'X') goto yy54;
                goto yy816;
        } else {
                if(yych <= 'r'){
-                       if(yych <= 'q') goto yy53;
+                       if(yych <= 'q') goto yy54;
                        goto yy816;
                } else {
                        if(yych == 'y') goto yy816;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy852:
@@ -10402,21 +10873,21 @@ yy852:
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy816;
        if(yych == 'b') goto yy816;
-       goto yy53;
+       goto yy54;
 yy853:
        YYDEBUG(853, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'N'){
                if(yych == 'L') goto yy816;
-               if(yych <= 'M') goto yy53;
+               if(yych <= 'M') goto yy54;
                goto yy816;
        } else {
                if(yych <= 'l'){
-                       if(yych <= 'k') goto yy53;
+                       if(yych <= 'k') goto yy54;
                        goto yy816;
                } else {
                        if(yych == 'n') goto yy816;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy854:
@@ -10424,12 +10895,12 @@ yy854:
        yych = *++YYCURSOR;
        if(yych == 'N') goto yy816;
        if(yych == 'n') goto yy816;
-       goto yy53;
+       goto yy54;
 yy855:
        YYDEBUG(855, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy856;
 yy856:
        YYDEBUG(856, *YYCURSOR);
@@ -10457,12 +10928,12 @@ yy860:
        YYDEBUG(860, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych == '-') goto yy861;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy888;
-       goto yy53;
+       goto yy54;
 yy861:
        YYDEBUG(861, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -10486,22 +10957,22 @@ yy861:
        case 'N':       case 'n':       goto yy868;
        case 'O':       case 'o':       goto yy867;
        case 'S':       case 's':       goto yy866;
-       default:        goto yy53;
+       default:        goto yy54;
        }
 yy862:
        YYDEBUG(862, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'A') goto yy887;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy886;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy887;
                } else {
                        if(yych == 'u') goto yy886;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy863:
@@ -10509,27 +10980,27 @@ yy863:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy885;
        if(yych == 'e') goto yy885;
-       goto yy53;
+       goto yy54;
 yy864:
        YYDEBUG(864, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy884;
        if(yych == 'a') goto yy884;
-       goto yy53;
+       goto yy54;
 yy865:
        YYDEBUG(865, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'P') goto yy883;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy882;
        } else {
                if(yych <= 'p'){
-                       if(yych <= 'o') goto yy53;
+                       if(yych <= 'o') goto yy54;
                        goto yy883;
                } else {
                        if(yych == 'u') goto yy882;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy866:
@@ -10537,61 +11008,61 @@ yy866:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy880;
        if(yych == 'e') goto yy880;
-       goto yy53;
+       goto yy54;
 yy867:
        YYDEBUG(867, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy879;
        if(yych == 'c') goto yy879;
-       goto yy53;
+       goto yy54;
 yy868:
        YYDEBUG(868, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'O') goto yy878;
        if(yych == 'o') goto yy878;
-       goto yy53;
+       goto yy54;
 yy869:
        YYDEBUG(869, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy870;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy870;
 yy870:
        YYDEBUG(870, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy871;
-       if(yych != 'c') goto yy53;
+       if(yych != 'c') goto yy54;
        goto yy871;
 yy871:
        YYDEBUG(871, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '-') goto yy53;
+       if(yych != '-') goto yy54;
        goto yy872;
 yy872:
        YYDEBUG(872, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy873;
        if(yych <= '2') goto yy874;
        if(yych <= '3') goto yy875;
-       goto yy53;
+       goto yy54;
 yy873:
        YYDEBUG(873, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '0') goto yy53;
+       if(yych <= '0') goto yy54;
        if(yych <= '9') goto yy876;
-       goto yy53;
+       goto yy54;
 yy874:
        YYDEBUG(874, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy876;
-       goto yy53;
+       goto yy54;
 yy875:
        YYDEBUG(875, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '2') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '2') goto yy54;
        goto yy876;
 yy876:
        YYDEBUG(876, *YYCURSOR);
@@ -10600,7 +11071,7 @@ yy876:
 yy877:
        YYDEBUG(877, *YYCURSOR);
 
-#line 1231 "parse_date.re"
+#line 1244 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -10611,62 +11082,62 @@ yy877:
                TIMELIB_DEINIT;
                return TIMELIB_PG_TEXT;
        }
-#line 8843 "<stdout>"
+#line 9313 "<stdout>"
 yy878:
        YYDEBUG(878, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'V') goto yy871;
        if(yych == 'v') goto yy871;
-       goto yy53;
+       goto yy54;
 yy879:
        YYDEBUG(879, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy871;
        if(yych == 't') goto yy871;
-       goto yy53;
+       goto yy54;
 yy880:
        YYDEBUG(880, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'P') goto yy881;
-       if(yych != 'p') goto yy53;
+       if(yych != 'p') goto yy54;
        goto yy881;
 yy881:
        YYDEBUG(881, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'S'){
                if(yych == '-') goto yy872;
-               goto yy53;
+               goto yy54;
        } else {
                if(yych <= 'T') goto yy871;
                if(yych == 't') goto yy871;
-               goto yy53;
+               goto yy54;
        }
 yy882:
        YYDEBUG(882, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'G') goto yy871;
        if(yych == 'g') goto yy871;
-       goto yy53;
+       goto yy54;
 yy883:
        YYDEBUG(883, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy871;
        if(yych == 'r') goto yy871;
-       goto yy53;
+       goto yy54;
 yy884:
        YYDEBUG(884, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Y'){
                if(yych == 'R') goto yy871;
-               if(yych <= 'X') goto yy53;
+               if(yych <= 'X') goto yy54;
                goto yy871;
        } else {
                if(yych <= 'r'){
-                       if(yych <= 'q') goto yy53;
+                       if(yych <= 'q') goto yy54;
                        goto yy871;
                } else {
                        if(yych == 'y') goto yy871;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy885:
@@ -10674,21 +11145,21 @@ yy885:
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy871;
        if(yych == 'b') goto yy871;
-       goto yy53;
+       goto yy54;
 yy886:
        YYDEBUG(886, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'N'){
                if(yych == 'L') goto yy871;
-               if(yych <= 'M') goto yy53;
+               if(yych <= 'M') goto yy54;
                goto yy871;
        } else {
                if(yych <= 'l'){
-                       if(yych <= 'k') goto yy53;
+                       if(yych <= 'k') goto yy54;
                        goto yy871;
                } else {
                        if(yych == 'n') goto yy871;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy887:
@@ -10696,7 +11167,7 @@ yy887:
        yych = *++YYCURSOR;
        if(yych == 'N') goto yy871;
        if(yych == 'n') goto yy871;
-       goto yy53;
+       goto yy54;
 yy888:
        YYDEBUG(888, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -10714,10 +11185,10 @@ yy888:
        case '6':
        case '7':
        case '8':
-       case '9':       goto yy64;
+       case '9':       goto yy68;
        case 'D':       case 'd':       goto yy907;
        case 'F':       case 'f':       goto yy901;
-       case 'H':       case 'T':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy53;
+       case 'H':       case 'T':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy54;
        case 'M':       case 'm':       goto yy902;
        case 'S':       case 's':       goto yy904;
        case 'W':       goto yy912;
@@ -10751,10 +11222,10 @@ yy889:
 yy890:
        YYDEBUG(890, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy1027;
        if(yych <= '1') goto yy1028;
-       goto yy53;
+       goto yy54;
 yy891:
        YYDEBUG(891, *YYCURSOR);
        ++YYCURSOR;
@@ -10783,19 +11254,19 @@ yy892:
        case 'A':       case 'a':       goto yy903;
        case 'D':       case 'd':       goto yy1024;
        case 'F':       case 'f':       goto yy1025;
-       case 'H':       case 'h':       goto yy68;
+       case 'H':       case 'h':       goto yy72;
        case 'I':       goto yy896;
        case 'J':       case 'j':       goto yy900;
        case 'M':       case 'm':       goto yy1023;
        case 'N':       case 'n':       goto yy906;
        case 'O':       case 'o':       goto yy905;
        case 'S':       case 's':       goto yy1022;
-       case 'T':       case 't':       goto yy73;
+       case 'T':       case 't':       goto yy77;
        case 'V':       goto yy898;
-       case 'W':       case 'w':       goto yy70;
+       case 'W':       case 'w':       goto yy74;
        case 'X':       goto yy899;
-       case 'Y':       case 'y':       goto yy72;
-       default:        goto yy53;
+       case 'Y':       case 'y':       goto yy76;
+       default:        goto yy54;
        }
 yy893:
        YYDEBUG(893, *YYCURSOR);
@@ -10833,7 +11304,7 @@ yy894:
        case 'S':       case 's':       goto yy904;
        case 'V':       goto yy898;
        case 'X':       goto yy899;
-       default:        goto yy53;
+       default:        goto yy54;
        }
 yy895:
        YYDEBUG(895, *YYCURSOR);
@@ -10857,7 +11328,7 @@ yy896:
 yy897:
        YYDEBUG(897, *YYCURSOR);
 
-#line 1115 "parse_date.re"
+#line 1126 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -10868,7 +11339,7 @@ yy897:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NO_DAY;
        }
-#line 9056 "<stdout>"
+#line 9526 "<stdout>"
 yy898:
        YYDEBUG(898, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -10884,15 +11355,15 @@ yy900:
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'A') goto yy1002;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy1001;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy1002;
                } else {
                        if(yych == 'u') goto yy1001;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy901:
@@ -10900,27 +11371,27 @@ yy901:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy995;
        if(yych == 'e') goto yy995;
-       goto yy53;
+       goto yy54;
 yy902:
        YYDEBUG(902, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy992;
        if(yych == 'a') goto yy992;
-       goto yy53;
+       goto yy54;
 yy903:
        YYDEBUG(903, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'P') goto yy986;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy985;
        } else {
                if(yych <= 'p'){
-                       if(yych <= 'o') goto yy53;
+                       if(yych <= 'o') goto yy54;
                        goto yy986;
                } else {
                        if(yych == 'u') goto yy985;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy904:
@@ -10928,90 +11399,90 @@ yy904:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy978;
        if(yych == 'e') goto yy978;
-       goto yy53;
+       goto yy54;
 yy905:
        YYDEBUG(905, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy973;
        if(yych == 'c') goto yy973;
-       goto yy53;
+       goto yy54;
 yy906:
        YYDEBUG(906, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'O') goto yy967;
        if(yych == 'o') goto yy967;
-       goto yy53;
+       goto yy54;
 yy907:
        YYDEBUG(907, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy960;
        if(yych == 'e') goto yy960;
-       goto yy53;
+       goto yy54;
 yy908:
        YYDEBUG(908, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy958;
        if(yych <= '9') goto yy959;
-       goto yy53;
+       goto yy54;
 yy909:
        YYDEBUG(909, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '2') goto yy925;
        if(yych <= '9') goto yy924;
-       goto yy53;
+       goto yy54;
 yy910:
        YYDEBUG(910, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy924;
-       goto yy53;
+       goto yy54;
 yy911:
        YYDEBUG(911, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy920;
        if(yych <= '6') goto yy921;
-       if(yych <= '9') goto yy64;
-       goto yy53;
+       if(yych <= '9') goto yy68;
+       goto yy54;
 yy912:
        YYDEBUG(912, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy913;
        if(yych <= '4') goto yy914;
        if(yych <= '5') goto yy915;
-       goto yy53;
+       goto yy54;
 yy913:
        YYDEBUG(913, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '0') goto yy53;
+       if(yych <= '0') goto yy54;
        if(yych <= '9') goto yy916;
-       goto yy53;
+       goto yy54;
 yy914:
        YYDEBUG(914, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy916;
-       goto yy53;
+       goto yy54;
 yy915:
        YYDEBUG(915, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '4') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '4') goto yy54;
        goto yy916;
 yy916:
        YYDEBUG(916, *YYCURSOR);
@@ -11022,7 +11493,7 @@ yy916:
 yy917:
        YYDEBUG(917, *YYCURSOR);
 
-#line 1200 "parse_date.re"
+#line 1213 "parse_date.re"
 {
                timelib_sll w, d;
 
@@ -11040,7 +11511,7 @@ yy917:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_WEEK;
        }
-#line 9188 "<stdout>"
+#line 9658 "<stdout>"
 yy918:
        YYDEBUG(918, *YYCURSOR);
        ++YYCURSOR;
@@ -11048,7 +11519,7 @@ yy918:
 yy919:
        YYDEBUG(919, *YYCURSOR);
 
-#line 1181 "parse_date.re"
+#line 1194 "parse_date.re"
 {
                timelib_sll w, d;
 
@@ -11066,40 +11537,40 @@ yy919:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_WEEK;
        }
-#line 9210 "<stdout>"
+#line 9680 "<stdout>"
 yy920:
        YYDEBUG(920, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy922;
-       goto yy53;
+       goto yy54;
 yy921:
        YYDEBUG(921, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '6') goto yy922;
-       if(yych <= '9') goto yy64;
-       goto yy53;
+       if(yych <= '9') goto yy68;
+       goto yy54;
 yy922:
        YYDEBUG(922, *YYCURSOR);
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy923;
-       if(yych <= '9') goto yy64;
+       if(yych <= '9') goto yy68;
        goto yy923;
 yy923:
        YYDEBUG(923, *YYCURSOR);
 
-#line 1169 "parse_date.re"
+#line 1182 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -11110,40 +11581,40 @@ yy923:
                TIMELIB_DEINIT;
                return TIMELIB_PG_YEARDAY;
        }
-#line 9246 "<stdout>"
+#line 9716 "<stdout>"
 yy924:
        YYDEBUG(924, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy922;
-       goto yy53;
+       goto yy54;
 yy925:
        YYDEBUG(925, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '2'){
-               if(yych <= '/') goto yy53;
+               if(yych <= '/') goto yy54;
                if(yych >= '1') goto yy927;
                goto yy926;
        } else {
                if(yych <= '3') goto yy928;
                if(yych <= '9') goto yy922;
-               goto yy53;
+               goto yy54;
        }
 yy926:
        YYDEBUG(926, *YYCURSOR);
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy923;
-       if(yych <= '0') goto yy64;
+       if(yych <= '0') goto yy68;
        if(yych <= '9') goto yy929;
        goto yy923;
 yy927:
@@ -11151,7 +11622,7 @@ yy927:
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy923;
        if(yych <= '9') goto yy929;
@@ -11161,22 +11632,22 @@ yy928:
        yyaccept = 13;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy923;
        if(yych <= '1') goto yy929;
-       if(yych <= '9') goto yy64;
+       if(yych <= '9') goto yy68;
        goto yy923;
 yy929:
        YYDEBUG(929, *YYCURSOR);
        yyaccept = 14;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= 'S'){
                if(yych <= '/') goto yy930;
-               if(yych <= '9') goto yy64;
+               if(yych <= '9') goto yy68;
                goto yy930;
        } else {
                if(yych <= 'T') goto yy931;
@@ -11186,7 +11657,7 @@ yy929:
 yy930:
        YYDEBUG(930, *YYCURSOR);
 
-#line 1139 "parse_date.re"
+#line 1150 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -11196,66 +11667,66 @@ yy930:
                TIMELIB_DEINIT;
                return TIMELIB_DATE_NOCOLON;
        }
-#line 9318 "<stdout>"
+#line 9788 "<stdout>"
 yy931:
        YYDEBUG(931, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '1') goto yy948;
        if(yych <= '2') goto yy949;
        if(yych <= '9') goto yy950;
-       goto yy53;
+       goto yy54;
 yy932:
        YYDEBUG(932, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '1') goto yy933;
        if(yych <= '2') goto yy934;
        if(yych <= '9') goto yy935;
-       goto yy53;
+       goto yy54;
 yy933:
        YYDEBUG(933, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy942;
        if(yych <= '9') goto yy935;
-       goto yy53;
+       goto yy54;
 yy934:
        YYDEBUG(934, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '3') goto yy942;
        if(yych <= '5') goto yy936;
-       goto yy53;
+       goto yy54;
 yy935:
        YYDEBUG(935, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '6') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '6') goto yy54;
        goto yy936;
 yy936:
        YYDEBUG(936, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy937;
 yy937:
        YYDEBUG(937, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy938;
        if(yych <= '6') goto yy939;
-       goto yy53;
+       goto yy54;
 yy938:
        YYDEBUG(938, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy940;
-       goto yy53;
+       goto yy54;
 yy939:
        YYDEBUG(939, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '0') goto yy53;
+       if(yych != '0') goto yy54;
        goto yy940;
 yy940:
        YYDEBUG(940, *YYCURSOR);
@@ -11264,8 +11735,9 @@ yy940:
 yy941:
        YYDEBUG(941, *YYCURSOR);
 
-#line 1150 "parse_date.re"
+#line 1161 "parse_date.re"
 {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
                TIMELIB_HAVE_DATE();
@@ -11277,43 +11749,44 @@ yy941:
                s->time->s = timelib_get_nr((char **) &ptr, 2);
                if (*ptr == '.') {
                        s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_XMLRPC_SOAP;
        }
-#line 9382 "<stdout>"
+#line 9854 "<stdout>"
 yy942:
        YYDEBUG(942, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy943;
        if(yych <= '9') goto yy937;
-       goto yy53;
+       goto yy54;
 yy943:
        YYDEBUG(943, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy944;
        if(yych <= '6') goto yy945;
        if(yych <= '9') goto yy937;
-       goto yy53;
+       goto yy54;
 yy944:
        YYDEBUG(944, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy946;
        if(yych <= '6') goto yy947;
        if(yych <= '9') goto yy940;
-       goto yy53;
+       goto yy54;
 yy945:
        YYDEBUG(945, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy946;
        if(yych <= '5') goto yy938;
        if(yych <= '6') goto yy939;
-       goto yy53;
+       goto yy54;
 yy946:
        YYDEBUG(946, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -11328,102 +11801,102 @@ yy947:
 yy948:
        YYDEBUG(948, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy957;
        if(yych <= '9') goto yy950;
        if(yych <= ':') goto yy951;
-       goto yy53;
+       goto yy54;
 yy949:
        YYDEBUG(949, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= '5'){
-               if(yych <= '/') goto yy53;
+               if(yych <= '/') goto yy54;
                if(yych <= '3') goto yy957;
                goto yy936;
        } else {
                if(yych == ':') goto yy951;
-               goto yy53;
+               goto yy54;
        }
 yy950:
        YYDEBUG(950, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy936;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy951;
 yy951:
        YYDEBUG(951, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '6') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '6') goto yy54;
        goto yy952;
 yy952:
        YYDEBUG(952, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy953;
 yy953:
        YYDEBUG(953, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy954;
 yy954:
        YYDEBUG(954, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy955;
        if(yych <= '6') goto yy956;
-       goto yy53;
+       goto yy54;
 yy955:
        YYDEBUG(955, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy940;
-       goto yy53;
+       goto yy54;
 yy956:
        YYDEBUG(956, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '0') goto yy940;
-       goto yy53;
+       goto yy54;
 yy957:
        YYDEBUG(957, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy943;
        if(yych <= '9') goto yy937;
        if(yych <= ':') goto yy951;
-       goto yy53;
+       goto yy54;
 yy958:
        YYDEBUG(958, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
-       if(yych <= '0') goto yy64;
+       if(yych <= '/') goto yy54;
+       if(yych <= '0') goto yy68;
        if(yych <= '9') goto yy922;
-       goto yy53;
+       goto yy54;
 yy959:
        YYDEBUG(959, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '2'){
-               if(yych <= '/') goto yy53;
+               if(yych <= '/') goto yy54;
                if(yych <= '0') goto yy926;
                goto yy927;
        } else {
                if(yych <= '3') goto yy928;
                if(yych <= '9') goto yy922;
-               goto yy53;
+               goto yy54;
        }
 yy960:
        YYDEBUG(960, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy961;
-       if(yych != 'c') goto yy53;
+       if(yych != 'c') goto yy54;
        goto yy961;
 yy961:
        YYDEBUG(961, *YYCURSOR);
@@ -11436,25 +11909,25 @@ yy962:
        YYDEBUG(962, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy963;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy963;
 yy963:
        YYDEBUG(963, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy964;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy964;
 yy964:
        YYDEBUG(964, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy965;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy965;
 yy965:
        YYDEBUG(965, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy966;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy966;
 yy966:
        YYDEBUG(966, *YYCURSOR);
@@ -11464,7 +11937,7 @@ yy967:
        YYDEBUG(967, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'V') goto yy968;
-       if(yych != 'v') goto yy53;
+       if(yych != 'v') goto yy54;
        goto yy968;
 yy968:
        YYDEBUG(968, *YYCURSOR);
@@ -11477,31 +11950,31 @@ yy969:
        YYDEBUG(969, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy970;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy970;
 yy970:
        YYDEBUG(970, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy971;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy971;
 yy971:
        YYDEBUG(971, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy972;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy972;
 yy972:
        YYDEBUG(972, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy966;
        if(yych == 'r') goto yy966;
-       goto yy53;
+       goto yy54;
 yy973:
        YYDEBUG(973, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy974;
-       if(yych != 't') goto yy53;
+       if(yych != 't') goto yy54;
        goto yy974;
 yy974:
        YYDEBUG(974, *YYCURSOR);
@@ -11514,25 +11987,25 @@ yy975:
        YYDEBUG(975, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy976;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy976;
 yy976:
        YYDEBUG(976, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy977;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy977;
 yy977:
        YYDEBUG(977, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy966;
        if(yych == 'r') goto yy966;
-       goto yy53;
+       goto yy54;
 yy978:
        YYDEBUG(978, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'P') goto yy979;
-       if(yych != 'p') goto yy53;
+       if(yych != 'p') goto yy54;
        goto yy979;
 yy979:
        YYDEBUG(979, *YYCURSOR);
@@ -11551,37 +12024,37 @@ yy981:
        YYDEBUG(981, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'M') goto yy982;
-       if(yych != 'm') goto yy53;
+       if(yych != 'm') goto yy54;
        goto yy982;
 yy982:
        YYDEBUG(982, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy983;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy983;
 yy983:
        YYDEBUG(983, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy984;
-       if(yych != 'e') goto yy53;
+       if(yych != 'e') goto yy54;
        goto yy984;
 yy984:
        YYDEBUG(984, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy966;
        if(yych == 'r') goto yy966;
-       goto yy53;
+       goto yy54;
 yy985:
        YYDEBUG(985, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'G') goto yy989;
        if(yych == 'g') goto yy989;
-       goto yy53;
+       goto yy54;
 yy986:
        YYDEBUG(986, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy987;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy987;
 yy987:
        YYDEBUG(987, *YYCURSOR);
@@ -11595,7 +12068,7 @@ yy988:
        yych = *++YYCURSOR;
        if(yych == 'L') goto yy966;
        if(yych == 'l') goto yy966;
-       goto yy53;
+       goto yy54;
 yy989:
        YYDEBUG(989, *YYCURSOR);
        yyaccept = 15;
@@ -11607,28 +12080,28 @@ yy990:
        YYDEBUG(990, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'S') goto yy991;
-       if(yych != 's') goto yy53;
+       if(yych != 's') goto yy54;
        goto yy991;
 yy991:
        YYDEBUG(991, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy966;
        if(yych == 't') goto yy966;
-       goto yy53;
+       goto yy54;
 yy992:
        YYDEBUG(992, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'Y'){
                if(yych == 'R') goto yy993;
-               if(yych <= 'X') goto yy53;
+               if(yych <= 'X') goto yy54;
                goto yy966;
        } else {
                if(yych <= 'r'){
-                       if(yych <= 'q') goto yy53;
+                       if(yych <= 'q') goto yy54;
                        goto yy993;
                } else {
                        if(yych == 'y') goto yy966;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy993:
@@ -11643,12 +12116,12 @@ yy994:
        yych = *++YYCURSOR;
        if(yych == 'H') goto yy966;
        if(yych == 'h') goto yy966;
-       goto yy53;
+       goto yy54;
 yy995:
        YYDEBUG(995, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy996;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy996;
 yy996:
        YYDEBUG(996, *YYCURSOR);
@@ -11661,47 +12134,47 @@ yy997:
        YYDEBUG(997, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'U') goto yy998;
-       if(yych != 'u') goto yy53;
+       if(yych != 'u') goto yy54;
        goto yy998;
 yy998:
        YYDEBUG(998, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy999;
-       if(yych != 'a') goto yy53;
+       if(yych != 'a') goto yy54;
        goto yy999;
 yy999:
        YYDEBUG(999, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy1000;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy1000;
 yy1000:
        YYDEBUG(1000, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'Y') goto yy966;
        if(yych == 'y') goto yy966;
-       goto yy53;
+       goto yy54;
 yy1001:
        YYDEBUG(1001, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'N'){
                if(yych == 'L') goto yy1008;
-               if(yych <= 'M') goto yy53;
+               if(yych <= 'M') goto yy54;
                goto yy1007;
        } else {
                if(yych <= 'l'){
-                       if(yych <= 'k') goto yy53;
+                       if(yych <= 'k') goto yy54;
                        goto yy1008;
                } else {
                        if(yych == 'n') goto yy1007;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1002:
        YYDEBUG(1002, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'N') goto yy1003;
-       if(yych != 'n') goto yy53;
+       if(yych != 'n') goto yy54;
        goto yy1003;
 yy1003:
        YYDEBUG(1003, *YYCURSOR);
@@ -11714,20 +12187,20 @@ yy1004:
        YYDEBUG(1004, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy1005;
-       if(yych != 'a') goto yy53;
+       if(yych != 'a') goto yy54;
        goto yy1005;
 yy1005:
        YYDEBUG(1005, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy1006;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy1006;
 yy1006:
        YYDEBUG(1006, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'Y') goto yy966;
        if(yych == 'y') goto yy966;
-       goto yy53;
+       goto yy54;
 yy1007:
        YYDEBUG(1007, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -11763,34 +12236,34 @@ yy1012:
 yy1013:
        YYDEBUG(1013, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy1021;
        if(yych <= '9') goto yy1020;
-       goto yy53;
+       goto yy54;
 yy1014:
        YYDEBUG(1014, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1019;
-       goto yy53;
+       goto yy54;
 yy1015:
        YYDEBUG(1015, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy1017;
-       if(yych >= '7') goto yy53;
+       if(yych >= '7') goto yy54;
        goto yy1016;
 yy1016:
        YYDEBUG(1016, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '6') goto yy1018;
-       goto yy53;
+       goto yy54;
 yy1017:
        YYDEBUG(1017, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy1018;
 yy1018:
        YYDEBUG(1018, *YYCURSOR);
@@ -11799,41 +12272,41 @@ yy1018:
 yy1019:
        YYDEBUG(1019, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1018;
-       goto yy53;
+       goto yy54;
 yy1020:
        YYDEBUG(1020, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1018;
-       goto yy53;
+       goto yy54;
 yy1021:
        YYDEBUG(1021, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '0') goto yy53;
+       if(yych <= '0') goto yy54;
        if(yych <= '9') goto yy1018;
-       goto yy53;
+       goto yy54;
 yy1022:
        YYDEBUG(1022, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych <= 'D'){
-                       if(yych == 'A') goto yy127;
-                       goto yy53;
+                       if(yych == 'A') goto yy131;
+                       goto yy54;
                } else {
                        if(yych <= 'E') goto yy1026;
-                       if(yych <= 'T') goto yy53;
-                       goto yy128;
+                       if(yych <= 'T') goto yy54;
+                       goto yy132;
                }
        } else {
                if(yych <= 'd'){
-                       if(yych == 'a') goto yy127;
-                       goto yy53;
+                       if(yych == 'a') goto yy131;
+                       goto yy54;
                } else {
                        if(yych <= 'e') goto yy1026;
-                       if(yych == 'u') goto yy128;
-                       goto yy53;
+                       if(yych == 'u') goto yy132;
+                       goto yy54;
                }
        }
 yy1023:
@@ -11842,36 +12315,36 @@ yy1023:
        if(yych <= 'O'){
                if(yych <= 'H'){
                        if(yych == 'A') goto yy992;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'I') goto yy119;
-                       if(yych <= 'N') goto yy53;
-                       goto yy118;
+                       if(yych <= 'I') goto yy123;
+                       if(yych <= 'N') goto yy54;
+                       goto yy122;
                }
        } else {
                if(yych <= 'h'){
                        if(yych == 'a') goto yy992;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'i') goto yy119;
-                       if(yych == 'o') goto yy118;
-                       goto yy53;
+                       if(yych <= 'i') goto yy123;
+                       if(yych == 'o') goto yy122;
+                       goto yy54;
                }
        }
 yy1024:
        YYDEBUG(1024, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'E'){
-               if(yych == 'A') goto yy115;
-               if(yych <= 'D') goto yy53;
+               if(yych == 'A') goto yy119;
+               if(yych <= 'D') goto yy54;
                goto yy960;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
-                       goto yy115;
+                       if(yych <= '`') goto yy54;
+                       goto yy119;
                } else {
                        if(yych == 'e') goto yy960;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1025:
@@ -11880,80 +12353,80 @@ yy1025:
        if(yych <= 'R'){
                if(yych <= 'N'){
                        if(yych == 'E') goto yy995;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'O') goto yy92;
-                       if(yych <= 'Q') goto yy53;
-                       goto yy91;
+                       if(yych <= 'O') goto yy96;
+                       if(yych <= 'Q') goto yy54;
+                       goto yy95;
                }
        } else {
                if(yych <= 'n'){
                        if(yych == 'e') goto yy995;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'o') goto yy92;
-                       if(yych == 'r') goto yy91;
-                       goto yy53;
+                       if(yych <= 'o') goto yy96;
+                       if(yych == 'r') goto yy95;
+                       goto yy54;
                }
        }
 yy1026:
        YYDEBUG(1026, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'P'){
-               if(yych == 'C') goto yy130;
-               if(yych <= 'O') goto yy53;
+               if(yych == 'C') goto yy134;
+               if(yych <= 'O') goto yy54;
                goto yy979;
        } else {
                if(yych <= 'c'){
-                       if(yych <= 'b') goto yy53;
-                       goto yy130;
+                       if(yych <= 'b') goto yy54;
+                       goto yy134;
                } else {
                        if(yych == 'p') goto yy979;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1027:
        YYDEBUG(1027, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '0') goto yy53;
+       if(yych <= '0') goto yy54;
        if(yych <= '9') goto yy1029;
-       goto yy53;
+       goto yy54;
 yy1028:
        YYDEBUG(1028, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '3') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '3') goto yy54;
        goto yy1029;
 yy1029:
        YYDEBUG(1029, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '/') goto yy53;
+       if(yych != '/') goto yy54;
        goto yy1030;
 yy1030:
        YYDEBUG(1030, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy1031;
        if(yych <= '2') goto yy1032;
        if(yych <= '3') goto yy1033;
-       goto yy53;
+       goto yy54;
 yy1031:
        YYDEBUG(1031, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '0') goto yy53;
+       if(yych <= '0') goto yy54;
        if(yych <= '9') goto yy1034;
-       goto yy53;
+       goto yy54;
 yy1032:
        YYDEBUG(1032, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1034;
-       goto yy53;
+       goto yy54;
 yy1033:
        YYDEBUG(1033, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '2') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '2') goto yy54;
        goto yy1034;
 yy1034:
        YYDEBUG(1034, *YYCURSOR);
@@ -11963,7 +12436,7 @@ yy1034:
 yy1035:
        YYDEBUG(1035, *YYCURSOR);
 
-#line 1056 "parse_date.re"
+#line 1067 "parse_date.re"
 {
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
@@ -11973,7 +12446,7 @@ yy1035:
                TIMELIB_DEINIT;
                return TIMELIB_ISO_DATE;
        }
-#line 9885 "<stdout>"
+#line 10357 "<stdout>"
 yy1036:
        YYDEBUG(1036, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -11983,15 +12456,15 @@ yy1037:
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'A') goto yy1101;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy1100;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
+                       if(yych <= '`') goto yy54;
                        goto yy1101;
                } else {
                        if(yych == 'u') goto yy1100;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1038:
@@ -11999,27 +12472,27 @@ yy1038:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy1098;
        if(yych == 'e') goto yy1098;
-       goto yy53;
+       goto yy54;
 yy1039:
        YYDEBUG(1039, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'A') goto yy1095;
        if(yych == 'a') goto yy1095;
-       goto yy53;
+       goto yy54;
 yy1040:
        YYDEBUG(1040, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych == 'P') goto yy1092;
-               if(yych <= 'T') goto yy53;
+               if(yych <= 'T') goto yy54;
                goto yy1091;
        } else {
                if(yych <= 'p'){
-                       if(yych <= 'o') goto yy53;
+                       if(yych <= 'o') goto yy54;
                        goto yy1092;
                } else {
                        if(yych == 'u') goto yy1091;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1041:
@@ -12027,59 +12500,59 @@ yy1041:
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy1088;
        if(yych == 'e') goto yy1088;
-       goto yy53;
+       goto yy54;
 yy1042:
        YYDEBUG(1042, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy1086;
        if(yych == 'c') goto yy1086;
-       goto yy53;
+       goto yy54;
 yy1043:
        YYDEBUG(1043, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'O') goto yy1084;
        if(yych == 'o') goto yy1084;
-       goto yy53;
+       goto yy54;
 yy1044:
        YYDEBUG(1044, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'E') goto yy1082;
        if(yych == 'e') goto yy1082;
-       goto yy53;
+       goto yy54;
 yy1045:
        YYDEBUG(1045, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= '/'){
                if(yych == '-') goto yy798;
-               goto yy53;
+               goto yy54;
        } else {
                if(yych <= '0') goto yy761;
                if(yych <= '9') goto yy1047;
-               goto yy53;
+               goto yy54;
        }
 yy1046:
        YYDEBUG(1046, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '-') goto yy798;
-       if(yych <= '/') goto yy53;
-       if(yych >= '3') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '3') goto yy54;
        goto yy1047;
 yy1047:
        YYDEBUG(1047, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '-') goto yy53;
+       if(yych != '-') goto yy54;
        goto yy1048;
 yy1048:
        YYDEBUG(1048, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= '2'){
-               if(yych <= '/') goto yy53;
+               if(yych <= '/') goto yy54;
                if(yych >= '1') goto yy1050;
                goto yy1049;
        } else {
                if(yych <= '3') goto yy1051;
                if(yych <= '9') goto yy802;
-               goto yy53;
+               goto yy54;
        }
 yy1049:
        YYDEBUG(1049, *YYCURSOR);
@@ -12109,104 +12582,104 @@ yy1052:
 yy1053:
        YYDEBUG(1053, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '1') goto yy1054;
        if(yych <= '2') goto yy1055;
        if(yych <= '9') goto yy1056;
-       goto yy53;
+       goto yy54;
 yy1054:
        YYDEBUG(1054, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1063;
        if(yych <= ':') goto yy1057;
-       goto yy53;
+       goto yy54;
 yy1055:
        YYDEBUG(1055, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '3') goto yy1063;
        if(yych == ':') goto yy1057;
-       goto yy53;
+       goto yy54;
 yy1056:
        YYDEBUG(1056, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy1057;
 yy1057:
        YYDEBUG(1057, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '6') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '6') goto yy54;
        goto yy1058;
 yy1058:
        YYDEBUG(1058, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy1059;
 yy1059:
        YYDEBUG(1059, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy1060;
 yy1060:
        YYDEBUG(1060, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy1061;
        if(yych <= '6') goto yy1062;
-       goto yy53;
+       goto yy54;
 yy1061:
        YYDEBUG(1061, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy940;
-       goto yy53;
+       goto yy54;
 yy1062:
        YYDEBUG(1062, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == '0') goto yy940;
-       goto yy53;
+       goto yy54;
 yy1063:
        YYDEBUG(1063, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy1064;
 yy1064:
        YYDEBUG(1064, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= '6') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= '6') goto yy54;
        goto yy1065;
 yy1065:
        YYDEBUG(1065, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy1066;
 yy1066:
        YYDEBUG(1066, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != ':') goto yy53;
+       if(yych != ':') goto yy54;
        goto yy1067;
 yy1067:
        YYDEBUG(1067, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy1068;
        if(yych <= '6') goto yy1069;
-       goto yy53;
+       goto yy54;
 yy1068:
        YYDEBUG(1068, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1070;
-       goto yy53;
+       goto yy54;
 yy1069:
        YYDEBUG(1069, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != '0') goto yy53;
+       if(yych != '0') goto yy54;
        goto yy1070;
 yy1070:
        YYDEBUG(1070, *YYCURSOR);
@@ -12217,8 +12690,8 @@ yy1070:
 yy1071:
        YYDEBUG(1071, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy1072;
 yy1072:
        YYDEBUG(1072, *YYCURSOR);
@@ -12229,22 +12702,22 @@ yy1072:
 yy1073:
        YYDEBUG(1073, *YYCURSOR);
        if(yych <= ','){
-               if(yych != '+') goto yy53;
+               if(yych != '+') goto yy54;
                goto yy1074;
        } else {
                if(yych <= '-') goto yy1074;
-               if(yych <= '/') goto yy53;
+               if(yych <= '/') goto yy54;
                if(yych <= '9') goto yy1072;
-               goto yy53;
+               goto yy54;
        }
 yy1074:
        YYDEBUG(1074, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '1') goto yy1075;
        if(yych <= '2') goto yy1076;
        if(yych <= '9') goto yy1077;
-       goto yy53;
+       goto yy54;
 yy1075:
        YYDEBUG(1075, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12283,9 +12756,9 @@ yy1078:
 yy1079:
        YYDEBUG(1079, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy940;
-       goto yy53;
+       goto yy54;
 yy1080:
        YYDEBUG(1080, *YYCURSOR);
        yych = *++YYCURSOR;
@@ -12304,7 +12777,7 @@ yy1082:
        YYDEBUG(1082, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'C') goto yy1083;
-       if(yych != 'c') goto yy53;
+       if(yych != 'c') goto yy54;
        goto yy1083;
 yy1083:
        YYDEBUG(1083, *YYCURSOR);
@@ -12322,7 +12795,7 @@ yy1084:
        YYDEBUG(1084, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'V') goto yy1085;
-       if(yych != 'v') goto yy53;
+       if(yych != 'v') goto yy54;
        goto yy1085;
 yy1085:
        YYDEBUG(1085, *YYCURSOR);
@@ -12340,7 +12813,7 @@ yy1086:
        YYDEBUG(1086, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'T') goto yy1087;
-       if(yych != 't') goto yy53;
+       if(yych != 't') goto yy54;
        goto yy1087;
 yy1087:
        YYDEBUG(1087, *YYCURSOR);
@@ -12358,7 +12831,7 @@ yy1088:
        YYDEBUG(1088, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'P') goto yy1089;
-       if(yych != 'p') goto yy53;
+       if(yych != 'p') goto yy54;
        goto yy1089;
 yy1089:
        YYDEBUG(1089, *YYCURSOR);
@@ -12389,12 +12862,12 @@ yy1091:
        yych = *++YYCURSOR;
        if(yych == 'G') goto yy1094;
        if(yych == 'g') goto yy1094;
-       goto yy53;
+       goto yy54;
 yy1092:
        YYDEBUG(1092, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'R') goto yy1093;
-       if(yych != 'r') goto yy53;
+       if(yych != 'r') goto yy54;
        goto yy1093;
 yy1093:
        YYDEBUG(1093, *YYCURSOR);
@@ -12425,15 +12898,15 @@ yy1095:
        yych = *++YYCURSOR;
        if(yych <= 'Y'){
                if(yych == 'R') goto yy1096;
-               if(yych <= 'X') goto yy53;
+               if(yych <= 'X') goto yy54;
                goto yy1097;
        } else {
                if(yych <= 'r'){
-                       if(yych <= 'q') goto yy53;
+                       if(yych <= 'q') goto yy54;
                        goto yy1096;
                } else {
                        if(yych == 'y') goto yy1097;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1096:
@@ -12458,7 +12931,7 @@ yy1098:
        YYDEBUG(1098, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'B') goto yy1099;
-       if(yych != 'b') goto yy53;
+       if(yych != 'b') goto yy54;
        goto yy1099;
 yy1099:
        YYDEBUG(1099, *YYCURSOR);
@@ -12477,22 +12950,22 @@ yy1100:
        yych = *++YYCURSOR;
        if(yych <= 'N'){
                if(yych == 'L') goto yy1104;
-               if(yych <= 'M') goto yy53;
+               if(yych <= 'M') goto yy54;
                goto yy1103;
        } else {
                if(yych <= 'l'){
-                       if(yych <= 'k') goto yy53;
+                       if(yych <= 'k') goto yy54;
                        goto yy1104;
                } else {
                        if(yych == 'n') goto yy1103;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1101:
        YYDEBUG(1101, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych == 'N') goto yy1102;
-       if(yych != 'n') goto yy53;
+       if(yych != 'n') goto yy54;
        goto yy1102;
 yy1102:
        YYDEBUG(1102, *YYCURSOR);
@@ -12536,20 +13009,20 @@ yy1105:
        if(yych <= 'R'){
                if(yych <= 'N'){
                        if(yych == 'E') goto yy732;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'O') goto yy92;
-                       if(yych <= 'Q') goto yy53;
-                       goto yy91;
+                       if(yych <= 'O') goto yy96;
+                       if(yych <= 'Q') goto yy54;
+                       goto yy95;
                }
        } else {
                if(yych <= 'n'){
                        if(yych == 'e') goto yy732;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'o') goto yy92;
-                       if(yych == 'r') goto yy91;
-                       goto yy53;
+                       if(yych <= 'o') goto yy96;
+                       if(yych == 'r') goto yy95;
+                       goto yy54;
                }
        }
 yy1106:
@@ -12558,20 +13031,20 @@ yy1106:
        if(yych <= 'O'){
                if(yych <= 'H'){
                        if(yych == 'A') goto yy729;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'I') goto yy119;
-                       if(yych <= 'N') goto yy53;
-                       goto yy118;
+                       if(yych <= 'I') goto yy123;
+                       if(yych <= 'N') goto yy54;
+                       goto yy122;
                }
        } else {
                if(yych <= 'h'){
                        if(yych == 'a') goto yy729;
-                       goto yy53;
+                       goto yy54;
                } else {
-                       if(yych <= 'i') goto yy119;
-                       if(yych == 'o') goto yy118;
-                       goto yy53;
+                       if(yych <= 'i') goto yy123;
+                       if(yych == 'o') goto yy122;
+                       goto yy54;
                }
        }
 yy1107:
@@ -12579,53 +13052,53 @@ yy1107:
        yych = *++YYCURSOR;
        if(yych <= 'U'){
                if(yych <= 'D'){
-                       if(yych == 'A') goto yy127;
-                       goto yy53;
+                       if(yych == 'A') goto yy131;
+                       goto yy54;
                } else {
                        if(yych <= 'E') goto yy1109;
-                       if(yych <= 'T') goto yy53;
-                       goto yy128;
+                       if(yych <= 'T') goto yy54;
+                       goto yy132;
                }
        } else {
                if(yych <= 'd'){
-                       if(yych == 'a') goto yy127;
-                       goto yy53;
+                       if(yych == 'a') goto yy131;
+                       goto yy54;
                } else {
                        if(yych <= 'e') goto yy1109;
-                       if(yych == 'u') goto yy128;
-                       goto yy53;
+                       if(yych == 'u') goto yy132;
+                       goto yy54;
                }
        }
 yy1108:
        YYDEBUG(1108, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'E'){
-               if(yych == 'A') goto yy115;
-               if(yych <= 'D') goto yy53;
+               if(yych == 'A') goto yy119;
+               if(yych <= 'D') goto yy54;
                goto yy691;
        } else {
                if(yych <= 'a'){
-                       if(yych <= '`') goto yy53;
-                       goto yy115;
+                       if(yych <= '`') goto yy54;
+                       goto yy119;
                } else {
                        if(yych == 'e') goto yy691;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1109:
        YYDEBUG(1109, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yych <= 'P'){
-               if(yych == 'C') goto yy130;
-               if(yych <= 'O') goto yy53;
+               if(yych == 'C') goto yy134;
+               if(yych <= 'O') goto yy54;
                goto yy716;
        } else {
                if(yych <= 'c'){
-                       if(yych <= 'b') goto yy53;
-                       goto yy130;
+                       if(yych <= 'b') goto yy54;
+                       goto yy134;
                } else {
                        if(yych == 'p') goto yy716;
-                       goto yy53;
+                       goto yy54;
                }
        }
 yy1110:
@@ -12648,7 +13121,7 @@ yy1110:
        case '9':       goto yy860;
        case 'D':       case 'd':       goto yy665;
        case 'F':       case 'f':       goto yy659;
-       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy53;
+       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy54;
        case 'M':       case 'm':       goto yy660;
        case 'S':       case 's':       goto yy662;
        default:        goto yy648;
@@ -12666,7 +13139,7 @@ yy1111:
        case 'N':       case 'n':       goto yy813;
        case 'O':       case 'o':       goto yy812;
        case 'S':       case 's':       goto yy811;
-       default:        goto yy53;
+       default:        goto yy54;
        }
 yy1112:
        YYDEBUG(1112, *YYCURSOR);
@@ -12689,7 +13162,7 @@ yy1112:
        case ':':       goto yy1113;
        case 'D':       case 'd':       goto yy665;
        case 'F':       case 'f':       goto yy659;
-       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy53;
+       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy54;
        case 'M':       case 'm':       goto yy660;
        case 'S':       case 's':       goto yy662;
        default:        goto yy648;
@@ -12697,19 +13170,19 @@ yy1112:
 yy1113:
        YYDEBUG(1113, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy1131;
        if(yych <= '9') goto yy1132;
-       goto yy53;
+       goto yy54;
 yy1114:
        YYDEBUG(1114, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych == '-') goto yy861;
-       if(yych <= '/') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '/') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy1115;
 yy1115:
        YYDEBUG(1115, *YYCURSOR);
@@ -12745,7 +13218,7 @@ yy1115:
        case '6':       goto yy1122;
        case '7':
        case '8':
-       case '9':       goto yy64;
+       case '9':       goto yy68;
        case 'D':       case 'd':       goto yy907;
        case 'F':       case 'f':       goto yy901;
        case 'M':       case 'm':       goto yy902;
@@ -12756,7 +13229,7 @@ yy1115:
 yy1116:
        YYDEBUG(1116, *YYCURSOR);
 
-#line 981 "parse_date.re"
+#line 990 "parse_date.re"
 {
                DEBUG_OUTPUT("gnunocolon");
                TIMELIB_INIT;
@@ -12777,81 +13250,82 @@ yy1116:
                TIMELIB_DEINIT;
                return TIMELIB_GNU_NOCOLON;
        }
-#line 10523 "<stdout>"
+#line 10995 "<stdout>"
 yy1117:
        YYDEBUG(1117, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy1129;
        if(yych <= '9') goto yy1130;
-       goto yy53;
+       goto yy54;
 yy1118:
        YYDEBUG(1118, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '2') goto yy1128;
        if(yych <= '9') goto yy1127;
-       goto yy53;
+       goto yy54;
 yy1119:
        YYDEBUG(1119, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1127;
-       goto yy53;
+       goto yy54;
 yy1120:
        YYDEBUG(1120, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy1125;
        if(yych <= '6') goto yy1126;
        if(yych <= '9') goto yy1123;
-       goto yy53;
+       goto yy54;
 yy1121:
        YYDEBUG(1121, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '9') goto yy1123;
-       goto yy53;
+       goto yy54;
 yy1122:
        YYDEBUG(1122, *YYCURSOR);
        yych = *++YYCURSOR;
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '0') goto yy1123;
-       if(yych <= '9') goto yy64;
-       goto yy53;
+       if(yych <= '9') goto yy68;
+       goto yy54;
 yy1123:
        YYDEBUG(1123, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy1124;
-       if(yych <= '9') goto yy64;
+       if(yych <= '9') goto yy68;
        goto yy1124;
 yy1124:
        YYDEBUG(1124, *YYCURSOR);
 
-#line 1026 "parse_date.re"
+#line 1035 "parse_date.re"
 {
+               int tz_not_found;
                DEBUG_OUTPUT("iso8601nocolon");
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
@@ -12860,18 +13334,19 @@ yy1124:
                s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_ISO_NOCOLON;
        }
-#line 10595 "<stdout>"
+#line 11069 "<stdout>"
 yy1125:
        YYDEBUG(1125, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy1124;
        if(yych <= '9') goto yy922;
@@ -12881,18 +13356,18 @@ yy1126:
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy1124;
        if(yych <= '6') goto yy922;
-       if(yych <= '9') goto yy64;
+       if(yych <= '9') goto yy68;
        goto yy1124;
 yy1127:
        YYDEBUG(1127, *YYCURSOR);
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy1124;
        if(yych <= '9') goto yy922;
@@ -12902,7 +13377,7 @@ yy1128:
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '2'){
                if(yych <= '/') goto yy1124;
@@ -12918,10 +13393,10 @@ yy1129:
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '/') goto yy1124;
-       if(yych <= '0') goto yy64;
+       if(yych <= '0') goto yy68;
        if(yych <= '9') goto yy922;
        goto yy1124;
 yy1130:
@@ -12929,7 +13404,7 @@ yy1130:
        yyaccept = 19;
        yych = *(YYMARKER = ++YYCURSOR);
        if(yybm[0+yych] & 16) {
-               goto yy62;
+               goto yy66;
        }
        if(yych <= '2'){
                if(yych <= '/') goto yy1124;
@@ -12957,11 +13432,11 @@ yy1132:
 yy1133:
        YYDEBUG(1133, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '/') goto yy53;
+       if(yych <= '/') goto yy54;
        if(yych <= '5') goto yy1134;
        if(yych <= '6') goto yy1135;
        if(yych <= '9') goto yy673;
-       goto yy53;
+       goto yy54;
 yy1134:
        YYDEBUG(1134, *YYCURSOR);
        yyaccept = 10;
@@ -12998,7 +13473,7 @@ yy1136:
        case ':':       goto yy666;
        case 'D':       case 'd':       goto yy665;
        case 'F':       case 'f':       goto yy659;
-       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy53;
+       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy54;
        case 'M':       case 'm':       goto yy660;
        case 'S':       case 's':       goto yy662;
        default:        goto yy648;
@@ -13024,7 +13499,7 @@ yy1137:
        case ':':       goto yy1113;
        case 'D':       case 'd':       goto yy665;
        case 'F':       case 'f':       goto yy659;
-       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy53;
+       case 'H':       case 'T':       case 'W':       case 'Y':       case 'h':       case 't':       case 'w':       case 'y':       goto yy54;
        case 'M':       case 'm':       goto yy660;
        case 'S':       case 's':       goto yy662;
        default:        goto yy648;
@@ -13032,8 +13507,8 @@ yy1137:
 yy1138:
        YYDEBUG(1138, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= '0') goto yy53;
-       if(yych >= ':') goto yy53;
+       if(yych <= '0') goto yy54;
+       if(yych >= ':') goto yy54;
        goto yy1139;
 yy1139:
        YYDEBUG(1139, *YYCURSOR);
@@ -13049,7 +13524,7 @@ yy1140:
 yy1141:
        YYDEBUG(1141, *YYCURSOR);
 
-#line 920 "parse_date.re"
+#line 927 "parse_date.re"
 {
                timelib_ull i;
 
@@ -13072,55 +13547,78 @@ yy1141:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 10766 "<stdout>"
+#line 11240 "<stdout>"
 yy1142:
        YYDEBUG(1142, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'd') goto yy1143;
-       if(yych == 'm') goto yy1144;
-       goto yy49;
+       if(yych <= 'c'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'Z') goto yy49;
+               if(yych <= '`') goto yy3;
+               goto yy49;
+       } else {
+               if(yych <= 'l'){
+                       if(yych >= 'e') goto yy49;
+                       goto yy1143;
+               } else {
+                       if(yych <= 'm') goto yy1144;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
+       }
 yy1143:
        YYDEBUG(1143, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych == 'a') goto yy1151;
-       goto yy49;
+       if(yych <= '`'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'Z') goto yy50;
+               goto yy3;
+       } else {
+               if(yych <= 'a') goto yy1151;
+               if(yych <= 'z') goto yy50;
+               goto yy3;
+       }
 yy1144:
        YYDEBUG(1144, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'o') goto yy49;
-       goto yy1145;
+       if(yych <= '`'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'Z') goto yy50;
+               goto yy3;
+       } else {
+               if(yych == 'o') goto yy1145;
+               if(yych <= 'z') goto yy50;
+               goto yy3;
+       }
 yy1145:
        YYDEBUG(1145, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych != 'r') goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych != 'r') goto yy3;
        goto yy1146;
 yy1146:
        YYDEBUG(1146, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'r') goto yy49;
+       if(yych != 'r') goto yy54;
        goto yy1147;
 yy1147:
        YYDEBUG(1147, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'o') goto yy49;
+       if(yych != 'o') goto yy54;
        goto yy1148;
 yy1148:
        YYDEBUG(1148, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'w') goto yy49;
+       if(yych != 'w') goto yy54;
        goto yy1149;
 yy1149:
        YYDEBUG(1149, *YYCURSOR);
        ++YYCURSOR;
-       if(yybm[0+(yych = *YYCURSOR)] & 4) {
-               yych = *YYCURSOR;
-               goto yy48;
-       }
        goto yy1150;
 yy1150:
        YYDEBUG(1150, *YYCURSOR);
 
-#line 908 "parse_date.re"
+#line 915 "parse_date.re"
 {
                DEBUG_OUTPUT("tomorrow");
                TIMELIB_INIT;
@@ -13131,24 +13629,20 @@ yy1150:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 10807 "<stdout>"
+#line 11304 "<stdout>"
 yy1151:
        YYDEBUG(1151, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'y') goto yy49;
+       if(yych != 'y') goto yy3;
        goto yy1152;
 yy1152:
        YYDEBUG(1152, *YYCURSOR);
        ++YYCURSOR;
-       if(yybm[0+(yych = *YYCURSOR)] & 4) {
-               yych = *YYCURSOR;
-               goto yy48;
-       }
        goto yy1153;
 yy1153:
        YYDEBUG(1153, *YYCURSOR);
 
-#line 898 "parse_date.re"
+#line 905 "parse_date.re"
 {
                DEBUG_OUTPUT("today");
                TIMELIB_INIT;
@@ -13157,30 +13651,41 @@ yy1153:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 10827 "<stdout>"
+#line 11320 "<stdout>"
 yy1154:
        YYDEBUG(1154, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych <= 'u'){
-               if(yych == 'V') goto yy480;
-               goto yy49;
+       if(yych <= '`'){
+               if(yych <= 'U'){
+                       if(yych <= '@') goto yy3;
+                       goto yy49;
+               } else {
+                       if(yych <= 'V') goto yy480;
+                       if(yych <= 'Z') goto yy49;
+                       goto yy3;
+               }
        } else {
-               if(yych <= 'v') goto yy480;
-               if(yych >= 'x') goto yy49;
-               goto yy1155;
+               if(yych <= 'v'){
+                       if(yych <= 'u') goto yy49;
+                       goto yy480;
+               } else {
+                       if(yych <= 'w') goto yy1155;
+                       if(yych <= 'z') goto yy49;
+                       goto yy3;
+               }
        }
 yy1155:
        YYDEBUG(1155, *YYCURSOR);
        ++YYCURSOR;
-       if(yybm[0+(yych = *YYCURSOR)] & 4) {
-               yych = *YYCURSOR;
-               goto yy48;
-       }
+       if((yych = *YYCURSOR) <= '@')   goto yy1156;
+       if(yych <= 'Z') goto yy50;
+       if(yych <= '`') goto yy1156;
+       if(yych <= 'z') goto yy50;
        goto yy1156;
 yy1156:
        YYDEBUG(1156, *YYCURSOR);
 
-#line 889 "parse_date.re"
+#line 896 "parse_date.re"
 {
                DEBUG_OUTPUT("now");
                TIMELIB_INIT;
@@ -13188,54 +13693,65 @@ yy1156:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 10852 "<stdout>"
+#line 11356 "<stdout>"
 yy1157:
        YYDEBUG(1157, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 's') goto yy49;
-       goto yy1158;
+       if(yych <= '`'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'Z') goto yy49;
+               goto yy3;
+       } else {
+               if(yych == 's') goto yy1158;
+               if(yych <= 'z') goto yy49;
+               goto yy3;
+       }
 yy1158:
        YYDEBUG(1158, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 't') goto yy49;
-       goto yy1159;
+       if(yych <= '`'){
+               if(yych <= '@') goto yy3;
+               if(yych <= 'Z') goto yy50;
+               goto yy3;
+       } else {
+               if(yych == 't') goto yy1159;
+               if(yych <= 'z') goto yy50;
+               goto yy3;
+       }
 yy1159:
        YYDEBUG(1159, *YYCURSOR);
-       yych = *++YYCURSOR;
-       if(yych != 'e') goto yy49;
+       yyaccept = 1;
+       yych = *(YYMARKER = ++YYCURSOR);
+       if(yych != 'e') goto yy3;
        goto yy1160;
 yy1160:
        YYDEBUG(1160, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'r') goto yy49;
+       if(yych != 'r') goto yy54;
        goto yy1161;
 yy1161:
        YYDEBUG(1161, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'd') goto yy49;
+       if(yych != 'd') goto yy54;
        goto yy1162;
 yy1162:
        YYDEBUG(1162, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'a') goto yy49;
+       if(yych != 'a') goto yy54;
        goto yy1163;
 yy1163:
        YYDEBUG(1163, *YYCURSOR);
        yych = *++YYCURSOR;
-       if(yych != 'y') goto yy49;
+       if(yych != 'y') goto yy54;
        goto yy1164;
 yy1164:
        YYDEBUG(1164, *YYCURSOR);
        ++YYCURSOR;
-       if(yybm[0+(yych = *YYCURSOR)] & 4) {
-               yych = *YYCURSOR;
-               goto yy48;
-       }
        goto yy1165;
 yy1165:
        YYDEBUG(1165, *YYCURSOR);
 
-#line 877 "parse_date.re"
+#line 884 "parse_date.re"
 {
                DEBUG_OUTPUT("yesterday");
                TIMELIB_INIT;
@@ -13246,17 +13762,17 @@ yy1165:
                TIMELIB_DEINIT;
                return TIMELIB_RELATIVE;
        }
-#line 10892 "<stdout>"
+#line 11407 "<stdout>"
 }
 }
-#line 1374 "parse_date.re"
+#line 1394 "parse_date.re"
 
 }
 
 #define YYMAXFILL 22
 
 
-timelib_time* timelib_strtotime(char *s)
+timelib_time* timelib_strtotime(char *s, int *errors)
 {
        Scanner in;
        int t;
@@ -13277,6 +13793,7 @@ timelib_time* timelib_strtotime(char *s)
        in.time->f = -1;
        in.time->z = -1;
        in.time->dst = -1;
+       in.errors = 0;
 
        do {
                t = scan(&in);
@@ -13284,7 +13801,7 @@ timelib_time* timelib_strtotime(char *s)
        } while(t != EOI);
 
        free(in.str);
-
+       *errors = in.errors;
        return in.time;
 }
 
index c66642dbfb12a9b6341d4f1c6d8a1b2ec462eff8..b050dad24ddee7bafdfca8178d040fe00015454a 100644 (file)
@@ -139,6 +139,7 @@ typedef struct Scanner {
        int           fd;
        uchar        *lim, *str, *ptr, *cur, *tok, *pos;
        unsigned int  line, len;
+       int           errors;
 
        struct timelib_time *time;
 } Scanner;
@@ -673,7 +674,7 @@ static timelib_tz_lookup_table* zone_search(const char *word, int left, int righ
        }
 }
 
-static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, char **tz_name)
+static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
 {
        char *word;
        char *begin = *ptr, *end;
@@ -686,26 +687,25 @@ static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, char **tz_
        end = *ptr;
        word = calloc(1, end - begin + 1);
        memcpy(word, begin, end - begin);
-       *tz_name = NULL;
 
        if ((tp = zone_search(word, 0, sizeof(timelib_timezone_lookup)/sizeof(*timelib_timezone_lookup)-1))) {
                value = tp->value;
                *dst = tp->type;
-/*
-               if (tp->full_tz_name) {
-                       *tz_name = tp->full_tz_name;
-               }
-*/
+               *found = 1;
+       } else {
+               *found = 0;
        }
 
        *tz_abbr = word;
        return value;
 }
 
-static long timelib_get_zone(char **ptr, int *dst, timelib_time *t)
+static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found)
 {
        timelib_tzinfo *res;
 
+       *tz_not_found = 0;
+
        while (**ptr == ' ') {
                ++*ptr;
        }
@@ -713,37 +713,44 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t)
                ++*ptr;
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
 
                return -1 * timelib_parse_tz_cor(ptr);
        } else if (**ptr == '-') {
                ++*ptr;
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
 
                return timelib_parse_tz_cor(ptr);
        } else {
+               int found = 0;
                long offset;
-               char *tz_abbr, *tz_name;
+               char *tz_abbr;
 
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_ABBR;
-               offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &tz_name);
+               offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+#if 0
                /* If we found a TimeZone identifier, use it */
                if (tz_name) {
                        t->tz_info = timelib_parse_tzfile(tz_name);
                        t->zone_type = TIMELIB_ZONETYPE_ID;
                }
+#endif
                /* If we have a TimeZone identifier to start with, use it */
                if (strstr(tz_abbr, "/")) {
                        if ((res = timelib_parse_tzfile(tz_abbr)) != NULL) {
                                t->tz_info = res;
                                t->zone_type = TIMELIB_ZONETYPE_ID;
+                               found++;
                        }
                }
                if (t->zone_type != TIMELIB_ZONETYPE_ID) {
                        timelib_time_tz_abbr_update(t, tz_abbr);
                }
                free(tz_abbr);
+               *tz_not_found = (found == 0);
                return offset;
        }
 }
@@ -782,7 +789,7 @@ minutelz = [0-5][0-9];
 second = minute | "60";
 secondlz = minutelz | "60";
 meridian = [AaPp] "."? [Mm] "."?;
-tz = [A-Za-z]+ | [A-Z][a-z]+("/"[A-Z][a-z]+)+;
+tz = [A-Za-z]{1,4} | [A-Z][a-z]+("/"[A-Z][a-z]+)+;
 tzcorrection = [+-] hour24 ":"? minutelz?;
 
 month = "0"? [0-9] | "1"[0-2];
@@ -957,6 +964,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
        timeshort24 | timelong24 /* | iso8601short | iso8601norm */ | iso8601long /*| iso8601shorttz | iso8601normtz | iso8601longtz*/
        {
+               int tz_not_found;
                DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
@@ -971,7 +979,8 @@ relativetext = (reltextnumber space reltextunit)+;
                }
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_TIME24_WITH_ZONE;
@@ -1024,6 +1033,7 @@ relativetext = (reltextnumber space reltextunit)+;
 */
        iso8601nocolon /*| iso8601nocolontz*/
        {
+               int tz_not_found;
                DEBUG_OUTPUT("iso8601nocolon");
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
@@ -1032,7 +1042,8 @@ relativetext = (reltextnumber space reltextunit)+;
                s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_ISO_NOCOLON;
@@ -1148,6 +1159,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
        xmlrpc | xmlrpcnocolon | soap | wddx
        {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
                TIMELIB_HAVE_DATE();
@@ -1159,7 +1171,8 @@ relativetext = (reltextnumber space reltextunit)+;
                s->time->s = timelib_get_nr((char **) &ptr, 2);
                if (*ptr == '.') {
                        s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_XMLRPC_SOAP;
@@ -1241,6 +1254,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
        clf
        {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
                TIMELIB_HAVE_DATE();
@@ -1250,7 +1264,8 @@ relativetext = (reltextnumber space reltextunit)+;
                s->time->h = timelib_get_nr((char **) &ptr, 2);
                s->time->i = timelib_get_nr((char **) &ptr, 2);
                s->time->s = timelib_get_nr((char **) &ptr, 2);
-               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+               s->errors += tz_not_found;
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
        }
@@ -1308,14 +1323,17 @@ relativetext = (reltextnumber space reltextunit)+;
 
        tzcorrection | tz
        {
+               int tz_not_found;
                TIMELIB_INIT;
-               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+               s->errors += tz_not_found;
                TIMELIB_DEINIT;
                return TIMELIB_TIMEZONE;
        }
 
        dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz
        {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
                s->time->m = timelib_get_month((char **) &ptr);
@@ -1333,7 +1351,8 @@ relativetext = (reltextnumber space reltextunit)+;
                }
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_SHORTDATE_WITH_TIME;
@@ -1368,7 +1387,8 @@ relativetext = (reltextnumber space reltextunit)+;
 
        any
        {
-/*             printf("unexpected character: #%d, %c\n", *s->tok, *s->tok); */
+/*             printf("unexpected character: #%d, %c ", *s->tok, *s->tok); */
+               s->errors++;
                goto std;
        }
 */
@@ -1376,7 +1396,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
 /*!max:re2c */
 
-timelib_time* timelib_strtotime(char *s)
+timelib_time* timelib_strtotime(char *s, int *errors)
 {
        Scanner in;
        int t;
@@ -1397,6 +1417,7 @@ timelib_time* timelib_strtotime(char *s)
        in.time->f = -1;
        in.time->z = -1;
        in.time->dst = -1;
+       in.errors = 0;
 
        do {
                t = scan(&in);
@@ -1404,7 +1425,7 @@ timelib_time* timelib_strtotime(char *s)
        } while(t != EOI);
 
        free(in.str);
-
+       *errors = in.errors;
        return in.time;
 }
 
index c66642dbfb12a9b6341d4f1c6d8a1b2ec462eff8..b050dad24ddee7bafdfca8178d040fe00015454a 100644 (file)
@@ -139,6 +139,7 @@ typedef struct Scanner {
        int           fd;
        uchar        *lim, *str, *ptr, *cur, *tok, *pos;
        unsigned int  line, len;
+       int           errors;
 
        struct timelib_time *time;
 } Scanner;
@@ -673,7 +674,7 @@ static timelib_tz_lookup_table* zone_search(const char *word, int left, int righ
        }
 }
 
-static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, char **tz_name)
+static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
 {
        char *word;
        char *begin = *ptr, *end;
@@ -686,26 +687,25 @@ static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, char **tz_
        end = *ptr;
        word = calloc(1, end - begin + 1);
        memcpy(word, begin, end - begin);
-       *tz_name = NULL;
 
        if ((tp = zone_search(word, 0, sizeof(timelib_timezone_lookup)/sizeof(*timelib_timezone_lookup)-1))) {
                value = tp->value;
                *dst = tp->type;
-/*
-               if (tp->full_tz_name) {
-                       *tz_name = tp->full_tz_name;
-               }
-*/
+               *found = 1;
+       } else {
+               *found = 0;
        }
 
        *tz_abbr = word;
        return value;
 }
 
-static long timelib_get_zone(char **ptr, int *dst, timelib_time *t)
+static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found)
 {
        timelib_tzinfo *res;
 
+       *tz_not_found = 0;
+
        while (**ptr == ' ') {
                ++*ptr;
        }
@@ -713,37 +713,44 @@ static long timelib_get_zone(char **ptr, int *dst, timelib_time *t)
                ++*ptr;
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
 
                return -1 * timelib_parse_tz_cor(ptr);
        } else if (**ptr == '-') {
                ++*ptr;
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_OFFSET;
+               *tz_not_found = 0;
 
                return timelib_parse_tz_cor(ptr);
        } else {
+               int found = 0;
                long offset;
-               char *tz_abbr, *tz_name;
+               char *tz_abbr;
 
                t->is_localtime = 1;
                t->zone_type = TIMELIB_ZONETYPE_ABBR;
-               offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &tz_name);
+               offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
+#if 0
                /* If we found a TimeZone identifier, use it */
                if (tz_name) {
                        t->tz_info = timelib_parse_tzfile(tz_name);
                        t->zone_type = TIMELIB_ZONETYPE_ID;
                }
+#endif
                /* If we have a TimeZone identifier to start with, use it */
                if (strstr(tz_abbr, "/")) {
                        if ((res = timelib_parse_tzfile(tz_abbr)) != NULL) {
                                t->tz_info = res;
                                t->zone_type = TIMELIB_ZONETYPE_ID;
+                               found++;
                        }
                }
                if (t->zone_type != TIMELIB_ZONETYPE_ID) {
                        timelib_time_tz_abbr_update(t, tz_abbr);
                }
                free(tz_abbr);
+               *tz_not_found = (found == 0);
                return offset;
        }
 }
@@ -782,7 +789,7 @@ minutelz = [0-5][0-9];
 second = minute | "60";
 secondlz = minutelz | "60";
 meridian = [AaPp] "."? [Mm] "."?;
-tz = [A-Za-z]+ | [A-Z][a-z]+("/"[A-Z][a-z]+)+;
+tz = [A-Za-z]{1,4} | [A-Z][a-z]+("/"[A-Z][a-z]+)+;
 tzcorrection = [+-] hour24 ":"? minutelz?;
 
 month = "0"? [0-9] | "1"[0-2];
@@ -957,6 +964,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
        timeshort24 | timelong24 /* | iso8601short | iso8601norm */ | iso8601long /*| iso8601shorttz | iso8601normtz | iso8601longtz*/
        {
+               int tz_not_found;
                DEBUG_OUTPUT("timeshort24 | timelong24 | iso8601long");
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
@@ -971,7 +979,8 @@ relativetext = (reltextnumber space reltextunit)+;
                }
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_TIME24_WITH_ZONE;
@@ -1024,6 +1033,7 @@ relativetext = (reltextnumber space reltextunit)+;
 */
        iso8601nocolon /*| iso8601nocolontz*/
        {
+               int tz_not_found;
                DEBUG_OUTPUT("iso8601nocolon");
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
@@ -1032,7 +1042,8 @@ relativetext = (reltextnumber space reltextunit)+;
                s->time->s = timelib_get_nr((char **) &ptr, 2);
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_ISO_NOCOLON;
@@ -1148,6 +1159,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
        xmlrpc | xmlrpcnocolon | soap | wddx
        {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
                TIMELIB_HAVE_DATE();
@@ -1159,7 +1171,8 @@ relativetext = (reltextnumber space reltextunit)+;
                s->time->s = timelib_get_nr((char **) &ptr, 2);
                if (*ptr == '.') {
                        s->time->f = timelib_get_frac_nr((char **) &ptr, 9);
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_XMLRPC_SOAP;
@@ -1241,6 +1254,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
        clf
        {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_TIME();
                TIMELIB_HAVE_DATE();
@@ -1250,7 +1264,8 @@ relativetext = (reltextnumber space reltextunit)+;
                s->time->h = timelib_get_nr((char **) &ptr, 2);
                s->time->i = timelib_get_nr((char **) &ptr, 2);
                s->time->s = timelib_get_nr((char **) &ptr, 2);
-               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+               s->errors += tz_not_found;
                TIMELIB_DEINIT;
                return TIMELIB_CLF;
        }
@@ -1308,14 +1323,17 @@ relativetext = (reltextnumber space reltextunit)+;
 
        tzcorrection | tz
        {
+               int tz_not_found;
                TIMELIB_INIT;
-               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+               s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+               s->errors += tz_not_found;
                TIMELIB_DEINIT;
                return TIMELIB_TIMEZONE;
        }
 
        dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz
        {
+               int tz_not_found;
                TIMELIB_INIT;
                TIMELIB_HAVE_DATE();
                s->time->m = timelib_get_month((char **) &ptr);
@@ -1333,7 +1351,8 @@ relativetext = (reltextnumber space reltextunit)+;
                }
 
                if (*ptr != '\0') {
-                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time);
+                       s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found);
+                       s->errors += tz_not_found;
                }
                TIMELIB_DEINIT;
                return TIMELIB_SHORTDATE_WITH_TIME;
@@ -1368,7 +1387,8 @@ relativetext = (reltextnumber space reltextunit)+;
 
        any
        {
-/*             printf("unexpected character: #%d, %c\n", *s->tok, *s->tok); */
+/*             printf("unexpected character: #%d, %c ", *s->tok, *s->tok); */
+               s->errors++;
                goto std;
        }
 */
@@ -1376,7 +1396,7 @@ relativetext = (reltextnumber space reltextunit)+;
 
 /*!max:re2c */
 
-timelib_time* timelib_strtotime(char *s)
+timelib_time* timelib_strtotime(char *s, int *errors)
 {
        Scanner in;
        int t;
@@ -1397,6 +1417,7 @@ timelib_time* timelib_strtotime(char *s)
        in.time->f = -1;
        in.time->z = -1;
        in.time->dst = -1;
+       in.errors = 0;
 
        do {
                t = scan(&in);
@@ -1404,7 +1425,7 @@ timelib_time* timelib_strtotime(char *s)
        } while(t != EOI);
 
        free(in.str);
-
+       *errors = in.errors;
        return in.time;
 }
 
index 8e9bde2668d6a94698c25b2ebf9790d02270b837..aabdadd0fbba1aefb21779143c3701dd9b44f800 100644 (file)
@@ -46,7 +46,7 @@ timelib_sll timelib_days_in_month(timelib_sll y, timelib_sll m);
 void timelib_isoweek_from_date(timelib_sll y, timelib_sll m, timelib_sll d, timelib_sll *iw, timelib_sll *iy);
 
 /* From parse_date.re */
-timelib_time *timelib_strtotime(char *s);
+timelib_time *timelib_strtotime(char *s, int *errors);
 void timelib_fill_holes(timelib_time *parsed, timelib_time *now, int options);
 char *timelib_timezone_id_from_abbr(const char *abbr);
 
index 798f77e3214ea9727bf7a995fc395a55c68f05c9..581e0e394a7db4acc301fe8d75c28a68902d5884 100644 (file)
@@ -359,14 +359,14 @@ PHP_FUNCTION(gmdate)
 signed long php_parse_date(char *string, signed long *now)
 {
        timelib_time *parsed_time;
-       int           error;
+       int           error1, error2;
        signed long   retval;
 
-       parsed_time = timelib_strtotime(string);
+       parsed_time = timelib_strtotime(string, &error1);
        timelib_update_ts(parsed_time, NULL);
-       retval = timelib_date_to_int(parsed_time, &error);
+       retval = timelib_date_to_int(parsed_time, &error2);
        timelib_time_dtor(parsed_time);
-       if (error) {
+       if (error1 || error2) {
                return -1;
        }
        return retval;
@@ -378,7 +378,7 @@ signed long php_parse_date(char *string, signed long *now)
 PHP_FUNCTION(strtotime)
 {
        char *times, *initial_ts;
-       int   time_len, error;
+       int   time_len, error1, error2;
        long  preset_ts, ts;
 
        timelib_time *t, *now;
@@ -392,7 +392,7 @@ PHP_FUNCTION(strtotime)
 
                initial_ts = emalloc(25);
                snprintf(initial_ts, 24, "@%lu", preset_ts);
-               t = timelib_strtotime(initial_ts);
+               t = timelib_strtotime(initial_ts, &error1); /* we ignore the error here, as this should never fail */
                timelib_update_ts(t, tzi);
                timelib_unixtime2local(now, t->sse, tzi);
                timelib_time_dtor(t);
@@ -406,10 +406,10 @@ PHP_FUNCTION(strtotime)
                RETURN_FALSE;
        }
 
-       t = timelib_strtotime(times);
+       t = timelib_strtotime(times, &error1);
        timelib_fill_holes(t, now, 0);
        timelib_update_ts(t, tzi);
-       ts = timelib_date_to_int(t, &error);
+       ts = timelib_date_to_int(t, &error2);
 
        /* if tz_info is not a copy, avoid double free */
        if (now->tz_info == tzi) {
@@ -423,7 +423,7 @@ PHP_FUNCTION(strtotime)
        timelib_time_dtor(t);
        timelib_tzinfo_dtor(tzi);
 
-       if (error) {
+       if (error1 || error2) {
                RETURN_FALSE;
        } else {
                RETURN_LONG(ts);
diff --git a/ext/date/tests/bug33536.phpt b/ext/date/tests/bug33536.phpt
new file mode 100644 (file)
index 0000000..8ba6ffc
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+Bug #33456 (strtotime defaults to now even on non time string)
+--FILE--
+<?php
+date_timezone_set("GMT");
+var_dump(strtotime("monkey"));
+print date("Y-m-d", strtotime("monkey")) ."\n";
+print date("Y-m-d", false) ."\n";
+?>
+--EXPECT--
+bool(false)
+1970-01-01
+1970-01-01