1/* Generated by re2c 0.13.5 on Thu Jul 31 14:20:45 2014 */
2#line 1 "ext/date/lib/parse_date.re"
3/*
4   +----------------------------------------------------------------------+
5   | PHP Version 5                                                        |
6   +----------------------------------------------------------------------+
7   | Copyright (c) 1997-2014 The PHP Group                                |
8   +----------------------------------------------------------------------+
9   | This source file is subject to version 3.01 of the PHP license,      |
10   | that is bundled with this package in the file LICENSE, and is        |
11   | available through the world-wide-web at the following url:           |
12   | http://www.php.net/license/3_01.txt                                  |
13   | If you did not receive a copy of the PHP license and are unable to   |
14   | obtain it through the world-wide-web, please send a note to          |
15   | license@php.net so we can mail you a copy immediately.               |
16   +----------------------------------------------------------------------+
17   | Authors: Derick Rethans <derick@derickrethans.nl>                    |
18   +----------------------------------------------------------------------+
19 */
20
21/* $Id$ */
22
23#include "timelib.h"
24
25#include <stdio.h>
26#include <ctype.h>
27#include <math.h>
28#include <assert.h>
29
30#ifdef HAVE_STDLIB_H
31#include <stdlib.h>
32#endif
33#ifdef HAVE_STRING_H
34#include <string.h>
35#else
36#include <strings.h>
37#endif
38
39#if defined(_MSC_VER)
40# define strtoll(s, f, b) _atoi64(s)
41#elif !defined(HAVE_STRTOLL)
42# if defined(HAVE_ATOLL)
43#  define strtoll(s, f, b) atoll(s)
44# else
45#  define strtoll(s, f, b) strtol(s, f, b)
46# endif
47#endif
48
49#define TIMELIB_UNSET   -99999
50
51#define TIMELIB_SECOND  1
52#define TIMELIB_MINUTE  2
53#define TIMELIB_HOUR    3
54#define TIMELIB_DAY     4
55#define TIMELIB_MONTH   5
56#define TIMELIB_YEAR    6
57#define TIMELIB_WEEKDAY 7
58#define TIMELIB_SPECIAL 8
59
60#define EOI      257
61#define TIME     258
62#define DATE     259
63
64#define TIMELIB_XMLRPC_SOAP    260
65#define TIMELIB_TIME12         261
66#define TIMELIB_TIME24         262
67#define TIMELIB_GNU_NOCOLON    263
68#define TIMELIB_GNU_NOCOLON_TZ 264
69#define TIMELIB_ISO_NOCOLON    265
70
71#define TIMELIB_AMERICAN       266
72#define TIMELIB_ISO_DATE       267
73#define TIMELIB_DATE_FULL      268
74#define TIMELIB_DATE_TEXT      269
75#define TIMELIB_DATE_NOCOLON   270
76#define TIMELIB_PG_YEARDAY     271
77#define TIMELIB_PG_TEXT        272
78#define TIMELIB_PG_REVERSE     273
79#define TIMELIB_CLF            274
80#define TIMELIB_DATE_NO_DAY    275
81#define TIMELIB_SHORTDATE_WITH_TIME 276
82#define TIMELIB_DATE_FULL_POINTED 277
83#define TIMELIB_TIME24_WITH_ZONE 278
84#define TIMELIB_ISO_WEEK       279
85#define TIMELIB_LF_DAY_OF_MONTH 280
86#define TIMELIB_WEEK_DAY_OF_MONTH 281
87
88#define TIMELIB_TIMEZONE       300
89#define TIMELIB_AGO            301
90
91#define TIMELIB_RELATIVE       310
92
93#define TIMELIB_ERROR          999
94
95/* Some compilers like AIX, defines uchar in sys/types.h */
96#undef uchar
97typedef unsigned char uchar;
98
99#define   BSIZE    8192
100
101#define   YYCTYPE      uchar
102#define   YYCURSOR     cursor
103#define   YYLIMIT      s->lim
104#define   YYMARKER     s->ptr
105#define   YYFILL(n)    return EOI;
106
107#define   RET(i)       {s->cur = cursor; return i;}
108
109#define timelib_string_free free
110
111#define TIMELIB_HAVE_TIME() { if (s->time->have_time) { add_error(s, "Double time specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_time = 1; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; } }
112#define TIMELIB_UNHAVE_TIME() { s->time->have_time = 0; s->time->h = 0; s->time->i = 0; s->time->s = 0; s->time->f = 0; }
113#define TIMELIB_HAVE_DATE() { if (s->time->have_date) { add_error(s, "Double date specification"); timelib_string_free(str); return TIMELIB_ERROR; } else { s->time->have_date = 1; } }
114#define TIMELIB_UNHAVE_DATE() { s->time->have_date = 0; s->time->d = 0; s->time->m = 0; s->time->y = 0; }
115#define TIMELIB_HAVE_RELATIVE() { s->time->have_relative = 1; }
116#define TIMELIB_HAVE_WEEKDAY_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_weekday_relative = 1; }
117#define TIMELIB_HAVE_SPECIAL_RELATIVE() { s->time->have_relative = 1; s->time->relative.have_special_relative = 1; }
118#define TIMELIB_HAVE_TZ() { s->cur = cursor; if (s->time->have_zone) { s->time->have_zone > 1 ? add_error(s, "Double timezone specification") : add_warning(s, "Double timezone specification"); timelib_string_free(str); s->time->have_zone++; return TIMELIB_ERROR; } else { s->time->have_zone++; } }
119
120#define TIMELIB_INIT  s->cur = cursor; str = timelib_string(s); ptr = str
121#define TIMELIB_DEINIT timelib_string_free(str)
122#define TIMELIB_ADJUST_RELATIVE_WEEKDAY() if (in->time.have_weekday_relative && (in.rel.d > 0)) { in.rel.d -= 7; }
123
124#define TIMELIB_PROCESS_YEAR(x, l) { \
125    if (((x) == TIMELIB_UNSET) || ((l) >= 4)) { \
126    /*  (x) = 0; */          \
127    } else if ((x) < 100) {  \
128        if ((x) < 70) {      \
129            (x) += 2000;     \
130        } else {             \
131            (x) += 1900;     \
132        }                    \
133    }                        \
134}
135
136#ifdef DEBUG_PARSER
137#define DEBUG_OUTPUT(s) printf("%s\n", s);
138#define YYDEBUG(s,c) { if (s != -1) { printf("state: %d ", s); printf("[%c]\n", c); } }
139#else
140#define DEBUG_OUTPUT(s)
141#define YYDEBUG(s,c)
142#endif
143
144#include "timelib_structs.h"
145
146typedef struct timelib_elems {
147    unsigned int   c; /* Number of elements */
148    char         **v; /* Values */
149} timelib_elems;
150
151typedef struct Scanner {
152    int           fd;
153    uchar        *lim, *str, *ptr, *cur, *tok, *pos;
154    unsigned int  line, len;
155    struct timelib_error_container *errors;
156
157    struct timelib_time *time;
158    const timelib_tzdb  *tzdb;
159} Scanner;
160
161typedef struct _timelib_lookup_table {
162    const char *name;
163    int         type;
164    int         value;
165} timelib_lookup_table;
166
167typedef struct _timelib_relunit {
168    const char *name;
169    int         unit;
170    int         multiplier;
171} timelib_relunit;
172
173#define HOUR(a) (int)(a * 60)
174
175/* The timezone table. */
176const static timelib_tz_lookup_table timelib_timezone_lookup[] = {
177#include "timezonemap.h"
178    { NULL, 0, 0, NULL },
179};
180
181const static timelib_tz_lookup_table timelib_timezone_fallbackmap[] = {
182#include "fallbackmap.h"
183    { NULL, 0, 0, NULL },
184};
185
186const static timelib_tz_lookup_table timelib_timezone_utc[] = {
187    { "utc", 0, 0, "UTC" },
188};
189
190static timelib_relunit const timelib_relunit_lookup[] = {
191    { "sec",         TIMELIB_SECOND,  1 },
192    { "secs",        TIMELIB_SECOND,  1 },
193    { "second",      TIMELIB_SECOND,  1 },
194    { "seconds",     TIMELIB_SECOND,  1 },
195    { "min",         TIMELIB_MINUTE,  1 },
196    { "mins",        TIMELIB_MINUTE,  1 },
197    { "minute",      TIMELIB_MINUTE,  1 },
198    { "minutes",     TIMELIB_MINUTE,  1 },
199    { "hour",        TIMELIB_HOUR,    1 },
200    { "hours",       TIMELIB_HOUR,    1 },
201    { "day",         TIMELIB_DAY,     1 },
202    { "days",        TIMELIB_DAY,     1 },
203    { "week",        TIMELIB_DAY,     7 },
204    { "weeks",       TIMELIB_DAY,     7 },
205    { "fortnight",   TIMELIB_DAY,    14 },
206    { "fortnights",  TIMELIB_DAY,    14 },
207    { "forthnight",  TIMELIB_DAY,    14 },
208    { "forthnights", TIMELIB_DAY,    14 },
209    { "month",       TIMELIB_MONTH,   1 },
210    { "months",      TIMELIB_MONTH,   1 },
211    { "year",        TIMELIB_YEAR,    1 },
212    { "years",       TIMELIB_YEAR,    1 },
213
214    { "monday",      TIMELIB_WEEKDAY, 1 },
215    { "mon",         TIMELIB_WEEKDAY, 1 },
216    { "tuesday",     TIMELIB_WEEKDAY, 2 },
217    { "tue",         TIMELIB_WEEKDAY, 2 },
218    { "wednesday",   TIMELIB_WEEKDAY, 3 },
219    { "wed",         TIMELIB_WEEKDAY, 3 },
220    { "thursday",    TIMELIB_WEEKDAY, 4 },
221    { "thu",         TIMELIB_WEEKDAY, 4 },
222    { "friday",      TIMELIB_WEEKDAY, 5 },
223    { "fri",         TIMELIB_WEEKDAY, 5 },
224    { "saturday",    TIMELIB_WEEKDAY, 6 },
225    { "sat",         TIMELIB_WEEKDAY, 6 },
226    { "sunday",      TIMELIB_WEEKDAY, 0 },
227    { "sun",         TIMELIB_WEEKDAY, 0 },
228
229    { "weekday",     TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
230    { "weekdays",    TIMELIB_SPECIAL, TIMELIB_SPECIAL_WEEKDAY },
231    { NULL,          0,          0 }
232};
233
234/* The relative text table. */
235static timelib_lookup_table const timelib_reltext_lookup[] = {
236    { "first",    0,  1 },
237    { "next",     0,  1 },
238    { "second",   0,  2 },
239    { "third",    0,  3 },
240    { "fourth",   0,  4 },
241    { "fifth",    0,  5 },
242    { "sixth",    0,  6 },
243    { "seventh",  0,  7 },
244    { "eight",    0,  8 },
245    { "eighth",   0,  8 },
246    { "ninth",    0,  9 },
247    { "tenth",    0, 10 },
248    { "eleventh", 0, 11 },
249    { "twelfth",  0, 12 },
250    { "last",     0, -1 },
251    { "previous", 0, -1 },
252    { "this",     1,  0 },
253    { NULL,       1,  0 }
254};
255
256/* The month table. */
257static timelib_lookup_table const timelib_month_lookup[] = {
258    { "jan",  0,  1 },
259    { "feb",  0,  2 },
260    { "mar",  0,  3 },
261    { "apr",  0,  4 },
262    { "may",  0,  5 },
263    { "jun",  0,  6 },
264    { "jul",  0,  7 },
265    { "aug",  0,  8 },
266    { "sep",  0,  9 },
267    { "sept", 0,  9 },
268    { "oct",  0, 10 },
269    { "nov",  0, 11 },
270    { "dec",  0, 12 },
271    { "i",    0,  1 },
272    { "ii",   0,  2 },
273    { "iii",  0,  3 },
274    { "iv",   0,  4 },
275    { "v",    0,  5 },
276    { "vi",   0,  6 },
277    { "vii",  0,  7 },
278    { "viii", 0,  8 },
279    { "ix",   0,  9 },
280    { "x",    0, 10 },
281    { "xi",   0, 11 },
282    { "xii",  0, 12 },
283
284    { "january",   0,  1 },
285    { "february",  0,  2 },
286    { "march",     0,  3 },
287    { "april",     0,  4 },
288    { "may",       0,  5 },
289    { "june",      0,  6 },
290    { "july",      0,  7 },
291    { "august",    0,  8 },
292    { "september", 0,  9 },
293    { "october",   0, 10 },
294    { "november",  0, 11 },
295    { "december",  0, 12 },
296    {  NULL,       0,  0 }
297};
298
299#if 0
300static char* timelib_ltrim(char *s)
301{
302    char *ptr = s;
303    while (ptr[0] == ' ' || ptr[0] == '\t') {
304        ptr++;
305    }
306    return ptr;
307}
308#endif
309
310#if 0
311uchar *fill(Scanner *s, uchar *cursor){
312    if(!s->eof){
313        unsigned int cnt = s->tok - s->bot;
314        if(cnt){
315            memcpy(s->bot, s->tok, s->lim - s->tok);
316            s->tok = s->bot;
317            s->ptr -= cnt;
318            cursor -= cnt;
319            s->pos -= cnt;
320            s->lim -= cnt;
321        }
322        if((s->top - s->lim) < BSIZE){
323            uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar));
324            memcpy(buf, s->tok, s->lim - s->tok);
325            s->tok = buf;
326            s->ptr = &buf[s->ptr - s->bot];
327            cursor = &buf[cursor - s->bot];
328            s->pos = &buf[s->pos - s->bot];
329            s->lim = &buf[s->lim - s->bot];
330            s->top = &s->lim[BSIZE];
331            free(s->bot);
332            s->bot = buf;
333        }
334        if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){
335            s->eof = &s->lim[cnt]; *(s->eof)++ = '\n';
336        }
337        s->lim += cnt;
338    }
339    return cursor;
340}
341#endif
342
343static void add_warning(Scanner *s, char *error)
344{
345    s->errors->warning_count++;
346    s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
347    s->errors->warning_messages[s->errors->warning_count - 1].position = s->tok ? s->tok - s->str : 0;
348    s->errors->warning_messages[s->errors->warning_count - 1].character = s->tok ? *s->tok : 0;
349    s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
350}
351
352static void add_error(Scanner *s, char *error)
353{
354    s->errors->error_count++;
355    s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
356    s->errors->error_messages[s->errors->error_count - 1].position = s->tok ? s->tok - s->str : 0;
357    s->errors->error_messages[s->errors->error_count - 1].character = s->tok ? *s->tok : 0;
358    s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
359}
360
361static void add_pbf_warning(Scanner *s, char *error, char *sptr, char *cptr)
362{
363    s->errors->warning_count++;
364    s->errors->warning_messages = realloc(s->errors->warning_messages, s->errors->warning_count * sizeof(timelib_error_message));
365    s->errors->warning_messages[s->errors->warning_count - 1].position = cptr - sptr;
366    s->errors->warning_messages[s->errors->warning_count - 1].character = *cptr;
367    s->errors->warning_messages[s->errors->warning_count - 1].message = strdup(error);
368}
369
370static void add_pbf_error(Scanner *s, char *error, char *sptr, char *cptr)
371{
372    s->errors->error_count++;
373    s->errors->error_messages = realloc(s->errors->error_messages, s->errors->error_count * sizeof(timelib_error_message));
374    s->errors->error_messages[s->errors->error_count - 1].position = cptr - sptr;
375    s->errors->error_messages[s->errors->error_count - 1].character = *cptr;
376    s->errors->error_messages[s->errors->error_count - 1].message = strdup(error);
377}
378
379static timelib_sll timelib_meridian(char **ptr, timelib_sll h)
380{
381    timelib_sll retval = 0;
382
383    while (!strchr("AaPp", **ptr)) {
384        ++*ptr;
385    }
386    if (**ptr == 'a' || **ptr == 'A') {
387        if (h == 12) {
388            retval = -12;
389        }
390    } else if (h != 12) {
391        retval = 12;
392    }
393    ++*ptr;
394    if (**ptr == '.') {
395        *ptr += 3;
396    } else {
397        ++*ptr;
398    }
399    return retval;
400}
401
402static timelib_sll timelib_meridian_with_check(char **ptr, timelib_sll h)
403{
404    timelib_sll retval = 0;
405
406    while (**ptr && !strchr("AaPp", **ptr)) {
407        ++*ptr;
408    }
409    if(!**ptr) {
410        return TIMELIB_UNSET;
411    }
412    if (**ptr == 'a' || **ptr == 'A') {
413        if (h == 12) {
414            retval = -12;
415        }
416    } else if (h != 12) {
417        retval = 12;
418    }
419    ++*ptr;
420    if (**ptr == '.') {
421        ++*ptr;
422        if (**ptr != 'm' && **ptr != 'M') {
423            return TIMELIB_UNSET;
424        }
425        ++*ptr;
426        if (**ptr != '.' ) {
427            return TIMELIB_UNSET;
428        }
429        ++*ptr;
430    } else if (**ptr == 'm' || **ptr == 'M') {
431        ++*ptr;
432    } else {
433        return TIMELIB_UNSET;
434    }
435    return retval;
436}
437
438static char *timelib_string(Scanner *s)
439{
440    char *tmp = calloc(1, s->cur - s->tok + 1);
441    memcpy(tmp, s->tok, s->cur - s->tok);
442
443    return tmp;
444}
445
446static timelib_sll timelib_get_nr_ex(char **ptr, int max_length, int *scanned_length)
447{
448    char *begin, *end, *str;
449    timelib_sll tmp_nr = TIMELIB_UNSET;
450    int len = 0;
451
452    while ((**ptr < '0') || (**ptr > '9')) {
453        if (**ptr == '\0') {
454            return TIMELIB_UNSET;
455        }
456        ++*ptr;
457    }
458    begin = *ptr;
459    while ((**ptr >= '0') && (**ptr <= '9') && len < max_length) {
460        ++*ptr;
461        ++len;
462    }
463    end = *ptr;
464    if (scanned_length) {
465        *scanned_length = end - begin;
466    }
467    str = calloc(1, end - begin + 1);
468    memcpy(str, begin, end - begin);
469    tmp_nr = strtoll(str, NULL, 10);
470    free(str);
471    return tmp_nr;
472}
473
474static timelib_sll timelib_get_nr(char **ptr, int max_length)
475{
476    return timelib_get_nr_ex(ptr, max_length, NULL);
477}
478
479static void timelib_skip_day_suffix(char **ptr)
480{
481    if (isspace(**ptr)) {
482        return;
483    }
484    if (!strncasecmp(*ptr, "nd", 2) || !strncasecmp(*ptr, "rd", 2) ||!strncasecmp(*ptr, "st", 2) || !strncasecmp(*ptr, "th", 2)) {
485        *ptr += 2;
486    }
487}
488
489static double timelib_get_frac_nr(char **ptr, int max_length)
490{
491    char *begin, *end, *str;
492    double tmp_nr = TIMELIB_UNSET;
493    int len = 0;
494
495    while ((**ptr != '.') && (**ptr != ':') && ((**ptr < '0') || (**ptr > '9'))) {
496        if (**ptr == '\0') {
497            return TIMELIB_UNSET;
498        }
499        ++*ptr;
500    }
501    begin = *ptr;
502    while (((**ptr == '.') || (**ptr == ':') || ((**ptr >= '0') && (**ptr <= '9'))) && len < max_length) {
503        ++*ptr;
504        ++len;
505    }
506    end = *ptr;
507    str = calloc(1, end - begin + 1);
508    memcpy(str, begin, end - begin);
509    if (str[0] == ':') {
510        str[0] = '.';
511    }
512    tmp_nr = strtod(str, NULL);
513    free(str);
514    return tmp_nr;
515}
516
517static timelib_ull timelib_get_unsigned_nr(char **ptr, int max_length)
518{
519    timelib_ull dir = 1;
520
521    while (((**ptr < '0') || (**ptr > '9')) && (**ptr != '+') && (**ptr != '-')) {
522        if (**ptr == '\0') {
523            return TIMELIB_UNSET;
524        }
525        ++*ptr;
526    }
527
528    while (**ptr == '+' || **ptr == '-')
529    {
530        if (**ptr == '-') {
531            dir *= -1;
532        }
533        ++*ptr;
534    }
535    return dir * timelib_get_nr(ptr, max_length);
536}
537
538static long timelib_parse_tz_cor(char **ptr)
539{
540    char *begin = *ptr, *end;
541    long  tmp;
542
543    while (isdigit(**ptr) || **ptr == ':') {
544        ++*ptr;
545    }
546    end = *ptr;
547    switch (end - begin) {
548        case 1:
549        case 2:
550            return HOUR(strtol(begin, NULL, 10));
551            break;
552        case 3:
553        case 4:
554            if (begin[1] == ':') {
555                tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 2, NULL, 10);
556                return tmp;
557            } else if (begin[2] == ':') {
558                tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
559                return tmp;
560            } else {
561                tmp = strtol(begin, NULL, 10);
562                return HOUR(tmp / 100) + tmp % 100;
563            }
564        case 5:
565            tmp = HOUR(strtol(begin, NULL, 10)) + strtol(begin + 3, NULL, 10);
566            return tmp;
567    }
568    return 0;
569}
570
571static timelib_sll timelib_lookup_relative_text(char **ptr, int *behavior)
572{
573    char *word;
574    char *begin = *ptr, *end;
575    timelib_sll  value = 0;
576    const timelib_lookup_table *tp;
577
578    while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
579        ++*ptr;
580    }
581    end = *ptr;
582    word = calloc(1, end - begin + 1);
583    memcpy(word, begin, end - begin);
584
585    for (tp = timelib_reltext_lookup; tp->name; tp++) {
586        if (strcasecmp(word, tp->name) == 0) {
587            value = tp->value;
588            *behavior = tp->type;
589        }
590    }
591
592    free(word);
593    return value;
594}
595
596static timelib_sll timelib_get_relative_text(char **ptr, int *behavior)
597{
598    while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '/') {
599        ++*ptr;
600    }
601    return timelib_lookup_relative_text(ptr, behavior);
602}
603
604static long timelib_lookup_month(char **ptr)
605{
606    char *word;
607    char *begin = *ptr, *end;
608    long  value = 0;
609    const timelib_lookup_table *tp;
610
611    while ((**ptr >= 'A' && **ptr <= 'Z') || (**ptr >= 'a' && **ptr <= 'z')) {
612        ++*ptr;
613    }
614    end = *ptr;
615    word = calloc(1, end - begin + 1);
616    memcpy(word, begin, end - begin);
617
618    for (tp = timelib_month_lookup; tp->name; tp++) {
619        if (strcasecmp(word, tp->name) == 0) {
620            value = tp->value;
621        }
622    }
623
624    free(word);
625    return value;
626}
627
628static long timelib_get_month(char **ptr)
629{
630    while (**ptr == ' ' || **ptr == '\t' || **ptr == '-' || **ptr == '.' || **ptr == '/') {
631        ++*ptr;
632    }
633    return timelib_lookup_month(ptr);
634}
635
636static void timelib_eat_spaces(char **ptr)
637{
638    while (**ptr == ' ' || **ptr == '\t') {
639        ++*ptr;
640    }
641}
642
643static void timelib_eat_until_separator(char **ptr)
644{
645    ++*ptr;
646    while (strchr(" \t.,:;/-0123456789", **ptr) == NULL) {
647        ++*ptr;
648    }
649}
650
651static const timelib_relunit* timelib_lookup_relunit(char **ptr)
652{
653    char *word;
654    char *begin = *ptr, *end;
655    const timelib_relunit *tp, *value = NULL;
656
657    while (**ptr != '\0' && **ptr != ' ' && **ptr != ',' && **ptr != '\t' && **ptr != ';' && **ptr != ':' &&
658           **ptr != '/' && **ptr != '.' && **ptr != '-' && **ptr != '(' && **ptr != ')' ) {
659        ++*ptr;
660    }
661    end = *ptr;
662    word = calloc(1, end - begin + 1);
663    memcpy(word, begin, end - begin);
664
665    for (tp = timelib_relunit_lookup; tp->name; tp++) {
666        if (strcasecmp(word, tp->name) == 0) {
667            value = tp;
668            break;
669        }
670    }
671
672    free(word);
673    return value;
674}
675
676static void timelib_set_relative(char **ptr, timelib_sll amount, int behavior, Scanner *s)
677{
678    const timelib_relunit* relunit;
679
680    if (!(relunit = timelib_lookup_relunit(ptr))) {
681        return;
682    }
683
684    switch (relunit->unit) {
685        case TIMELIB_SECOND: s->time->relative.s += amount * relunit->multiplier; break;
686        case TIMELIB_MINUTE: s->time->relative.i += amount * relunit->multiplier; break;
687        case TIMELIB_HOUR:   s->time->relative.h += amount * relunit->multiplier; break;
688        case TIMELIB_DAY:    s->time->relative.d += amount * relunit->multiplier; break;
689        case TIMELIB_MONTH:  s->time->relative.m += amount * relunit->multiplier; break;
690        case TIMELIB_YEAR:   s->time->relative.y += amount * relunit->multiplier; break;
691
692        case TIMELIB_WEEKDAY:
693            TIMELIB_HAVE_WEEKDAY_RELATIVE();
694            TIMELIB_UNHAVE_TIME();
695            s->time->relative.d += (amount > 0 ? amount - 1 : amount) * 7;
696            s->time->relative.weekday = relunit->multiplier;
697            s->time->relative.weekday_behavior = behavior;
698            break;
699
700        case TIMELIB_SPECIAL:
701            TIMELIB_HAVE_SPECIAL_RELATIVE();
702            TIMELIB_UNHAVE_TIME();
703            s->time->relative.special.type = relunit->multiplier;
704            s->time->relative.special.amount = amount;
705    }
706}
707
708const static timelib_tz_lookup_table* zone_search(const char *word, long gmtoffset, int isdst)
709{
710    int first_found = 0;
711    const timelib_tz_lookup_table  *tp, *first_found_elem = NULL;
712    const timelib_tz_lookup_table  *fmp;
713
714    if (strcasecmp("utc", word) == 0 || strcasecmp("gmt", word) == 0) {
715        return timelib_timezone_utc;
716    }
717
718    for (tp = timelib_timezone_lookup; tp->name; tp++) {
719        if (strcasecmp(word, tp->name) == 0) {
720            if (!first_found) {
721                first_found = 1;
722                first_found_elem = tp;
723                if (gmtoffset == -1) {
724                    return tp;
725                }
726            }
727            if (tp->gmtoffset == gmtoffset) {
728                return tp;
729            }
730        }
731    }
732    if (first_found) {
733        return first_found_elem;
734    }
735
736    for (tp = timelib_timezone_lookup; tp->name; tp++) {
737        if (tp->full_tz_name && strcasecmp(word, tp->full_tz_name) == 0) {
738            if (!first_found) {
739                first_found = 1;
740                first_found_elem = tp;
741                if (gmtoffset == -1) {
742                    return tp;
743                }
744            }
745            if (tp->gmtoffset == gmtoffset) {
746                return tp;
747            }
748        }
749    }
750    if (first_found) {
751        return first_found_elem;
752    }
753
754
755    /* Still didn't find anything, let's find the zone solely based on
756     * offset/isdst then */
757    for (fmp = timelib_timezone_fallbackmap; fmp->name; fmp++) {
758        if ((fmp->gmtoffset * 60) == gmtoffset && fmp->type == isdst) {
759            return fmp;
760        }
761    }
762    return NULL;
763}
764
765static long timelib_lookup_zone(char **ptr, int *dst, char **tz_abbr, int *found)
766{
767    char *word;
768    char *begin = *ptr, *end;
769    long  value = 0;
770    const timelib_tz_lookup_table *tp;
771
772    while (**ptr != '\0' && **ptr != ')' && **ptr != ' ') {
773        ++*ptr;
774    }
775    end = *ptr;
776    word = calloc(1, end - begin + 1);
777    memcpy(word, begin, end - begin);
778
779    if ((tp = zone_search(word, -1, 0))) {
780        value = -tp->gmtoffset / 60;
781        *dst = tp->type;
782        value += tp->type * 60;
783        *found = 1;
784    } else {
785        *found = 0;
786    }
787
788    *tz_abbr = word;
789    return value;
790}
791
792static long timelib_get_zone(char **ptr, int *dst, timelib_time *t, int *tz_not_found, const timelib_tzdb *tzdb, timelib_tz_get_wrapper tz_wrapper)
793{
794    timelib_tzinfo *res;
795    long            retval = 0;
796
797    *tz_not_found = 0;
798
799    while (**ptr == ' ' || **ptr == '\t' || **ptr == '(') {
800        ++*ptr;
801    }
802    if ((*ptr)[0] == 'G' && (*ptr)[1] == 'M' && (*ptr)[2] == 'T' && ((*ptr)[3] == '+' || (*ptr)[3] == '-')) {
803        *ptr += 3;
804    }
805    if (**ptr == '+') {
806        ++*ptr;
807        t->is_localtime = 1;
808        t->zone_type = TIMELIB_ZONETYPE_OFFSET;
809        *tz_not_found = 0;
810        t->dst = 0;
811
812        retval = -1 * timelib_parse_tz_cor(ptr);
813    } else if (**ptr == '-') {
814        ++*ptr;
815        t->is_localtime = 1;
816        t->zone_type = TIMELIB_ZONETYPE_OFFSET;
817        *tz_not_found = 0;
818        t->dst = 0;
819
820        retval = timelib_parse_tz_cor(ptr);
821    } else {
822        int found = 0;
823        long offset;
824        char *tz_abbr;
825
826        t->is_localtime = 1;
827
828        offset = timelib_lookup_zone(ptr, dst, &tz_abbr, &found);
829        if (found) {
830            t->zone_type = TIMELIB_ZONETYPE_ABBR;
831        }
832#if 0
833        /* If we found a TimeZone identifier, use it */
834        if (tz_name) {
835            t->tz_info = timelib_parse_tzfile(tz_name);
836            t->zone_type = TIMELIB_ZONETYPE_ID;
837        }
838#endif
839        /* If we have a TimeZone identifier to start with, use it */
840        if (strstr(tz_abbr, "/") || strcmp(tz_abbr, "UTC") == 0) {
841            if ((res = tz_wrapper(tz_abbr, tzdb)) != NULL) {
842                t->tz_info = res;
843                t->zone_type = TIMELIB_ZONETYPE_ID;
844                found++;
845            }
846        }
847        if (found && t->zone_type != TIMELIB_ZONETYPE_ID) {
848            timelib_time_tz_abbr_update(t, tz_abbr);
849        }
850        free(tz_abbr);
851        *tz_not_found = (found == 0);
852        retval = offset;
853    }
854    while (**ptr == ')') {
855        ++*ptr;
856    }
857    return retval;
858}
859
860#define timelib_split_free(arg) {       \
861    int i;                         \
862    for (i = 0; i < arg.c; i++) {  \
863        free(arg.v[i]);            \
864    }                              \
865    if (arg.v) {                   \
866        free(arg.v);               \
867    }                              \
868}
869
870static int scan(Scanner *s, timelib_tz_get_wrapper tz_get_wrapper)
871{
872    uchar *cursor = s->cur;
873    char *str, *ptr = NULL;
874
875std:
876    s->tok = cursor;
877    s->len = 0;
878#line 1001 "ext/date/lib/parse_date.re"
879
880
881
882#line 883 "ext/date/lib/parse_date.c"
883{
884    YYCTYPE yych;
885    unsigned int yyaccept = 0;
886    static const unsigned char yybm[] = {
887          0,   0,   0,   0,   0,   0,   0,   0,
888          0, 100,   0,   0,   0,   0,   0,   0,
889          0,   0,   0,   0,   0,   0,   0,   0,
890          0,   0,   0,   0,   0,   0,   0,   0,
891        100,   0,   0,   0,   0,   0,   0,   0,
892          0,   0,   0, 128,  64, 160,  96,   0,
893          2,   2,   2,   2,   2,   2,   2,   2,
894          2,   2,   0,   0,   0,   0,   0,   0,
895          0,   8,   8,   8,   8,   8,   8,   8,
896          8,   8,   8,   8,   8,   8,   8,   8,
897          8,   8,   8,   8,   8,   8,   8,   8,
898          8,   8,   8,   0,   0,   0,   0,   0,
899          0,  24,  24,  24,  88,  24,  24,  24,
900         88,  24,  24,  24,  24,  24,  88,  24,
901         24,  24,  88,  88,  88,  24,  24,  24,
902         24,  24,  24,   0,   0,   0,   0,   0,
903          0,   0,   0,   0,   0,   0,   0,   0,
904          0,   0,   0,   0,   0,   0,   0,   0,
905          0,   0,   0,   0,   0,   0,   0,   0,
906          0,   0,   0,   0,   0,   0,   0,   0,
907          0,   0,   0,   0,   0,   0,   0,   0,
908          0,   0,   0,   0,   0,   0,   0,   0,
909          0,   0,   0,   0,   0,   0,   0,   0,
910          0,   0,   0,   0,   0,   0,   0,   0,
911          0,   0,   0,   0,   0,   0,   0,   0,
912          0,   0,   0,   0,   0,   0,   0,   0,
913          0,   0,   0,   0,   0,   0,   0,   0,
914          0,   0,   0,   0,   0,   0,   0,   0,
915          0,   0,   0,   0,   0,   0,   0,   0,
916          0,   0,   0,   0,   0,   0,   0,   0,
917          0,   0,   0,   0,   0,   0,   0,   0,
918          0,   0,   0,   0,   0,   0,   0,   0,
919    };
920
921    YYDEBUG(0, *YYCURSOR);
922    if ((YYLIMIT - YYCURSOR) < 31) YYFILL(31);
923    yych = *YYCURSOR;
924    YYDEBUG(-1, yych);
925    switch (yych) {
926    case 0x00:
927    case '\n':  goto yy51;
928    case '\t':
929    case ' ':   goto yy48;
930    case '(':   goto yy45;
931    case '+':
932    case '-':   goto yy30;
933    case ',':
934    case '.':   goto yy50;
935    case '0':   goto yy25;
936    case '1':   goto yy26;
937    case '2':   goto yy27;
938    case '3':   goto yy28;
939    case '4':
940    case '5':
941    case '6':
942    case '7':
943    case '8':
944    case '9':   goto yy29;
945    case '@':   goto yy11;
946    case 'A':   goto yy36;
947    case 'B':   goto yy17;
948    case 'C':
949    case 'H':
950    case 'K':
951    case 'Q':
952    case 'R':
953    case 'U':
954    case 'Z':   goto yy46;
955    case 'D':   goto yy40;
956    case 'E':   goto yy21;
957    case 'F':   goto yy13;
958    case 'G':   goto yy44;
959    case 'I':   goto yy31;
960    case 'J':   goto yy34;
961    case 'L':   goto yy15;
962    case 'M':   goto yy7;
963    case 'N':   goto yy5;
964    case 'O':   goto yy38;
965    case 'P':   goto yy23;
966    case 'S':   goto yy19;
967    case 'T':   goto yy9;
968    case 'V':   goto yy32;
969    case 'W':   goto yy42;
970    case 'X':   goto yy33;
971    case 'Y':   goto yy2;
972    case 'a':   goto yy37;
973    case 'b':   goto yy18;
974    case 'c':
975    case 'g':
976    case 'h':
977    case 'i':
978    case 'k':
979    case 'q':
980    case 'r':
981    case 'u':
982    case 'v':
983    case 'x':
984    case 'z':   goto yy47;
985    case 'd':   goto yy41;
986    case 'e':   goto yy22;
987    case 'f':   goto yy14;
988    case 'j':   goto yy35;
989    case 'l':   goto yy16;
990    case 'm':   goto yy8;
991    case 'n':   goto yy6;
992    case 'o':   goto yy39;
993    case 'p':   goto yy24;
994    case 's':   goto yy20;
995    case 't':   goto yy10;
996    case 'w':   goto yy43;
997    case 'y':   goto yy4;
998    default:    goto yy53;
999    }
1000yy2:
1001    YYDEBUG(2, *YYCURSOR);
1002    ++YYCURSOR;
1003    if ((yych = *YYCURSOR) <= 'E') {
1004        if (yych <= ')') {
1005            if (yych >= ')') goto yy139;
1006        } else {
1007            if (yych <= '@') goto yy3;
1008            if (yych <= 'D') goto yy140;
1009            goto yy1523;
1010        }
1011    } else {
1012        if (yych <= 'd') {
1013            if (yych <= 'Z') goto yy140;
1014            if (yych >= 'a') goto yy145;
1015        } else {
1016            if (yych <= 'e') goto yy1532;
1017            if (yych <= 'z') goto yy145;
1018        }
1019    }
1020yy3:
1021    YYDEBUG(3, *YYCURSOR);
1022#line 1681 "ext/date/lib/parse_date.re"
1023    {
1024        int tz_not_found;
1025        DEBUG_OUTPUT("tzcorrection | tz");
1026        TIMELIB_INIT;
1027        TIMELIB_HAVE_TZ();
1028        s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
1029        if (tz_not_found) {
1030            add_error(s, "The timezone could not be found in the database");
1031        }
1032        TIMELIB_DEINIT;
1033        return TIMELIB_TIMEZONE;
1034    }
1035#line 1036 "ext/date/lib/parse_date.c"
1036yy4:
1037    YYDEBUG(4, *YYCURSOR);
1038    yych = *++YYCURSOR;
1039    if (yych <= 'E') {
1040        if (yych <= ')') {
1041            if (yych <= '(') goto yy3;
1042            goto yy139;
1043        } else {
1044            if (yych <= '@') goto yy3;
1045            if (yych <= 'D') goto yy140;
1046            goto yy1523;
1047        }
1048    } else {
1049        if (yych <= 'd') {
1050            if (yych <= 'Z') goto yy140;
1051            if (yych <= '`') goto yy3;
1052            goto yy140;
1053        } else {
1054            if (yych <= 'e') goto yy1523;
1055            if (yych <= 'z') goto yy140;
1056            goto yy3;
1057        }
1058    }
1059yy5:
1060    YYDEBUG(5, *YYCURSOR);
1061    yych = *++YYCURSOR;
1062    if (yych <= 'O') {
1063        if (yych <= 'D') {
1064            if (yych == ')') goto yy139;
1065            if (yych <= '@') goto yy3;
1066            goto yy140;
1067        } else {
1068            if (yych <= 'H') {
1069                if (yych <= 'E') goto yy1494;
1070                goto yy140;
1071            } else {
1072                if (yych <= 'I') goto yy1495;
1073                if (yych <= 'N') goto yy140;
1074                goto yy1493;
1075            }
1076        }
1077    } else {
1078        if (yych <= 'h') {
1079            if (yych <= '`') {
1080                if (yych <= 'Z') goto yy140;
1081                goto yy3;
1082            } else {
1083                if (yych == 'e') goto yy1510;
1084                goto yy145;
1085            }
1086        } else {
1087            if (yych <= 'n') {
1088                if (yych <= 'i') goto yy1511;
1089                goto yy145;
1090            } else {
1091                if (yych <= 'o') goto yy1509;
1092                if (yych <= 'z') goto yy145;
1093                goto yy3;
1094            }
1095        }
1096    }
1097yy6:
1098    YYDEBUG(6, *YYCURSOR);
1099    yych = *++YYCURSOR;
1100    if (yych <= 'O') {
1101        if (yych <= 'D') {
1102            if (yych == ')') goto yy139;
1103            if (yych <= '@') goto yy3;
1104            goto yy140;
1105        } else {
1106            if (yych <= 'H') {
1107                if (yych <= 'E') goto yy1494;
1108                goto yy140;
1109            } else {
1110                if (yych <= 'I') goto yy1495;
1111                if (yych <= 'N') goto yy140;
1112                goto yy1493;
1113            }
1114        }
1115    } else {
1116        if (yych <= 'h') {
1117            if (yych <= '`') {
1118                if (yych <= 'Z') goto yy140;
1119                goto yy3;
1120            } else {
1121                if (yych == 'e') goto yy1494;
1122                goto yy140;
1123            }
1124        } else {
1125            if (yych <= 'n') {
1126                if (yych <= 'i') goto yy1495;
1127                goto yy140;
1128            } else {
1129                if (yych <= 'o') goto yy1493;
1130                if (yych <= 'z') goto yy140;
1131                goto yy3;
1132            }
1133        }
1134    }
1135yy7:
1136    YYDEBUG(7, *YYCURSOR);
1137    yych = *++YYCURSOR;
1138    if (yych <= 'O') {
1139        if (yych <= 'A') {
1140            if (yych == ')') goto yy139;
1141            if (yych <= '@') goto yy3;
1142            goto yy1463;
1143        } else {
1144            if (yych == 'I') goto yy1464;
1145            if (yych <= 'N') goto yy140;
1146            goto yy1465;
1147        }
1148    } else {
1149        if (yych <= 'h') {
1150            if (yych <= 'Z') goto yy140;
1151            if (yych <= '`') goto yy3;
1152            if (yych <= 'a') goto yy1478;
1153            goto yy145;
1154        } else {
1155            if (yych <= 'n') {
1156                if (yych <= 'i') goto yy1479;
1157                goto yy145;
1158            } else {
1159                if (yych <= 'o') goto yy1480;
1160                if (yych <= 'z') goto yy145;
1161                goto yy3;
1162            }
1163        }
1164    }
1165yy8:
1166    YYDEBUG(8, *YYCURSOR);
1167    yych = *++YYCURSOR;
1168    if (yych <= 'O') {
1169        if (yych <= 'A') {
1170            if (yych == ')') goto yy139;
1171            if (yych <= '@') goto yy3;
1172            goto yy1463;
1173        } else {
1174            if (yych == 'I') goto yy1464;
1175            if (yych <= 'N') goto yy140;
1176            goto yy1465;
1177        }
1178    } else {
1179        if (yych <= 'h') {
1180            if (yych <= 'Z') goto yy140;
1181            if (yych <= '`') goto yy3;
1182            if (yych <= 'a') goto yy1463;
1183            goto yy140;
1184        } else {
1185            if (yych <= 'n') {
1186                if (yych <= 'i') goto yy1464;
1187                goto yy140;
1188            } else {
1189                if (yych <= 'o') goto yy1465;
1190                if (yych <= 'z') goto yy140;
1191                goto yy3;
1192            }
1193        }
1194    }
1195yy9:
1196    YYDEBUG(9, *YYCURSOR);
1197    yyaccept = 0;
1198    yych = *(YYMARKER = ++YYCURSOR);
1199    YYDEBUG(-1, yych);
1200    switch (yych) {
1201    case ')':   goto yy139;
1202    case '0':
1203    case '1':   goto yy1393;
1204    case '2':   goto yy1394;
1205    case '3':
1206    case '4':
1207    case '5':
1208    case '6':
1209    case '7':
1210    case '8':
1211    case '9':   goto yy1395;
1212    case 'A':
1213    case 'B':
1214    case 'C':
1215    case 'D':
1216    case 'F':
1217    case 'G':
1218    case 'I':
1219    case 'J':
1220    case 'K':
1221    case 'L':
1222    case 'M':
1223    case 'N':
1224    case 'P':
1225    case 'Q':
1226    case 'R':
1227    case 'S':
1228    case 'T':
1229    case 'V':
1230    case 'X':
1231    case 'Y':
1232    case 'Z':   goto yy140;
1233    case 'E':   goto yy1388;
1234    case 'H':   goto yy1389;
1235    case 'O':   goto yy1390;
1236    case 'U':   goto yy1391;
1237    case 'W':   goto yy1392;
1238    case 'a':
1239    case 'b':
1240    case 'c':
1241    case 'd':
1242    case 'f':
1243    case 'g':
1244    case 'i':
1245    case 'j':
1246    case 'k':
1247    case 'l':
1248    case 'm':
1249    case 'n':
1250    case 'p':
1251    case 'q':
1252    case 'r':
1253    case 's':
1254    case 't':
1255    case 'v':
1256    case 'x':
1257    case 'y':
1258    case 'z':   goto yy145;
1259    case 'e':   goto yy1431;
1260    case 'h':   goto yy1432;
1261    case 'o':   goto yy1433;
1262    case 'u':   goto yy1434;
1263    case 'w':   goto yy1435;
1264    default:    goto yy3;
1265    }
1266yy10:
1267    YYDEBUG(10, *YYCURSOR);
1268    yyaccept = 0;
1269    yych = *(YYMARKER = ++YYCURSOR);
1270    YYDEBUG(-1, yych);
1271    switch (yych) {
1272    case ')':   goto yy139;
1273    case '0':
1274    case '1':   goto yy1393;
1275    case '2':   goto yy1394;
1276    case '3':
1277    case '4':
1278    case '5':
1279    case '6':
1280    case '7':
1281    case '8':
1282    case '9':   goto yy1395;
1283    case 'A':
1284    case 'B':
1285    case 'C':
1286    case 'D':
1287    case 'F':
1288    case 'G':
1289    case 'I':
1290    case 'J':
1291    case 'K':
1292    case 'L':
1293    case 'M':
1294    case 'N':
1295    case 'P':
1296    case 'Q':
1297    case 'R':
1298    case 'S':
1299    case 'T':
1300    case 'V':
1301    case 'X':
1302    case 'Y':
1303    case 'Z':
1304    case 'a':
1305    case 'b':
1306    case 'c':
1307    case 'd':
1308    case 'f':
1309    case 'g':
1310    case 'i':
1311    case 'j':
1312    case 'k':
1313    case 'l':
1314    case 'm':
1315    case 'n':
1316    case 'p':
1317    case 'q':
1318    case 'r':
1319    case 's':
1320    case 't':
1321    case 'v':
1322    case 'x':
1323    case 'y':
1324    case 'z':   goto yy140;
1325    case 'E':
1326    case 'e':   goto yy1388;
1327    case 'H':
1328    case 'h':   goto yy1389;
1329    case 'O':
1330    case 'o':   goto yy1390;
1331    case 'U':
1332    case 'u':   goto yy1391;
1333    case 'W':
1334    case 'w':   goto yy1392;
1335    default:    goto yy3;
1336    }
1337yy11:
1338    YYDEBUG(11, *YYCURSOR);
1339    yyaccept = 1;
1340    yych = *(YYMARKER = ++YYCURSOR);
1341    if (yych == '-') goto yy1384;
1342    if (yych <= '/') goto yy12;
1343    if (yych <= '9') goto yy1385;
1344yy12:
1345    YYDEBUG(12, *YYCURSOR);
1346#line 1776 "ext/date/lib/parse_date.re"
1347    {
1348        add_error(s, "Unexpected character");
1349        goto std;
1350    }
1351#line 1352 "ext/date/lib/parse_date.c"
1352yy13:
1353    YYDEBUG(13, *YYCURSOR);
1354    yych = *++YYCURSOR;
1355    if (yych <= 'R') {
1356        if (yych <= 'E') {
1357            if (yych <= ')') {
1358                if (yych <= '(') goto yy3;
1359                goto yy139;
1360            } else {
1361                if (yych <= '@') goto yy3;
1362                if (yych <= 'D') goto yy140;
1363                goto yy1320;
1364            }
1365        } else {
1366            if (yych <= 'N') {
1367                if (yych == 'I') goto yy1321;
1368                goto yy140;
1369            } else {
1370                if (yych <= 'O') goto yy1322;
1371                if (yych <= 'Q') goto yy140;
1372                goto yy1323;
1373            }
1374        }
1375    } else {
1376        if (yych <= 'i') {
1377            if (yych <= 'd') {
1378                if (yych <= 'Z') goto yy140;
1379                if (yych <= '`') goto yy3;
1380                goto yy145;
1381            } else {
1382                if (yych <= 'e') goto yy1361;
1383                if (yych <= 'h') goto yy145;
1384                goto yy1362;
1385            }
1386        } else {
1387            if (yych <= 'q') {
1388                if (yych == 'o') goto yy1363;
1389                goto yy145;
1390            } else {
1391                if (yych <= 'r') goto yy1364;
1392                if (yych <= 'z') goto yy145;
1393                goto yy3;
1394            }
1395        }
1396    }
1397yy14:
1398    YYDEBUG(14, *YYCURSOR);
1399    yych = *++YYCURSOR;
1400    if (yych <= 'R') {
1401        if (yych <= 'E') {
1402            if (yych <= ')') {
1403                if (yych <= '(') goto yy3;
1404                goto yy139;
1405            } else {
1406                if (yych <= '@') goto yy3;
1407                if (yych <= 'D') goto yy140;
1408                goto yy1320;
1409            }
1410        } else {
1411            if (yych <= 'N') {
1412                if (yych == 'I') goto yy1321;
1413                goto yy140;
1414            } else {
1415                if (yych <= 'O') goto yy1322;
1416                if (yych <= 'Q') goto yy140;
1417                goto yy1323;
1418            }
1419        }
1420    } else {
1421        if (yych <= 'i') {
1422            if (yych <= 'd') {
1423                if (yych <= 'Z') goto yy140;
1424                if (yych <= '`') goto yy3;
1425                goto yy140;
1426            } else {
1427                if (yych <= 'e') goto yy1320;
1428                if (yych <= 'h') goto yy140;
1429                goto yy1321;
1430            }
1431        } else {
1432            if (yych <= 'q') {
1433                if (yych == 'o') goto yy1322;
1434                goto yy140;
1435            } else {
1436                if (yych <= 'r') goto yy1323;
1437                if (yych <= 'z') goto yy140;
1438                goto yy3;
1439            }
1440        }
1441    }
1442yy15:
1443    YYDEBUG(15, *YYCURSOR);
1444    yych = *++YYCURSOR;
1445    if (yych <= 'A') {
1446        if (yych == ')') goto yy139;
1447        if (yych <= '@') goto yy3;
1448        goto yy1306;
1449    } else {
1450        if (yych <= '`') {
1451            if (yych <= 'Z') goto yy140;
1452            goto yy3;
1453        } else {
1454            if (yych <= 'a') goto yy1317;
1455            if (yych <= 'z') goto yy145;
1456            goto yy3;
1457        }
1458    }
1459yy16:
1460    YYDEBUG(16, *YYCURSOR);
1461    yych = *++YYCURSOR;
1462    if (yych <= 'A') {
1463        if (yych == ')') goto yy139;
1464        if (yych <= '@') goto yy3;
1465        goto yy1306;
1466    } else {
1467        if (yych <= '`') {
1468            if (yych <= 'Z') goto yy140;
1469            goto yy3;
1470        } else {
1471            if (yych <= 'a') goto yy1306;
1472            if (yych <= 'z') goto yy140;
1473            goto yy3;
1474        }
1475    }
1476yy17:
1477    YYDEBUG(17, *YYCURSOR);
1478    yych = *++YYCURSOR;
1479    if (yych <= 'A') {
1480        if (yych == ')') goto yy139;
1481        if (yych <= '@') goto yy3;
1482        goto yy1286;
1483    } else {
1484        if (yych <= '`') {
1485            if (yych <= 'Z') goto yy140;
1486            goto yy3;
1487        } else {
1488            if (yych <= 'a') goto yy1303;
1489            if (yych <= 'z') goto yy145;
1490            goto yy3;
1491        }
1492    }
1493yy18:
1494    YYDEBUG(18, *YYCURSOR);
1495    yych = *++YYCURSOR;
1496    if (yych <= 'A') {
1497        if (yych == ')') goto yy139;
1498        if (yych <= '@') goto yy3;
1499        goto yy1286;
1500    } else {
1501        if (yych <= '`') {
1502            if (yych <= 'Z') goto yy140;
1503            goto yy3;
1504        } else {
1505            if (yych <= 'a') goto yy1286;
1506            if (yych <= 'z') goto yy140;
1507            goto yy3;
1508        }
1509    }
1510yy19:
1511    YYDEBUG(19, *YYCURSOR);
1512    yych = *++YYCURSOR;
1513    if (yych <= 'U') {
1514        if (yych <= 'D') {
1515            if (yych <= ')') {
1516                if (yych <= '(') goto yy3;
1517                goto yy139;
1518            } else {
1519                if (yych <= '@') goto yy3;
1520                if (yych <= 'A') goto yy1229;
1521                goto yy140;
1522            }
1523        } else {
1524            if (yych <= 'H') {
1525                if (yych <= 'E') goto yy1228;
1526                goto yy140;
1527            } else {
1528                if (yych <= 'I') goto yy1230;
1529                if (yych <= 'T') goto yy140;
1530                goto yy1231;
1531            }
1532        }
1533    } else {
1534        if (yych <= 'e') {
1535            if (yych <= '`') {
1536                if (yych <= 'Z') goto yy140;
1537                goto yy3;
1538            } else {
1539                if (yych <= 'a') goto yy1258;
1540                if (yych <= 'd') goto yy145;
1541                goto yy1257;
1542            }
1543        } else {
1544            if (yych <= 't') {
1545                if (yych == 'i') goto yy1259;
1546                goto yy145;
1547            } else {
1548                if (yych <= 'u') goto yy1260;
1549                if (yych <= 'z') goto yy145;
1550                goto yy3;
1551            }
1552        }
1553    }
1554yy20:
1555    YYDEBUG(20, *YYCURSOR);
1556    yych = *++YYCURSOR;
1557    if (yych <= 'U') {
1558        if (yych <= 'D') {
1559            if (yych <= ')') {
1560                if (yych <= '(') goto yy3;
1561                goto yy139;
1562            } else {
1563                if (yych <= '@') goto yy3;
1564                if (yych <= 'A') goto yy1229;
1565                goto yy140;
1566            }
1567        } else {
1568            if (yych <= 'H') {
1569                if (yych <= 'E') goto yy1228;
1570                goto yy140;
1571            } else {
1572                if (yych <= 'I') goto yy1230;
1573                if (yych <= 'T') goto yy140;
1574                goto yy1231;
1575            }
1576        }
1577    } else {
1578        if (yych <= 'e') {
1579            if (yych <= '`') {
1580                if (yych <= 'Z') goto yy140;
1581                goto yy3;
1582            } else {
1583                if (yych <= 'a') goto yy1229;
1584                if (yych <= 'd') goto yy140;
1585                goto yy1228;
1586            }
1587        } else {
1588            if (yych <= 't') {
1589                if (yych == 'i') goto yy1230;
1590                goto yy140;
1591            } else {
1592                if (yych <= 'u') goto yy1231;
1593                if (yych <= 'z') goto yy140;
1594                goto yy3;
1595            }
1596        }
1597    }
1598yy21:
1599    YYDEBUG(21, *YYCURSOR);
1600    yych = *++YYCURSOR;
1601    if (yych <= 'L') {
1602        if (yych <= '@') {
1603            if (yych == ')') goto yy139;
1604            goto yy3;
1605        } else {
1606            if (yych == 'I') goto yy1198;
1607            if (yych <= 'K') goto yy140;
1608            goto yy1199;
1609        }
1610    } else {
1611        if (yych <= 'i') {
1612            if (yych <= 'Z') goto yy140;
1613            if (yych <= '`') goto yy3;
1614            if (yych <= 'h') goto yy145;
1615            goto yy1216;
1616        } else {
1617            if (yych == 'l') goto yy1217;
1618            if (yych <= 'z') goto yy145;
1619            goto yy3;
1620        }
1621    }
1622yy22:
1623    YYDEBUG(22, *YYCURSOR);
1624    yych = *++YYCURSOR;
1625    if (yych <= 'L') {
1626        if (yych <= '@') {
1627            if (yych == ')') goto yy139;
1628            goto yy3;
1629        } else {
1630            if (yych == 'I') goto yy1198;
1631            if (yych <= 'K') goto yy140;
1632            goto yy1199;
1633        }
1634    } else {
1635        if (yych <= 'i') {
1636            if (yych <= 'Z') goto yy140;
1637            if (yych <= '`') goto yy3;
1638            if (yych <= 'h') goto yy140;
1639            goto yy1198;
1640        } else {
1641            if (yych == 'l') goto yy1199;
1642            if (yych <= 'z') goto yy140;
1643            goto yy3;
1644        }
1645    }
1646yy23:
1647    YYDEBUG(23, *YYCURSOR);
1648    yych = *++YYCURSOR;
1649    if (yych <= 'R') {
1650        if (yych <= ')') {
1651            if (yych <= '(') goto yy3;
1652            goto yy139;
1653        } else {
1654            if (yych <= '@') goto yy3;
1655            if (yych <= 'Q') goto yy140;
1656            goto yy1097;
1657        }
1658    } else {
1659        if (yych <= 'q') {
1660            if (yych <= 'Z') goto yy140;
1661            if (yych <= '`') goto yy3;
1662            goto yy145;
1663        } else {
1664            if (yych <= 'r') goto yy1191;
1665            if (yych <= 'z') goto yy145;
1666            goto yy3;
1667        }
1668    }
1669yy24:
1670    YYDEBUG(24, *YYCURSOR);
1671    yych = *++YYCURSOR;
1672    if (yych <= 'R') {
1673        if (yych <= ')') {
1674            if (yych <= '(') goto yy3;
1675            goto yy139;
1676        } else {
1677            if (yych <= '@') goto yy3;
1678            if (yych <= 'Q') goto yy140;
1679            goto yy1097;
1680        }
1681    } else {
1682        if (yych <= 'q') {
1683            if (yych <= 'Z') goto yy140;
1684            if (yych <= '`') goto yy3;
1685            goto yy140;
1686        } else {
1687            if (yych <= 'r') goto yy1097;
1688            if (yych <= 'z') goto yy140;
1689            goto yy3;
1690        }
1691    }
1692yy25:
1693    YYDEBUG(25, *YYCURSOR);
1694    yyaccept = 1;
1695    yych = *(YYMARKER = ++YYCURSOR);
1696    YYDEBUG(-1, yych);
1697    switch (yych) {
1698    case '\t':  goto yy1051;
1699    case ' ':
1700    case 'A':
1701    case 'D':
1702    case 'F':
1703    case 'H':
1704    case 'I':
1705    case 'J':
1706    case 'M':
1707    case 'N':
1708    case 'O':
1709    case 'S':
1710    case 'T':
1711    case 'V':
1712    case 'W':
1713    case 'X':
1714    case 'Y':
1715    case 'a':
1716    case 'd':
1717    case 'f':
1718    case 'h':
1719    case 'j':
1720    case 'm':
1721    case 'o':
1722    case 'w':
1723    case 'y':   goto yy1053;
1724    case '-':   goto yy472;
1725    case '.':   goto yy1063;
1726    case '/':   goto yy471;
1727    case '0':   goto yy1096;
1728    case '1':
1729    case '2':
1730    case '3':
1731    case '4':
1732    case '5':
1733    case '6':
1734    case '7':
1735    case '8':
1736    case '9':   goto yy1095;
1737    case ':':   goto yy1064;
1738    case 'n':   goto yy469;
1739    case 'r':   goto yy470;
1740    case 's':   goto yy463;
1741    case 't':   goto yy467;
1742    default:    goto yy12;
1743    }
1744yy26:
1745    YYDEBUG(26, *YYCURSOR);
1746    yyaccept = 1;
1747    yych = *(YYMARKER = ++YYCURSOR);
1748    YYDEBUG(-1, yych);
1749    switch (yych) {
1750    case '\t':  goto yy459;
1751    case ' ':
1752    case 'A':
1753    case 'D':
1754    case 'F':
1755    case 'H':
1756    case 'I':
1757    case 'J':
1758    case 'M':
1759    case 'N':
1760    case 'O':
1761    case 'P':
1762    case 'S':
1763    case 'T':
1764    case 'V':
1765    case 'W':
1766    case 'X':
1767    case 'Y':
1768    case 'a':
1769    case 'd':
1770    case 'f':
1771    case 'h':
1772    case 'j':
1773    case 'm':
1774    case 'o':
1775    case 'p':
1776    case 'w':
1777    case 'y':   goto yy461;
1778    case '-':   goto yy472;
1779    case '.':   goto yy473;
1780    case '/':   goto yy471;
1781    case '0':
1782    case '1':
1783    case '2':   goto yy1095;
1784    case '3':
1785    case '4':
1786    case '5':
1787    case '6':
1788    case '7':
1789    case '8':
1790    case '9':   goto yy1062;
1791    case ':':   goto yy482;
1792    case 'n':   goto yy469;
1793    case 'r':   goto yy470;
1794    case 's':   goto yy463;
1795    case 't':   goto yy467;
1796    default:    goto yy12;
1797    }
1798yy27:
1799    YYDEBUG(27, *YYCURSOR);
1800    yyaccept = 1;
1801    yych = *(YYMARKER = ++YYCURSOR);
1802    YYDEBUG(-1, yych);
1803    switch (yych) {
1804    case '\t':  goto yy459;
1805    case ' ':
1806    case 'A':
1807    case 'D':
1808    case 'F':
1809    case 'H':
1810    case 'I':
1811    case 'J':
1812    case 'M':
1813    case 'N':
1814    case 'O':
1815    case 'P':
1816    case 'S':
1817    case 'T':
1818    case 'V':
1819    case 'W':
1820    case 'X':
1821    case 'Y':
1822    case 'a':
1823    case 'd':
1824    case 'f':
1825    case 'h':
1826    case 'j':
1827    case 'm':
1828    case 'o':
1829    case 'p':
1830    case 'w':
1831    case 'y':   goto yy461;
1832    case '-':   goto yy472;
1833    case '.':   goto yy473;
1834    case '/':   goto yy471;
1835    case '0':
1836    case '1':
1837    case '2':
1838    case '3':
1839    case '4':   goto yy1062;
1840    case '5':
1841    case '6':
1842    case '7':
1843    case '8':
1844    case '9':   goto yy1049;
1845    case ':':   goto yy482;
1846    case 'n':   goto yy469;
1847    case 'r':   goto yy470;
1848    case 's':   goto yy463;
1849    case 't':   goto yy467;
1850    default:    goto yy12;
1851    }
1852yy28:
1853    YYDEBUG(28, *YYCURSOR);
1854    yyaccept = 1;
1855    yych = *(YYMARKER = ++YYCURSOR);
1856    YYDEBUG(-1, yych);
1857    switch (yych) {
1858    case '\t':  goto yy459;
1859    case ' ':
1860    case 'A':
1861    case 'D':
1862    case 'F':
1863    case 'H':
1864    case 'I':
1865    case 'J':
1866    case 'M':
1867    case 'N':
1868    case 'O':
1869    case 'P':
1870    case 'S':
1871    case 'T':
1872    case 'V':
1873    case 'W':
1874    case 'X':
1875    case 'Y':
1876    case 'a':
1877    case 'd':
1878    case 'f':
1879    case 'h':
1880    case 'j':
1881    case 'm':
1882    case 'o':
1883    case 'p':
1884    case 'w':
1885    case 'y':   goto yy461;
1886    case '-':   goto yy472;
1887    case '.':   goto yy473;
1888    case '/':   goto yy471;
1889    case '0':
1890    case '1':   goto yy1049;
1891    case '2':
1892    case '3':
1893    case '4':
1894    case '5':
1895    case '6':
1896    case '7':
1897    case '8':
1898    case '9':   goto yy468;
1899    case ':':   goto yy482;
1900    case 'n':   goto yy469;
1901    case 'r':   goto yy470;
1902    case 's':   goto yy463;
1903    case 't':   goto yy467;
1904    default:    goto yy12;
1905    }
1906yy29:
1907    YYDEBUG(29, *YYCURSOR);
1908    yyaccept = 1;
1909    yych = *(YYMARKER = ++YYCURSOR);
1910    YYDEBUG(-1, yych);
1911    switch (yych) {
1912    case '\t':  goto yy459;
1913    case ' ':
1914    case 'A':
1915    case 'D':
1916    case 'F':
1917    case 'H':
1918    case 'I':
1919    case 'J':
1920    case 'M':
1921    case 'N':
1922    case 'O':
1923    case 'P':
1924    case 'S':
1925    case 'T':
1926    case 'V':
1927    case 'W':
1928    case 'X':
1929    case 'Y':
1930    case 'a':
1931    case 'd':
1932    case 'f':
1933    case 'h':
1934    case 'j':
1935    case 'm':
1936    case 'o':
1937    case 'p':
1938    case 'w':
1939    case 'y':   goto yy461;
1940    case '-':   goto yy472;
1941    case '.':   goto yy473;
1942    case '/':   goto yy471;
1943    case '0':
1944    case '1':
1945    case '2':
1946    case '3':
1947    case '4':
1948    case '5':
1949    case '6':
1950    case '7':
1951    case '8':
1952    case '9':   goto yy468;
1953    case ':':   goto yy482;
1954    case 'n':   goto yy469;
1955    case 'r':   goto yy470;
1956    case 's':   goto yy463;
1957    case 't':   goto yy467;
1958    default:    goto yy12;
1959    }
1960yy30:
1961    YYDEBUG(30, *YYCURSOR);
1962    yyaccept = 1;
1963    yych = *(YYMARKER = ++YYCURSOR);
1964    if (yybm[0+yych] & 4) {
1965        goto yy57;
1966    }
1967    YYDEBUG(-1, yych);
1968    switch (yych) {
1969    case '+':
1970    case '-':   goto yy439;
1971    case '0':
1972    case '1':   goto yy436;
1973    case '2':   goto yy437;
1974    case '3':
1975    case '4':
1976    case '5':
1977    case '6':
1978    case '7':
1979    case '8':
1980    case '9':   goto yy438;
1981    default:    goto yy12;
1982    }
1983yy31:
1984    YYDEBUG(31, *YYCURSOR);
1985    yyaccept = 0;
1986    yych = *(YYMARKER = ++YYCURSOR);
1987    if (yych <= '9') {
1988        if (yych <= '(') {
1989            if (yych <= '\t') {
1990                if (yych <= 0x08) goto yy3;
1991                goto yy195;
1992            } else {
1993                if (yych == ' ') goto yy195;
1994                goto yy3;
1995            }
1996        } else {
1997            if (yych <= ',') {
1998                if (yych <= ')') goto yy139;
1999                goto yy3;
2000            } else {
2001                if (yych == '/') goto yy3;
2002                goto yy195;
2003            }
2004        }
2005    } else {
2006        if (yych <= 'V') {
2007            if (yych <= 'H') {
2008                if (yych <= '@') goto yy3;
2009                goto yy140;
2010            } else {
2011                if (yych <= 'I') goto yy435;
2012                if (yych <= 'U') goto yy140;
2013                goto yy434;
2014            }
2015        } else {
2016            if (yych <= 'Z') {
2017                if (yych == 'X') goto yy434;
2018                goto yy140;
2019            } else {
2020                if (yych <= '`') goto yy3;
2021                if (yych <= 'z') goto yy145;
2022                goto yy3;
2023            }
2024        }
2025    }
2026yy32:
2027    YYDEBUG(32, *YYCURSOR);
2028    yyaccept = 0;
2029    yych = *(YYMARKER = ++YYCURSOR);
2030    if (yych <= '.') {
2031        if (yych <= ' ') {
2032            if (yych == '\t') goto yy195;
2033            if (yych <= 0x1F) goto yy3;
2034            goto yy195;
2035        } else {
2036            if (yych == ')') goto yy139;
2037            if (yych <= ',') goto yy3;
2038            goto yy195;
2039        }
2040    } else {
2041        if (yych <= 'H') {
2042            if (yych <= '/') goto yy3;
2043            if (yych <= '9') goto yy195;
2044            if (yych <= '@') goto yy3;
2045            goto yy140;
2046        } else {
2047            if (yych <= 'Z') {
2048                if (yych <= 'I') goto yy431;
2049                goto yy140;
2050            } else {
2051                if (yych <= '`') goto yy3;
2052                if (yych <= 'z') goto yy145;
2053                goto yy3;
2054            }
2055        }
2056    }
2057yy33:
2058    YYDEBUG(33, *YYCURSOR);
2059    yyaccept = 0;
2060    yych = *(YYMARKER = ++YYCURSOR);
2061    if (yych <= '.') {
2062        if (yych <= ' ') {
2063            if (yych == '\t') goto yy195;
2064            if (yych <= 0x1F) goto yy3;
2065            goto yy195;
2066        } else {
2067            if (yych == ')') goto yy139;
2068            if (yych <= ',') goto yy3;
2069            goto yy195;
2070        }
2071    } else {
2072        if (yych <= 'H') {
2073            if (yych <= '/') goto yy3;
2074            if (yych <= '9') goto yy195;
2075            if (yych <= '@') goto yy3;
2076            goto yy140;
2077        } else {
2078            if (yych <= 'Z') {
2079                if (yych <= 'I') goto yy429;
2080                goto yy140;
2081            } else {
2082                if (yych <= '`') goto yy3;
2083                if (yych <= 'z') goto yy145;
2084                goto yy3;
2085            }
2086        }
2087    }
2088yy34:
2089    YYDEBUG(34, *YYCURSOR);
2090    yych = *++YYCURSOR;
2091    if (yych <= 'U') {
2092        if (yych <= '@') {
2093            if (yych == ')') goto yy139;
2094            goto yy3;
2095        } else {
2096            if (yych <= 'A') goto yy412;
2097            if (yych <= 'T') goto yy140;
2098            goto yy411;
2099        }
2100    } else {
2101        if (yych <= 'a') {
2102            if (yych <= 'Z') goto yy140;
2103            if (yych <= '`') goto yy3;
2104            goto yy421;
2105        } else {
2106            if (yych == 'u') goto yy420;
2107            if (yych <= 'z') goto yy145;
2108            goto yy3;
2109        }
2110    }
2111yy35:
2112    YYDEBUG(35, *YYCURSOR);
2113    yych = *++YYCURSOR;
2114    if (yych <= 'U') {
2115        if (yych <= '@') {
2116            if (yych == ')') goto yy139;
2117            goto yy3;
2118        } else {
2119            if (yych <= 'A') goto yy412;
2120            if (yych <= 'T') goto yy140;
2121            goto yy411;
2122        }
2123    } else {
2124        if (yych <= 'a') {
2125            if (yych <= 'Z') goto yy140;
2126            if (yych <= '`') goto yy3;
2127            goto yy412;
2128        } else {
2129            if (yych == 'u') goto yy411;
2130            if (yych <= 'z') goto yy140;
2131            goto yy3;
2132        }
2133    }
2134yy36:
2135    YYDEBUG(36, *YYCURSOR);
2136    yych = *++YYCURSOR;
2137    if (yych <= 'U') {
2138        if (yych <= 'F') {
2139            if (yych == ')') goto yy139;
2140            if (yych <= '@') goto yy3;
2141            goto yy140;
2142        } else {
2143            if (yych <= 'O') {
2144                if (yych <= 'G') goto yy390;
2145                goto yy140;
2146            } else {
2147                if (yych <= 'P') goto yy389;
2148                if (yych <= 'T') goto yy140;
2149                goto yy388;
2150            }
2151        }
2152    } else {
2153        if (yych <= 'o') {
2154            if (yych <= '`') {
2155                if (yych <= 'Z') goto yy140;
2156                goto yy3;
2157            } else {
2158                if (yych == 'g') goto yy402;
2159                goto yy145;
2160            }
2161        } else {
2162            if (yych <= 't') {
2163                if (yych <= 'p') goto yy401;
2164                goto yy145;
2165            } else {
2166                if (yych <= 'u') goto yy400;
2167                if (yych <= 'z') goto yy145;
2168                goto yy3;
2169            }
2170        }
2171    }
2172yy37:
2173    YYDEBUG(37, *YYCURSOR);
2174    yych = *++YYCURSOR;
2175    if (yych <= 'U') {
2176        if (yych <= 'F') {
2177            if (yych == ')') goto yy139;
2178            if (yych <= '@') goto yy3;
2179            goto yy140;
2180        } else {
2181            if (yych <= 'O') {
2182                if (yych <= 'G') goto yy390;
2183                goto yy140;
2184            } else {
2185                if (yych <= 'P') goto yy389;
2186                if (yych <= 'T') goto yy140;
2187                goto yy388;
2188            }
2189        }
2190    } else {
2191        if (yych <= 'o') {
2192            if (yych <= '`') {
2193                if (yych <= 'Z') goto yy140;
2194                goto yy3;
2195            } else {
2196                if (yych == 'g') goto yy390;
2197                goto yy140;
2198            }
2199        } else {
2200            if (yych <= 't') {
2201                if (yych <= 'p') goto yy389;
2202                goto yy140;
2203            } else {
2204                if (yych <= 'u') goto yy388;
2205                if (yych <= 'z') goto yy140;
2206                goto yy3;
2207            }
2208        }
2209    }
2210yy38:
2211    YYDEBUG(38, *YYCURSOR);
2212    yych = *++YYCURSOR;
2213    if (yych <= 'C') {
2214        if (yych <= ')') {
2215            if (yych <= '(') goto yy3;
2216            goto yy139;
2217        } else {
2218            if (yych <= '@') goto yy3;
2219            if (yych <= 'B') goto yy140;
2220            goto yy378;
2221        }
2222    } else {
2223        if (yych <= 'b') {
2224            if (yych <= 'Z') goto yy140;
2225            if (yych <= '`') goto yy3;
2226            goto yy145;
2227        } else {
2228            if (yych <= 'c') goto yy383;
2229            if (yych <= 'z') goto yy145;
2230            goto yy3;
2231        }
2232    }
2233yy39:
2234    YYDEBUG(39, *YYCURSOR);
2235    yych = *++YYCURSOR;
2236    if (yych <= 'C') {
2237        if (yych <= ')') {
2238            if (yych <= '(') goto yy3;
2239            goto yy139;
2240        } else {
2241            if (yych <= '@') goto yy3;
2242            if (yych <= 'B') goto yy140;
2243            goto yy378;
2244        }
2245    } else {
2246        if (yych <= 'b') {
2247            if (yych <= 'Z') goto yy140;
2248            if (yych <= '`') goto yy3;
2249            goto yy140;
2250        } else {
2251            if (yych <= 'c') goto yy378;
2252            if (yych <= 'z') goto yy140;
2253            goto yy3;
2254        }
2255    }
2256yy40:
2257    YYDEBUG(40, *YYCURSOR);
2258    yych = *++YYCURSOR;
2259    if (yych <= 'E') {
2260        if (yych <= ')') {
2261            if (yych <= '(') goto yy3;
2262            goto yy139;
2263        } else {
2264            if (yych <= '@') goto yy3;
2265            if (yych <= 'D') goto yy140;
2266            goto yy191;
2267        }
2268    } else {
2269        if (yych <= 'd') {
2270            if (yych <= 'Z') goto yy140;
2271            if (yych <= '`') goto yy3;
2272            goto yy145;
2273        } else {
2274            if (yych <= 'e') goto yy369;
2275            if (yych <= 'z') goto yy145;
2276            goto yy3;
2277        }
2278    }
2279yy41:
2280    YYDEBUG(41, *YYCURSOR);
2281    yych = *++YYCURSOR;
2282    if (yych <= 'E') {
2283        if (yych <= ')') {
2284            if (yych <= '(') goto yy3;
2285            goto yy139;
2286        } else {
2287            if (yych <= '@') goto yy3;
2288            if (yych <= 'D') goto yy140;
2289            goto yy191;
2290        }
2291    } else {
2292        if (yych <= 'd') {
2293            if (yych <= 'Z') goto yy140;
2294            if (yych <= '`') goto yy3;
2295            goto yy140;
2296        } else {
2297            if (yych <= 'e') goto yy191;
2298            if (yych <= 'z') goto yy140;
2299            goto yy3;
2300        }
2301    }
2302yy42:
2303    YYDEBUG(42, *YYCURSOR);
2304    yych = *++YYCURSOR;
2305    if (yych <= 'E') {
2306        if (yych <= ')') {
2307            if (yych <= '(') goto yy3;
2308            goto yy139;
2309        } else {
2310            if (yych <= '@') goto yy3;
2311            if (yych <= 'D') goto yy140;
2312            goto yy164;
2313        }
2314    } else {
2315        if (yych <= 'd') {
2316            if (yych <= 'Z') goto yy140;
2317            if (yych <= '`') goto yy3;
2318            goto yy145;
2319        } else {
2320            if (yych <= 'e') goto yy178;
2321            if (yych <= 'z') goto yy145;
2322            goto yy3;
2323        }
2324    }
2325yy43:
2326    YYDEBUG(43, *YYCURSOR);
2327    yych = *++YYCURSOR;
2328    if (yych <= 'E') {
2329        if (yych <= ')') {
2330            if (yych <= '(') goto yy3;
2331            goto yy139;
2332        } else {
2333            if (yych <= '@') goto yy3;
2334            if (yych <= 'D') goto yy140;
2335            goto yy164;
2336        }
2337    } else {
2338        if (yych <= 'd') {
2339            if (yych <= 'Z') goto yy140;
2340            if (yych <= '`') goto yy3;
2341            goto yy140;
2342        } else {
2343            if (yych <= 'e') goto yy164;
2344            if (yych <= 'z') goto yy140;
2345            goto yy3;
2346        }
2347    }
2348yy44:
2349    YYDEBUG(44, *YYCURSOR);
2350    yych = *++YYCURSOR;
2351    if (yych <= 'L') {
2352        if (yych == ')') goto yy139;
2353        if (yych <= '@') goto yy3;
2354        goto yy140;
2355    } else {
2356        if (yych <= 'Z') {
2357            if (yych <= 'M') goto yy156;
2358            goto yy140;
2359        } else {
2360            if (yych <= '`') goto yy3;
2361            if (yych <= 'z') goto yy145;
2362            goto yy3;
2363        }
2364    }
2365yy45:
2366    YYDEBUG(45, *YYCURSOR);
2367    yych = *++YYCURSOR;
2368    if (yych <= '@') goto yy12;
2369    if (yych <= 'Z') goto yy155;
2370    if (yych <= '`') goto yy12;
2371    if (yych <= 'z') goto yy155;
2372    goto yy12;
2373yy46:
2374    YYDEBUG(46, *YYCURSOR);
2375    yych = *++YYCURSOR;
2376    if (yych <= '@') {
2377        if (yych == ')') goto yy139;
2378        goto yy3;
2379    } else {
2380        if (yych <= 'Z') goto yy140;
2381        if (yych <= '`') goto yy3;
2382        if (yych <= 'z') goto yy145;
2383        goto yy3;
2384    }
2385yy47:
2386    YYDEBUG(47, *YYCURSOR);
2387    yych = *++YYCURSOR;
2388    if (yych <= '@') {
2389        if (yych == ')') goto yy139;
2390        goto yy3;
2391    } else {
2392        if (yych <= 'Z') goto yy140;
2393        if (yych <= '`') goto yy3;
2394        if (yych <= 'z') goto yy140;
2395        goto yy3;
2396    }
2397yy48:
2398    YYDEBUG(48, *YYCURSOR);
2399    yyaccept = 2;
2400    yych = *(YYMARKER = ++YYCURSOR);
2401    if (yybm[0+yych] & 4) {
2402        goto yy57;
2403    }
2404    if (yych <= '/') goto yy49;
2405    if (yych <= '9') goto yy54;
2406yy49:
2407    YYDEBUG(49, *YYCURSOR);
2408#line 1765 "ext/date/lib/parse_date.re"
2409    {
2410        goto std;
2411    }
2412#line 2413 "ext/date/lib/parse_date.c"
2413yy50:
2414    YYDEBUG(50, *YYCURSOR);
2415    yych = *++YYCURSOR;
2416    goto yy49;
2417yy51:
2418    YYDEBUG(51, *YYCURSOR);
2419    ++YYCURSOR;
2420    YYDEBUG(52, *YYCURSOR);
2421#line 1770 "ext/date/lib/parse_date.re"
2422    {
2423        s->pos = cursor; s->line++;
2424        goto std;
2425    }
2426#line 2427 "ext/date/lib/parse_date.c"
2427yy53:
2428    YYDEBUG(53, *YYCURSOR);
2429    yych = *++YYCURSOR;
2430    goto yy12;
2431yy54:
2432    YYDEBUG(54, *YYCURSOR);
2433    ++YYCURSOR;
2434    if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
2435    yych = *YYCURSOR;
2436    YYDEBUG(55, *YYCURSOR);
2437    if (yybm[0+yych] & 2) {
2438        goto yy54;
2439    }
2440    if (yych <= 'W') {
2441        if (yych <= 'F') {
2442            if (yych <= ' ') {
2443                if (yych == '\t') goto yy59;
2444                if (yych >= ' ') goto yy59;
2445            } else {
2446                if (yych == 'D') goto yy64;
2447                if (yych >= 'F') goto yy65;
2448            }
2449        } else {
2450            if (yych <= 'M') {
2451                if (yych == 'H') goto yy63;
2452                if (yych >= 'M') goto yy62;
2453            } else {
2454                if (yych <= 'S') {
2455                    if (yych >= 'S') goto yy61;
2456                } else {
2457                    if (yych <= 'T') goto yy68;
2458                    if (yych >= 'W') goto yy67;
2459                }
2460            }
2461        }
2462    } else {
2463        if (yych <= 'l') {
2464            if (yych <= 'd') {
2465                if (yych == 'Y') goto yy66;
2466                if (yych >= 'd') goto yy64;
2467            } else {
2468                if (yych <= 'f') {
2469                    if (yych >= 'f') goto yy65;
2470                } else {
2471                    if (yych == 'h') goto yy63;
2472                }
2473            }
2474        } else {
2475            if (yych <= 't') {
2476                if (yych <= 'm') goto yy62;
2477                if (yych <= 'r') goto yy56;
2478                if (yych <= 's') goto yy61;
2479                goto yy68;
2480            } else {
2481                if (yych <= 'w') {
2482                    if (yych >= 'w') goto yy67;
2483                } else {
2484                    if (yych == 'y') goto yy66;
2485                }
2486            }
2487        }
2488    }
2489yy56:
2490    YYDEBUG(56, *YYCURSOR);
2491    YYCURSOR = YYMARKER;
2492    if (yyaccept <= 16) {
2493        if (yyaccept <= 8) {
2494            if (yyaccept <= 4) {
2495                if (yyaccept <= 2) {
2496                    if (yyaccept <= 1) {
2497                        if (yyaccept <= 0) {
2498                            goto yy3;
2499                        } else {
2500                            goto yy12;
2501                        }
2502                    } else {
2503                        goto yy49;
2504                    }
2505                } else {
2506                    if (yyaccept <= 3) {
2507                        goto yy72;
2508                    } else {
2509                        goto yy166;
2510                    }
2511                }
2512            } else {
2513                if (yyaccept <= 6) {
2514                    if (yyaccept <= 5) {
2515                        goto yy193;
2516                    } else {
2517                        goto yy198;
2518                    }
2519                } else {
2520                    if (yyaccept <= 7) {
2521                        goto yy222;
2522                    } else {
2523                        goto yy294;
2524                    }
2525                }
2526            }
2527        } else {
2528            if (yyaccept <= 12) {
2529                if (yyaccept <= 10) {
2530                    if (yyaccept <= 9) {
2531                        goto yy392;
2532                    } else {
2533                        goto yy475;
2534                    }
2535                } else {
2536                    if (yyaccept <= 11) {
2537                        goto yy490;
2538                    } else {
2539                        goto yy611;
2540                    }
2541                }
2542            } else {
2543                if (yyaccept <= 14) {
2544                    if (yyaccept <= 13) {
2545                        goto yy656;
2546                    } else {
2547                        goto yy666;
2548                    }
2549                } else {
2550                    if (yyaccept <= 15) {
2551                        goto yy763;
2552                    } else {
2553                        goto yy783;
2554                    }
2555                }
2556            }
2557        }
2558    } else {
2559        if (yyaccept <= 25) {
2560            if (yyaccept <= 21) {
2561                if (yyaccept <= 19) {
2562                    if (yyaccept <= 18) {
2563                        if (yyaccept <= 17) {
2564                            goto yy814;
2565                        } else {
2566                            goto yy821;
2567                        }
2568                    } else {
2569                        goto yy848;
2570                    }
2571                } else {
2572                    if (yyaccept <= 20) {
2573                        goto yy793;
2574                    } else {
2575                        goto yy454;
2576                    }
2577                }
2578            } else {
2579                if (yyaccept <= 23) {
2580                    if (yyaccept <= 22) {
2581                        goto yy973;
2582                    } else {
2583                        goto yy842;
2584                    }
2585                } else {
2586                    if (yyaccept <= 24) {
2587                        goto yy1067;
2588                    } else {
2589                        goto yy1075;
2590                    }
2591                }
2592            }
2593        } else {
2594            if (yyaccept <= 29) {
2595                if (yyaccept <= 27) {
2596                    if (yyaccept <= 26) {
2597                        goto yy1117;
2598                    } else {
2599                        goto yy1141;
2600                    }
2601                } else {
2602                    if (yyaccept <= 28) {
2603                        goto yy1294;
2604                    } else {
2605                        goto yy1417;
2606                    }
2607                }
2608            } else {
2609                if (yyaccept <= 31) {
2610                    if (yyaccept <= 30) {
2611                        goto yy1420;
2612                    } else {
2613                        goto yy1500;
2614                    }
2615                } else {
2616                    if (yyaccept <= 32) {
2617                        goto yy1508;
2618                    } else {
2619                        goto yy1531;
2620                    }
2621                }
2622            }
2623        }
2624    }
2625yy57:
2626    YYDEBUG(57, *YYCURSOR);
2627    ++YYCURSOR;
2628    if (YYLIMIT <= YYCURSOR) YYFILL(1);
2629    yych = *YYCURSOR;
2630    YYDEBUG(58, *YYCURSOR);
2631    if (yybm[0+yych] & 4) {
2632        goto yy57;
2633    }
2634    if (yych <= '/') goto yy56;
2635    if (yych <= '9') goto yy54;
2636    goto yy56;
2637yy59:
2638    YYDEBUG(59, *YYCURSOR);
2639    ++YYCURSOR;
2640    if ((YYLIMIT - YYCURSOR) < 11) YYFILL(11);
2641    yych = *YYCURSOR;
2642yy60:
2643    YYDEBUG(60, *YYCURSOR);
2644    if (yych <= 'W') {
2645        if (yych <= 'F') {
2646            if (yych <= ' ') {
2647                if (yych == '\t') goto yy59;
2648                if (yych <= 0x1F) goto yy56;
2649                goto yy59;
2650            } else {
2651                if (yych == 'D') goto yy64;
2652                if (yych <= 'E') goto yy56;
2653                goto yy65;
2654            }
2655        } else {
2656            if (yych <= 'M') {
2657                if (yych == 'H') goto yy63;
2658                if (yych <= 'L') goto yy56;
2659                goto yy62;
2660            } else {
2661                if (yych <= 'S') {
2662                    if (yych <= 'R') goto yy56;
2663                } else {
2664                    if (yych <= 'T') goto yy68;
2665                    if (yych <= 'V') goto yy56;
2666                    goto yy67;
2667                }
2668            }
2669        }
2670    } else {
2671        if (yych <= 'l') {
2672            if (yych <= 'd') {
2673                if (yych == 'Y') goto yy66;
2674                if (yych <= 'c') goto yy56;
2675                goto yy64;
2676            } else {
2677                if (yych <= 'f') {
2678                    if (yych <= 'e') goto yy56;
2679                    goto yy65;
2680                } else {
2681                    if (yych == 'h') goto yy63;
2682                    goto yy56;
2683                }
2684            }
2685        } else {
2686            if (yych <= 't') {
2687                if (yych <= 'm') goto yy62;
2688                if (yych <= 'r') goto yy56;
2689                if (yych >= 't') goto yy68;
2690            } else {
2691                if (yych <= 'w') {
2692                    if (yych <= 'v') goto yy56;
2693                    goto yy67;
2694                } else {
2695                    if (yych == 'y') goto yy66;
2696                    goto yy56;
2697                }
2698            }
2699        }
2700    }
2701yy61:
2702    YYDEBUG(61, *YYCURSOR);
2703    yych = *++YYCURSOR;
2704    if (yych <= 'U') {
2705        if (yych <= 'D') {
2706            if (yych == 'A') goto yy126;
2707            goto yy56;
2708        } else {
2709            if (yych <= 'E') goto yy127;
2710            if (yych <= 'T') goto yy56;
2711            goto yy125;
2712        }
2713    } else {
2714        if (yych <= 'd') {
2715            if (yych == 'a') goto yy126;
2716            goto yy56;
2717        } else {
2718            if (yych <= 'e') goto yy127;
2719            if (yych == 'u') goto yy125;
2720            goto yy56;
2721        }
2722    }
2723yy62:
2724    YYDEBUG(62, *YYCURSOR);
2725    yych = *++YYCURSOR;
2726    if (yych <= 'O') {
2727        if (yych == 'I') goto yy117;
2728        if (yych <= 'N') goto yy56;
2729        goto yy116;
2730    } else {
2731        if (yych <= 'i') {
2732            if (yych <= 'h') goto yy56;
2733            goto yy117;
2734        } else {
2735            if (yych == 'o') goto yy116;
2736            goto yy56;
2737        }
2738    }
2739yy63:
2740    YYDEBUG(63, *YYCURSOR);
2741    yych = *++YYCURSOR;
2742    if (yych == 'O') goto yy114;
2743    if (yych == 'o') goto yy114;
2744    goto yy56;
2745yy64:
2746    YYDEBUG(64, *YYCURSOR);
2747    yych = *++YYCURSOR;
2748    if (yych == 'A') goto yy113;
2749    if (yych == 'a') goto yy113;
2750    goto yy56;
2751yy65:
2752    YYDEBUG(65, *YYCURSOR);
2753    yych = *++YYCURSOR;
2754    if (yych <= 'R') {
2755        if (yych == 'O') goto yy98;
2756        if (yych <= 'Q') goto yy56;
2757        goto yy97;
2758    } else {
2759        if (yych <= 'o') {
2760            if (yych <= 'n') goto yy56;
2761            goto yy98;
2762        } else {
2763            if (yych == 'r') goto yy97;
2764            goto yy56;
2765        }
2766    }
2767yy66:
2768    YYDEBUG(66, *YYCURSOR);
2769    yych = *++YYCURSOR;
2770    if (yych == 'E') goto yy94;
2771    if (yych == 'e') goto yy94;
2772    goto yy56;
2773yy67:
2774    YYDEBUG(67, *YYCURSOR);
2775    yych = *++YYCURSOR;
2776    if (yych == 'E') goto yy82;
2777    if (yych == 'e') goto yy82;
2778    goto yy56;
2779yy68:
2780    YYDEBUG(68, *YYCURSOR);
2781    yych = *++YYCURSOR;
2782    if (yych <= 'U') {
2783        if (yych == 'H') goto yy69;
2784        if (yych <= 'T') goto yy56;
2785        goto yy70;
2786    } else {
2787        if (yych <= 'h') {
2788            if (yych <= 'g') goto yy56;
2789        } else {
2790            if (yych == 'u') goto yy70;
2791            goto yy56;
2792        }
2793    }
2794yy69:
2795    YYDEBUG(69, *YYCURSOR);
2796    yych = *++YYCURSOR;
2797    if (yych == 'U') goto yy77;
2798    if (yych == 'u') goto yy77;
2799    goto yy56;
2800yy70:
2801    YYDEBUG(70, *YYCURSOR);
2802    yych = *++YYCURSOR;
2803    if (yych == 'E') goto yy71;
2804    if (yych != 'e') goto yy56;
2805yy71:
2806    YYDEBUG(71, *YYCURSOR);
2807    yyaccept = 3;
2808    yych = *(YYMARKER = ++YYCURSOR);
2809    if (yych == 'S') goto yy73;
2810    if (yych == 's') goto yy73;
2811yy72:
2812    YYDEBUG(72, *YYCURSOR);
2813#line 1749 "ext/date/lib/parse_date.re"
2814    {
2815        timelib_ull i;
2816        DEBUG_OUTPUT("relative");
2817        TIMELIB_INIT;
2818        TIMELIB_HAVE_RELATIVE();
2819
2820        while(*ptr) {
2821            i = timelib_get_unsigned_nr((char **) &ptr, 24);
2822            timelib_eat_spaces((char **) &ptr);
2823            timelib_set_relative((char **) &ptr, i, 1, s);
2824        }
2825        TIMELIB_DEINIT;
2826        return TIMELIB_RELATIVE;
2827    }
2828#line 2829 "ext/date/lib/parse_date.c"
2829yy73:
2830    YYDEBUG(73, *YYCURSOR);
2831    yych = *++YYCURSOR;
2832    if (yych == 'D') goto yy74;
2833    if (yych != 'd') goto yy56;
2834yy74:
2835    YYDEBUG(74, *YYCURSOR);
2836    yych = *++YYCURSOR;
2837    if (yych == 'A') goto yy75;
2838    if (yych != 'a') goto yy56;
2839yy75:
2840    YYDEBUG(75, *YYCURSOR);
2841    yych = *++YYCURSOR;
2842    if (yych == 'Y') goto yy76;
2843    if (yych != 'y') goto yy56;
2844yy76:
2845    YYDEBUG(76, *YYCURSOR);
2846    yych = *++YYCURSOR;
2847    goto yy72;
2848yy77:
2849    YYDEBUG(77, *YYCURSOR);
2850    yyaccept = 3;
2851    yych = *(YYMARKER = ++YYCURSOR);
2852    if (yych == 'R') goto yy78;
2853    if (yych != 'r') goto yy72;
2854yy78:
2855    YYDEBUG(78, *YYCURSOR);
2856    yych = *++YYCURSOR;
2857    if (yych == 'S') goto yy79;
2858    if (yych != 's') goto yy56;
2859yy79:
2860    YYDEBUG(79, *YYCURSOR);
2861    yych = *++YYCURSOR;
2862    if (yych == 'D') goto yy80;
2863    if (yych != 'd') goto yy56;
2864yy80:
2865    YYDEBUG(80, *YYCURSOR);
2866    yych = *++YYCURSOR;
2867    if (yych == 'A') goto yy81;
2868    if (yych != 'a') goto yy56;
2869yy81:
2870    YYDEBUG(81, *YYCURSOR);
2871    yych = *++YYCURSOR;
2872    if (yych == 'Y') goto yy76;
2873    if (yych == 'y') goto yy76;
2874    goto yy56;
2875yy82:
2876    YYDEBUG(82, *YYCURSOR);
2877    yych = *++YYCURSOR;
2878    if (yych <= 'E') {
2879        if (yych <= 'C') goto yy56;
2880        if (yych <= 'D') goto yy84;
2881    } else {
2882        if (yych <= 'c') goto yy56;
2883        if (yych <= 'd') goto yy84;
2884        if (yych >= 'f') goto yy56;
2885    }
2886    YYDEBUG(83, *YYCURSOR);
2887    yych = *++YYCURSOR;
2888    if (yych == 'K') goto yy90;
2889    if (yych == 'k') goto yy90;
2890    goto yy56;
2891yy84:
2892    YYDEBUG(84, *YYCURSOR);
2893    yyaccept = 3;
2894    yych = *(YYMARKER = ++YYCURSOR);
2895    if (yych == 'N') goto yy85;
2896    if (yych != 'n') goto yy72;
2897yy85:
2898    YYDEBUG(85, *YYCURSOR);
2899    yych = *++YYCURSOR;
2900    if (yych == 'E') goto yy86;
2901    if (yych != 'e') goto yy56;
2902yy86:
2903    YYDEBUG(86, *YYCURSOR);
2904    yych = *++YYCURSOR;
2905    if (yych == 'S') goto yy87;
2906    if (yych != 's') goto yy56;
2907yy87:
2908    YYDEBUG(87, *YYCURSOR);
2909    yych = *++YYCURSOR;
2910    if (yych == 'D') goto yy88;
2911    if (yych != 'd') goto yy56;
2912yy88:
2913    YYDEBUG(88, *YYCURSOR);
2914    yych = *++YYCURSOR;
2915    if (yych == 'A') goto yy89;
2916    if (yych != 'a') goto yy56;
2917yy89:
2918    YYDEBUG(89, *YYCURSOR);
2919    yych = *++YYCURSOR;
2920    if (yych == 'Y') goto yy76;
2921    if (yych == 'y') goto yy76;
2922    goto yy56;
2923yy90:
2924    YYDEBUG(90, *YYCURSOR);
2925    yyaccept = 3;
2926    yych = *(YYMARKER = ++YYCURSOR);
2927    if (yych <= 'S') {
2928        if (yych == 'D') goto yy91;
2929        if (yych <= 'R') goto yy72;
2930        goto yy76;
2931    } else {
2932        if (yych <= 'd') {
2933            if (yych <= 'c') goto yy72;
2934        } else {
2935            if (yych == 's') goto yy76;
2936            goto yy72;
2937        }
2938    }
2939yy91:
2940    YYDEBUG(91, *YYCURSOR);
2941    yych = *++YYCURSOR;
2942    if (yych == 'A') goto yy92;
2943    if (yych != 'a') goto yy56;
2944yy92:
2945    YYDEBUG(92, *YYCURSOR);
2946    yych = *++YYCURSOR;
2947    if (yych == 'Y') goto yy93;
2948    if (yych != 'y') goto yy56;
2949yy93:
2950    YYDEBUG(93, *YYCURSOR);
2951    yych = *++YYCURSOR;
2952    if (yych == 'S') goto yy76;
2953    if (yych == 's') goto yy76;
2954    goto yy72;
2955yy94:
2956    YYDEBUG(94, *YYCURSOR);
2957    yych = *++YYCURSOR;
2958    if (yych == 'A') goto yy95;
2959    if (yych != 'a') goto yy56;
2960yy95:
2961    YYDEBUG(95, *YYCURSOR);
2962    yych = *++YYCURSOR;
2963    if (yych == 'R') goto yy96;
2964    if (yych != 'r') goto yy56;
2965yy96:
2966    YYDEBUG(96, *YYCURSOR);
2967    yych = *++YYCURSOR;
2968    if (yych == 'S') goto yy76;
2969    if (yych == 's') goto yy76;
2970    goto yy72;
2971yy97:
2972    YYDEBUG(97, *YYCURSOR);
2973    yych = *++YYCURSOR;
2974    if (yych == 'I') goto yy110;
2975    if (yych == 'i') goto yy110;
2976    goto yy56;
2977yy98:
2978    YYDEBUG(98, *YYCURSOR);
2979    yych = *++YYCURSOR;
2980    if (yych == 'R') goto yy99;
2981    if (yych != 'r') goto yy56;
2982yy99:
2983    YYDEBUG(99, *YYCURSOR);
2984    yych = *++YYCURSOR;
2985    if (yych == 'T') goto yy100;
2986    if (yych != 't') goto yy56;
2987yy100:
2988    YYDEBUG(100, *YYCURSOR);
2989    yych = *++YYCURSOR;
2990    if (yych <= 'N') {
2991        if (yych == 'H') goto yy102;
2992        if (yych <= 'M') goto yy56;
2993    } else {
2994        if (yych <= 'h') {
2995            if (yych <= 'g') goto yy56;
2996            goto yy102;
2997        } else {
2998            if (yych != 'n') goto yy56;
2999        }
3000    }
3001    YYDEBUG(101, *YYCURSOR);
3002    yych = *++YYCURSOR;
3003    if (yych == 'I') goto yy107;
3004    if (yych == 'i') goto yy107;
3005    goto yy56;
3006yy102:
3007    YYDEBUG(102, *YYCURSOR);
3008    yych = *++YYCURSOR;
3009    if (yych == 'N') goto yy103;
3010    if (yych != 'n') goto yy56;
3011yy103:
3012    YYDEBUG(103, *YYCURSOR);
3013    yych = *++YYCURSOR;
3014    if (yych == 'I') goto yy104;
3015    if (yych != 'i') goto yy56;
3016yy104:
3017    YYDEBUG(104, *YYCURSOR);
3018    yych = *++YYCURSOR;
3019    if (yych == 'G') goto yy105;
3020    if (yych != 'g') goto yy56;
3021yy105:
3022    YYDEBUG(105, *YYCURSOR);
3023    yych = *++YYCURSOR;
3024    if (yych == 'H') goto yy106;
3025    if (yych != 'h') goto yy56;
3026yy106:
3027    YYDEBUG(106, *YYCURSOR);
3028    yych = *++YYCURSOR;
3029    if (yych == 'T') goto yy96;
3030    if (yych == 't') goto yy96;
3031    goto yy56;
3032yy107:
3033    YYDEBUG(107, *YYCURSOR);
3034    yych = *++YYCURSOR;
3035    if (yych == 'G') goto yy108;
3036    if (yych != 'g') goto yy56;
3037yy108:
3038    YYDEBUG(108, *YYCURSOR);
3039    yych = *++YYCURSOR;
3040    if (yych == 'H') goto yy109;
3041    if (yych != 'h') goto yy56;
3042yy109:
3043    YYDEBUG(109, *YYCURSOR);
3044    yych = *++YYCURSOR;
3045    if (yych == 'T') goto yy96;
3046    if (yych == 't') goto yy96;
3047    goto yy56;
3048yy110:
3049    YYDEBUG(110, *YYCURSOR);
3050    yyaccept = 3;
3051    yych = *(YYMARKER = ++YYCURSOR);
3052    if (yych == 'D') goto yy111;
3053    if (yych != 'd') goto yy72;
3054yy111:
3055    YYDEBUG(111, *YYCURSOR);
3056    yych = *++YYCURSOR;
3057    if (yych == 'A') goto yy112;
3058    if (yych != 'a') goto yy56;
3059yy112:
3060    YYDEBUG(112, *YYCURSOR);
3061    yych = *++YYCURSOR;
3062    if (yych == 'Y') goto yy76;
3063    if (yych == 'y') goto yy76;
3064    goto yy56;
3065yy113:
3066    YYDEBUG(113, *YYCURSOR);
3067    yych = *++YYCURSOR;
3068    if (yych == 'Y') goto yy96;
3069    if (yych == 'y') goto yy96;
3070    goto yy56;
3071yy114:
3072    YYDEBUG(114, *YYCURSOR);
3073    yych = *++YYCURSOR;
3074    if (yych == 'U') goto yy115;
3075    if (yych != 'u') goto yy56;
3076yy115:
3077    YYDEBUG(115, *YYCURSOR);
3078    yych = *++YYCURSOR;
3079    if (yych == 'R') goto yy96;
3080    if (yych == 'r') goto yy96;
3081    goto yy56;
3082yy116:
3083    YYDEBUG(116, *YYCURSOR);
3084    yych = *++YYCURSOR;
3085    if (yych == 'N') goto yy121;
3086    if (yych == 'n') goto yy121;
3087    goto yy56;
3088yy117:
3089    YYDEBUG(117, *YYCURSOR);
3090    yych = *++YYCURSOR;
3091    if (yych == 'N') goto yy118;
3092    if (yych != 'n') goto yy56;
3093yy118:
3094    YYDEBUG(118, *YYCURSOR);
3095    yyaccept = 3;
3096    yych = *(YYMARKER = ++YYCURSOR);
3097    if (yych <= 'U') {
3098        if (yych == 'S') goto yy76;
3099        if (yych <= 'T') goto yy72;
3100    } else {
3101        if (yych <= 's') {
3102            if (yych <= 'r') goto yy72;
3103            goto yy76;
3104        } else {
3105            if (yych != 'u') goto yy72;
3106        }
3107    }
3108    YYDEBUG(119, *YYCURSOR);
3109    yych = *++YYCURSOR;
3110    if (yych == 'T') goto yy120;
3111    if (yych != 't') goto yy56;
3112yy120:
3113    YYDEBUG(120, *YYCURSOR);
3114    yych = *++YYCURSOR;
3115    if (yych == 'E') goto yy96;
3116    if (yych == 'e') goto yy96;
3117    goto yy56;
3118yy121:
3119    YYDEBUG(121, *YYCURSOR);
3120    yyaccept = 3;
3121    yych = *(YYMARKER = ++YYCURSOR);
3122    if (yych <= 'T') {
3123        if (yych == 'D') goto yy122;
3124        if (yych <= 'S') goto yy72;
3125        goto yy123;
3126    } else {
3127        if (yych <= 'd') {
3128            if (yych <= 'c') goto yy72;
3129        } else {
3130            if (yych == 't') goto yy123;
3131            goto yy72;
3132        }
3133    }
3134yy122:
3135    YYDEBUG(122, *YYCURSOR);
3136    yych = *++YYCURSOR;
3137    if (yych == 'A') goto yy124;
3138    if (yych == 'a') goto yy124;
3139    goto yy56;
3140yy123:
3141    YYDEBUG(123, *YYCURSOR);
3142    yych = *++YYCURSOR;
3143    if (yych == 'H') goto yy96;
3144    if (yych == 'h') goto yy96;
3145    goto yy56;
3146yy124:
3147    YYDEBUG(124, *YYCURSOR);
3148    yych = *++YYCURSOR;
3149    if (yych == 'Y') goto yy76;
3150    if (yych == 'y') goto yy76;
3151    goto yy56;
3152yy125:
3153    YYDEBUG(125, *YYCURSOR);
3154    yych = *++YYCURSOR;
3155    if (yych == 'N') goto yy136;
3156    if (yych == 'n') goto yy136;
3157    goto yy56;
3158yy126:
3159    YYDEBUG(126, *YYCURSOR);
3160    yych = *++YYCURSOR;
3161    if (yych == 'T') goto yy131;
3162    if (yych == 't') goto yy131;
3163    goto yy56;
3164yy127:
3165    YYDEBUG(127, *YYCURSOR);
3166    yych = *++YYCURSOR;
3167    if (yych == 'C') goto yy128;
3168    if (yych != 'c') goto yy56;
3169yy128:
3170    YYDEBUG(128, *YYCURSOR);
3171    yyaccept = 3;
3172    yych = *(YYMARKER = ++YYCURSOR);
3173    if (yych <= 'S') {
3174        if (yych == 'O') goto yy129;
3175        if (yych <= 'R') goto yy72;
3176        goto yy76;
3177    } else {
3178        if (yych <= 'o') {
3179            if (yych <= 'n') goto yy72;
3180        } else {
3181            if (yych == 's') goto yy76;
3182            goto yy72;
3183        }
3184    }
3185yy129:
3186    YYDEBUG(129, *YYCURSOR);
3187    yych = *++YYCURSOR;
3188    if (yych == 'N') goto yy130;
3189    if (yych != 'n') goto yy56;
3190yy130:
3191    YYDEBUG(130, *YYCURSOR);
3192    yych = *++YYCURSOR;
3193    if (yych == 'D') goto yy96;
3194    if (yych == 'd') goto yy96;
3195    goto yy56;
3196yy131:
3197    YYDEBUG(131, *YYCURSOR);
3198    yyaccept = 3;
3199    yych = *(YYMARKER = ++YYCURSOR);
3200    if (yych == 'U') goto yy132;
3201    if (yych != 'u') goto yy72;
3202yy132:
3203    YYDEBUG(132, *YYCURSOR);
3204    yych = *++YYCURSOR;
3205    if (yych == 'R') goto yy133;
3206    if (yych != 'r') goto yy56;
3207yy133:
3208    YYDEBUG(133, *YYCURSOR);
3209    yych = *++YYCURSOR;
3210    if (yych == 'D') goto yy134;
3211    if (yych != 'd') goto yy56;
3212yy134:
3213    YYDEBUG(134, *YYCURSOR);
3214    yych = *++YYCURSOR;
3215    if (yych == 'A') goto yy135;
3216    if (yych != 'a') goto yy56;
3217yy135:
3218    YYDEBUG(135, *YYCURSOR);
3219    yych = *++YYCURSOR;
3220    if (yych == 'Y') goto yy76;
3221    if (yych == 'y') goto yy76;
3222    goto yy56;
3223yy136:
3224    YYDEBUG(136, *YYCURSOR);
3225    yyaccept = 3;
3226    yych = *(YYMARKER = ++YYCURSOR);
3227    if (yych == 'D') goto yy137;
3228    if (yych != 'd') goto yy72;
3229yy137:
3230    YYDEBUG(137, *YYCURSOR);
3231    yych = *++YYCURSOR;
3232    if (yych == 'A') goto yy138;
3233    if (yych != 'a') goto yy56;
3234yy138:
3235    YYDEBUG(138, *YYCURSOR);
3236    yych = *++YYCURSOR;
3237    if (yych == 'Y') goto yy76;
3238    if (yych == 'y') goto yy76;
3239    goto yy56;
3240yy139:
3241    YYDEBUG(139, *YYCURSOR);
3242    yych = *++YYCURSOR;
3243    goto yy3;
3244yy140:
3245    YYDEBUG(140, *YYCURSOR);
3246    yych = *++YYCURSOR;
3247    if (yych <= '@') {
3248        if (yych == ')') goto yy139;
3249        goto yy3;
3250    } else {
3251        if (yych <= 'Z') goto yy141;
3252        if (yych <= '`') goto yy3;
3253        if (yych >= '{') goto yy3;
3254    }
3255yy141:
3256    YYDEBUG(141, *YYCURSOR);
3257    yych = *++YYCURSOR;
3258    if (yych <= '@') {
3259        if (yych == ')') goto yy139;
3260        goto yy3;
3261    } else {
3262        if (yych <= 'Z') goto yy142;
3263        if (yych <= '`') goto yy3;
3264        if (yych >= '{') goto yy3;
3265    }
3266yy142:
3267    YYDEBUG(142, *YYCURSOR);
3268    yych = *++YYCURSOR;
3269    if (yych <= '@') {
3270        if (yych == ')') goto yy139;
3271        goto yy3;
3272    } else {
3273        if (yych <= 'Z') goto yy143;
3274        if (yych <= '`') goto yy3;
3275        if (yych >= '{') goto yy3;
3276    }
3277yy143:
3278    YYDEBUG(143, *YYCURSOR);
3279    yych = *++YYCURSOR;
3280    if (yych <= '@') {
3281        if (yych == ')') goto yy139;
3282        goto yy3;
3283    } else {
3284        if (yych <= 'Z') goto yy144;
3285        if (yych <= '`') goto yy3;
3286        if (yych >= '{') goto yy3;
3287    }
3288yy144:
3289    YYDEBUG(144, *YYCURSOR);
3290    yych = *++YYCURSOR;
3291    if (yych == ')') goto yy139;
3292    goto yy3;
3293yy145:
3294    YYDEBUG(145, *YYCURSOR);
3295    yyaccept = 0;
3296    yych = *(YYMARKER = ++YYCURSOR);
3297    if (yych <= '/') {
3298        if (yych <= ',') {
3299            if (yych == ')') goto yy139;
3300            goto yy3;
3301        } else {
3302            if (yych == '.') goto yy3;
3303            goto yy147;
3304        }
3305    } else {
3306        if (yych <= '^') {
3307            if (yych <= '@') goto yy3;
3308            if (yych <= 'Z') goto yy141;
3309            goto yy3;
3310        } else {
3311            if (yych <= '_') goto yy147;
3312            if (yych <= '`') goto yy3;
3313            if (yych >= '{') goto yy3;
3314        }
3315    }
3316yy146:
3317    YYDEBUG(146, *YYCURSOR);
3318    yyaccept = 0;
3319    yych = *(YYMARKER = ++YYCURSOR);
3320    if (yych <= '/') {
3321        if (yych <= ',') {
3322            if (yych == ')') goto yy139;
3323            goto yy3;
3324        } else {
3325            if (yych == '.') goto yy3;
3326        }
3327    } else {
3328        if (yych <= '^') {
3329            if (yych <= '@') goto yy3;
3330            if (yych <= 'Z') goto yy142;
3331            goto yy3;
3332        } else {
3333            if (yych <= '_') goto yy147;
3334            if (yych <= '`') goto yy3;
3335            if (yych <= 'z') goto yy150;
3336            goto yy3;
3337        }
3338    }
3339yy147:
3340    YYDEBUG(147, *YYCURSOR);
3341    ++YYCURSOR;
3342    if (YYLIMIT <= YYCURSOR) YYFILL(1);
3343    yych = *YYCURSOR;
3344    if (yybm[0+yych] & 8) {
3345        goto yy148;
3346    }
3347    goto yy56;
3348yy148:
3349    YYDEBUG(148, *YYCURSOR);
3350    yyaccept = 0;
3351    YYMARKER = ++YYCURSOR;
3352    if (YYLIMIT <= YYCURSOR) YYFILL(1);
3353    yych = *YYCURSOR;
3354    YYDEBUG(149, *YYCURSOR);
3355    if (yybm[0+yych] & 8) {
3356        goto yy148;
3357    }
3358    if (yych <= '.') {
3359        if (yych == '-') goto yy147;
3360        goto yy3;
3361    } else {
3362        if (yych <= '/') goto yy147;
3363        if (yych == '_') goto yy147;
3364        goto yy3;
3365    }
3366yy150:
3367    YYDEBUG(150, *YYCURSOR);
3368    yyaccept = 0;
3369    yych = *(YYMARKER = ++YYCURSOR);
3370    if (yych <= '/') {
3371        if (yych <= ',') {
3372            if (yych == ')') goto yy139;
3373            goto yy3;
3374        } else {
3375            if (yych == '.') goto yy3;
3376            goto yy147;
3377        }
3378    } else {
3379        if (yych <= '^') {
3380            if (yych <= '@') goto yy3;
3381            if (yych <= 'Z') goto yy143;
3382            goto yy3;
3383        } else {
3384            if (yych <= '_') goto yy147;
3385            if (yych <= '`') goto yy3;
3386            if (yych >= '{') goto yy3;
3387        }
3388    }
3389yy151:
3390    YYDEBUG(151, *YYCURSOR);
3391    yyaccept = 0;
3392    yych = *(YYMARKER = ++YYCURSOR);
3393    if (yych <= '/') {
3394        if (yych <= ',') {
3395            if (yych == ')') goto yy139;
3396            goto yy3;
3397        } else {
3398            if (yych == '.') goto yy3;
3399            goto yy147;
3400        }
3401    } else {
3402        if (yych <= '^') {
3403            if (yych <= '@') goto yy3;
3404            if (yych <= 'Z') goto yy144;
3405            goto yy3;
3406        } else {
3407            if (yych <= '_') goto yy147;
3408            if (yych <= '`') goto yy3;
3409            if (yych >= '{') goto yy3;
3410        }
3411    }
3412yy152:
3413    YYDEBUG(152, *YYCURSOR);
3414    yyaccept = 0;
3415    yych = *(YYMARKER = ++YYCURSOR);
3416    if (yybm[0+yych] & 16) {
3417        goto yy153;
3418    }
3419    if (yych <= '-') {
3420        if (yych == ')') goto yy139;
3421        if (yych <= ',') goto yy3;
3422        goto yy147;
3423    } else {
3424        if (yych <= '/') {
3425            if (yych <= '.') goto yy3;
3426            goto yy147;
3427        } else {
3428            if (yych == '_') goto yy147;
3429            goto yy3;
3430        }
3431    }
3432yy153:
3433    YYDEBUG(153, *YYCURSOR);
3434    ++YYCURSOR;
3435    if (YYLIMIT <= YYCURSOR) YYFILL(1);
3436    yych = *YYCURSOR;
3437yy154:
3438    YYDEBUG(154, *YYCURSOR);
3439    if (yybm[0+yych] & 16) {
3440        goto yy153;
3441    }
3442    if (yych <= '.') {
3443        if (yych == '-') goto yy147;
3444        goto yy56;
3445    } else {
3446        if (yych <= '/') goto yy147;
3447        if (yych == '_') goto yy147;
3448        goto yy56;
3449    }
3450yy155:
3451    YYDEBUG(155, *YYCURSOR);
3452    yych = *++YYCURSOR;
3453    if (yych <= '@') {
3454        if (yych == ')') goto yy139;
3455        goto yy3;
3456    } else {
3457        if (yych <= 'Z') goto yy140;
3458        if (yych <= '`') goto yy3;
3459        if (yych <= 'z') goto yy140;
3460        goto yy3;
3461    }
3462yy156:
3463    YYDEBUG(156, *YYCURSOR);
3464    yych = *++YYCURSOR;
3465    if (yych <= 'S') {
3466        if (yych == ')') goto yy139;
3467        if (yych <= '@') goto yy3;
3468        goto yy141;
3469    } else {
3470        if (yych <= 'Z') {
3471            if (yych >= 'U') goto yy141;
3472        } else {
3473            if (yych <= '`') goto yy3;
3474            if (yych <= 'z') goto yy141;
3475            goto yy3;
3476        }
3477    }
3478    YYDEBUG(157, *YYCURSOR);
3479    yyaccept = 0;
3480    yych = *(YYMARKER = ++YYCURSOR);
3481    if (yych <= ',') {
3482        if (yych <= ')') {
3483            if (yych <= '(') goto yy3;
3484            goto yy139;
3485        } else {
3486            if (yych != '+') goto yy3;
3487        }
3488    } else {
3489        if (yych <= 'Z') {
3490            if (yych <= '-') goto yy158;
3491            if (yych <= '@') goto yy3;
3492            goto yy142;
3493        } else {
3494            if (yych <= '`') goto yy3;
3495            if (yych <= 'z') goto yy142;
3496            goto yy3;
3497        }
3498    }
3499yy158:
3500    YYDEBUG(158, *YYCURSOR);
3501    yych = *++YYCURSOR;
3502    if (yych <= '/') goto yy56;
3503    if (yych <= '1') goto yy159;
3504    if (yych <= '2') goto yy160;
3505    if (yych <= '9') goto yy161;
3506    goto yy56;
3507yy159:
3508    YYDEBUG(159, *YYCURSOR);
3509    yych = *++YYCURSOR;
3510    if (yych <= '/') goto yy3;
3511    if (yych <= '9') goto yy161;
3512    if (yych <= ':') goto yy162;
3513    goto yy3;
3514yy160:
3515    YYDEBUG(160, *YYCURSOR);
3516    yych = *++YYCURSOR;
3517    if (yych <= '5') {
3518        if (yych <= '/') goto yy3;
3519        if (yych >= '5') goto yy163;
3520    } else {
3521        if (yych <= '9') goto yy139;
3522        if (yych <= ':') goto yy162;
3523        goto yy3;
3524    }
3525yy161:
3526    YYDEBUG(161, *YYCURSOR);
3527    yych = *++YYCURSOR;
3528    if (yych <= '/') goto yy3;
3529    if (yych <= '5') goto yy163;
3530    if (yych <= '9') goto yy139;
3531    if (yych >= ';') goto yy3;
3532yy162:
3533    YYDEBUG(162, *YYCURSOR);
3534    yych = *++YYCURSOR;
3535    if (yych <= '/') goto yy3;
3536    if (yych <= '5') goto yy163;
3537    if (yych <= '9') goto yy139;
3538    goto yy3;
3539yy163:
3540    YYDEBUG(163, *YYCURSOR);
3541    yych = *++YYCURSOR;
3542    if (yych <= '/') goto yy3;
3543    if (yych <= '9') goto yy139;
3544    goto yy3;
3545yy164:
3546    YYDEBUG(164, *YYCURSOR);
3547    yych = *++YYCURSOR;
3548    if (yych <= 'E') {
3549        if (yych <= '@') {
3550            if (yych == ')') goto yy139;
3551            goto yy3;
3552        } else {
3553            if (yych <= 'C') goto yy141;
3554            if (yych >= 'E') goto yy167;
3555        }
3556    } else {
3557        if (yych <= 'c') {
3558            if (yych <= 'Z') goto yy141;
3559            if (yych <= '`') goto yy3;
3560            goto yy141;
3561        } else {
3562            if (yych <= 'd') goto yy165;
3563            if (yych <= 'e') goto yy167;
3564            if (yych <= 'z') goto yy141;
3565            goto yy3;
3566        }
3567    }
3568yy165:
3569    YYDEBUG(165, *YYCURSOR);
3570    ++YYCURSOR;
3571    if ((yych = *YYCURSOR) <= 'N') {
3572        if (yych <= ')') {
3573            if (yych >= ')') goto yy139;
3574        } else {
3575            if (yych <= '@') goto yy166;
3576            if (yych <= 'M') goto yy142;
3577            goto yy173;
3578        }
3579    } else {
3580        if (yych <= 'm') {
3581            if (yych <= 'Z') goto yy142;
3582            if (yych >= 'a') goto yy142;
3583        } else {
3584            if (yych <= 'n') goto yy173;
3585            if (yych <= 'z') goto yy142;
3586        }
3587    }
3588yy166:
3589    YYDEBUG(166, *YYCURSOR);
3590#line 1612 "ext/date/lib/parse_date.re"
3591    {
3592        const timelib_relunit* relunit;
3593        DEBUG_OUTPUT("daytext");
3594        TIMELIB_INIT;
3595        TIMELIB_HAVE_RELATIVE();
3596        TIMELIB_HAVE_WEEKDAY_RELATIVE();
3597        TIMELIB_UNHAVE_TIME();
3598        relunit = timelib_lookup_relunit((char**) &ptr);
3599        s->time->relative.weekday = relunit->multiplier;
3600        if (s->time->relative.weekday_behavior != 2) {
3601            s->time->relative.weekday_behavior = 1;
3602        }
3603
3604        TIMELIB_DEINIT;
3605        return TIMELIB_WEEKDAY;
3606    }
3607#line 3608 "ext/date/lib/parse_date.c"
3608yy167:
3609    YYDEBUG(167, *YYCURSOR);
3610    yych = *++YYCURSOR;
3611    if (yych <= 'K') {
3612        if (yych <= ')') {
3613            if (yych <= '(') goto yy3;
3614            goto yy139;
3615        } else {
3616            if (yych <= '@') goto yy3;
3617            if (yych <= 'J') goto yy142;
3618        }
3619    } else {
3620        if (yych <= 'j') {
3621            if (yych <= 'Z') goto yy142;
3622            if (yych <= '`') goto yy3;
3623            goto yy142;
3624        } else {
3625            if (yych <= 'k') goto yy168;
3626            if (yych <= 'z') goto yy142;
3627            goto yy3;
3628        }
3629    }
3630yy168:
3631    YYDEBUG(168, *YYCURSOR);
3632    yych = *++YYCURSOR;
3633    if (yych <= 'D') {
3634        if (yych <= ')') {
3635            if (yych <= '(') goto yy3;
3636            goto yy139;
3637        } else {
3638            if (yych <= '@') goto yy3;
3639            if (yych <= 'C') goto yy143;
3640        }
3641    } else {
3642        if (yych <= 'c') {
3643            if (yych <= 'Z') goto yy143;
3644            if (yych <= '`') goto yy3;
3645            goto yy143;
3646        } else {
3647            if (yych <= 'd') goto yy169;
3648            if (yych <= 'z') goto yy143;
3649            goto yy3;
3650        }
3651    }
3652yy169:
3653    YYDEBUG(169, *YYCURSOR);
3654    yych = *++YYCURSOR;
3655    if (yych <= 'A') {
3656        if (yych == ')') goto yy139;
3657        if (yych <= '@') goto yy3;
3658    } else {
3659        if (yych <= '`') {
3660            if (yych <= 'Z') goto yy144;
3661            goto yy3;
3662        } else {
3663            if (yych <= 'a') goto yy170;
3664            if (yych <= 'z') goto yy144;
3665            goto yy3;
3666        }
3667    }
3668yy170:
3669    YYDEBUG(170, *YYCURSOR);
3670    yych = *++YYCURSOR;
3671    if (yych <= 'X') {
3672        if (yych == ')') goto yy139;
3673        goto yy3;
3674    } else {
3675        if (yych <= 'Y') goto yy171;
3676        if (yych != 'y') goto yy3;
3677    }
3678yy171:
3679    YYDEBUG(171, *YYCURSOR);
3680    yych = *++YYCURSOR;
3681    if (yych == 'S') goto yy172;
3682    if (yych != 's') goto yy166;
3683yy172:
3684    YYDEBUG(172, *YYCURSOR);
3685    yych = *++YYCURSOR;
3686    goto yy166;
3687yy173:
3688    YYDEBUG(173, *YYCURSOR);
3689    yych = *++YYCURSOR;
3690    if (yych <= 'E') {
3691        if (yych <= ')') {
3692            if (yych <= '(') goto yy3;
3693            goto yy139;
3694        } else {
3695            if (yych <= '@') goto yy3;
3696            if (yych <= 'D') goto yy143;
3697        }
3698    } else {
3699        if (yych <= 'd') {
3700            if (yych <= 'Z') goto yy143;
3701            if (yych <= '`') goto yy3;
3702            goto yy143;
3703        } else {
3704            if (yych <= 'e') goto yy174;
3705            if (yych <= 'z') goto yy143;
3706            goto yy3;
3707        }
3708    }
3709yy174:
3710    YYDEBUG(174, *YYCURSOR);
3711    yych = *++YYCURSOR;
3712    if (yych <= 'S') {
3713        if (yych <= ')') {
3714            if (yych <= '(') goto yy3;
3715            goto yy139;
3716        } else {
3717            if (yych <= '@') goto yy3;
3718            if (yych <= 'R') goto yy144;
3719        }
3720    } else {
3721        if (yych <= 'r') {
3722            if (yych <= 'Z') goto yy144;
3723            if (yych <= '`') goto yy3;
3724            goto yy144;
3725        } else {
3726            if (yych <= 's') goto yy175;
3727            if (yych <= 'z') goto yy144;
3728            goto yy3;
3729        }
3730    }
3731yy175:
3732    YYDEBUG(175, *YYCURSOR);
3733    yyaccept = 0;
3734    yych = *(YYMARKER = ++YYCURSOR);
3735    if (yych <= 'C') {
3736        if (yych == ')') goto yy139;
3737        goto yy3;
3738    } else {
3739        if (yych <= 'D') goto yy176;
3740        if (yych != 'd') goto yy3;
3741    }
3742yy176:
3743    YYDEBUG(176, *YYCURSOR);
3744    yych = *++YYCURSOR;
3745    if (yych == 'A') goto yy177;
3746    if (yych != 'a') goto yy56;
3747yy177:
3748    YYDEBUG(177, *YYCURSOR);
3749    yych = *++YYCURSOR;
3750    if (yych == 'Y') goto yy172;
3751    if (yych == 'y') goto yy172;
3752    goto yy56;
3753yy178:
3754    YYDEBUG(178, *YYCURSOR);
3755    yyaccept = 0;
3756    yych = *(YYMARKER = ++YYCURSOR);
3757    if (yych <= 'D') {
3758        if (yych <= '-') {
3759            if (yych == ')') goto yy139;
3760            if (yych <= ',') goto yy3;
3761            goto yy147;
3762        } else {
3763            if (yych <= '/') {
3764                if (yych <= '.') goto yy3;
3765                goto yy147;
3766            } else {
3767                if (yych <= '@') goto yy3;
3768                if (yych <= 'C') goto yy141;
3769                goto yy165;
3770            }
3771        }
3772    } else {
3773        if (yych <= '`') {
3774            if (yych <= 'Z') {
3775                if (yych <= 'E') goto yy167;
3776                goto yy141;
3777            } else {
3778                if (yych == '_') goto yy147;
3779                goto yy3;
3780            }
3781        } else {
3782            if (yych <= 'd') {
3783                if (yych <= 'c') goto yy146;
3784            } else {
3785                if (yych <= 'e') goto yy180;
3786                if (yych <= 'z') goto yy146;
3787                goto yy3;
3788            }
3789        }
3790    }
3791    YYDEBUG(179, *YYCURSOR);
3792    yyaccept = 4;
3793    yych = *(YYMARKER = ++YYCURSOR);
3794    if (yych <= 'M') {
3795        if (yych <= '-') {
3796            if (yych == ')') goto yy139;
3797            if (yych <= ',') goto yy166;
3798            goto yy147;
3799        } else {
3800            if (yych == '/') goto yy147;
3801            if (yych <= '@') goto yy166;
3802            goto yy142;
3803        }
3804    } else {
3805        if (yych <= '_') {
3806            if (yych <= 'N') goto yy173;
3807            if (yych <= 'Z') goto yy142;
3808            if (yych <= '^') goto yy166;
3809            goto yy147;
3810        } else {
3811            if (yych <= 'm') {
3812                if (yych <= '`') goto yy166;
3813                goto yy150;
3814            } else {
3815                if (yych <= 'n') goto yy186;
3816                if (yych <= 'z') goto yy150;
3817                goto yy166;
3818            }
3819        }
3820    }
3821yy180:
3822    YYDEBUG(180, *YYCURSOR);
3823    yyaccept = 0;
3824    yych = *(YYMARKER = ++YYCURSOR);
3825    if (yych <= 'J') {
3826        if (yych <= '-') {
3827            if (yych == ')') goto yy139;
3828            if (yych <= ',') goto yy3;
3829            goto yy147;
3830        } else {
3831            if (yych == '/') goto yy147;
3832            if (yych <= '@') goto yy3;
3833            goto yy142;
3834        }
3835    } else {
3836        if (yych <= '_') {
3837            if (yych <= 'K') goto yy168;
3838            if (yych <= 'Z') goto yy142;
3839            if (yych <= '^') goto yy3;
3840            goto yy147;
3841        } else {
3842            if (yych <= 'j') {
3843                if (yych <= '`') goto yy3;
3844                goto yy150;
3845            } else {
3846                if (yych <= 'k') goto yy181;
3847                if (yych <= 'z') goto yy150;
3848                goto yy3;
3849            }
3850        }
3851    }
3852yy181:
3853    YYDEBUG(181, *YYCURSOR);
3854    yyaccept = 0;
3855    yych = *(YYMARKER = ++YYCURSOR);
3856    if (yych <= 'C') {
3857        if (yych <= '-') {
3858            if (yych == ')') goto yy139;
3859            if (yych <= ',') goto yy3;
3860            goto yy147;
3861        } else {
3862            if (yych == '/') goto yy147;
3863            if (yych <= '@') goto yy3;
3864            goto yy143;
3865        }
3866    } else {
3867        if (yych <= '_') {
3868            if (yych <= 'D') goto yy169;
3869            if (yych <= 'Z') goto yy143;
3870            if (yych <= '^') goto yy3;
3871            goto yy147;
3872        } else {
3873            if (yych <= 'c') {
3874                if (yych <= '`') goto yy3;
3875                goto yy151;
3876            } else {
3877                if (yych <= 'd') goto yy182;
3878                if (yych <= 'z') goto yy151;
3879                goto yy3;
3880            }
3881        }
3882    }
3883yy182:
3884    YYDEBUG(182, *YYCURSOR);
3885    yyaccept = 0;
3886    yych = *(YYMARKER = ++YYCURSOR);
3887    if (yych <= '@') {
3888        if (yych <= ',') {
3889            if (yych == ')') goto yy139;
3890            goto yy3;
3891        } else {
3892            if (yych == '.') goto yy3;
3893            if (yych <= '/') goto yy147;
3894            goto yy3;
3895        }
3896    } else {
3897        if (yych <= '_') {
3898            if (yych <= 'A') goto yy170;
3899            if (yych <= 'Z') goto yy144;
3900            if (yych <= '^') goto yy3;
3901            goto yy147;
3902        } else {
3903            if (yych <= '`') goto yy3;
3904            if (yych <= 'a') goto yy183;
3905            if (yych <= 'z') goto yy152;
3906            goto yy3;
3907        }
3908    }
3909yy183:
3910    YYDEBUG(183, *YYCURSOR);
3911    yyaccept = 0;
3912    yych = *(YYMARKER = ++YYCURSOR);
3913    if (yych <= 'X') {
3914        if (yych <= ',') {
3915            if (yych == ')') goto yy139;
3916            goto yy3;
3917        } else {
3918            if (yych == '.') goto yy3;
3919            if (yych <= '/') goto yy147;
3920            goto yy3;
3921        }
3922    } else {
3923        if (yych <= '`') {
3924            if (yych <= 'Y') goto yy171;
3925            if (yych == '_') goto yy147;
3926            goto yy3;
3927        } else {
3928            if (yych == 'y') goto yy184;
3929            if (yych <= 'z') goto yy153;
3930            goto yy3;
3931        }
3932    }
3933yy184:
3934    YYDEBUG(184, *YYCURSOR);
3935    yyaccept = 4;
3936    yych = *(YYMARKER = ++YYCURSOR);
3937    if (yych <= 'S') {
3938        if (yych <= '.') {
3939            if (yych == '-') goto yy147;
3940            goto yy166;
3941        } else {
3942            if (yych <= '/') goto yy147;
3943            if (yych <= 'R') goto yy166;
3944            goto yy172;
3945        }
3946    } else {
3947        if (yych <= '`') {
3948            if (yych == '_') goto yy147;
3949            goto yy166;
3950        } else {
3951            if (yych == 's') goto yy185;
3952            if (yych <= 'z') goto yy153;
3953            goto yy166;
3954        }
3955    }
3956yy185:
3957    YYDEBUG(185, *YYCURSOR);
3958    yyaccept = 4;
3959    yych = *(YYMARKER = ++YYCURSOR);
3960    if (yybm[0+yych] & 16) {
3961        goto yy153;
3962    }
3963    if (yych <= '.') {
3964        if (yych == '-') goto yy147;
3965        goto yy166;
3966    } else {
3967        if (yych <= '/') goto yy147;
3968        if (yych == '_') goto yy147;
3969        goto yy166;
3970    }
3971yy186:
3972    YYDEBUG(186, *YYCURSOR);
3973    yyaccept = 0;
3974    yych = *(YYMARKER = ++YYCURSOR);
3975    if (yych <= 'D') {
3976        if (yych <= '-') {
3977            if (yych == ')') goto yy139;
3978            if (yych <= ',') goto yy3;
3979            goto yy147;
3980        } else {
3981            if (yych == '/') goto yy147;
3982            if (yych <= '@') goto yy3;
3983            goto yy143;
3984        }
3985    } else {
3986        if (yych <= '_') {
3987            if (yych <= 'E') goto yy174;
3988            if (yych <= 'Z') goto yy143;
3989            if (yych <= '^') goto yy3;
3990            goto yy147;
3991        } else {
3992            if (yych <= 'd') {
3993                if (yych <= '`') goto yy3;
3994                goto yy151;
3995            } else {
3996                if (yych <= 'e') goto yy187;
3997                if (yych <= 'z') goto yy151;
3998                goto yy3;
3999            }
4000        }
4001    }
4002yy187:
4003    YYDEBUG(187, *YYCURSOR);
4004    yyaccept = 0;
4005    yych = *(YYMARKER = ++YYCURSOR);
4006    if (yych <= 'R') {
4007        if (yych <= '-') {
4008            if (yych == ')') goto yy139;
4009            if (yych <= ',') goto yy3;
4010            goto yy147;
4011        } else {
4012            if (yych == '/') goto yy147;
4013            if (yych <= '@') goto yy3;
4014            goto yy144;
4015        }
4016    } else {
4017        if (yych <= '_') {
4018            if (yych <= 'S') goto yy175;
4019            if (yych <= 'Z') goto yy144;
4020            if (yych <= '^') goto yy3;
4021            goto yy147;
4022        } else {
4023            if (yych <= 'r') {
4024                if (yych <= '`') goto yy3;
4025                goto yy152;
4026            } else {
4027                if (yych <= 's') goto yy188;
4028                if (yych <= 'z') goto yy152;
4029                goto yy3;
4030            }
4031        }
4032    }
4033yy188:
4034    YYDEBUG(188, *YYCURSOR);
4035    yyaccept = 0;
4036    yych = *(YYMARKER = ++YYCURSOR);
4037    if (yych <= 'C') {
4038        if (yych <= ',') {
4039            if (yych == ')') goto yy139;
4040            goto yy3;
4041        } else {
4042            if (yych == '.') goto yy3;
4043            if (yych <= '/') goto yy147;
4044            goto yy3;
4045        }
4046    } else {
4047        if (yych <= '`') {
4048            if (yych <= 'D') goto yy176;
4049            if (yych == '_') goto yy147;
4050            goto yy3;
4051        } else {
4052            if (yych == 'd') goto yy189;
4053            if (yych <= 'z') goto yy153;
4054            goto yy3;
4055        }
4056    }
4057yy189:
4058    YYDEBUG(189, *YYCURSOR);
4059    yych = *++YYCURSOR;
4060    if (yych == 'A') goto yy177;
4061    if (yych != 'a') goto yy154;
4062    YYDEBUG(190, *YYCURSOR);
4063    yych = *++YYCURSOR;
4064    if (yych == 'Y') goto yy172;
4065    if (yych == 'y') goto yy185;
4066    goto yy154;
4067yy191:
4068    YYDEBUG(191, *YYCURSOR);
4069    yych = *++YYCURSOR;
4070    if (yych <= 'C') {
4071        if (yych <= ')') {
4072            if (yych <= '(') goto yy3;
4073            goto yy139;
4074        } else {
4075            if (yych <= '@') goto yy3;
4076            if (yych <= 'B') goto yy141;
4077        }
4078    } else {
4079        if (yych <= 'b') {
4080            if (yych <= 'Z') goto yy141;
4081            if (yych <= '`') goto yy3;
4082            goto yy141;
4083        } else {
4084            if (yych <= 'c') goto yy192;
4085            if (yych <= 'z') goto yy141;
4086            goto yy3;
4087        }
4088    }
4089yy192:
4090    YYDEBUG(192, *YYCURSOR);
4091    yyaccept = 5;
4092    yych = *(YYMARKER = ++YYCURSOR);
4093    if (yych <= '/') {
4094        if (yych <= '(') {
4095            if (yych <= '\t') {
4096                if (yych >= '\t') goto yy195;
4097            } else {
4098                if (yych == ' ') goto yy195;
4099            }
4100        } else {
4101            if (yych <= ',') {
4102                if (yych <= ')') goto yy139;
4103            } else {
4104                if (yych <= '-') goto yy196;
4105                if (yych <= '.') goto yy195;
4106            }
4107        }
4108    } else {
4109        if (yych <= 'Z') {
4110            if (yych <= '@') {
4111                if (yych <= '9') goto yy195;
4112            } else {
4113                if (yych == 'E') goto yy201;
4114                goto yy142;
4115            }
4116        } else {
4117            if (yych <= 'd') {
4118                if (yych >= 'a') goto yy142;
4119            } else {
4120                if (yych <= 'e') goto yy201;
4121                if (yych <= 'z') goto yy142;
4122            }
4123        }
4124    }
4125yy193:
4126    YYDEBUG(193, *YYCURSOR);
4127#line 1671 "ext/date/lib/parse_date.re"
4128    {
4129        DEBUG_OUTPUT("monthtext");
4130        TIMELIB_INIT;
4131        TIMELIB_HAVE_DATE();
4132        s->time->m = timelib_lookup_month((char **) &ptr);
4133        TIMELIB_DEINIT;
4134        return TIMELIB_DATE_TEXT;
4135    }
4136#line 4137 "ext/date/lib/parse_date.c"
4137yy194:
4138    YYDEBUG(194, *YYCURSOR);
4139    ++YYCURSOR;
4140    if ((YYLIMIT - YYCURSOR) < 21) YYFILL(21);
4141    yych = *YYCURSOR;
4142yy195:
4143    YYDEBUG(195, *YYCURSOR);
4144    if (yybm[0+yych] & 32) {
4145        goto yy194;
4146    }
4147    if (yych <= '/') goto yy56;
4148    if (yych <= '2') goto yy197;
4149    if (yych <= '3') goto yy199;
4150    if (yych <= '9') goto yy200;
4151    goto yy56;
4152yy196:
4153    YYDEBUG(196, *YYCURSOR);
4154    yych = *++YYCURSOR;
4155    if (yych <= '/') goto yy195;
4156    if (yych <= '0') goto yy356;
4157    if (yych <= '2') goto yy357;
4158    if (yych <= '3') goto yy358;
4159    goto yy195;
4160yy197:
4161    YYDEBUG(197, *YYCURSOR);
4162    yyaccept = 6;
4163    yych = *(YYMARKER = ++YYCURSOR);
4164    if (yych <= 'm') {
4165        if (yych <= '1') {
4166            if (yych <= '/') goto yy215;
4167            if (yych <= '0') goto yy297;
4168            goto yy298;
4169        } else {
4170            if (yych <= '2') goto yy354;
4171            if (yych <= '9') goto yy355;
4172            goto yy215;
4173        }
4174    } else {
4175        if (yych <= 'r') {
4176            if (yych <= 'n') goto yy211;
4177            if (yych <= 'q') goto yy215;
4178            goto yy212;
4179        } else {
4180            if (yych <= 's') goto yy210;
4181            if (yych <= 't') goto yy213;
4182            goto yy215;
4183        }
4184    }
4185yy198:
4186    YYDEBUG(198, *YYCURSOR);
4187#line 1417 "ext/date/lib/parse_date.re"
4188    {
4189        int length = 0;
4190        DEBUG_OUTPUT("datetextual | datenoyear");
4191        TIMELIB_INIT;
4192        TIMELIB_HAVE_DATE();
4193        s->time->m = timelib_get_month((char **) &ptr);
4194        s->time->d = timelib_get_nr((char **) &ptr, 2);
4195        s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
4196        TIMELIB_PROCESS_YEAR(s->time->y, length);
4197        TIMELIB_DEINIT;
4198        return TIMELIB_DATE_TEXT;
4199    }
4200#line 4201 "ext/date/lib/parse_date.c"
4201yy199:
4202    YYDEBUG(199, *YYCURSOR);
4203    yyaccept = 6;
4204    yych = *(YYMARKER = ++YYCURSOR);
4205    if (yych <= 'm') {
4206        if (yych <= '1') {
4207            if (yych <= '/') goto yy215;
4208            if (yych <= '0') goto yy297;
4209            goto yy298;
4210        } else {
4211            if (yych <= '2') goto yy208;
4212            if (yych <= '9') goto yy209;
4213            goto yy215;
4214        }
4215    } else {
4216        if (yych <= 'r') {
4217            if (yych <= 'n') goto yy211;
4218            if (yych <= 'q') goto yy215;
4219            goto yy212;
4220        } else {
4221            if (yych <= 's') goto yy210;
4222            if (yych <= 't') goto yy213;
4223            goto yy215;
4224        }
4225    }
4226yy200:
4227    YYDEBUG(200, *YYCURSOR);
4228    yyaccept = 6;
4229    yych = *(YYMARKER = ++YYCURSOR);
4230    if (yych <= 'm') {
4231        if (yych <= '1') {
4232            if (yych <= '/') goto yy215;
4233            if (yych <= '0') goto yy206;
4234            goto yy207;
4235        } else {
4236            if (yych <= '2') goto yy208;
4237            if (yych <= '9') goto yy209;
4238            goto yy215;
4239        }
4240    } else {
4241        if (yych <= 'r') {
4242            if (yych <= 'n') goto yy211;
4243            if (yych <= 'q') goto yy215;
4244            goto yy212;
4245        } else {
4246            if (yych <= 's') goto yy210;
4247            if (yych <= 't') goto yy213;
4248            goto yy215;
4249        }
4250    }
4251yy201:
4252    YYDEBUG(201, *YYCURSOR);
4253    yych = *++YYCURSOR;
4254    if (yych <= 'M') {
4255        if (yych <= ')') {
4256            if (yych <= '(') goto yy3;
4257            goto yy139;
4258        } else {
4259            if (yych <= '@') goto yy3;
4260            if (yych <= 'L') goto yy143;
4261        }
4262    } else {
4263        if (yych <= 'l') {
4264            if (yych <= 'Z') goto yy143;
4265            if (yych <= '`') goto yy3;
4266            goto yy143;
4267        } else {
4268            if (yych <= 'm') goto yy202;
4269            if (yych <= 'z') goto yy143;
4270            goto yy3;
4271        }
4272    }
4273yy202:
4274    YYDEBUG(202, *YYCURSOR);
4275    yych = *++YYCURSOR;
4276    if (yych <= 'B') {
4277        if (yych <= ')') {
4278            if (yych <= '(') goto yy3;
4279            goto yy139;
4280        } else {
4281            if (yych <= '@') goto yy3;
4282            if (yych <= 'A') goto yy144;
4283        }
4284    } else {
4285        if (yych <= 'a') {
4286            if (yych <= 'Z') goto yy144;
4287            if (yych <= '`') goto yy3;
4288            goto yy144;
4289        } else {
4290            if (yych <= 'b') goto yy203;
4291            if (yych <= 'z') goto yy144;
4292            goto yy3;
4293        }
4294    }
4295yy203:
4296    YYDEBUG(203, *YYCURSOR);
4297    yyaccept = 0;
4298    yych = *(YYMARKER = ++YYCURSOR);
4299    if (yych <= 'D') {
4300        if (yych == ')') goto yy139;
4301        goto yy3;
4302    } else {
4303        if (yych <= 'E') goto yy204;
4304        if (yych != 'e') goto yy3;
4305    }
4306yy204:
4307    YYDEBUG(204, *YYCURSOR);
4308    yych = *++YYCURSOR;
4309    if (yych == 'R') goto yy205;
4310    if (yych != 'r') goto yy56;
4311yy205:
4312    YYDEBUG(205, *YYCURSOR);
4313    yyaccept = 5;
4314    yych = *(YYMARKER = ++YYCURSOR);
4315    if (yych <= ' ') {
4316        if (yych == '\t') goto yy195;
4317        if (yych <= 0x1F) goto yy193;
4318        goto yy195;
4319    } else {
4320        if (yych <= '.') {
4321            if (yych <= ',') goto yy193;
4322            goto yy195;
4323        } else {
4324            if (yych <= '/') goto yy193;
4325            if (yych <= '9') goto yy195;
4326            goto yy193;
4327        }
4328    }
4329yy206:
4330    YYDEBUG(206, *YYCURSOR);
4331    yych = *++YYCURSOR;
4332    if (yych <= '/') {
4333        if (yych == '.') goto yy220;
4334        goto yy56;
4335    } else {
4336        if (yych <= '0') goto yy295;
4337        if (yych <= '9') goto yy296;
4338        if (yych <= ':') goto yy220;
4339        goto yy56;
4340    }
4341yy207:
4342    YYDEBUG(207, *YYCURSOR);
4343    yych = *++YYCURSOR;
4344    if (yych <= '/') {
4345        if (yych == '.') goto yy263;
4346        goto yy56;
4347    } else {
4348        if (yych <= '2') goto yy296;
4349        if (yych <= '9') goto yy295;
4350        if (yych <= ':') goto yy263;
4351        goto yy56;
4352    }
4353yy208:
4354    YYDEBUG(208, *YYCURSOR);
4355    yych = *++YYCURSOR;
4356    if (yych <= '/') {
4357        if (yych == '.') goto yy263;
4358        goto yy56;
4359    } else {
4360        if (yych <= '4') goto yy295;
4361        if (yych <= '9') goto yy292;
4362        if (yych <= ':') goto yy263;
4363        goto yy56;
4364    }
4365yy209:
4366    YYDEBUG(209, *YYCURSOR);
4367    yych = *++YYCURSOR;
4368    if (yych <= '/') {
4369        if (yych == '.') goto yy263;
4370        goto yy56;
4371    } else {
4372        if (yych <= '9') goto yy292;
4373        if (yych <= ':') goto yy263;
4374        goto yy56;
4375    }
4376yy210:
4377    YYDEBUG(210, *YYCURSOR);
4378    yyaccept = 6;
4379    yych = *(YYMARKER = ++YYCURSOR);
4380    goto yy215;
4381yy211:
4382    YYDEBUG(211, *YYCURSOR);
4383    yyaccept = 6;
4384    yych = *(YYMARKER = ++YYCURSOR);
4385    goto yy215;
4386yy212:
4387    YYDEBUG(212, *YYCURSOR);
4388    yyaccept = 6;
4389    yych = *(YYMARKER = ++YYCURSOR);
4390    goto yy215;
4391yy213:
4392    YYDEBUG(213, *YYCURSOR);
4393    yyaccept = 6;
4394    yych = *(YYMARKER = ++YYCURSOR);
4395    goto yy215;
4396yy214:
4397    YYDEBUG(214, *YYCURSOR);
4398    yyaccept = 6;
4399    YYMARKER = ++YYCURSOR;
4400    if ((YYLIMIT - YYCURSOR) < 18) YYFILL(18);
4401    yych = *YYCURSOR;
4402yy215:
4403    YYDEBUG(215, *YYCURSOR);
4404    if (yybm[0+yych] & 64) {
4405        goto yy214;
4406    }
4407    if (yych <= '2') {
4408        if (yych <= '/') goto yy198;
4409        if (yych <= '0') goto yy258;
4410        if (yych <= '1') goto yy259;
4411        goto yy260;
4412    } else {
4413        if (yych <= '9') goto yy261;
4414        if (yych != 'T') goto yy198;
4415    }
4416    YYDEBUG(216, *YYCURSOR);
4417    yych = *++YYCURSOR;
4418    if (yych <= '/') goto yy56;
4419    if (yych <= '1') goto yy217;
4420    if (yych <= '2') goto yy218;
4421    if (yych <= '9') goto yy219;
4422    goto yy56;
4423yy217:
4424    YYDEBUG(217, *YYCURSOR);
4425    yych = *++YYCURSOR;
4426    if (yych <= '/') {
4427        if (yych == '.') goto yy220;
4428        goto yy56;
4429    } else {
4430        if (yych <= '9') goto yy219;
4431        if (yych <= ':') goto yy220;
4432        goto yy56;
4433    }
4434yy218:
4435    YYDEBUG(218, *YYCURSOR);
4436    yych = *++YYCURSOR;
4437    if (yych <= '/') {
4438        if (yych == '.') goto yy220;
4439        goto yy56;
4440    } else {
4441        if (yych <= '4') goto yy219;
4442        if (yych == ':') goto yy220;
4443        goto yy56;
4444    }
4445yy219:
4446    YYDEBUG(219, *YYCURSOR);
4447    yych = *++YYCURSOR;
4448    if (yych == '.') goto yy220;
4449    if (yych != ':') goto yy56;
4450yy220:
4451    YYDEBUG(220, *YYCURSOR);
4452    yych = *++YYCURSOR;
4453    if (yych <= '/') goto yy56;
4454    if (yych <= '5') goto yy221;
4455    if (yych <= '9') goto yy223;
4456    goto yy56;
4457yy221:
4458    YYDEBUG(221, *YYCURSOR);
4459    yyaccept = 7;
4460    yych = *(YYMARKER = ++YYCURSOR);
4461    if (yych <= '/') {
4462        if (yych == '.') goto yy224;
4463    } else {
4464        if (yych <= '9') goto yy223;
4465        if (yych <= ':') goto yy224;
4466    }
4467yy222:
4468    YYDEBUG(222, *YYCURSOR);
4469#line 1719 "ext/date/lib/parse_date.re"
4470    {
4471        int tz_not_found;
4472        DEBUG_OUTPUT("dateshortwithtimeshort | dateshortwithtimelong | dateshortwithtimelongtz");
4473        TIMELIB_INIT;
4474        TIMELIB_HAVE_DATE();
4475        s->time->m = timelib_get_month((char **) &ptr);
4476        s->time->d = timelib_get_nr((char **) &ptr, 2);
4477
4478        TIMELIB_HAVE_TIME();
4479        s->time->h = timelib_get_nr((char **) &ptr, 2);
4480        s->time->i = timelib_get_nr((char **) &ptr, 2);
4481        if (*ptr == ':') {
4482            s->time->s = timelib_get_nr((char **) &ptr, 2);
4483
4484            if (*ptr == '.') {
4485                s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
4486            }
4487        }
4488
4489        if (*ptr != '\0') {
4490            s->time->z = timelib_get_zone((char **) &ptr, &s->time->dst, s->time, &tz_not_found, s->tzdb, tz_get_wrapper);
4491            if (tz_not_found) {
4492                add_error(s, "The timezone could not be found in the database");
4493            }
4494        }
4495        TIMELIB_DEINIT;
4496        return TIMELIB_SHORTDATE_WITH_TIME;
4497    }
4498#line 4499 "ext/date/lib/parse_date.c"
4499yy223:
4500    YYDEBUG(223, *YYCURSOR);
4501    yyaccept = 7;
4502    yych = *(YYMARKER = ++YYCURSOR);
4503    if (yych == '.') goto yy224;
4504    if (yych != ':') goto yy222;
4505yy224:
4506    YYDEBUG(224, *YYCURSOR);
4507    yych = *++YYCURSOR;
4508    if (yych <= '/') goto yy56;
4509    if (yych <= '5') goto yy225;
4510    if (yych <= '6') goto yy226;
4511    if (yych <= '9') goto yy227;
4512    goto yy56;
4513yy225:
4514    YYDEBUG(225, *YYCURSOR);
4515    yych = *++YYCURSOR;
4516    if (yych <= '/') goto yy222;
4517    if (yych <= '9') goto yy228;
4518    goto yy222;
4519yy226:
4520    YYDEBUG(226, *YYCURSOR);
4521    yych = *++YYCURSOR;
4522    if (yych == '0') goto yy228;
4523    goto yy222;
4524yy227:
4525    YYDEBUG(227, *YYCURSOR);
4526    yych = *++YYCURSOR;
4527    goto yy222;
4528yy228:
4529    YYDEBUG(228, *YYCURSOR);
4530    yyaccept = 7;
4531    yych = *(YYMARKER = ++YYCURSOR);
4532    if (yych <= '*') {
4533        if (yych <= 0x1F) {
4534            if (yych == '\t') goto yy230;
4535            goto yy222;
4536        } else {
4537            if (yych <= ' ') goto yy230;
4538            if (yych == '(') goto yy230;
4539            goto yy222;
4540        }
4541    } else {
4542        if (yych <= '@') {
4543            if (yych == ',') goto yy222;
4544            if (yych <= '-') goto yy230;
4545            goto yy222;
4546        } else {
4547            if (yych <= 'Z') goto yy230;
4548            if (yych <= '`') goto yy222;
4549            if (yych <= 'z') goto yy230;
4550            goto yy222;
4551        }
4552    }
4553yy229:
4554    YYDEBUG(229, *YYCURSOR);
4555    ++YYCURSOR;
4556    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
4557    yych = *YYCURSOR;
4558yy230:
4559    YYDEBUG(230, *YYCURSOR);
4560    if (yych <= '+') {
4561        if (yych <= ' ') {
4562            if (yych == '\t') goto yy229;
4563            if (yych <= 0x1F) goto yy56;
4564            goto yy229;
4565        } else {
4566            if (yych == '(') goto yy233;
4567            if (yych <= '*') goto yy56;
4568            goto yy232;
4569        }
4570    } else {
4571        if (yych <= 'F') {
4572            if (yych == '-') goto yy232;
4573            if (yych <= '@') goto yy56;
4574            goto yy234;
4575        } else {
4576            if (yych <= 'Z') {
4577                if (yych >= 'H') goto yy234;
4578            } else {
4579                if (yych <= '`') goto yy56;
4580                if (yych <= 'z') goto yy235;
4581                goto yy56;
4582            }
4583        }
4584    }
4585yy231:
4586    YYDEBUG(231, *YYCURSOR);
4587    yych = *++YYCURSOR;
4588    if (yych <= 'L') {
4589        if (yych == ')') goto yy227;
4590        if (yych <= '@') goto yy222;
4591        goto yy236;
4592    } else {
4593        if (yych <= 'Z') {
4594            if (yych <= 'M') goto yy256;
4595            goto yy236;
4596        } else {
4597            if (yych <= '`') goto yy222;
4598            if (yych <= 'z') goto yy241;
4599            goto yy222;
4600        }
4601    }
4602yy232:
4603    YYDEBUG(232, *YYCURSOR);
4604    yych = *++YYCURSOR;
4605    if (yych <= '/') goto yy56;
4606    if (yych <= '1') goto yy251;
4607    if (yych <= '2') goto yy252;
4608    if (yych <= '9') goto yy253;
4609    goto yy56;
4610yy233:
4611    YYDEBUG(233, *YYCURSOR);
4612    yych = *++YYCURSOR;
4613    if (yych <= '@') goto yy56;
4614    if (yych <= 'Z') goto yy235;
4615    if (yych <= '`') goto yy56;
4616    if (yych <= 'z') goto yy235;
4617    goto yy56;
4618yy234:
4619    YYDEBUG(234, *YYCURSOR);
4620    yych = *++YYCURSOR;
4621    if (yych <= '@') {
4622        if (yych == ')') goto yy227;
4623        goto yy222;
4624    } else {
4625        if (yych <= 'Z') goto yy236;
4626        if (yych <= '`') goto yy222;
4627        if (yych <= 'z') goto yy241;
4628        goto yy222;
4629    }
4630yy235:
4631    YYDEBUG(235, *YYCURSOR);
4632    yych = *++YYCURSOR;
4633    if (yych <= '@') {
4634        if (yych == ')') goto yy227;
4635        goto yy222;
4636    } else {
4637        if (yych <= 'Z') goto yy236;
4638        if (yych <= '`') goto yy222;
4639        if (yych >= '{') goto yy222;
4640    }
4641yy236:
4642    YYDEBUG(236, *YYCURSOR);
4643    yych = *++YYCURSOR;
4644    if (yych <= '@') {
4645        if (yych == ')') goto yy227;
4646        goto yy222;
4647    } else {
4648        if (yych <= 'Z') goto yy237;
4649        if (yych <= '`') goto yy222;
4650        if (yych >= '{') goto yy222;
4651    }
4652yy237:
4653    YYDEBUG(237, *YYCURSOR);
4654    yych = *++YYCURSOR;
4655    if (yych <= '@') {
4656        if (yych == ')') goto yy227;
4657        goto yy222;
4658    } else {
4659        if (yych <= 'Z') goto yy238;
4660        if (yych <= '`') goto yy222;
4661        if (yych >= '{') goto yy222;
4662    }
4663yy238:
4664    YYDEBUG(238, *YYCURSOR);
4665    yych = *++YYCURSOR;
4666    if (yych <= '@') {
4667        if (yych == ')') goto yy227;
4668        goto yy222;
4669    } else {
4670        if (yych <= 'Z') goto yy239;
4671        if (yych <= '`') goto yy222;
4672        if (yych >= '{') goto yy222;
4673    }
4674yy239:
4675    YYDEBUG(239, *YYCURSOR);
4676    yych = *++YYCURSOR;
4677    if (yych <= '@') {
4678        if (yych == ')') goto yy227;
4679        goto yy222;
4680    } else {
4681        if (yych <= 'Z') goto yy240;
4682        if (yych <= '`') goto yy222;
4683        if (yych >= '{') goto yy222;
4684    }
4685yy240:
4686    YYDEBUG(240, *YYCURSOR);
4687    yych = *++YYCURSOR;
4688    if (yych == ')') goto yy227;
4689    goto yy222;
4690yy241:
4691    YYDEBUG(241, *YYCURSOR);
4692    yyaccept = 7;
4693    yych = *(YYMARKER = ++YYCURSOR);
4694    if (yych <= '/') {
4695        if (yych <= ',') {
4696            if (yych == ')') goto yy227;
4697            goto yy222;
4698        } else {
4699            if (yych == '.') goto yy222;
4700            goto yy243;
4701        }
4702    } else {
4703        if (yych <= '^') {
4704            if (yych <= '@') goto yy222;
4705            if (yych <= 'Z') goto yy237;
4706            goto yy222;
4707        } else {
4708            if (yych <= '_') goto yy243;
4709            if (yych <= '`') goto yy222;
4710            if (yych >= '{') goto yy222;
4711        }
4712    }
4713yy242:
4714    YYDEBUG(242, *YYCURSOR);
4715    yyaccept = 7;
4716    yych = *(YYMARKER = ++YYCURSOR);
4717    if (yych <= '/') {
4718        if (yych <= ',') {
4719            if (yych == ')') goto yy227;
4720            goto yy222;
4721        } else {
4722            if (yych == '.') goto yy222;
4723        }
4724    } else {
4725        if (yych <= '^') {
4726            if (yych <= '@') goto yy222;
4727            if (yych <= 'Z') goto yy238;
4728            goto yy222;
4729        } else {
4730            if (yych <= '_') goto yy243;
4731            if (yych <= '`') goto yy222;
4732            if (yych <= 'z') goto yy246;
4733            goto yy222;
4734        }
4735    }
4736yy243:
4737    YYDEBUG(243, *YYCURSOR);
4738    ++YYCURSOR;
4739    if (YYLIMIT <= YYCURSOR) YYFILL(1);
4740    yych = *YYCURSOR;
4741    if (yych <= '@') goto yy56;
4742    if (yych <= 'Z') goto yy244;
4743    if (yych <= '`') goto yy56;
4744    if (yych >= '{') goto yy56;
4745yy244:
4746    YYDEBUG(244, *YYCURSOR);
4747    yyaccept = 7;
4748    YYMARKER = ++YYCURSOR;
4749    if (YYLIMIT <= YYCURSOR) YYFILL(1);
4750    yych = *YYCURSOR;
4751    YYDEBUG(245, *YYCURSOR);
4752    if (yych <= '@') {
4753        if (yych <= '-') {
4754            if (yych <= ',') goto yy222;
4755            goto yy243;
4756        } else {
4757            if (yych == '/') goto yy243;
4758            goto yy222;
4759        }
4760    } else {
4761        if (yych <= '_') {
4762            if (yych <= 'Z') goto yy244;
4763            if (yych <= '^') goto yy222;
4764            goto yy243;
4765        } else {
4766            if (yych <= '`') goto yy222;
4767            if (yych <= 'z') goto yy244;
4768            goto yy222;
4769        }
4770    }
4771yy246:
4772    YYDEBUG(246, *YYCURSOR);
4773    yyaccept = 7;
4774    yych = *(YYMARKER = ++YYCURSOR);
4775    if (yych <= '/') {
4776        if (yych <= ',') {
4777            if (yych == ')') goto yy227;
4778            goto yy222;
4779        } else {
4780            if (yych == '.') goto yy222;
4781            goto yy243;
4782        }
4783    } else {
4784        if (yych <= '^') {
4785            if (yych <= '@') goto yy222;
4786            if (yych <= 'Z') goto yy239;
4787            goto yy222;
4788        } else {
4789            if (yych <= '_') goto yy243;
4790            if (yych <= '`') goto yy222;
4791            if (yych >= '{') goto yy222;
4792        }
4793    }
4794    YYDEBUG(247, *YYCURSOR);
4795    yyaccept = 7;
4796    yych = *(YYMARKER = ++YYCURSOR);
4797    if (yych <= '/') {
4798        if (yych <= ',') {
4799            if (yych == ')') goto yy227;
4800            goto yy222;
4801        } else {
4802            if (yych == '.') goto yy222;
4803            goto yy243;
4804        }
4805    } else {
4806        if (yych <= '^') {
4807            if (yych <= '@') goto yy222;
4808            if (yych <= 'Z') goto yy240;
4809            goto yy222;
4810        } else {
4811            if (yych <= '_') goto yy243;
4812            if (yych <= '`') goto yy222;
4813            if (yych >= '{') goto yy222;
4814        }
4815    }
4816    YYDEBUG(248, *YYCURSOR);
4817    yyaccept = 7;
4818    yych = *(YYMARKER = ++YYCURSOR);
4819    if (yych <= '.') {
4820        if (yych <= ')') {
4821            if (yych <= '(') goto yy222;
4822            goto yy227;
4823        } else {
4824            if (yych == '-') goto yy243;
4825            goto yy222;
4826        }
4827    } else {
4828        if (yych <= '_') {
4829            if (yych <= '/') goto yy243;
4830            if (yych <= '^') goto yy222;
4831            goto yy243;
4832        } else {
4833            if (yych <= '`') goto yy222;
4834            if (yych >= '{') goto yy222;
4835        }
4836    }
4837yy249:
4838    YYDEBUG(249, *YYCURSOR);
4839    ++YYCURSOR;
4840    if (YYLIMIT <= YYCURSOR) YYFILL(1);
4841    yych = *YYCURSOR;
4842    YYDEBUG(250, *YYCURSOR);
4843    if (yych <= '/') {
4844        if (yych == '-') goto yy243;
4845        if (yych <= '.') goto yy56;
4846        goto yy243;
4847    } else {
4848        if (yych <= '_') {
4849            if (yych <= '^') goto yy56;
4850            goto yy243;
4851        } else {
4852            if (yych <= '`') goto yy56;
4853            if (yych <= 'z') goto yy249;
4854            goto yy56;
4855        }
4856    }
4857yy251:
4858    YYDEBUG(251, *YYCURSOR);
4859    yych = *++YYCURSOR;
4860    if (yych <= '/') goto yy222;
4861    if (yych <= '9') goto yy253;
4862    if (yych <= ':') goto yy254;
4863    goto yy222;
4864yy252:
4865    YYDEBUG(252, *YYCURSOR);
4866    yych = *++YYCURSOR;
4867    if (yych <= '5') {
4868        if (yych <= '/') goto yy222;
4869        if (yych >= '5') goto yy255;
4870    } else {
4871        if (yych <= '9') goto yy227;
4872        if (yych <= ':') goto yy254;
4873        goto yy222;
4874    }
4875yy253:
4876    YYDEBUG(253, *YYCURSOR);
4877    yych = *++YYCURSOR;
4878    if (yych <= '/') goto yy222;
4879    if (yych <= '5') goto yy255;
4880    if (yych <= '9') goto yy227;
4881    if (yych >= ';') goto yy222;
4882yy254:
4883    YYDEBUG(254, *YYCURSOR);
4884    yych = *++YYCURSOR;
4885    if (yych <= '/') goto yy222;
4886    if (yych <= '5') goto yy255;
4887    if (yych <= '9') goto yy227;
4888    goto yy222;
4889yy255:
4890    YYDEBUG(255, *YYCURSOR);
4891    yych = *++YYCURSOR;
4892    if (yych <= '/') goto yy222;
4893    if (yych <= '9') goto yy227;
4894    goto yy222;
4895yy256:
4896    YYDEBUG(256, *YYCURSOR);
4897    yych = *++YYCURSOR;
4898    if (yych <= 'S') {
4899        if (yych == ')') goto yy227;
4900        if (yych <= '@') goto yy222;
4901        goto yy237;
4902    } else {
4903        if (yych <= 'Z') {
4904            if (yych >= 'U') goto yy237;
4905        } else {
4906            if (yych <= '`') goto yy222;
4907            if (yych <= 'z') goto yy237;
4908            goto yy222;
4909        }
4910    }
4911    YYDEBUG(257, *YYCURSOR);
4912    yyaccept = 7;
4913    yych = *(YYMARKER = ++YYCURSOR);
4914    if (yych <= ',') {
4915        if (yych <= ')') {
4916            if (yych <= '(') goto yy222;
4917            goto yy227;
4918        } else {
4919            if (yych == '+') goto yy232;
4920            goto yy222;
4921        }
4922    } else {
4923        if (yych <= 'Z') {
4924            if (yych <= '-') goto yy232;
4925            if (yych <= '@') goto yy222;
4926            goto yy238;
4927        } else {
4928            if (yych <= '`') goto yy222;
4929            if (yych <= 'z') goto yy238;
4930            goto yy222;
4931        }
4932    }
4933yy258:
4934    YYDEBUG(258, *YYCURSOR);
4935    yyaccept = 6;
4936    yych = *(YYMARKER = ++YYCURSOR);
4937    if (yych <= '/') {
4938        if (yych == '.') goto yy220;
4939        goto yy198;
4940    } else {
4941        if (yych <= '0') goto yy290;
4942        if (yych <= '9') goto yy291;
4943        if (yych <= ':') goto yy220;
4944        goto yy198;
4945    }
4946yy259:
4947    YYDEBUG(259, *YYCURSOR);
4948    yyaccept = 6;
4949    yych = *(YYMARKER = ++YYCURSOR);
4950    if (yych <= '/') {
4951        if (yych == '.') goto yy263;
4952        goto yy198;
4953    } else {
4954        if (yych <= '2') goto yy291;
4955        if (yych <= '9') goto yy290;
4956        if (yych <= ':') goto yy263;
4957        goto yy198;
4958    }
4959yy260:
4960    YYDEBUG(260, *YYCURSOR);
4961    yyaccept = 6;
4962    yych = *(YYMARKER = ++YYCURSOR);
4963    if (yych <= '/') {
4964        if (yych == '.') goto yy263;
4965        goto yy198;
4966    } else {
4967        if (yych <= '4') goto yy290;
4968        if (yych <= '9') goto yy262;
4969        if (yych <= ':') goto yy263;
4970        goto yy198;
4971    }
4972yy261:
4973    YYDEBUG(261, *YYCURSOR);
4974    yyaccept = 6;
4975    yych = *(YYMARKER = ++YYCURSOR);
4976    if (yych <= '/') {
4977        if (yych == '.') goto yy263;
4978        goto yy198;
4979    } else {
4980        if (yych <= '9') goto yy262;
4981        if (yych <= ':') goto yy263;
4982        goto yy198;
4983    }
4984yy262:
4985    YYDEBUG(262, *YYCURSOR);
4986    yych = *++YYCURSOR;
4987    if (yych <= '/') goto yy198;
4988    if (yych <= '9') goto yy288;
4989    goto yy198;
4990yy263:
4991    YYDEBUG(263, *YYCURSOR);
4992    yych = *++YYCURSOR;
4993    if (yych <= '/') goto yy56;
4994    if (yych <= '5') goto yy264;
4995    if (yych <= '9') goto yy265;
4996    goto yy56;
4997yy264:
4998    YYDEBUG(264, *YYCURSOR);
4999    yyaccept = 7;
5000    yych = *(YYMARKER = ++YYCURSOR);
5001    if (yych <= '/') {
5002        if (yych == '.') goto yy266;
5003        goto yy222;
5004    } else {
5005        if (yych <= '9') goto yy281;
5006        if (yych <= ':') goto yy266;
5007        goto yy222;
5008    }
5009yy265:
5010    YYDEBUG(265, *YYCURSOR);
5011    yyaccept = 7;
5012    yych = *(YYMARKER = ++YYCURSOR);
5013    if (yych == '.') goto yy266;
5014    if (yych != ':') goto yy222;
5015yy266:
5016    YYDEBUG(266, *YYCURSOR);
5017    yych = *++YYCURSOR;
5018    if (yych <= '/') goto yy56;
5019    if (yych <= '5') goto yy267;
5020    if (yych <= '6') goto yy268;
5021    if (yych <= '9') goto yy227;
5022    goto yy56;
5023yy267:
5024    YYDEBUG(267, *YYCURSOR);
5025    yych = *++YYCURSOR;
5026    if (yych <= '/') goto yy222;
5027    if (yych <= '9') goto yy269;
5028    goto yy222;
5029yy268:
5030    YYDEBUG(268, *YYCURSOR);
5031    yych = *++YYCURSOR;
5032    if (yych != '0') goto yy222;
5033yy269:
5034    YYDEBUG(269, *YYCURSOR);
5035    yyaccept = 7;
5036    yych = *(YYMARKER = ++YYCURSOR);
5037    if (yych <= '*') {
5038        if (yych <= 0x1F) {
5039            if (yych == '\t') goto yy271;
5040            goto yy222;
5041        } else {
5042            if (yych <= ' ') goto yy271;
5043            if (yych == '(') goto yy271;
5044            goto yy222;
5045        }
5046    } else {
5047        if (yych <= '@') {
5048            if (yych == ',') goto yy222;
5049            if (yych <= '-') goto yy271;
5050            goto yy222;
5051        } else {
5052            if (yych <= 'Z') goto yy271;
5053            if (yych <= '`') goto yy222;
5054            if (yych <= 'z') goto yy271;
5055            goto yy222;
5056        }
5057    }
5058yy270:
5059    YYDEBUG(270, *YYCURSOR);
5060    ++YYCURSOR;
5061    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
5062    yych = *YYCURSOR;
5063yy271:
5064    YYDEBUG(271, *YYCURSOR);
5065    if (yych <= '@') {
5066        if (yych <= '\'') {
5067            if (yych <= '\t') {
5068                if (yych <= 0x08) goto yy56;
5069                goto yy270;
5070            } else {
5071                if (yych == ' ') goto yy270;
5072                goto yy56;
5073            }
5074        } else {
5075            if (yych <= '+') {
5076                if (yych <= '(') goto yy233;
5077                if (yych <= '*') goto yy56;
5078                goto yy232;
5079            } else {
5080                if (yych == '-') goto yy232;
5081                goto yy56;
5082            }
5083        }
5084    } else {
5085        if (yych <= 'Z') {
5086            if (yych <= 'G') {
5087                if (yych <= 'A') goto yy272;
5088                if (yych <= 'F') goto yy234;
5089                goto yy231;
5090            } else {
5091                if (yych != 'P') goto yy234;
5092            }
5093        } else {
5094            if (yych <= 'o') {
5095                if (yych <= '`') goto yy56;
5096                if (yych <= 'a') goto yy273;
5097                goto yy235;
5098            } else {
5099                if (yych <= 'p') goto yy273;
5100                if (yych <= 'z') goto yy235;
5101                goto yy56;
5102            }
5103        }
5104    }
5105yy272:
5106    YYDEBUG(272, *YYCURSOR);
5107    yyaccept = 7;
5108    yych = *(YYMARKER = ++YYCURSOR);
5109    if (yych <= 'L') {
5110        if (yych <= '-') {
5111            if (yych == ')') goto yy227;
5112            goto yy222;
5113        } else {
5114            if (yych <= '.') goto yy274;
5115            if (yych <= '@') goto yy222;
5116            goto yy236;
5117        }
5118    } else {
5119        if (yych <= '`') {
5120            if (yych <= 'M') goto yy275;
5121            if (yych <= 'Z') goto yy236;
5122            goto yy222;
5123        } else {
5124            if (yych == 'm') goto yy280;
5125            if (yych <= 'z') goto yy241;
5126            goto yy222;
5127        }
5128    }
5129yy273:
5130    YYDEBUG(273, *YYCURSOR);
5131    yyaccept = 7;
5132    yych = *(YYMARKER = ++YYCURSOR);
5133    if (yych <= 'L') {
5134        if (yych <= '-') {
5135            if (yych == ')') goto yy227;
5136            goto yy222;
5137        } else {
5138            if (yych <= '.') goto yy274;
5139            if (yych <= '@') goto yy222;
5140            goto yy236;
5141        }
5142    } else {
5143        if (yych <= '`') {
5144            if (yych <= 'M') goto yy275;
5145            if (yych <= 'Z') goto yy236;
5146            goto yy222;
5147        } else {
5148            if (yych == 'm') goto yy275;
5149            if (yych <= 'z') goto yy236;
5150            goto yy222;
5151        }
5152    }
5153yy274:
5154    YYDEBUG(274, *YYCURSOR);
5155    yych = *++YYCURSOR;
5156    if (yych == 'M') goto yy279;
5157    if (yych == 'm') goto yy279;
5158    goto yy56;
5159yy275:
5160    YYDEBUG(275, *YYCURSOR);
5161    yyaccept = 7;
5162    yych = *(YYMARKER = ++YYCURSOR);
5163    if (yych <= ')') {
5164        if (yych <= '\t') {
5165            if (yych <= 0x00) goto yy277;
5166            if (yych <= 0x08) goto yy222;
5167            goto yy277;
5168        } else {
5169            if (yych == ' ') goto yy277;
5170            if (yych <= '(') goto yy222;
5171            goto yy227;
5172        }
5173    } else {
5174        if (yych <= '@') {
5175            if (yych != '.') goto yy222;
5176        } else {
5177            if (yych <= 'Z') goto yy237;
5178            if (yych <= '`') goto yy222;
5179            if (yych <= 'z') goto yy237;
5180            goto yy222;
5181        }
5182    }
5183yy276:
5184    YYDEBUG(276, *YYCURSOR);
5185    yych = *++YYCURSOR;
5186    if (yych <= '\t') {
5187        if (yych <= 0x00) goto yy277;
5188        if (yych <= 0x08) goto yy56;
5189    } else {
5190        if (yych != ' ') goto yy56;
5191    }
5192yy277:
5193    YYDEBUG(277, *YYCURSOR);
5194    ++YYCURSOR;
5195    YYDEBUG(278, *YYCURSOR);
5196#line 1695 "ext/date/lib/parse_date.re"
5197    {
5198        DEBUG_OUTPUT("dateshortwithtimeshort12 | dateshortwithtimelong12");
5199        TIMELIB_INIT;
5200        TIMELIB_HAVE_DATE();
5201        s->time->m = timelib_get_month((char **) &ptr);
5202        s->time->d = timelib_get_nr((char **) &ptr, 2);
5203
5204        TIMELIB_HAVE_TIME();
5205        s->time->h = timelib_get_nr((char **) &ptr, 2);
5206        s->time->i = timelib_get_nr((char **) &ptr, 2);
5207        if (*ptr == ':' || *ptr == '.') {
5208            s->time->s = timelib_get_nr((char **) &ptr, 2);
5209
5210            if (*ptr == '.') {
5211                s->time->f = timelib_get_frac_nr((char **) &ptr, 8);
5212            }
5213        }
5214
5215        s->time->h += timelib_meridian((char **) &ptr, s->time->h);
5216        TIMELIB_DEINIT;
5217        return TIMELIB_SHORTDATE_WITH_TIME;
5218    }
5219#line 5220 "ext/date/lib/parse_date.c"
5220yy279:
5221    YYDEBUG(279, *YYCURSOR);
5222    yych = *++YYCURSOR;
5223    if (yych <= 0x1F) {
5224        if (yych <= 0x00) goto yy277;
5225        if (yych == '\t') goto yy277;
5226        goto yy56;
5227    } else {
5228        if (yych <= ' ') goto yy277;
5229        if (yych == '.') goto yy276;
5230        goto yy56;
5231    }
5232yy280:
5233    YYDEBUG(280, *YYCURSOR);
5234    yyaccept = 7;
5235    yych = *(YYMARKER = ++YYCURSOR);
5236    if (yych <= '-') {
5237        if (yych <= 0x1F) {
5238            if (yych <= 0x00) goto yy277;
5239            if (yych == '\t') goto yy277;
5240            goto yy222;
5241        } else {
5242            if (yych <= '(') {
5243                if (yych <= ' ') goto yy277;
5244                goto yy222;
5245            } else {
5246                if (yych <= ')') goto yy227;
5247                if (yych <= ',') goto yy222;
5248                goto yy243;
5249            }
5250        }
5251    } else {
5252        if (yych <= 'Z') {
5253            if (yych <= '.') goto yy276;
5254            if (yych <= '/') goto yy243;
5255            if (yych <= '@') goto yy222;
5256            goto yy237;
5257        } else {
5258            if (yych <= '_') {
5259                if (yych <= '^') goto yy222;
5260                goto yy243;
5261            } else {
5262                if (yych <= '`') goto yy222;
5263                if (yych <= 'z') goto yy242;
5264                goto yy222;
5265            }
5266        }
5267    }
5268yy281:
5269    YYDEBUG(281, *YYCURSOR);
5270    yyaccept = 7;
5271    yych = *(YYMARKER = ++YYCURSOR);
5272    if (yych <= ':') {
5273        if (yych <= ' ') {
5274            if (yych == '\t') goto yy282;
5275            if (yych <= 0x1F) goto yy222;
5276        } else {
5277            if (yych == '.') goto yy266;
5278            if (yych <= '9') goto yy222;
5279            goto yy266;
5280        }
5281    } else {
5282        if (yych <= 'P') {
5283            if (yych == 'A') goto yy284;
5284            if (yych <= 'O') goto yy222;
5285            goto yy284;
5286        } else {
5287            if (yych <= 'a') {
5288                if (yych <= '`') goto yy222;
5289                goto yy284;
5290            } else {
5291                if (yych == 'p') goto yy284;
5292                goto yy222;
5293            }
5294        }
5295    }
5296yy282:
5297    YYDEBUG(282, *YYCURSOR);
5298    ++YYCURSOR;
5299    if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
5300    yych = *YYCURSOR;
5301    YYDEBUG(283, *YYCURSOR);
5302    if (yych <= 'A') {
5303        if (yych <= 0x1F) {
5304            if (yych == '\t') goto yy282;
5305            goto yy56;
5306        } else {
5307            if (yych <= ' ') goto yy282;
5308            if (yych <= '@') goto yy56;
5309        }
5310    } else {
5311        if (yych <= '`') {
5312            if (yych != 'P') goto yy56;
5313        } else {
5314            if (yych <= 'a') goto yy284;
5315            if (yych != 'p') goto yy56;
5316        }
5317    }
5318yy284:
5319    YYDEBUG(284, *YYCURSOR);
5320    yych = *++YYCURSOR;
5321    if (yych <= 'L') {
5322        if (yych != '.') goto yy56;
5323    } else {
5324        if (yych <= 'M') goto yy286;
5325        if (yych == 'm') goto yy286;
5326        goto yy56;
5327    }
5328yy285:
5329    YYDEBUG(285, *YYCURSOR);
5330    yych = *++YYCURSOR;
5331    if (yych == 'M') goto yy286;
5332    if (yych != 'm') goto yy56;
5333yy286:
5334    YYDEBUG(286, *YYCURSOR);
5335    yych = *++YYCURSOR;
5336    if (yych <= 0x1F) {
5337        if (yych <= 0x00) goto yy277;
5338        if (yych == '\t') goto yy277;
5339        goto yy56;
5340    } else {
5341        if (yych <= ' ') goto yy277;
5342        if (yych != '.') goto yy56;
5343    }
5344yy287:
5345    YYDEBUG(287, *YYCURSOR);
5346    yych = *++YYCURSOR;
5347    if (yych <= '\t') {
5348        if (yych <= 0x00) goto yy277;
5349        if (yych <= 0x08) goto yy56;
5350        goto yy277;
5351    } else {
5352        if (yych == ' ') goto yy277;
5353        goto yy56;
5354    }
5355yy288:
5356    YYDEBUG(288, *YYCURSOR);
5357    yych = *++YYCURSOR;
5358    if (yych <= '/') goto yy198;
5359    if (yych >= ':') goto yy198;
5360    YYDEBUG(289, *YYCURSOR);
5361    yych = *++YYCURSOR;
5362    goto yy198;
5363yy290:
5364    YYDEBUG(290, *YYCURSOR);
5365    yyaccept = 6;
5366    yych = *(YYMARKER = ++YYCURSOR);
5367    if (yych <= '/') {
5368        if (yych == '.') goto yy220;
5369        goto yy198;
5370    } else {
5371        if (yych <= '9') goto yy288;
5372        if (yych <= ':') goto yy220;
5373        goto yy198;
5374    }
5375yy291:
5376    YYDEBUG(291, *YYCURSOR);
5377    yyaccept = 6;
5378    yych = *(YYMARKER = ++YYCURSOR);
5379    if (yych <= '/') {
5380        if (yych == '.') goto yy263;
5381        goto yy198;
5382    } else {
5383        if (yych <= '9') goto yy288;
5384        if (yych <= ':') goto yy263;
5385        goto yy198;
5386    }
5387yy292:
5388    YYDEBUG(292, *YYCURSOR);
5389    yych = *++YYCURSOR;
5390    if (yych <= '/') goto yy56;
5391    if (yych >= ':') goto yy56;
5392yy293:
5393    YYDEBUG(293, *YYCURSOR);
5394    ++YYCURSOR;
5395yy294:
5396    YYDEBUG(294, *YYCURSOR);
5397#line 1389 "ext/date/lib/parse_date.re"
5398    {
5399        int length = 0;
5400        DEBUG_OUTPUT("datenoday");
5401        TIMELIB_INIT;
5402        TIMELIB_HAVE_DATE();
5403        s->time->m = timelib_get_month((char **) &ptr);
5404        s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
5405        s->time->d = 1;
5406        TIMELIB_PROCESS_YEAR(s->time->y, length);
5407        TIMELIB_DEINIT;
5408        return TIMELIB_DATE_NO_DAY;
5409    }
5410#line 5411 "ext/date/lib/parse_date.c"
5411yy295:
5412    YYDEBUG(295, *YYCURSOR);
5413    yych = *++YYCURSOR;
5414    if (yych <= '/') {
5415        if (yych == '.') goto yy220;
5416        goto yy56;
5417    } else {
5418        if (yych <= '9') goto yy293;
5419        if (yych <= ':') goto yy220;
5420        goto yy56;
5421    }
5422yy296:
5423    YYDEBUG(296, *YYCURSOR);
5424    yych = *++YYCURSOR;
5425    if (yych <= '/') {
5426        if (yych == '.') goto yy263;
5427        goto yy56;
5428    } else {
5429        if (yych <= '9') goto yy293;
5430        if (yych <= ':') goto yy263;
5431        goto yy56;
5432    }
5433yy297:
5434    YYDEBUG(297, *YYCURSOR);
5435    yyaccept = 6;
5436    yych = *(YYMARKER = ++YYCURSOR);
5437    if (yych <= '9') {
5438        if (yych <= '/') {
5439            if (yych == '.') goto yy330;
5440            goto yy215;
5441        } else {
5442            if (yych <= '0') goto yy331;
5443            if (yych <= '1') goto yy301;
5444            if (yych <= '2') goto yy302;
5445            goto yy296;
5446        }
5447    } else {
5448        if (yych <= 'q') {
5449            if (yych <= ':') goto yy220;
5450            if (yych == 'n') goto yy211;
5451            goto yy215;
5452        } else {
5453            if (yych <= 'r') goto yy212;
5454            if (yych <= 's') goto yy210;
5455            if (yych <= 't') goto yy213;
5456            goto yy215;
5457        }
5458    }
5459yy298:
5460    YYDEBUG(298, *YYCURSOR);
5461    yyaccept = 6;
5462    yych = *(YYMARKER = ++YYCURSOR);
5463    if (yych <= '9') {
5464        if (yych <= '/') {
5465            if (yych != '.') goto yy215;
5466        } else {
5467            if (yych <= '0') goto yy300;
5468            if (yych <= '1') goto yy301;
5469            if (yych <= '2') goto yy302;
5470            goto yy296;
5471        }
5472    } else {
5473        if (yych <= 'q') {
5474            if (yych <= ':') goto yy263;
5475            if (yych == 'n') goto yy211;
5476            goto yy215;
5477        } else {
5478            if (yych <= 'r') goto yy212;
5479            if (yych <= 's') goto yy210;
5480            if (yych <= 't') goto yy213;
5481            goto yy215;
5482        }
5483    }
5484yy299:
5485    YYDEBUG(299, *YYCURSOR);
5486    yyaccept = 6;
5487    yych = *(YYMARKER = ++YYCURSOR);
5488    if (yych <= '1') {
5489        if (yych <= '/') goto yy215;
5490        if (yych <= '0') goto yy305;
5491        goto yy306;
5492    } else {
5493        if (yych <= '2') goto yy307;
5494        if (yych <= '5') goto yy308;
5495        if (yych <= '9') goto yy309;
5496        goto yy215;
5497    }
5498yy300:
5499    YYDEBUG(300, *YYCURSOR);
5500    yych = *++YYCURSOR;
5501    if (yych <= '/') {
5502        if (yych == '.') goto yy263;
5503        goto yy56;
5504    } else {
5505        if (yych <= '0') goto yy303;
5506        if (yych <= '9') goto yy304;
5507        if (yych <= ':') goto yy263;
5508        goto yy56;
5509    }
5510yy301:
5511    YYDEBUG(301, *YYCURSOR);
5512    yych = *++YYCURSOR;
5513    if (yych <= '/') {
5514        if (yych == '.') goto yy263;
5515        goto yy56;
5516    } else {
5517        if (yych <= '2') goto yy304;
5518        if (yych <= '9') goto yy303;
5519        if (yych <= ':') goto yy263;
5520        goto yy56;
5521    }
5522yy302:
5523    YYDEBUG(302, *YYCURSOR);
5524    yych = *++YYCURSOR;
5525    if (yych <= '/') {
5526        if (yych == '.') goto yy263;
5527        goto yy56;
5528    } else {
5529        if (yych <= '4') goto yy303;
5530        if (yych <= '9') goto yy293;
5531        if (yych <= ':') goto yy263;
5532        goto yy56;
5533    }
5534yy303:
5535    YYDEBUG(303, *YYCURSOR);
5536    yyaccept = 8;
5537    yych = *(YYMARKER = ++YYCURSOR);
5538    if (yych == '.') goto yy220;
5539    if (yych == ':') goto yy220;
5540    goto yy294;
5541yy304:
5542    YYDEBUG(304, *YYCURSOR);
5543    yyaccept = 8;
5544    yych = *(YYMARKER = ++YYCURSOR);
5545    if (yych == '.') goto yy263;
5546    if (yych == ':') goto yy263;
5547    goto yy294;
5548yy305:
5549    YYDEBUG(305, *YYCURSOR);
5550    yyaccept = 6;
5551    yych = *(YYMARKER = ++YYCURSOR);
5552    if (yych <= '/') {
5553        if (yych == '.') goto yy325;
5554        goto yy198;
5555    } else {
5556        if (yych <= '0') goto yy324;
5557        if (yych <= '9') goto yy329;
5558        if (yych <= ':') goto yy325;
5559        goto yy198;
5560    }
5561yy306:
5562    YYDEBUG(306, *YYCURSOR);
5563    yyaccept = 6;
5564    yych = *(YYMARKER = ++YYCURSOR);
5565    if (yych <= '/') {
5566        if (yych == '.') goto yy310;
5567        goto yy198;
5568    } else {
5569        if (yych <= '2') goto yy329;
5570        if (yych <= '9') goto yy324;
5571        if (yych <= ':') goto yy310;
5572        goto yy198;
5573    }
5574yy307:
5575    YYDEBUG(307, *YYCURSOR);
5576    yyaccept = 6;
5577    yych = *(YYMARKER = ++YYCURSOR);
5578    if (yych <= '/') {
5579        if (yych == '.') goto yy310;
5580        goto yy198;
5581    } else {
5582        if (yych <= '4') goto yy324;
5583        if (yych <= '9') goto yy323;
5584        if (yych <= ':') goto yy310;
5585        goto yy198;
5586    }
5587yy308:
5588    YYDEBUG(308, *YYCURSOR);
5589    yyaccept = 6;
5590    yych = *(YYMARKER = ++YYCURSOR);
5591    if (yych <= '/') {
5592        if (yych == '.') goto yy310;
5593        goto yy198;
5594    } else {
5595        if (yych <= '9') goto yy323;
5596        if (yych <= ':') goto yy310;
5597        goto yy198;
5598    }
5599yy309:
5600    YYDEBUG(309, *YYCURSOR);
5601    yyaccept = 6;
5602    yych = *(YYMARKER = ++YYCURSOR);
5603    if (yych <= '/') {
5604        if (yych != '.') goto yy198;
5605    } else {
5606        if (yych <= '9') goto yy262;
5607        if (yych >= ';') goto yy198;
5608    }
5609yy310:
5610    YYDEBUG(310, *YYCURSOR);
5611    yych = *++YYCURSOR;
5612    if (yych <= '/') goto yy56;
5613    if (yych <= '5') goto yy311;
5614    if (yych <= '6') goto yy312;
5615    if (yych <= '9') goto yy265;
5616    goto yy56;
5617yy311:
5618    YYDEBUG(311, *YYCURSOR);
5619    yyaccept = 7;
5620    yych = *(YYMARKER = ++YYCURSOR);
5621    if (yych <= '/') {
5622        if (yych == '.') goto yy266;
5623        goto yy222;
5624    } else {
5625        if (yych <= '9') goto yy313;
5626        if (yych <= ':') goto yy266;
5627        goto yy222;
5628    }
5629yy312:
5630    YYDEBUG(312, *YYCURSOR);
5631    yyaccept = 7;
5632    yych = *(YYMARKER = ++YYCURSOR);
5633    if (yych <= '/') {
5634        if (yych == '.') goto yy266;
5635        goto yy222;
5636    } else {
5637        if (yych <= '0') goto yy269;
5638        if (yych == ':') goto yy266;
5639        goto yy222;
5640    }
5641yy313:
5642    YYDEBUG(313, *YYCURSOR);
5643    yyaccept = 7;
5644    yych = *(YYMARKER = ++YYCURSOR);
5645    if (yych <= ',') {
5646        if (yych <= ' ') {
5647            if (yych == '\t') goto yy315;
5648            if (yych <= 0x1F) goto yy222;
5649            goto yy315;
5650        } else {
5651            if (yych <= '(') {
5652                if (yych <= '\'') goto yy222;
5653                goto yy315;
5654            } else {
5655                if (yych == '+') goto yy315;
5656                goto yy222;
5657            }
5658        }
5659    } else {
5660        if (yych <= ':') {
5661            if (yych <= '-') goto yy315;
5662            if (yych <= '.') goto yy266;
5663            if (yych <= '9') goto yy222;
5664            goto yy266;
5665        } else {
5666            if (yych <= 'Z') {
5667                if (yych <= '@') goto yy222;
5668                goto yy315;
5669            } else {
5670                if (yych <= '`') goto yy222;
5671                if (yych <= 'z') goto yy315;
5672                goto yy222;
5673            }
5674        }
5675    }
5676yy314:
5677    YYDEBUG(314, *YYCURSOR);
5678    ++YYCURSOR;
5679    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
5680    yych = *YYCURSOR;
5681yy315:
5682    YYDEBUG(315, *YYCURSOR);
5683    if (yych <= '@') {
5684        if (yych <= '\'') {
5685            if (yych <= '\t') {
5686                if (yych <= 0x08) goto yy56;
5687                goto yy314;
5688            } else {
5689                if (yych == ' ') goto yy314;
5690                goto yy56;
5691            }
5692        } else {
5693            if (yych <= '+') {
5694                if (yych <= '(') goto yy233;
5695                if (yych <= '*') goto yy56;
5696                goto yy232;
5697            } else {
5698                if (yych == '-') goto yy232;
5699                goto yy56;
5700            }
5701        }
5702    } else {
5703        if (yych <= 'Z') {
5704            if (yych <= 'G') {
5705                if (yych <= 'A') goto yy316;
5706                if (yych <= 'F') goto yy234;
5707                goto yy231;
5708            } else {
5709                if (yych != 'P') goto yy234;
5710            }
5711        } else {
5712            if (yych <= 'o') {
5713                if (yych <= '`') goto yy56;
5714                if (yych <= 'a') goto yy317;
5715                goto yy235;
5716            } else {
5717                if (yych <= 'p') goto yy317;
5718                if (yych <= 'z') goto yy235;
5719                goto yy56;
5720            }
5721        }
5722    }
5723yy316:
5724    YYDEBUG(316, *YYCURSOR);
5725    yyaccept = 7;
5726    yych = *(YYMARKER = ++YYCURSOR);
5727    if (yych <= 'L') {
5728        if (yych <= '-') {
5729            if (yych == ')') goto yy227;
5730            goto yy222;
5731        } else {
5732            if (yych <= '.') goto yy319;
5733            if (yych <= '@') goto yy222;
5734            goto yy236;
5735        }
5736    } else {
5737        if (yych <= '`') {
5738            if (yych <= 'M') goto yy318;
5739            if (yych <= 'Z') goto yy236;
5740            goto yy222;
5741        } else {
5742            if (yych == 'm') goto yy322;
5743            if (yych <= 'z') goto yy241;
5744            goto yy222;
5745        }
5746    }
5747yy317:
5748    YYDEBUG(317, *YYCURSOR);
5749    yyaccept = 7;
5750    yych = *(YYMARKER = ++YYCURSOR);
5751    if (yych <= 'L') {
5752        if (yych <= '-') {
5753            if (yych == ')') goto yy227;
5754            goto yy222;
5755        } else {
5756            if (yych <= '.') goto yy319;
5757            if (yych <= '@') goto yy222;
5758            goto yy236;
5759        }
5760    } else {
5761        if (yych <= '`') {
5762            if (yych <= 'M') goto yy318;
5763            if (yych <= 'Z') goto yy236;
5764            goto yy222;
5765        } else {
5766            if (yych == 'm') goto yy318;
5767            if (yych <= 'z') goto yy236;
5768            goto yy222;
5769        }
5770    }
5771yy318:
5772    YYDEBUG(318, *YYCURSOR);
5773    yyaccept = 7;
5774    yych = *(YYMARKER = ++YYCURSOR);
5775    if (yych <= ')') {
5776        if (yych <= '\t') {
5777            if (yych <= 0x00) goto yy277;
5778            if (yych <= 0x08) goto yy222;
5779            goto yy277;
5780        } else {
5781            if (yych == ' ') goto yy277;
5782            if (yych <= '(') goto yy222;
5783            goto yy227;
5784        }
5785    } else {
5786        if (yych <= '@') {
5787            if (yych == '.') goto yy321;
5788            goto yy222;
5789        } else {
5790            if (yych <= 'Z') goto yy237;
5791            if (yych <= '`') goto yy222;
5792            if (yych <= 'z') goto yy237;
5793            goto yy222;
5794        }
5795    }
5796yy319:
5797    YYDEBUG(319, *YYCURSOR);
5798    yych = *++YYCURSOR;
5799    if (yych == 'M') goto yy320;
5800    if (yych != 'm') goto yy56;
5801yy320:
5802    YYDEBUG(320, *YYCURSOR);
5803    yych = *++YYCURSOR;
5804    if (yych <= 0x1F) {
5805        if (yych <= 0x00) goto yy277;
5806        if (yych == '\t') goto yy277;
5807        goto yy56;
5808    } else {
5809        if (yych <= ' ') goto yy277;
5810        if (yych != '.') goto yy56;
5811    }
5812yy321:
5813    YYDEBUG(321, *YYCURSOR);
5814    yych = *++YYCURSOR;
5815    if (yych <= '\t') {
5816        if (yych <= 0x00) goto yy277;
5817        if (yych <= 0x08) goto yy56;
5818        goto yy277;
5819    } else {
5820        if (yych == ' ') goto yy277;
5821        goto yy56;
5822    }
5823yy322:
5824    YYDEBUG(322, *YYCURSOR);
5825    yyaccept = 7;
5826    yych = *(YYMARKER = ++YYCURSOR);
5827    if (yych <= '-') {
5828        if (yych <= 0x1F) {
5829            if (yych <= 0x00) goto yy277;
5830            if (yych == '\t') goto yy277;
5831            goto yy222;
5832        } else {
5833            if (yych <= '(') {
5834                if (yych <= ' ') goto yy277;
5835                goto yy222;
5836            } else {
5837                if (yych <= ')') goto yy227;
5838                if (yych <= ',') goto yy222;
5839                goto yy243;
5840            }
5841        }
5842    } else {
5843        if (yych <= 'Z') {
5844            if (yych <= '.') goto yy321;
5845            if (yych <= '/') goto yy243;
5846            if (yych <= '@') goto yy222;
5847            goto yy237;
5848        } else {
5849            if (yych <= '_') {
5850                if (yych <= '^') goto yy222;
5851                goto yy243;
5852            } else {
5853                if (yych <= '`') goto yy222;
5854                if (yych <= 'z') goto yy242;
5855                goto yy222;
5856            }
5857        }
5858    }
5859yy323:
5860    YYDEBUG(323, *YYCURSOR);
5861    yyaccept = 6;
5862    yych = *(YYMARKER = ++YYCURSOR);
5863    if (yych <= ':') {
5864        if (yych <= ' ') {
5865            if (yych == '\t') goto yy282;
5866            if (yych <= 0x1F) goto yy198;
5867            goto yy282;
5868        } else {
5869            if (yych <= '.') {
5870                if (yych <= '-') goto yy198;
5871                goto yy266;
5872            } else {
5873                if (yych <= '/') goto yy198;
5874                if (yych <= '9') goto yy288;
5875                goto yy266;
5876            }
5877        }
5878    } else {
5879        if (yych <= 'P') {
5880            if (yych == 'A') goto yy284;
5881            if (yych <= 'O') goto yy198;
5882            goto yy284;
5883        } else {
5884            if (yych <= 'a') {
5885                if (yych <= '`') goto yy198;
5886                goto yy284;
5887            } else {
5888                if (yych == 'p') goto yy284;
5889                goto yy198;
5890            }
5891        }
5892    }
5893yy324:
5894    YYDEBUG(324, *YYCURSOR);
5895    yyaccept = 6;
5896    yych = *(YYMARKER = ++YYCURSOR);
5897    if (yych <= ':') {
5898        if (yych <= ' ') {
5899            if (yych == '\t') goto yy282;
5900            if (yych <= 0x1F) goto yy198;
5901            goto yy282;
5902        } else {
5903            if (yych <= '.') {
5904                if (yych <= '-') goto yy198;
5905            } else {
5906                if (yych <= '/') goto yy198;
5907                if (yych <= '9') goto yy288;
5908            }
5909        }
5910    } else {
5911        if (yych <= 'P') {
5912            if (yych == 'A') goto yy284;
5913            if (yych <= 'O') goto yy198;
5914            goto yy284;
5915        } else {
5916            if (yych <= 'a') {
5917                if (yych <= '`') goto yy198;
5918                goto yy284;
5919            } else {
5920                if (yych == 'p') goto yy284;
5921                goto yy198;
5922            }
5923        }
5924    }
5925yy325:
5926    YYDEBUG(325, *YYCURSOR);
5927    yych = *++YYCURSOR;
5928    if (yych <= '/') goto yy56;
5929    if (yych <= '5') goto yy326;
5930    if (yych <= '6') goto yy327;
5931    if (yych <= '9') goto yy223;
5932    goto yy56;
5933yy326:
5934    YYDEBUG(326, *YYCURSOR);
5935    yyaccept = 7;
5936    yych = *(YYMARKER = ++YYCURSOR);
5937    if (yych <= '/') {
5938        if (yych == '.') goto yy224;
5939        goto yy222;
5940    } else {
5941        if (yych <= '9') goto yy328;
5942        if (yych <= ':') goto yy224;
5943        goto yy222;
5944    }
5945yy327:
5946    YYDEBUG(327, *YYCURSOR);
5947    yyaccept = 7;
5948    yych = *(YYMARKER = ++YYCURSOR);
5949    if (yych <= '/') {
5950        if (yych == '.') goto yy224;
5951        goto yy222;
5952    } else {
5953        if (yych <= '0') goto yy269;
5954        if (yych == ':') goto yy224;
5955        goto yy222;
5956    }
5957yy328:
5958    YYDEBUG(328, *YYCURSOR);
5959    yyaccept = 7;
5960    yych = *(YYMARKER = ++YYCURSOR);
5961    if (yych <= ',') {
5962        if (yych <= ' ') {
5963            if (yych == '\t') goto yy271;
5964            if (yych <= 0x1F) goto yy222;
5965            goto yy271;
5966        } else {
5967            if (yych <= '(') {
5968                if (yych <= '\'') goto yy222;
5969                goto yy271;
5970            } else {
5971                if (yych == '+') goto yy271;
5972                goto yy222;
5973            }
5974        }
5975    } else {
5976        if (yych <= ':') {
5977            if (yych <= '-') goto yy271;
5978            if (yych <= '.') goto yy224;
5979            if (yych <= '9') goto yy222;
5980            goto yy224;
5981        } else {
5982            if (yych <= 'Z') {
5983                if (yych <= '@') goto yy222;
5984                goto yy271;
5985            } else {
5986                if (yych <= '`') goto yy222;
5987                if (yych <= 'z') goto yy271;
5988                goto yy222;
5989            }
5990        }
5991    }
5992yy329:
5993    YYDEBUG(329, *YYCURSOR);
5994    yyaccept = 6;
5995    yych = *(YYMARKER = ++YYCURSOR);
5996    if (yych <= ':') {
5997        if (yych <= ' ') {
5998            if (yych == '\t') goto yy282;
5999            if (yych <= 0x1F) goto yy198;
6000            goto yy282;
6001        } else {
6002            if (yych <= '.') {
6003                if (yych <= '-') goto yy198;
6004                goto yy310;
6005            } else {
6006                if (yych <= '/') goto yy198;
6007                if (yych <= '9') goto yy288;
6008                goto yy310;
6009            }
6010        }
6011    } else {
6012        if (yych <= 'P') {
6013            if (yych == 'A') goto yy284;
6014            if (yych <= 'O') goto yy198;
6015            goto yy284;
6016        } else {
6017            if (yych <= 'a') {
6018                if (yych <= '`') goto yy198;
6019                goto yy284;
6020            } else {
6021                if (yych == 'p') goto yy284;
6022                goto yy198;
6023            }
6024        }
6025    }
6026yy330:
6027    YYDEBUG(330, *YYCURSOR);
6028    yyaccept = 6;
6029    yych = *(YYMARKER = ++YYCURSOR);
6030    if (yych <= '1') {
6031        if (yych <= '/') goto yy215;
6032        if (yych <= '0') goto yy332;
6033        goto yy333;
6034    } else {
6035        if (yych <= '2') goto yy334;
6036        if (yych <= '5') goto yy335;
6037        if (yych <= '9') goto yy336;
6038        goto yy215;
6039    }
6040yy331:
6041    YYDEBUG(331, *YYCURSOR);
6042    yych = *++YYCURSOR;
6043    if (yych <= '/') {
6044        if (yych == '.') goto yy220;
6045        goto yy56;
6046    } else {
6047        if (yych <= '0') goto yy303;
6048        if (yych <= '9') goto yy304;
6049        if (yych <= ':') goto yy220;
6050        goto yy56;
6051    }
6052yy332:
6053    YYDEBUG(332, *YYCURSOR);
6054    yyaccept = 6;
6055    yych = *(YYMARKER = ++YYCURSOR);
6056    if (yych <= '/') {
6057        if (yych == '.') goto yy349;
6058        goto yy198;
6059    } else {
6060        if (yych <= '0') goto yy348;
6061        if (yych <= '9') goto yy353;
6062        if (yych <= ':') goto yy349;
6063        goto yy198;
6064    }
6065yy333:
6066    YYDEBUG(333, *YYCURSOR);
6067    yyaccept = 6;
6068    yych = *(YYMARKER = ++YYCURSOR);
6069    if (yych <= '/') {
6070        if (yych == '.') goto yy337;
6071        goto yy198;
6072    } else {
6073        if (yych <= '2') goto yy353;
6074        if (yych <= '9') goto yy348;
6075        if (yych <= ':') goto yy337;
6076        goto yy198;
6077    }
6078yy334:
6079    YYDEBUG(334, *YYCURSOR);
6080    yyaccept = 6;
6081    yych = *(YYMARKER = ++YYCURSOR);
6082    if (yych <= '/') {
6083        if (yych == '.') goto yy337;
6084        goto yy198;
6085    } else {
6086        if (yych <= '4') goto yy348;
6087        if (yych <= '9') goto yy347;
6088        if (yych <= ':') goto yy337;
6089        goto yy198;
6090    }
6091yy335:
6092    YYDEBUG(335, *YYCURSOR);
6093    yyaccept = 6;
6094    yych = *(YYMARKER = ++YYCURSOR);
6095    if (yych <= '/') {
6096        if (yych == '.') goto yy337;
6097        goto yy198;
6098    } else {
6099        if (yych <= '9') goto yy347;
6100        if (yych <= ':') goto yy337;
6101        goto yy198;
6102    }
6103yy336:
6104    YYDEBUG(336, *YYCURSOR);
6105    yyaccept = 6;
6106    yych = *(YYMARKER = ++YYCURSOR);
6107    if (yych <= '/') {
6108        if (yych != '.') goto yy198;
6109    } else {
6110        if (yych <= '9') goto yy262;
6111        if (yych >= ';') goto yy198;
6112    }
6113yy337:
6114    YYDEBUG(337, *YYCURSOR);
6115    yych = *++YYCURSOR;
6116    if (yych <= '/') goto yy56;
6117    if (yych <= '5') goto yy338;
6118    if (yych <= '6') goto yy339;
6119    if (yych <= '9') goto yy265;
6120    goto yy56;
6121yy338:
6122    YYDEBUG(338, *YYCURSOR);
6123    yyaccept = 7;
6124    yych = *(YYMARKER = ++YYCURSOR);
6125    if (yych <= '/') {
6126        if (yych == '.') goto yy266;
6127        goto yy222;
6128    } else {
6129        if (yych <= '9') goto yy340;
6130        if (yych <= ':') goto yy266;
6131        goto yy222;
6132    }
6133yy339:
6134    YYDEBUG(339, *YYCURSOR);
6135    yyaccept = 7;
6136    yych = *(YYMARKER = ++YYCURSOR);
6137    if (yych <= '/') {
6138        if (yych == '.') goto yy266;
6139        goto yy222;
6140    } else {
6141        if (yych <= '0') goto yy228;
6142        if (yych == ':') goto yy266;
6143        goto yy222;
6144    }
6145yy340:
6146    YYDEBUG(340, *YYCURSOR);
6147    yyaccept = 7;
6148    yych = *(YYMARKER = ++YYCURSOR);
6149    if (yych <= ',') {
6150        if (yych <= ' ') {
6151            if (yych == '\t') goto yy342;
6152            if (yych <= 0x1F) goto yy222;
6153            goto yy342;
6154        } else {
6155            if (yych <= '(') {
6156                if (yych <= '\'') goto yy222;
6157                goto yy342;
6158            } else {
6159                if (yych == '+') goto yy342;
6160                goto yy222;
6161            }
6162        }
6163    } else {
6164        if (yych <= ':') {
6165            if (yych <= '-') goto yy342;
6166            if (yych <= '.') goto yy266;
6167            if (yych <= '9') goto yy222;
6168            goto yy266;
6169        } else {
6170            if (yych <= 'Z') {
6171                if (yych <= '@') goto yy222;
6172                goto yy342;
6173            } else {
6174                if (yych <= '`') goto yy222;
6175                if (yych <= 'z') goto yy342;
6176                goto yy222;
6177            }
6178        }
6179    }
6180yy341:
6181    YYDEBUG(341, *YYCURSOR);
6182    ++YYCURSOR;
6183    if ((YYLIMIT - YYCURSOR) < 9) YYFILL(9);
6184    yych = *YYCURSOR;
6185yy342:
6186    YYDEBUG(342, *YYCURSOR);
6187    if (yych <= '@') {
6188        if (yych <= '\'') {
6189            if (yych <= '\t') {
6190                if (yych <= 0x08) goto yy56;
6191                goto yy341;
6192            } else {
6193                if (yych == ' ') goto yy341;
6194                goto yy56;
6195            }
6196        } else {
6197            if (yych <= '+') {
6198                if (yych <= '(') goto yy233;
6199                if (yych <= '*') goto yy56;
6200                goto yy232;
6201            } else {
6202                if (yych == '-') goto yy232;
6203                goto yy56;
6204            }
6205        }
6206    } else {
6207        if (yych <= 'Z') {
6208            if (yych <= 'G') {
6209                if (yych <= 'A') goto yy343;
6210                if (yych <= 'F') goto yy234;
6211                goto yy231;
6212            } else {
6213                if (yych != 'P') goto yy234;
6214            }
6215        } else {
6216            if (yych <= 'o') {
6217                if (yych <= '`') goto yy56;
6218                if (yych <= 'a') goto yy344;
6219                goto yy235;
6220            } else {
6221                if (yych <= 'p') goto yy344;
6222                if (yych <= 'z') goto yy235;
6223                goto yy56;
6224            }
6225        }
6226    }
6227yy343:
6228    YYDEBUG(343, *YYCURSOR);
6229    yyaccept = 7;
6230    yych = *(YYMARKER = ++YYCURSOR);
6231    if (yych <= 'L') {
6232        if (yych <= '-') {
6233            if (yych == ')') goto yy227;
6234            goto yy222;
6235        } else {
6236            if (yych <= '.') goto yy285;
6237            if (yych <= '@') goto yy222;
6238            goto yy236;
6239        }
6240    } else {
6241        if (yych <= '`') {
6242            if (yych <= 'M') goto yy345;
6243            if (yych <= 'Z') goto yy236;
6244            goto yy222;
6245        } else {
6246            if (yych == 'm') goto yy346;
6247            if (yych <= 'z') goto yy241;
6248            goto yy222;
6249        }
6250    }
6251yy344:
6252    YYDEBUG(344, *YYCURSOR);
6253    yyaccept = 7;
6254    yych = *(YYMARKER = ++YYCURSOR);
6255    if (yych <= 'L') {
6256        if (yych <= '-') {
6257            if (yych == ')') goto yy227;
6258            goto yy222;
6259        } else {
6260            if (yych <= '.') goto yy285;
6261            if (yych <= '@') goto yy222;
6262            goto yy236;
6263        }
6264    } else {
6265        if (yych <= '`') {
6266            if (yych <= 'M') goto yy345;
6267            if (yych <= 'Z') goto yy236;
6268            goto yy222;
6269        } else {
6270            if (yych == 'm') goto yy345;
6271            if (yych <= 'z') goto yy236;
6272            goto yy222;
6273        }
6274    }
6275yy345:
6276    YYDEBUG(345, *YYCURSOR);
6277    yyaccept = 7;
6278    yych = *(YYMARKER = ++YYCURSOR);
6279    if (yych <= ')') {
6280        if (yych <= '\t') {
6281            if (yych <= 0x00) goto yy277;
6282            if (yych <= 0x08) goto yy222;
6283            goto yy277;
6284        } else {
6285            if (yych == ' ') goto yy277;
6286            if (yych <= '(') goto yy222;
6287            goto yy227;
6288        }
6289    } else {
6290        if (yych <= '@') {
6291            if (yych == '.') goto yy287;
6292            goto yy222;
6293        } else {
6294            if (yych <= 'Z') goto yy237;
6295            if (yych <= '`') goto yy222;
6296            if (yych <= 'z') goto yy237;
6297            goto yy222;
6298        }
6299    }
6300yy346:
6301    YYDEBUG(346, *YYCURSOR);
6302    yyaccept = 7;
6303    yych = *(YYMARKER = ++YYCURSOR);
6304    if (yych <= '-') {
6305        if (yych <= 0x1F) {
6306            if (yych <= 0x00) goto yy277;
6307            if (yych == '\t') goto yy277;
6308            goto yy222;
6309        } else {
6310            if (yych <= '(') {
6311                if (yych <= ' ') goto yy277;
6312                goto yy222;
6313            } else {
6314                if (yych <= ')') goto yy227;
6315                if (yych <= ',') goto yy222;
6316                goto yy243;
6317            }
6318        }
6319    } else {
6320        if (yych <= 'Z') {
6321            if (yych <= '.') goto yy287;
6322            if (yych <= '/') goto yy243;
6323            if (yych <= '@') goto yy222;
6324            goto yy237;
6325        } else {
6326            if (yych <= '_') {
6327                if (yych <= '^') goto yy222;
6328                goto yy243;
6329            } else {
6330                if (yych <= '`') goto yy222;
6331                if (yych <= 'z') goto yy242;
6332                goto yy222;
6333            }
6334        }
6335    }
6336yy347:
6337    YYDEBUG(347, *YYCURSOR);
6338    yyaccept = 6;
6339    yych = *(YYMARKER = ++YYCURSOR);
6340    if (yych <= '/') {
6341        if (yych == '.') goto yy224;
6342        goto yy198;
6343    } else {
6344        if (yych <= '9') goto yy288;
6345        if (yych <= ':') goto yy224;
6346        goto yy198;
6347    }
6348yy348:
6349    YYDEBUG(348, *YYCURSOR);
6350    yyaccept = 6;
6351    yych = *(YYMARKER = ++YYCURSOR);
6352    if (yych <= '/') {
6353        if (yych != '.') goto yy198;
6354    } else {
6355        if (yych <= '9') goto yy288;
6356        if (yych >= ';') goto yy198;
6357    }
6358yy349:
6359    YYDEBUG(349, *YYCURSOR);
6360    yych = *++YYCURSOR;
6361    if (yych <= '/') goto yy56;
6362    if (yych <= '5') goto yy350;
6363    if (yych <= '6') goto yy351;
6364    if (yych <= '9') goto yy223;
6365    goto yy56;
6366yy350:
6367    YYDEBUG(350, *YYCURSOR);
6368    yyaccept = 7;
6369    yych = *(YYMARKER = ++YYCURSOR);
6370    if (yych <= '/') {
6371        if (yych == '.') goto yy224;
6372        goto yy222;
6373    } else {
6374        if (yych <= '9') goto yy352;
6375        if (yych <= ':') goto yy224;
6376        goto yy222;
6377    }
6378yy351:
6379    YYDEBUG(351, *YYCURSOR);
6380    yyaccept = 7;
6381    yych = *(YYMARKER = ++YYCURSOR);
6382    if (yych <= '/') {
6383        if (yych == '.') goto yy224;
6384        goto yy222;
6385    } else {
6386        if (yych <= '0') goto yy228;
6387        if (yych == ':') goto yy224;
6388        goto yy222;
6389    }
6390yy352:
6391    YYDEBUG(352, *YYCURSOR);
6392    yyaccept = 7;
6393    yych = *(YYMARKER = ++YYCURSOR);
6394    if (yych <= ',') {
6395        if (yych <= ' ') {
6396            if (yych == '\t') goto yy230;
6397            if (yych <= 0x1F) goto yy222;
6398            goto yy230;
6399        } else {
6400            if (yych <= '(') {
6401                if (yych <= '\'') goto yy222;
6402                goto yy230;
6403            } else {
6404                if (yych == '+') goto yy230;
6405                goto yy222;
6406            }
6407        }
6408    } else {
6409        if (yych <= ':') {
6410            if (yych <= '-') goto yy230;
6411            if (yych <= '.') goto yy224;
6412            if (yych <= '9') goto yy222;
6413            goto yy224;
6414        } else {
6415            if (yych <= 'Z') {
6416                if (yych <= '@') goto yy222;
6417                goto yy230;
6418            } else {
6419                if (yych <= '`') goto yy222;
6420                if (yych <= 'z') goto yy230;
6421                goto yy222;
6422            }
6423        }
6424    }
6425yy353:
6426    YYDEBUG(353, *YYCURSOR);
6427    yyaccept = 6;
6428    yych = *(YYMARKER = ++YYCURSOR);
6429    if (yych <= '/') {
6430        if (yych == '.') goto yy337;
6431        goto yy198;
6432    } else {
6433        if (yych <= '9') goto yy288;
6434        if (yych <= ':') goto yy337;
6435        goto yy198;
6436    }
6437yy354:
6438    YYDEBUG(354, *YYCURSOR);
6439    yyaccept = 6;
6440    yych = *(YYMARKER = ++YYCURSOR);
6441    if (yych <= '9') {
6442        if (yych <= '/') {
6443            if (yych == '.') goto yy299;
6444            goto yy215;
6445        } else {
6446            if (yych <= '0') goto yy331;
6447            if (yych <= '1') goto yy301;
6448            if (yych <= '2') goto yy302;
6449            goto yy296;
6450        }
6451    } else {
6452        if (yych <= 'q') {
6453            if (yych <= ':') goto yy263;
6454            if (yych == 'n') goto yy211;
6455            goto yy215;
6456        } else {
6457            if (yych <= 'r') goto yy212;
6458            if (yych <= 's') goto yy210;
6459            if (yych <= 't') goto yy213;
6460            goto yy215;
6461        }
6462    }
6463yy355:
6464    YYDEBUG(355, *YYCURSOR);
6465    yyaccept = 6;
6466    yych = *(YYMARKER = ++YYCURSOR);
6467    if (yych <= '9') {
6468        if (yych <= '/') {
6469            if (yych == '.') goto yy299;
6470            goto yy215;
6471        } else {
6472            if (yych <= '0') goto yy331;
6473            if (yych <= '1') goto yy301;
6474            if (yych <= '2') goto yy302;
6475            goto yy296;
6476        }
6477    } else {
6478        if (yych <= 'q') {
6479            if (yych <= ':') goto yy263;
6480            if (yych == 'n') goto yy211;
6481            goto yy215;
6482        } else {
6483            if (yych <= 'r') goto yy212;
6484            if (yych <= 's') goto yy210;
6485            if (yych <= 't') goto yy213;
6486            goto yy215;
6487        }
6488    }
6489yy356:
6490    YYDEBUG(356, *YYCURSOR);
6491    yyaccept = 6;
6492    yych = *(YYMARKER = ++YYCURSOR);
6493    if (yych <= 'm') {
6494        if (yych <= '1') {
6495            if (yych <= '/') goto yy215;
6496            if (yych <= '0') goto yy359;
6497            goto yy360;
6498        } else {
6499            if (yych <= '2') goto yy367;
6500            if (yych <= '9') goto yy368;
6501            goto yy215;
6502        }
6503    } else {
6504        if (yych <= 'r') {
6505            if (yych <= 'n') goto yy211;
6506            if (yych <= 'q') goto yy215;
6507            goto yy212;
6508        } else {
6509            if (yych <= 's') goto yy210;
6510            if (yych <= 't') goto yy213;
6511            goto yy215;
6512        }
6513    }
6514yy357:
6515    YYDEBUG(357, *YYCURSOR);
6516    yyaccept = 6;
6517    yych = *(YYMARKER = ++YYCURSOR);
6518    if (yych <= 'm') {
6519        if (yych <= '1') {
6520            if (yych <= '/') goto yy215;
6521            if (yych <= '0') goto yy359;
6522            goto yy360;
6523        } else {
6524            if (yych <= '2') goto yy367;
6525            if (yych <= '9') goto yy368;
6526            goto yy215;
6527        }
6528    } else {
6529        if (yych <= 'r') {
6530            if (yych <= 'n') goto yy211;
6531            if (yych <= 'q') goto yy215;
6532            goto yy212;
6533        } else {
6534            if (yych <= 's') goto yy210;
6535            if (yych <= 't') goto yy213;
6536            goto yy215;
6537        }
6538    }
6539yy358:
6540    YYDEBUG(358, *YYCURSOR);
6541    yyaccept = 6;
6542    yych = *(YYMARKER = ++YYCURSOR);
6543    if (yych <= 'm') {
6544        if (yych <= '1') {
6545            if (yych <= '/') goto yy215;
6546            if (yych >= '1') goto yy360;
6547        } else {
6548            if (yych <= '2') goto yy208;
6549            if (yych <= '9') goto yy209;
6550            goto yy215;
6551        }
6552    } else {
6553        if (yych <= 'r') {
6554            if (yych <= 'n') goto yy211;
6555            if (yych <= 'q') goto yy215;
6556            goto yy212;
6557        } else {
6558            if (yych <= 's') goto yy210;
6559            if (yych <= 't') goto yy213;
6560            goto yy215;
6561        }
6562    }
6563yy359:
6564    YYDEBUG(359, *YYCURSOR);
6565    yyaccept = 6;
6566    yych = *(YYMARKER = ++YYCURSOR);
6567    if (yych <= '9') {
6568        if (yych <= '/') {
6569            if (yych <= ',') goto yy215;
6570            if (yych <= '-') goto yy361;
6571            if (yych <= '.') goto yy330;
6572            goto yy215;
6573        } else {
6574            if (yych <= '0') goto yy331;
6575            if (yych <= '1') goto yy301;
6576            if (yych <= '2') goto yy302;
6577            goto yy296;
6578        }
6579    } else {
6580        if (yych <= 'q') {
6581            if (yych <= ':') goto yy220;
6582            if (yych == 'n') goto yy211;
6583            goto yy215;
6584        } else {
6585            if (yych <= 'r') goto yy212;
6586            if (yych <= 's') goto yy210;
6587            if (yych <= 't') goto yy213;
6588            goto yy215;
6589        }
6590    }
6591yy360:
6592    YYDEBUG(360, *YYCURSOR);
6593    yyaccept = 6;
6594    yych = *(YYMARKER = ++YYCURSOR);
6595    if (yych <= '9') {
6596        if (yych <= '/') {
6597            if (yych <= ',') goto yy215;
6598            if (yych <= '-') goto yy361;
6599            if (yych <= '.') goto yy299;
6600            goto yy215;
6601        } else {
6602            if (yych <= '0') goto yy300;
6603            if (yych <= '1') goto yy301;
6604            if (yych <= '2') goto yy302;
6605            goto yy296;
6606        }
6607    } else {
6608        if (yych <= 'q') {
6609            if (yych <= ':') goto yy263;
6610            if (yych == 'n') goto yy211;
6611            goto yy215;
6612        } else {
6613            if (yych <= 'r') goto yy212;
6614            if (yych <= 's') goto yy210;
6615            if (yych <= 't') goto yy213;
6616            goto yy215;
6617        }
6618    }
6619yy361:
6620    YYDEBUG(361, *YYCURSOR);
6621    yych = *++YYCURSOR;
6622    if (yych <= '/') goto yy56;
6623    if (yych >= ':') goto yy56;
6624    YYDEBUG(362, *YYCURSOR);
6625    ++YYCURSOR;
6626    if ((yych = *YYCURSOR) <= '/') goto yy363;
6627    if (yych <= '9') goto yy364;
6628yy363:
6629    YYDEBUG(363, *YYCURSOR);
6630#line 1533 "ext/date/lib/parse_date.re"
6631    {
6632        int length = 0;
6633        DEBUG_OUTPUT("pgtextshort");
6634        TIMELIB_INIT;
6635        TIMELIB_HAVE_DATE();
6636        s->time->m = timelib_get_month((char **) &ptr);
6637        s->time->d = timelib_get_nr((char **) &ptr, 2);
6638        s->time->y = timelib_get_nr_ex((char **) &ptr, 4, &length);
6639        TIMELIB_PROCESS_YEAR(s->time->y, length);
6640        TIMELIB_DEINIT;
6641        return TIMELIB_PG_TEXT;
6642    }
6643#line 6644 "ext/date/lib/parse_date.c"
6644yy364:
6645    YYDEBUG(364, *YYCURSOR);
6646    yych = *++YYCURSOR;
6647    if (yych <= '/') goto yy363;
6648    if (yych >= ':') goto yy363;
6649    YYDEBUG(365, *YYCURSOR);
6650    yych = *++YYCURSOR;
6651    if (yych <= '/') goto yy363;
6652    if (yych >= ':') goto yy363;
6653    YYDEBUG(366, *YYCURSOR);
6654    yych = *++YYCURSOR;
6655    goto yy363;
6656yy367:
6657    YYDEBUG(367, *YYCURSOR);
6658    yyaccept = 6;
6659    yych = *(YYMARKER = ++YYCURSOR);
6660    if (yych <= '9') {
6661        if (yych <= '/') {
6662            if (yych <= ',') goto yy215;
6663            if (yych <= '-') goto yy361;
6664            if (yych <= '.') goto yy299;
6665            goto yy215;
6666        } else {
6667            if (yych <= '0') goto yy331;
6668            if (yych <= '1') goto yy301;
6669            if (yych <= '2') goto yy302;
6670            goto yy296;
6671        }
6672    } else {
6673        if (yych <= 'q') {
6674            if (yych <= ':') goto yy263;
6675            if (yych == 'n') goto yy211;
6676            goto yy215;
6677        } else {
6678            if (yych <= 'r') goto yy212;
6679            if (yych <= 's') goto yy210;
6680            if (yych <= 't') goto yy213;
6681            goto yy215;
6682        }
6683    }
6684yy368:
6685    YYDEBUG(368, *YYCURSOR);
6686    yyaccept = 6;
6687    yych = *(YYMARKER = ++YYCURSOR);
6688    if (yych <= '9') {
6689        if (yych <= '/') {
6690            if (yych <= ',') goto yy215;
6691            if (yych <= '-') goto yy361;
6692            if (yych <= '.') goto yy299;
6693            goto yy215;
6694        } else {
6695            if (yych <= '0') goto yy331;
6696            if (yych <= '1') goto yy301;
6697            if (yych <= '2') goto yy302;
6698            goto yy296;
6699        }
6700    } else {
6701        if (yych <= 'q') {
6702            if (yych <= ':') goto yy263;
6703            if (yych == 'n') goto yy211;
6704            goto yy215;
6705        } else {
6706            if (yych <= 'r') goto yy212;
6707            if (yych <= 's') goto yy210;
6708            if (yych <= 't') goto yy213;
6709            goto yy215;
6710        }
6711    }
6712yy369:
6713    YYDEBUG(369, *YYCURSOR);
6714    yyaccept = 0;
6715    yych = *(YYMARKER = ++YYCURSOR);
6716    if (yych <= 'B') {
6717        if (yych <= '-') {
6718            if (yych == ')') goto yy139;
6719            if (yych <= ',') goto yy3;
6720            goto yy147;
6721        } else {
6722            if (yych == '/') goto yy147;
6723            if (yych <= '@') goto yy3;
6724            goto yy141;
6725        }
6726    } else {
6727        if (yych <= '_') {
6728            if (yych <= 'C') goto yy192;
6729            if (yych <= 'Z') goto yy141;
6730            if (yych <= '^') goto yy3;
6731            goto yy147;
6732        } else {
6733            if (yych <= 'b') {
6734                if (yych <= '`') goto yy3;
6735                goto yy146;
6736            } else {
6737                if (yych <= 'c') goto yy370;
6738                if (yych <= 'z') goto yy146;
6739                goto yy3;
6740            }
6741        }
6742    }
6743yy370:
6744    YYDEBUG(370, *YYCURSOR);
6745    yyaccept = 5;
6746    yych = *(YYMARKER = ++YYCURSOR);
6747    if (yych <= '9') {
6748        if (yych <= '(') {
6749            if (yych <= '\t') {
6750                if (yych <= 0x08) goto yy193;
6751                goto yy195;
6752            } else {
6753                if (yych == ' ') goto yy195;
6754                goto yy193;
6755            }
6756        } else {
6757            if (yych <= '-') {
6758                if (yych <= ')') goto yy139;
6759                if (yych <= ',') goto yy193;
6760            } else {
6761                if (yych == '/') goto yy147;
6762                goto yy195;
6763            }
6764        }
6765    } else {
6766        if (yych <= '^') {
6767            if (yych <= 'D') {
6768                if (yych <= '@') goto yy193;
6769                goto yy142;
6770            } else {
6771                if (yych <= 'E') goto yy201;
6772                if (yych <= 'Z') goto yy142;
6773                goto yy193;
6774            }
6775        } else {
6776            if (yych <= 'd') {
6777                if (yych <= '_') goto yy147;
6778                if (yych <= '`') goto yy193;
6779                goto yy150;
6780            } else {
6781                if (yych <= 'e') goto yy372;
6782                if (yych <= 'z') goto yy150;
6783                goto yy193;
6784            }
6785        }
6786    }
6787yy371:
6788    YYDEBUG(371, *YYCURSOR);
6789    yych = *++YYCURSOR;
6790    if (yybm[0+yych] & 8) {
6791        goto yy148;
6792    }
6793    if (yych <= '/') goto yy195;
6794    if (yych <= '0') goto yy356;
6795    if (yych <= '2') goto yy357;
6796    if (yych <= '3') goto yy358;
6797    goto yy195;
6798yy372:
6799    YYDEBUG(372, *YYCURSOR);
6800    yyaccept = 0;
6801    yych = *(YYMARKER = ++YYCURSOR);
6802    if (yych <= 'L') {
6803        if (yych <= '-') {
6804            if (yych == ')') goto yy139;
6805            if (yych <= ',') goto yy3;
6806            goto yy147;
6807        } else {
6808            if (yych == '/') goto yy147;
6809            if (yych <= '@') goto yy3;
6810            goto yy143;
6811        }
6812    } else {
6813        if (yych <= '_') {
6814            if (yych <= 'M') goto yy202;
6815            if (yych <= 'Z') goto yy143;
6816            if (yych <= '^') goto yy3;
6817            goto yy147;
6818        } else {
6819            if (yych <= 'l') {
6820                if (yych <= '`') goto yy3;
6821                goto yy151;
6822            } else {
6823                if (yych <= 'm') goto yy373;
6824                if (yych <= 'z') goto yy151;
6825                goto yy3;
6826            }
6827        }
6828    }
6829yy373:
6830    YYDEBUG(373, *YYCURSOR);
6831    yyaccept = 0;
6832    yych = *(YYMARKER = ++YYCURSOR);
6833    if (yych <= 'A') {
6834        if (yych <= '-') {
6835            if (yych == ')') goto yy139;
6836            if (yych <= ',') goto yy3;
6837            goto yy147;
6838        } else {
6839            if (yych == '/') goto yy147;
6840            if (yych <= '@') goto yy3;
6841            goto yy144;
6842        }
6843    } else {
6844        if (yych <= '_') {
6845            if (yych <= 'B') goto yy203;
6846            if (yych <= 'Z') goto yy144;
6847            if (yych <= '^') goto yy3;
6848            goto yy147;
6849        } else {
6850            if (yych <= 'a') {
6851                if (yych <= '`') goto yy3;
6852                goto yy152;
6853            } else {
6854                if (yych <= 'b') goto yy374;
6855                if (yych <= 'z') goto yy152;
6856                goto yy3;
6857            }
6858        }
6859    }
6860yy374:
6861    YYDEBUG(374, *YYCURSOR);
6862    yyaccept = 0;
6863    yych = *(YYMARKER = ++YYCURSOR);
6864    if (yych <= 'D') {
6865        if (yych <= ',') {
6866            if (yych == ')') goto yy139;
6867            goto yy3;
6868        } else {
6869            if (yych == '.') goto yy3;
6870            if (yych <= '/') goto yy147;
6871            goto yy3;
6872        }
6873    } else {
6874        if (yych <= '`') {
6875            if (yych <= 'E') goto yy204;
6876            if (yych == '_') goto yy147;
6877            goto yy3;
6878        } else {
6879            if (yych == 'e') goto yy375;
6880            if (yych <= 'z') goto yy153;
6881            goto yy3;
6882        }
6883    }
6884yy375:
6885    YYDEBUG(375, *YYCURSOR);
6886    yych = *++YYCURSOR;
6887    if (yych == 'R') goto yy205;
6888    if (yych != 'r') goto yy154;
6889yy376:
6890    YYDEBUG(376, *YYCURSOR);
6891    yyaccept = 5;
6892    yych = *(YYMARKER = ++YYCURSOR);
6893    if (yybm[0+yych] & 16) {
6894        goto yy153;
6895    }
6896    if (yych <= '-') {
6897        if (yych <= 0x1F) {
6898            if (yych == '\t') goto yy195;
6899            goto yy193;
6900        } else {
6901            if (yych <= ' ') goto yy195;
6902            if (yych <= ',') goto yy193;
6903        }
6904    } else {
6905        if (yych <= '9') {
6906            if (yych == '/') goto yy147;
6907            goto yy195;
6908        } else {
6909            if (yych == '_') goto yy147;
6910            goto yy193;
6911        }
6912    }
6913yy377:
6914    YYDEBUG(377, *YYCURSOR);
6915    yych = *++YYCURSOR;
6916    if (yybm[0+yych] & 8) {
6917        goto yy148;
6918    }
6919    goto yy195;
6920yy378:
6921    YYDEBUG(378, *YYCURSOR);
6922    yych = *++YYCURSOR;
6923    if (yych <= 'T') {
6924        if (yych <= ')') {
6925            if (yych <= '(') goto yy3;
6926            goto yy139;
6927        } else {
6928            if (yych <= '@') goto yy3;
6929            if (yych <= 'S') goto yy141;
6930        }
6931    } else {
6932        if (yych <= 's') {
6933            if (yych <= 'Z') goto yy141;
6934            if (yych <= '`') goto yy3;
6935            goto yy141;
6936        } else {
6937            if (yych <= 't') goto yy379;
6938            if (yych <= 'z') goto yy141;
6939            goto yy3;
6940        }
6941    }
6942yy379:
6943    YYDEBUG(379, *YYCURSOR);
6944    yyaccept = 5;
6945    yych = *(YYMARKER = ++YYCURSOR);
6946    if (yych <= '/') {
6947        if (yych <= '(') {
6948            if (yych <= '\t') {
6949                if (yych <= 0x08) goto yy193;
6950                goto yy195;
6951            } else {
6952                if (yych == ' ') goto yy195;
6953                goto yy193;
6954            }
6955        } else {
6956            if (yych <= ',') {
6957                if (yych <= ')') goto yy139;
6958                goto yy193;
6959            } else {
6960                if (yych <= '-') goto yy196;
6961                if (yych <= '.') goto yy195;
6962                goto yy193;
6963            }
6964        }
6965    } else {
6966        if (yych <= 'Z') {
6967            if (yych <= '@') {
6968                if (yych <= '9') goto yy195;
6969                goto yy193;
6970            } else {
6971                if (yych != 'O') goto yy142;
6972            }
6973        } else {
6974            if (yych <= 'n') {
6975                if (yych <= '`') goto yy193;
6976                goto yy142;
6977            } else {
6978                if (yych <= 'o') goto yy380;
6979                if (yych <= 'z') goto yy142;
6980                goto yy193;
6981            }
6982        }
6983    }
6984yy380:
6985    YYDEBUG(380, *YYCURSOR);
6986    yych = *++YYCURSOR;
6987    if (yych <= 'B') {
6988        if (yych <= ')') {
6989            if (yych <= '(') goto yy3;
6990            goto yy139;
6991        } else {
6992            if (yych <= '@') goto yy3;
6993            if (yych <= 'A') goto yy143;
6994        }
6995    } else {
6996        if (yych <= 'a') {
6997            if (yych <= 'Z') goto yy143;
6998            if (yych <= '`') goto yy3;
6999            goto yy143;
7000        } else {
7001            if (yych <= 'b') goto yy381;
7002            if (yych <= 'z') goto yy143;
7003            goto yy3;
7004        }
7005    }
7006yy381:
7007    YYDEBUG(381, *YYCURSOR);
7008    yych = *++YYCURSOR;
7009    if (yych <= 'E') {
7010        if (yych <= ')') {
7011            if (yych <= '(') goto yy3;
7012            goto yy139;
7013        } else {
7014            if (yych <= '@') goto yy3;
7015            if (yych <= 'D') goto yy144;
7016        }
7017    } else {
7018        if (yych <= 'd') {
7019            if (yych <= 'Z') goto yy144;
7020            if (yych <= '`') goto yy3;
7021            goto yy144;
7022        } else {
7023            if (yych <= 'e') goto yy382;
7024            if (yych <= 'z') goto yy144;
7025            goto yy3;
7026        }
7027    }
7028yy382:
7029    YYDEBUG(382, *YYCURSOR);
7030    yych = *++YYCURSOR;
7031    if (yych <= 'Q') {
7032        if (yych == ')') goto yy139;
7033        goto yy3;
7034    } else {
7035        if (yych <= 'R') goto yy205;
7036        if (yych == 'r') goto yy205;
7037        goto yy3;
7038    }
7039yy383:
7040    YYDEBUG(383, *YYCURSOR);
7041    yyaccept = 0;
7042    yych = *(YYMARKER = ++YYCURSOR);
7043    if (yych <= 'S') {
7044        if (yych <= '-') {
7045            if (yych == ')') goto yy139;
7046            if (yych <= ',') goto yy3;
7047            goto yy147;
7048        } else {
7049            if (yych == '/') goto yy147;
7050            if (yych <= '@') goto yy3;
7051            goto yy141;
7052        }
7053    } else {
7054        if (yych <= '_') {
7055            if (yych <= 'T') goto yy379;
7056            if (yych <= 'Z') goto yy141;
7057            if (yych <= '^') goto yy3;
7058            goto yy147;
7059        } else {
7060            if (yych <= 's') {
7061                if (yych <= '`') goto yy3;
7062                goto yy146;
7063            } else {
7064                if (yych <= 't') goto yy384;
7065                if (yych <= 'z') goto yy146;
7066                goto yy3;
7067            }
7068        }
7069    }
7070yy384:
7071    YYDEBUG(384, *YYCURSOR);
7072    yyaccept = 5;
7073    yych = *(YYMARKER = ++YYCURSOR);
7074    if (yych <= '9') {
7075        if (yych <= '(') {
7076            if (yych <= '\t') {
7077                if (yych <= 0x08) goto yy193;
7078                goto yy195;
7079            } else {
7080                if (yych == ' ') goto yy195;
7081                goto yy193;
7082            }
7083        } else {
7084            if (yych <= '-') {
7085                if (yych <= ')') goto yy139;
7086                if (yych <= ',') goto yy193;
7087                goto yy371;
7088            } else {
7089                if (yych == '/') goto yy147;
7090                goto yy195;
7091            }
7092        }
7093    } else {
7094        if (yych <= '^') {
7095            if (yych <= 'N') {
7096                if (yych <= '@') goto yy193;
7097                goto yy142;
7098            } else {
7099                if (yych <= 'O') goto yy380;
7100                if (yych <= 'Z') goto yy142;
7101                goto yy193;
7102            }
7103        } else {
7104            if (yych <= 'n') {
7105                if (yych <= '_') goto yy147;
7106                if (yych <= '`') goto yy193;
7107                goto yy150;
7108            } else {
7109                if (yych <= 'o') goto yy385;
7110                if (yych <= 'z') goto yy150;
7111                goto yy193;
7112            }
7113        }
7114    }
7115yy385:
7116    YYDEBUG(385, *YYCURSOR);
7117    yyaccept = 0;
7118    yych = *(YYMARKER = ++YYCURSOR);
7119    if (yych <= 'A') {
7120        if (yych <= '-') {
7121            if (yych == ')') goto yy139;
7122            if (yych <= ',') goto yy3;
7123            goto yy147;
7124        } else {
7125            if (yych == '/') goto yy147;
7126            if (yych <= '@') goto yy3;
7127            goto yy143;
7128        }
7129    } else {
7130        if (yych <= '_') {
7131            if (yych <= 'B') goto yy381;
7132            if (yych <= 'Z') goto yy143;
7133            if (yych <= '^') goto yy3;
7134            goto yy147;
7135        } else {
7136            if (yych <= 'a') {
7137                if (yych <= '`') goto yy3;
7138                goto yy151;
7139            } else {
7140                if (yych <= 'b') goto yy386;
7141                if (yych <= 'z') goto yy151;
7142                goto yy3;
7143            }
7144        }
7145    }
7146yy386:
7147    YYDEBUG(386, *YYCURSOR);
7148    yyaccept = 0;
7149    yych = *(YYMARKER = ++YYCURSOR);
7150    if (yych <= 'D') {
7151        if (yych <= '-') {
7152            if (yych == ')') goto yy139;
7153            if (yych <= ',') goto yy3;
7154            goto yy147;
7155        } else {
7156            if (yych == '/') goto yy147;
7157            if (yych <= '@') goto yy3;
7158            goto yy144;
7159        }
7160    } else {
7161        if (yych <= '_') {
7162            if (yych <= 'E') goto yy382;
7163            if (yych <= 'Z') goto yy144;
7164            if (yych <= '^') goto yy3;
7165            goto yy147;
7166        } else {
7167            if (yych <= 'd') {
7168                if (yych <= '`') goto yy3;
7169                goto yy152;
7170            } else {
7171                if (yych <= 'e') goto yy387;
7172                if (yych <= 'z') goto yy152;
7173                goto yy3;
7174            }
7175        }
7176    }
7177yy387:
7178    YYDEBUG(387, *YYCURSOR);
7179    yyaccept = 0;
7180    yych = *(YYMARKER = ++YYCURSOR);
7181    if (yych <= 'Q') {
7182        if (yych <= ',') {
7183            if (yych == ')') goto yy139;
7184            goto yy3;
7185        } else {
7186            if (yych == '.') goto yy3;
7187            if (yych <= '/') goto yy147;
7188            goto yy3;
7189        }
7190    } else {
7191        if (yych <= '`') {
7192            if (yych <= 'R') goto yy205;
7193            if (yych == '_') goto yy147;
7194            goto yy3;
7195        } else {
7196            if (yych == 'r') goto yy376;
7197            if (yych <= 'z') goto yy153;
7198            goto yy3;
7199        }
7200    }
7201yy388:
7202    YYDEBUG(388, *YYCURSOR);
7203    yych = *++YYCURSOR;
7204    if (yych <= 'G') {
7205        if (yych <= ')') {
7206            if (yych <= '(') goto yy3;
7207            goto yy139;
7208        } else {
7209            if (yych <= '@') goto yy3;
7210            if (yych <= 'F') goto yy141;
7211            goto yy396;
7212        }
7213    } else {
7214        if (yych <= 'f') {
7215            if (yych <= 'Z') goto yy141;
7216            if (yych <= '`') goto yy3;
7217            goto yy141;
7218        } else {
7219            if (yych <= 'g') goto yy396;
7220            if (yych <= 'z') goto yy141;
7221            goto yy3;
7222        }
7223    }
7224yy389:
7225    YYDEBUG(389, *YYCURSOR);
7226    yych = *++YYCURSOR;
7227    if (yych <= 'R') {
7228        if (yych <= ')') {
7229            if (yych <= '(') goto yy3;
7230            goto yy139;
7231        } else {
7232            if (yych <= '@') goto yy3;
7233            if (yych <= 'Q') goto yy141;
7234            goto yy393;
7235        }
7236    } else {
7237        if (yych <= 'q') {
7238            if (yych <= 'Z') goto yy141;
7239            if (yych <= '`') goto yy3;
7240            goto yy141;
7241        } else {
7242            if (yych <= 'r') goto yy393;
7243            if (yych <= 'z') goto yy141;
7244            goto yy3;
7245        }
7246    }
7247yy390:
7248    YYDEBUG(390, *YYCURSOR);
7249    yych = *++YYCURSOR;
7250    if (yych <= 'O') {
7251        if (yych <= ')') {
7252            if (yych <= '(') goto yy3;
7253            goto yy139;
7254        } else {
7255            if (yych <= '@') goto yy3;
7256            if (yych <= 'N') goto yy141;
7257        }
7258    } else {
7259        if (yych <= 'n') {
7260            if (yych <= 'Z') goto yy141;
7261            if (yych <= '`') goto yy3;
7262            goto yy141;
7263        } else {
7264            if (yych <= 'o') goto yy391;
7265            if (yych <= 'z') goto yy141;
7266            goto yy3;
7267        }
7268    }
7269yy391:
7270    YYDEBUG(391, *YYCURSOR);
7271    ++YYCURSOR;
7272    if ((yych = *YYCURSOR) <= '@') {
7273        if (yych == ')') goto yy139;
7274    } else {
7275        if (yych <= 'Z') goto yy142;
7276        if (yych <= '`') goto yy392;
7277        if (yych <= 'z') goto yy142;
7278    }
7279yy392:
7280    YYDEBUG(392, *YYCURSOR);
7281#line 1591 "ext/date/lib/parse_date.re"
7282    {
7283        DEBUG_OUTPUT("ago");
7284        TIMELIB_INIT;
7285        s->time->relative.y = 0 - s->time->relative.y;
7286        s->time->relative.m = 0 - s->time->relative.m;
7287        s->time->relative.d = 0 - s->time->relative.d;
7288        s->time->relative.h = 0 - s->time->relative.h;
7289        s->time->relative.i = 0 - s->time->relative.i;
7290        s->time->relative.s = 0 - s->time->relative.s;
7291        s->time->relative.weekday = 0 - s->time->relative.weekday;
7292        if (s->time->relative.weekday == 0) {
7293            s->time->relative.weekday = -7;
7294        }
7295        if (s->time->relative.have_special_relative && s->time->relative.special.type == TIMELIB_SPECIAL_WEEKDAY) {
7296            s->time->relative.special.amount = 0 - s->time->relative.special.amount;
7297        }
7298        TIMELIB_DEINIT;
7299        return TIMELIB_AGO;
7300    }
7301#line 7302 "ext/date/lib/parse_date.c"
7302yy393:
7303    YYDEBUG(393, *YYCURSOR);
7304    yyaccept = 5;
7305    yych = *(YYMARKER = ++YYCURSOR);
7306    if (yych <= '/') {
7307        if (yych <= '(') {
7308            if (yych <= '\t') {
7309                if (yych <= 0x08) goto yy193;
7310                goto yy195;
7311            } else {
7312                if (yych == ' ') goto yy195;
7313                goto yy193;
7314            }
7315        } else {
7316            if (yych <= ',') {
7317                if (yych <= ')') goto yy139;
7318                goto yy193;
7319            } else {
7320                if (yych <= '-') goto yy196;
7321                if (yych <= '.') goto yy195;
7322                goto yy193;
7323            }
7324        }
7325    } else {
7326        if (yych <= 'Z') {
7327            if (yych <= '@') {
7328                if (yych <= '9') goto yy195;
7329                goto yy193;
7330            } else {
7331                if (yych != 'I') goto yy142;
7332            }
7333        } else {
7334            if (yych <= 'h') {
7335                if (yych <= '`') goto yy193;
7336                goto yy142;
7337            } else {
7338                if (yych <= 'i') goto yy394;
7339                if (yych <= 'z') goto yy142;
7340                goto yy193;
7341            }
7342        }
7343    }
7344yy394:
7345    YYDEBUG(394, *YYCURSOR);
7346    yych = *++YYCURSOR;
7347    if (yych <= 'L') {
7348        if (yych <= ')') {