Initial revision
[mmh] / zotnet / tws / dtimep.c-lexed
1 #include <stdio.h>
2 static int start_cond = 0;
3 #define BEGIN start_cond =
4 struct yysvf { 
5         struct yywork *yystoff;
6         struct yysvf *yyother;
7         int *yystops;};
8 # define Z 2
9 #include <h/nmh.h>
10 #include <tws.h>
11 #if !defined(HAVE_TM_GMTOFF) && !defined(HAVE_TZSET)
12 # include <sys/timeb.h>
13 #endif
14
15 #if !defined(HAVE_TM_GMTOFF) && defined(HAVE_TZSET)
16 extern int  daylight;
17 extern long timezone;
18 extern char *tzname[];
19 #endif
20
21
22 # line 49 "./dtimep.lex"
23 /*
24  * Patchable flag that says how to interpret NN/NN/NN dates. When
25  * true, we do it European style: DD/MM/YY. When false, we do it
26  * American style: MM/DD/YY.  Of course, these are all non-RFC822
27  * compliant.
28  */
29 int europeandate = 0;
30
31
32 # line 57 "./dtimep.lex"
33 /*
34  * Table to convert month names to numeric month.  We use the
35  * fact that the low order 5 bits of the sum of the 2nd & 3rd
36  * characters of the name is a hash with no collisions for the 12
37  * valid month names.  (The mask to 5 bits maps any combination of
38  * upper and lower case into the same hash value).
39  */
40 static int month_map[] = {
41         0,
42         6,      /* 1 - Jul */
43         3,      /* 2 - Apr */
44         5,      /* 3 - Jun */
45         0,
46         10,     /* 5 - Nov */
47         0,
48         1,      /* 7 - Feb */
49         11,     /* 8 - Dec */
50         0,
51         0,
52         0,
53         0,
54         0,
55         0,
56         0,      /*15 - Jan */
57         0,
58         0,
59         0,
60         2,      /*19 - Mar */
61         0,
62         8,      /*21 - Sep */
63         0,
64         9,      /*23 - Oct */
65         0,
66         0,
67         4,      /*26 - May */
68         0,
69         7       /*28 - Aug */
70 };
71
72 # line 95 "./dtimep.lex"
73 /*
74  * Same trick for day-of-week using the hash function
75  *  (c1 & 7) + (c2 & 4)
76  */
77 static int day_map[] = {
78         0,
79         0,
80         0,
81         6,      /* 3 - Sat */
82         4,      /* 4 - Thu */
83         0,
84         5,      /* 6 - Fri */
85         0,      /* 7 - Sun */
86         2,      /* 8 - Tue */
87         1       /* 9 - Mon */,
88         0,
89         3       /*11 - Wed */
90 };
91 #define SETDAY  { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)];\
92                 tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP;\
93                 cp += 2; }
94 #define SETMONTH { tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; gotdate++;\
95                  cp += 2;\
96                  SKIPD;}
97 #define CVT1OR2 (i=(*cp++ - '0'), isdigit(*cp)? i*10 + (*cp++ - '0') : i)
98 #define CVT2      ((cp[0] - '0')*10 + (cp[1] - '0'))
99 #define CVT4    ((((cp[0] - '0')*10 + (cp[1] - '0'))*10 + \
100                                       (cp[2] - '0'))*10 + (cp[3] - '0'))
101 #define SKIPD   { while ( !isdigit(*cp++) ) ;  --cp; }
102 #define EXPZONE { tw.tw_flags &= ~TW_SZONE; tw.tw_flags |= TW_SZEXP; }
103 #define ZONE(x) { tw.tw_zone=(x); EXPZONE; }
104 #define ZONED(x) { ZONE(x); tw.tw_flags |= TW_DST; }
105 #define LC(c)   (isupper (c) ? tolower (c) : (c))
106
107 #ifdef DSTXXX
108 # ifdef TIME_WITH_SYS_TIME
109 #  include <sys/time.h>
110 #  include <time.h>
111 # else
112 #  ifdef HAVE_SYS_TIME_H
113 #   include <sys/time.h>
114 #  else
115 #   include <time.h>
116 #  endif
117 # endif
118
119 static void
120 zonehack (struct tws *tw)
121 {
122     register struct tm *tm;
123
124     if (dmktime (tw) == (time_t) -1)
125         return;
126
127     tm = localtime (&tw->tw_clock);
128     if (tm->tm_isdst) {
129         tw->tw_flags |= TW_DST;
130         tw->tw_zone -= 60;
131     }
132 }
133 #endif  /* DSTXXX */
134 struct tws *
135 dparsetime (char *str)
136 {
137         register int i;
138         static struct tws tw;
139         register char *cp;
140         register int gotdate = 0;
141         time_t tclock;
142
143 #ifdef HAVE_TM_GMTOFF
144         struct tm *tm;
145         time_t clock;
146 #else
147 # ifndef HAVE_TZSET
148         struct timeb tb;
149 # endif /* not HAVE_TZSET */
150 #endif /* HAVE_TM_GMTOFF */
151
152         start_cond = 0;
153
154         /* Zero out the struct. */
155         memset( (char *) &tw, 0, sizeof(tw));
156
157         /* Set default time zone. */
158 #ifdef HAVE_TM_GMTOFF
159         time (&clock);
160         tm = localtime(&clock);
161         tw.tw_zone = tm->tm_gmtoff / 60;
162         if (tm->tm_isdst)                       /* if DST is in effect */
163                 tw.tw_zone -= 60;               /* reset to normal offset */
164 #else
165 # ifdef HAVE_TZSET
166         tzset();
167         tw.tw_zone = -(timezone / 60);
168 # else
169         ftime(&tb);
170         tw.tw_zone = -tb.timezone;
171 # endif /* HAVE_TZSET */
172 #endif /* HAVE_TM_GMTOFF */
173
174         while (isspace(*str))
175                 str++;
176         while (1)
177                 switch (cp = str, *cp ? lex_string( &str, start_cond) : 0) {
178
179                 case -1:
180                         if (!gotdate || tw.tw_year == 0)
181                                 return (struct tws *)0;
182                         /* fall through */
183                 case 0:
184                         if (tw.tw_year == 0) {
185                                 /* Set default year. */
186                                 time (&tclock);
187                                 tw.tw_year = localtime(&tclock)->tm_year + 1900;
188                         } else if (tw.tw_year < 100) {
189                                 /* assume no 2-digit years > 1999 */
190                                 tw.tw_year += 1900;
191                         }
192                         return &tw;
193
194 #ifdef __cplusplus
195 /* to avoid CC and lint complaining yyfussy not being used ...*/
196 static int __lex_hack = 0;
197 if (__lex_hack) goto yyfussy;
198 #endif
199 case 1:
200
201 # line 219 "./dtimep.lex"
202                         SETDAY;
203 break;
204 case 2:
205
206 # line 220 "./dtimep.lex"
207                 {
208                                         cp++;
209                                         SETDAY;
210                                         }
211 break;
212 case 3:
213
214 # line 224 "./dtimep.lex"
215 {
216                                         if (europeandate) {
217                                                 /* European: DD/MM/YY */
218                                                 tw.tw_mday = CVT1OR2;
219                                                 cp++;
220                                                 tw.tw_mon  = CVT1OR2 - 1;
221                                         } else {
222                                                 /* American: MM/DD/YY */
223                                                 tw.tw_mon  = CVT1OR2 - 1;
224                                                 cp++;
225                                                 tw.tw_mday = CVT1OR2;
226                                         }
227                                         cp++;
228                                         for (i = 0; isdigit(*cp); )
229                                                 i = i*10 + (*cp++ - '0');
230                                         tw.tw_year = i;
231                                         gotdate++;      /* XXX */
232                                         }
233 break;
234 case 4:
235
236 # line 242 "./dtimep.lex"
237                 {
238                                         if (europeandate) {
239                                                 tw.tw_mday = CVT1OR2; cp++;
240                                                 tw.tw_mon  = CVT1OR2 - 1;
241                                         } else {
242                                                 tw.tw_mon = CVT1OR2 - 1; cp++;
243                                                 tw.tw_mday  = CVT1OR2;
244                                         }
245                                         gotdate++;
246                                         }
247 break;
248 case 5:
249
250 # line 252 "./dtimep.lex"
251 {
252                                         tw.tw_mday = CVT1OR2;
253                                         while ( !isalpha(*cp++) )
254                                                 ;
255                                         SETMONTH;
256                                         for (i = 0; isdigit(*cp); )
257                                                 i = i*10 + (*cp++ - '0');
258                                         tw.tw_year = i;
259                                         }
260 break;
261 case 6:
262
263 # line 261 "./dtimep.lex"
264               {
265                                         tw.tw_mday = CVT1OR2;
266                                         while ( ! isalpha( *cp++ ) )
267                                                 ;
268                                         SETMONTH;
269                                         }
270 break;
271 case 7:
272
273 # line 267 "./dtimep.lex"
274 {
275                                         cp++;
276                                         SETMONTH;
277                                         tw.tw_mday = CVT1OR2;
278                                         SKIPD;
279                                         for (i = 0; isdigit(*cp); )
280                                                 i = i*10 + (*cp++ - '0');
281                                         tw.tw_year = i;
282                                         }
283 break;
284 case 8:
285
286 # line 276 "./dtimep.lex"
287                 {
288                                         cp++;
289                                         SETMONTH;
290                                         tw.tw_mday = CVT1OR2;
291                                         }
292 break;
293 case 9:
294
295 # line 282 "./dtimep.lex"
296         {       /* hack: ctime w/o TZ */
297                                         tw.tw_hour = CVT1OR2; cp++;
298                                         tw.tw_min  = CVT1OR2; cp++;
299                                         tw.tw_sec  = CVT1OR2;
300                                         SKIPD;
301                                         tw.tw_year = CVT4; cp+=4;
302                                         }
303 break;
304 case 10:
305
306 # line 289 "./dtimep.lex"
307                         {
308                                         tw.tw_hour = CVT1OR2; cp++;
309                                         tw.tw_min  = CVT1OR2; cp++;
310                                         tw.tw_sec  = CVT1OR2;
311                                         BEGIN Z;
312                                         }
313 break;
314 case 11:
315
316 # line 295 "./dtimep.lex"
317                         {
318                                         tw.tw_hour = CVT1OR2; cp++;
319                                         tw.tw_min = CVT1OR2;
320                                         BEGIN Z;
321                                         }
322 break;
323 case 12:
324
325 # line 300 "./dtimep.lex"
326                         {
327                                         tw.tw_hour = CVT1OR2; cp++;
328                                         if (tw.tw_hour == 12)
329                                                 tw.tw_hour = 0;
330                                         tw.tw_min  = CVT1OR2;
331                                         BEGIN Z;
332                                         }
333 break;
334 case 13:
335
336 # line 307 "./dtimep.lex"
337                 {
338                                         tw.tw_hour = CVT1OR2; cp++;
339                                         if (tw.tw_hour == 12)
340                                                 tw.tw_hour = 0;
341                                         tw.tw_min  = CVT1OR2; cp++;
342                                         tw.tw_sec  = CVT1OR2;
343                                         BEGIN Z;
344                                         }
345 break;
346 case 14:
347
348 # line 315 "./dtimep.lex"
349                         {
350                                         tw.tw_hour = CVT1OR2; cp++;
351                                         if (tw.tw_hour != 12)
352                                                 tw.tw_hour += 12;
353                                         tw.tw_min  = CVT1OR2;
354                                         BEGIN Z;
355                                         }
356 break;
357 case 15:
358
359 # line 322 "./dtimep.lex"
360                 {
361                                         tw.tw_hour = CVT1OR2; cp++;
362                                         if (tw.tw_hour != 12)
363                                                 tw.tw_hour += 12;
364                                         tw.tw_min  = CVT1OR2; cp++;
365                                         tw.tw_sec  = CVT1OR2;
366                                         BEGIN Z;
367                                         }
368 break;
369 case 16:
370
371 # line 330 "./dtimep.lex"
372                 {
373                                         tw.tw_hour = CVT2; cp+=2;
374                                         tw.tw_min  = CVT2; cp+=2;
375                                         tw.tw_sec  = CVT2; cp+=2;
376                                         BEGIN Z;
377                                         }
378 break;
379 case 17:
380
381 # line 336 "./dtimep.lex"
382                         {
383                                         /*
384                                          * Luckly, 4 digit times in the range
385                                          * 1960-1999 aren't legal as hour
386                                          * and minutes.
387                                          */
388                                         tw.tw_year = CVT4; cp+=4;
389                                         }
390 break;
391 case 18:
392
393 # line 344 "./dtimep.lex"
394                 {
395                                         if (tw.tw_hour || tw.tw_min 
396                                                             || tw.tw_sec) {
397                                             tw.tw_year = CVT4; cp+=4;
398                                             tw.tw_zone = 0;
399                                         } else {
400                                             tw.tw_hour = CVT2; cp+=2;
401                                             tw.tw_min  = CVT2; cp+=2;
402                                             BEGIN Z;
403                                         }
404                                         }
405 break;
406 case 19:
407
408 # line 355 "./dtimep.lex"
409                         ZONE(0 * 60);
410 break;
411 case 20:
412
413 # line 356 "./dtimep.lex"
414                         ZONE(0 * 60);
415 break;
416 case 21:
417
418 # line 357 "./dtimep.lex"
419                         ZONE(2 * 60);
420 break;
421 case 22:
422
423 # line 358 "./dtimep.lex"
424                         ZONED(2 * 60);
425 break;
426 case 23:
427
428 # line 359 "./dtimep.lex"
429                         ZONE(-5 * 60);
430 break;
431 case 24:
432
433 # line 360 "./dtimep.lex"
434                         ZONED(-5 * 60);
435 break;
436 case 25:
437
438 # line 361 "./dtimep.lex"
439                         ZONE(-6 * 60);
440 break;
441 case 26:
442
443 # line 362 "./dtimep.lex"
444                         ZONED(-6 * 60);
445 break;
446 case 27:
447
448 # line 363 "./dtimep.lex"
449                         ZONE(-7 * 60);
450 break;
451 case 28:
452
453 # line 364 "./dtimep.lex"
454                         ZONED(-7 * 60);
455 break;
456 case 29:
457
458 # line 365 "./dtimep.lex"
459                         ZONE(-8 * 60);
460 break;
461 case 30:
462
463 # line 366 "./dtimep.lex"
464                         ZONED(-8 * 60);
465 break;
466 case 31:
467
468 # line 367 "./dtimep.lex"
469                         ZONE(-(3 * 60 + 30));
470 break;
471 case 32:
472
473 # line 368 "./dtimep.lex"
474                         ZONE(-4 * 60);
475 break;
476 case 33:
477
478 # line 369 "./dtimep.lex"
479                         ZONED(-4 * 60);
480 break;
481 case 34:
482
483 # line 370 "./dtimep.lex"
484                         ZONE(-9 * 60);
485 break;
486 case 35:
487
488 # line 371 "./dtimep.lex"
489                         ZONED(-9 * 60);
490 break;
491 case 36:
492
493 # line 372 "./dtimep.lex"
494                         ZONE(-10 * 60);
495 break;
496 case 37:
497
498 # line 373 "./dtimep.lex"
499                         ZONED(-10 * 60);
500 break;
501 case 38:
502
503 # line 374 "./dtimep.lex"
504                         ZONED(-1 * 60);
505 break;
506 case 39:
507
508 # line 375 "./dtimep.lex"
509                         {
510                                         tw.tw_zone = 60 * (('a'-1) - LC(*cp));
511                                         EXPZONE; 
512                                         }
513 break;
514 case 40:
515
516 # line 379 "./dtimep.lex"
517                         {
518                                         tw.tw_zone = 60 * ('a' - LC(*cp));
519                                         EXPZONE; 
520                                         }
521 break;
522 case 41:
523
524 # line 383 "./dtimep.lex"
525                         {
526                                         tw.tw_zone = 60 * (LC(*cp) - 'm');
527                                         EXPZONE; 
528                                         }
529 break;
530 case 42:
531
532 # line 387 "./dtimep.lex"
533                 {
534                                         cp++;
535                                         tw.tw_zone = ((cp[0] * 10 + cp[1])
536                                                      -('0' * 10   + '0'))*60
537                                                     +((cp[2] * 10 + cp[3])
538                                                      -('0' * 10   + '0'));
539                                         EXPZONE;
540 #ifdef  DSTXXX
541                                         zonehack (&tw);
542 #endif  /* DSTXXX */
543                                         cp += 4;
544                                         }
545 break;
546 case 43:
547
548 # line 399 "./dtimep.lex"
549                 {
550                                         cp++;
551                                         tw.tw_zone = (('0' * 10   + '0')
552                                                      -(cp[0] * 10 + cp[1]))*60
553                                                     +(('0' * 10   + '0')
554                                                      -(cp[2] * 10 + cp[3]));
555                                         EXPZONE;
556 #ifdef  DSTXXX
557                                         zonehack (&tw);
558 #endif  /* DSTXXX */
559                                         cp += 4;
560                                         }
561 break;
562 case 44:
563
564 # line 411 "./dtimep.lex"
565                 {
566                                         SKIPD;
567                                         tw.tw_year = CVT4; cp+=4;
568                                         }
569 break;
570 case 45:
571
572 # line 415 "./dtimep.lex"
573 case 46:
574
575 # line 416 "./dtimep.lex"
576 ;
577 break;
578         default: return(0);
579 } }
580 /* end of yylex */
581 int yyvstop[] = {
582 0,
583
584 46,
585 0,
586
587 45,
588 0,
589
590 46,
591 0,
592
593 39,
594 0,
595
596 39,
597 0,
598
599 39,
600 0,
601
602 39,
603 0,
604
605 39,
606 0,
607
608 39,
609 0,
610
611 39,
612 0,
613
614 39,
615 0,
616
617 39,
618 0,
619
620 40,
621 0,
622
623 40,
624 0,
625
626 41,
627 0,
628
629 41,
630 0,
631
632 41,
633 0,
634
635 41,
636 0,
637
638 41,
639 0,
640
641 41,
642 0,
643
644 41,
645 0,
646
647 41,
648 0,
649
650 41,
651 0,
652
653 19,
654 0,
655
656 4,
657 0,
658
659 4,
660 0,
661
662 11,
663 0,
664
665 1,
666 0,
667
668 1,
669 0,
670
671 1,
672 0,
673
674 1,
675 0,
676
677 1,
678 0,
679
680 1,
681 0,
682
683 1,
684 0,
685
686 33,
687 0,
688
689 32,
690 0,
691
692 38,
693 0,
694
695 26,
696 0,
697
698 25,
699 0,
700
701 24,
702 0,
703
704 23,
705 0,
706
707 20,
708 0,
709
710 37,
711 0,
712
713 36,
714 0,
715
716 22,
717 0,
718
719 21,
720 0,
721
722 28,
723 0,
724
725 27,
726 0,
727
728 31,
729 0,
730
731 30,
732 0,
733
734 29,
735 0,
736
737 35,
738 0,
739
740 34,
741 0,
742
743 4,
744 0,
745
746 4,
747 0,
748
749 4,
750 0,
751
752 18,
753 0,
754
755 11,
756 0,
757
758 11,
759 0,
760
761 6,
762 0,
763
764 6,
765 0,
766
767 6,
768 0,
769
770 6,
771 0,
772
773 6,
774 0,
775
776 6,
777 0,
778
779 6,
780 0,
781
782 6,
783 0,
784
785 6,
786 0,
787
788 6,
789 0,
790
791 6,
792 0,
793
794 6,
795 0,
796
797 17,
798 18,
799 0,
800
801 1,
802 0,
803
804 2,
805 0,
806
807 18,
808 0,
809
810 10,
811 0,
812
813 12,
814 0,
815
816 14,
817 0,
818
819 6,
820 0,
821
822 17,
823 18,
824 0,
825
826 8,
827 0,
828
829 44,
830 0,
831
832 42,
833 0,
834
835 43,
836 0,
837
838 2,
839 0,
840
841 3,
842 0,
843
844 16,
845 0,
846
847 10,
848 0,
849
850 10,
851 0,
852
853 5,
854 0,
855
856 8,
857 0,
858
859 8,
860 0,
861
862 1,
863 0,
864
865 3,
866 0,
867
868 3,
869 0,
870
871 13,
872 0,
873
874 15,
875 0,
876
877 6,
878 0,
879
880 5,
881 0,
882
883 5,
884 0,
885
886 5,
887 0,
888
889 5,
890 0,
891
892 7,
893 0,
894
895 9,
896 0,
897
898 7,
899 0,
900
901 7,
902 0,
903 0};
904 # define YYTYPE int
905 struct yywork { YYTYPE verify, advance; } yycrank[] = {
906 0,0,    0,0,    0,0,    0,0,    
907 0,0,    0,0,    0,0,    0,0,    
908 0,0,    0,0,    1,5,    1,6,    
909 5,5,    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,    1,5,    0,0,    5,5,    
915 3,21,   3,6,    0,0,    0,0,    
916 0,0,    1,7,    0,0,    0,0,    
917 0,0,    0,0,    0,0,    0,0,    
918 0,0,    1,8,    1,9,    1,8,    
919 1,10,   1,10,   1,10,   1,10,   
920 1,10,   1,10,   1,10,   3,21,   
921 9,63,   22,83,  22,83,  0,0,    
922 0,0,    0,0,    0,0,    3,7,    
923 0,0,    0,0,    3,22,   0,0,    
924 3,23,   0,0,    0,0,    3,8,    
925 3,9,    3,8,    3,10,   3,10,   
926 3,10,   3,10,   3,10,   3,10,   
927 3,10,   10,64,  10,64,  10,64,  
928 10,64,  10,64,  10,64,  10,64,  
929 10,64,  10,64,  10,64,  0,0,    
930 0,0,    0,0,    1,11,   15,72,  
931 59,143, 1,12,   14,70,  1,13,   
932 12,67,  13,68,  17,75,  1,14,   
933 19,79,  20,81,  1,15,   1,16,   
934 1,17,   15,73,  11,65,  16,74,  
935 1,18,   1,19,   13,69,  11,66,  
936 1,20,   19,80,  14,71,  25,99,  
937 3,24,   3,25,   3,26,   3,27,   
938 3,28,   3,29,   3,30,   3,31,   
939 3,32,   3,33,   3,34,   3,34,   
940 3,35,   3,36,   3,37,   3,38,   
941 3,39,   3,39,   3,40,   3,41,   
942 3,42,   3,39,   3,43,   3,39,   
943 3,44,   7,45,   8,50,   18,76,  
944 26,100, 28,102, 30,104, 18,77,  
945 7,46,   24,97,  42,114, 45,117, 
946 31,105, 21,21,  7,47,   7,48,   
947 23,84,  23,84,  7,49,   26,101, 
948 28,103, 24,65,  38,112, 18,78,  
949 24,98,  8,50,   24,66,  31,106, 
950 36,74,  46,118, 49,123, 56,139, 
951 36,111, 57,140, 55,137, 60,144, 
952 21,21,  38,113, 8,51,   55,138, 
953 8,52,   8,53,   8,53,   8,53,   
954 8,53,   8,53,   8,53,   8,53,   
955 8,53,   8,53,   8,53,   8,54,   
956 21,82,  21,82,  21,82,  21,82,  
957 21,82,  21,82,  21,82,  21,82,  
958 21,82,  21,82,  47,119, 61,145, 
959 62,146, 23,85,  23,86,  23,87,  
960 44,115, 23,88,  35,72,  23,89,  
961 23,90,  35,109, 23,91,  50,50,  
962 33,70,  23,92,  23,93,  33,107, 
963 23,94,  58,141, 47,120, 44,116, 
964 35,73,  23,95,  65,148, 48,121, 
965 35,110, 23,96,  8,55,   51,124, 
966 66,149, 8,56,   33,108, 8,57,   
967 33,71,  67,150, 50,50,  8,58,   
968 48,122, 58,142, 8,59,   8,60,   
969 8,61,   68,151, 69,152, 70,153, 
970 8,62,   73,158, 71,154, 50,124, 
971 71,155, 74,159, 51,124, 52,134, 
972 52,134, 52,134, 52,134, 52,134, 
973 52,134, 52,134, 52,134, 52,134, 
974 52,134, 75,160, 76,161, 77,162, 
975 78,163, 79,164, 51,133, 51,133, 
976 51,133, 51,133, 51,133, 51,133, 
977 51,133, 51,133, 51,133, 51,133, 
978 53,135, 53,135, 53,135, 53,135, 
979 53,135, 53,135, 53,135, 53,135, 
980 53,135, 53,135, 54,136, 54,136, 
981 54,136, 54,136, 54,136, 54,136, 
982 54,136, 54,136, 54,136, 54,136, 
983 72,156, 80,165, 81,166, 50,125, 
984 93,111, 85,97,  50,126, 72,157, 
985 50,127, 97,170, 91,107, 92,109, 
986 50,128, 64,50,  98,171, 50,129, 
987 50,130, 50,131, 99,172, 51,55,  
988 85,98,  50,132, 51,56,  100,173,        
989 51,57,  91,108, 92,110, 101,174,        
990 51,58,  102,175,        103,176,        51,59,  
991 51,60,  51,61,  104,177,        105,178,        
992 64,50,  51,62,  63,135, 63,135, 
993 63,135, 63,135, 63,135, 63,135, 
994 63,147, 63,147, 63,147, 63,147, 
995 106,179,        64,51,  107,180,        64,52,  
996 82,167, 82,167, 82,167, 82,167, 
997 82,167, 82,167, 82,167, 82,167, 
998 82,167, 82,167, 64,54,  83,168, 
999 83,168, 83,168, 83,168, 83,168, 
1000 83,168, 83,168, 83,168, 83,168, 
1001 83,168, 84,169, 84,169, 84,169, 
1002 84,169, 84,169, 84,169, 84,169, 
1003 84,169, 84,169, 84,169, 108,181,        
1004 109,182,        110,183,        111,184,        112,185,        
1005 113,186,        115,187,        116,188,        117,189,        
1006 118,190,        119,191,        120,192,        121,193,        
1007 122,194,        123,195,        124,124,        126,198,        
1008 125,196,        64,55,  127,199,        128,200,        
1009 64,56,  125,197,        64,57,  129,202,        
1010 130,203,        131,204,        64,58,  132,205,        
1011 133,206,        64,59,  64,60,  64,61,  
1012 137,216,        138,217,        139,218,        64,62,  
1013 140,219,        124,124,        141,220,        128,201,        
1014 134,206,        135,210,        135,210,        135,210,        
1015 135,210,        135,210,        135,210,        135,210,        
1016 135,210,        135,210,        135,210,        133,206,        
1017 142,221,        143,223,        142,222,        144,225,        
1018 145,226,        146,227,        153,236,        155,157,        
1019 143,224,        158,238,        159,239,        134,206,        
1020 133,207,        160,240,        162,242,        133,208,        
1021 133,208,        133,208,        133,208,        133,208,        
1022 133,208,        133,208,        133,208,        133,208,        
1023 133,208,        148,229,        134,207,        134,209,        
1024 134,209,        134,209,        134,209,        134,209,        
1025 134,209,        134,209,        134,209,        134,209,        
1026 134,209,        136,211,        147,228,        147,228,        
1027 147,228,        147,228,        147,228,        147,228,        
1028 147,228,        147,228,        147,228,        147,228,        
1029 148,229,        149,229,        124,125,        150,229,        
1030 154,229,        124,126,        163,243,        124,127,        
1031 190,252,        192,254,        196,258,        124,128,        
1032 136,211,        191,250,        124,129,        124,130,        
1033 124,131,        151,229,        156,229,        152,234,        
1034 124,132,        157,229,        161,234,        164,234,        
1035 149,229,        165,234,        150,229,        154,229,        
1036 136,212,        136,212,        136,212,        136,212,        
1037 136,212,        136,212,        136,212,        136,212,        
1038 136,212,        136,212,        136,213,        166,234,        
1039 151,229,        156,229,        152,234,        194,250,        
1040 157,229,        161,234,        164,234,        189,250,        
1041 165,234,        195,250,        193,250,        197,259,        
1042 198,260,        199,261,        152,234,        200,262,        
1043 203,267,        161,234,        164,234,        201,263,        
1044 165,234,        201,264,        166,234,        167,247,        
1045 167,247,        167,247,        167,247,        167,247,        
1046 167,247,        167,247,        167,247,        167,247,        
1047 167,247,        148,230,        166,234,        204,268,        
1048 205,269,        136,214,        168,248,        168,248,        
1049 168,248,        168,248,        168,248,        168,248,        
1050 168,248,        168,248,        168,248,        168,248,        
1051 206,206,        191,253,        208,207,        209,207,        
1052 136,215,        212,213,        214,274,        150,232,        
1053 169,249,        169,249,        169,249,        169,249,        
1054 169,249,        169,249,        169,249,        169,249,        
1055 169,249,        169,249,        189,251,        202,265,        
1056 156,237,        149,231,        152,235,        206,206,        
1057 210,271,        211,211,        202,266,        215,275,        
1058 154,157,        194,256,        195,257,        220,283,        
1059 222,224,        225,285,        151,233,        193,255,        
1060 226,286,        227,287,        230,157,        231,290,        
1061 164,244,        232,291,        161,241,        165,245,        
1062 233,292,        235,293,        236,294,        210,271,        
1063 211,211,        237,157,        238,295,        239,296,        
1064 166,246,        207,270,        207,270,        207,270,        
1065 207,270,        207,270,        207,270,        207,270,        
1066 207,270,        207,270,        207,270,        210,272,        
1067 210,272,        210,272,        210,272,        210,272,        
1068 210,272,        210,272,        210,272,        210,272,        
1069 210,272,        213,273,        213,273,        213,273,        
1070 213,273,        213,273,        213,273,        213,273,        
1071 213,273,        213,273,        213,273,        240,297,        
1072 228,288,        234,234,        241,298,        242,299,        
1073 243,300,        244,301,        245,302,        216,276,        
1074 246,303,        247,304,        247,304,        247,304,        
1075 247,304,        247,304,        247,304,        247,304,        
1076 247,304,        247,304,        247,304,        250,307,        
1077 251,308,        252,309,        217,276,        228,288,        
1078 234,234,        253,310,        254,311,        255,312,        
1079 256,313,        211,214,        216,276,        257,314,        
1080 276,330,        258,266,        260,266,        279,224,        
1081 218,276,        265,266,        280,332,        281,333,        
1082 282,334,        283,335,        284,224,        216,277,        
1083 211,215,        217,276,        216,278,        216,278,        
1084 216,278,        216,278,        216,278,        216,278,        
1085 216,278,        216,278,        216,278,        216,278,        
1086 258,266,        260,266,        217,277,        218,276,        
1087 265,266,        217,278,        217,278,        217,278,        
1088 217,278,        217,278,        217,278,        217,278,        
1089 217,278,        217,278,        217,278,        219,276,        
1090 218,277,        259,266,        285,336,        218,278,        
1091 218,278,        218,278,        218,278,        218,278,        
1092 218,278,        218,278,        218,278,        218,278,        
1093 218,278,        264,266,        263,266,        286,337,        
1094 287,338,        290,157,        291,342,        292,343,        
1095 293,344,        294,345,        219,276,        296,346,        
1096 259,266,        221,276,        266,266,        271,271,        
1097 297,347,        274,274,        262,266,        216,279,        
1098 298,348,        299,349,        301,350,        219,277,        
1099 264,266,        263,266,        219,278,        219,278,        
1100 219,278,        219,278,        219,278,        219,278,        
1101 219,278,        219,278,        219,278,        219,278,        
1102 221,276,        266,266,        271,271,        223,276,        
1103 274,274,        262,266,        260,317,        265,320,        
1104 218,281,        258,315,        217,280,        261,266,        
1105 268,266,        221,277,        269,266,        275,275,        
1106 221,278,        221,278,        221,278,        221,278,        
1107 221,278,        221,278,        221,278,        221,278,        
1108 221,278,        221,278,        223,276,        302,351,        
1109 303,352,        224,276,        267,266,        288,288,        
1110 308,353,        310,354,        261,266,        268,266,        
1111 312,355,        269,266,        275,275,        223,277,        
1112 229,229,        313,356,        223,278,        223,278,        
1113 223,278,        223,278,        223,278,        223,278,        
1114 223,278,        223,278,        223,278,        223,278,        
1115 224,276,        267,266,        288,288,        314,357,        
1116 219,282,        264,266,        315,266,        316,358,        
1117 317,359,        259,316,        318,360,        229,229,        
1118 319,361,        224,277,        320,266,        321,362,        
1119 224,278,        224,278,        224,278,        224,278,        
1120 224,278,        224,278,        224,278,        224,278,        
1121 224,278,        224,278,        263,266,        229,289,        
1122 229,289,        229,289,        229,289,        229,289,        
1123 229,289,        229,289,        229,289,        229,289,        
1124 229,289,        221,224,        262,319,        322,363,        
1125 323,364,        223,284,        248,305,        248,305,        
1126 248,305,        248,305,        248,305,        248,305,        
1127 248,305,        248,305,        248,305,        248,305,        
1128 249,306,        249,306,        249,306,        249,306,        
1129 249,306,        249,306,        249,306,        249,306,        
1130 249,306,        249,306,        268,322,        328,368,        
1131 261,318,        329,369,        330,370,        332,224,        
1132 273,326,        269,323,        267,321,        270,324,        
1133 270,324,        270,324,        270,324,        270,324,        
1134 270,324,        270,324,        270,324,        270,324,        
1135 270,324,        272,325,        272,325,        272,325,        
1136 272,325,        272,325,        272,325,        272,325,        
1137 272,325,        272,325,        272,325,        273,326,        
1138 333,373,        334,374,        277,277,        278,331,        
1139 278,331,        278,331,        278,331,        278,331,        
1140 278,331,        278,331,        278,331,        278,331,        
1141 278,331,        324,365,        325,325,        273,327,        
1142 273,327,        273,327,        273,327,        273,327,        
1143 273,327,        273,327,        273,327,        273,327,        
1144 273,327,        277,277,        335,375,        336,376,        
1145 289,339,        337,377,        338,378,        341,340,        
1146 342,380,        343,381,        344,234,        345,157,        
1147 324,365,        325,325,        346,382,        347,157,        
1148 348,383,        277,278,        277,278,        277,278,        
1149 277,278,        277,278,        277,278,        277,278,        
1150 277,278,        277,278,        277,278,        289,339,        
1151 324,366,        324,366,        324,366,        324,366,        
1152 324,366,        324,366,        324,366,        324,366,        
1153 324,366,        324,366,        326,326,        289,340,        
1154 273,328,        327,326,        331,371,        289,341,        
1155 289,341,        289,341,        289,341,        289,341,        
1156 289,341,        289,341,        289,341,        289,341,        
1157 289,341,        339,339,        340,379,        273,329,        
1158 349,384,        350,385,        352,386,        353,250,        
1159 354,387,        326,326,        355,388,        357,389,        
1160 327,326,        331,371,        358,266,        359,390,        
1161 360,391,        361,392,        362,393,        363,394,        
1162 364,395,        365,365,        367,396,        373,399,        
1163 339,339,        340,379,        326,367,        374,400,        
1164 375,224,        331,372,        331,372,        331,372,        
1165 331,372,        331,372,        331,372,        331,372,        
1166 331,372,        331,372,        331,372,        368,368,        
1167 369,369,        370,370,        371,371,        376,401,        
1168 365,365,        366,365,        366,365,        366,365,        
1169 366,365,        366,365,        366,365,        366,365,        
1170 366,365,        366,365,        366,365,        377,224,        
1171 378,402,        384,404,        386,405,        389,406,        
1172 390,407,        391,408,        368,368,        369,369,        
1173 370,370,        371,371,        392,266,        379,379,        
1174 393,409,        394,266,        395,410,        397,412,        
1175 402,413,        410,415,        326,328,        398,371,        
1176 412,412,        327,328,        372,398,        372,398,        
1177 372,398,        372,398,        372,398,        372,398,        
1178 372,398,        372,398,        372,398,        372,398,        
1179 0,0,    326,329,        379,379,        0,0,    
1180 327,329,        396,411,        396,411,        396,411,        
1181 396,411,        0,0,    398,371,        412,412,        
1182 0,0,    0,0,    0,0,    414,417,        
1183 417,417,        0,0,    379,403,        379,403,        
1184 379,403,        379,403,        379,403,        379,403,        
1185 379,403,        379,403,        379,403,        379,403,        
1186 403,414,        403,414,        403,414,        403,414,        
1187 403,414,        403,414,        403,414,        403,414,        
1188 403,414,        403,414,        414,417,        417,417,        
1189 0,0,    0,0,    371,397,        411,416,        
1190 411,416,        411,416,        411,416,        411,416,        
1191 411,416,        411,416,        411,416,        411,416,        
1192 411,416,        0,0,    414,418,        414,418,        
1193 414,418,        414,418,        414,418,        414,418,        
1194 414,418,        414,418,        414,418,        414,418,        
1195 418,417,        418,417,        418,417,        418,417,        
1196 418,417,        418,417,        418,417,        418,417,        
1197 418,417,        418,417,        0,0,    0,0,    
1198 0,0};
1199 struct yysvf yysvec[] = {
1200 0,      0,      0,
1201 yycrank+1,      0,              0,      
1202 yycrank+0,      yysvec+1,       0,      
1203 yycrank+27,     0,              0,      
1204 yycrank+0,      yysvec+3,       0,      
1205 yycrank+3,      0,              yyvstop+1,
1206 yycrank+0,      0,              yyvstop+3,
1207 yycrank+47,     0,              0,      
1208 yycrank+141,    0,              0,      
1209 yycrank+3,      yysvec+8,       0,      
1210 yycrank+37,     yysvec+8,       0,      
1211 yycrank+2,      0,              0,      
1212 yycrank+3,      0,              0,      
1213 yycrank+4,      0,              0,      
1214 yycrank+5,      0,              0,      
1215 yycrank+2,      0,              0,      
1216 yycrank+4,      0,              0,      
1217 yycrank+7,      0,              0,      
1218 yycrank+54,     0,              0,      
1219 yycrank+4,      0,              0,      
1220 yycrank+8,      0,              0,      
1221 yycrank+152,    0,              yyvstop+5,
1222 yycrank+13,     0,              0,      
1223 yycrank+116,    0,              0,      
1224 yycrank+57,     0,              yyvstop+7,
1225 yycrank+8,      0,              yyvstop+9,
1226 yycrank+52,     0,              yyvstop+11,
1227 yycrank+0,      yysvec+12,      yyvstop+13,
1228 yycrank+53,     0,              yyvstop+15,
1229 yycrank+0,      yysvec+13,      yyvstop+17,
1230 yycrank+45,     0,              yyvstop+19,
1231 yycrank+60,     0,              yyvstop+21,
1232 yycrank+0,      0,              yyvstop+23,
1233 yycrank+127,    0,              0,      
1234 yycrank+0,      0,              yyvstop+25,
1235 yycrank+121,    0,              yyvstop+27,
1236 yycrank+65,     0,              yyvstop+29,
1237 yycrank+0,      yysvec+17,      yyvstop+31,
1238 yycrank+70,     0,              yyvstop+33,
1239 yycrank+0,      0,              yyvstop+35,
1240 yycrank+0,      yysvec+18,      yyvstop+37,
1241 yycrank+0,      yysvec+19,      yyvstop+39,
1242 yycrank+42,     0,              yyvstop+41,
1243 yycrank+0,      yysvec+20,      yyvstop+43,
1244 yycrank+116,    0,              yyvstop+45,
1245 yycrank+45,     0,              0,      
1246 yycrank+66,     0,              0,      
1247 yycrank+113,    0,              0,      
1248 yycrank+131,    0,              0,      
1249 yycrank+77,     0,              0,      
1250 yycrank+214,    0,              0,      
1251 yycrank+230,    0,              0,      
1252 yycrank+215,    0,              0,      
1253 yycrank+240,    yysvec+8,       0,      
1254 yycrank+250,    0,              0,      
1255 yycrank+70,     0,              0,      
1256 yycrank+78,     0,              0,      
1257 yycrank+80,     0,              0,      
1258 yycrank+132,    0,              0,      
1259 yycrank+3,      0,              0,      
1260 yycrank+72,     0,              0,      
1261 yycrank+112,    0,              0,      
1262 yycrank+111,    0,              0,      
1263 yycrank+298,    yysvec+8,       0,      
1264 yycrank+312,    0,              0,      
1265 yycrank+120,    0,              0,      
1266 yycrank+137,    0,              0,      
1267 yycrank+146,    0,              0,      
1268 yycrank+155,    0,              0,      
1269 yycrank+149,    0,              0,      
1270 yycrank+145,    0,              0,      
1271 yycrank+150,    0,              0,      
1272 yycrank+194,    0,              0,      
1273 yycrank+147,    0,              0,      
1274 yycrank+143,    0,              0,      
1275 yycrank+157,    0,              0,      
1276 yycrank+158,    0,              0,      
1277 yycrank+163,    0,              0,      
1278 yycrank+166,    0,              0,      
1279 yycrank+160,    0,              0,      
1280 yycrank+208,    0,              0,      
1281 yycrank+210,    0,              0,      
1282 yycrank+312,    0,              0,      
1283 yycrank+323,    0,              0,      
1284 yycrank+333,    0,              0,      
1285 yycrank+213,    0,              0,      
1286 yycrank+0,      yysvec+25,      0,      
1287 yycrank+0,      yysvec+26,      0,      
1288 yycrank+0,      yysvec+28,      0,      
1289 yycrank+0,      yysvec+30,      0,      
1290 yycrank+0,      yysvec+31,      0,      
1291 yycrank+218,    0,              0,      
1292 yycrank+219,    0,              0,      
1293 yycrank+197,    0,              0,      
1294 yycrank+0,      yysvec+38,      0,      
1295 yycrank+0,      yysvec+42,      0,      
1296 yycrank+0,      yysvec+44,      0,      
1297 yycrank+201,    0,              0,      
1298 yycrank+206,    0,              0,      
1299 yycrank+210,    0,              0,      
1300 yycrank+215,    0,              0,      
1301 yycrank+219,    0,              0,      
1302 yycrank+221,    0,              0,      
1303 yycrank+222,    0,              0,      
1304 yycrank+226,    0,              0,      
1305 yycrank+227,    0,              0,      
1306 yycrank+240,    0,              0,      
1307 yycrank+242,    0,              0,      
1308 yycrank+275,    0,              0,      
1309 yycrank+276,    0,              0,      
1310 yycrank+277,    0,              0,      
1311 yycrank+278,    0,              0,      
1312 yycrank+279,    0,              0,      
1313 yycrank+280,    0,              0,      
1314 yycrank+0,      0,              yyvstop+47,
1315 yycrank+281,    0,              0,      
1316 yycrank+282,    0,              0,      
1317 yycrank+294,    0,              0,      
1318 yycrank+290,    0,              0,      
1319 yycrank+285,    0,              0,      
1320 yycrank+292,    0,              0,      
1321 yycrank+286,    0,              0,      
1322 yycrank+303,    0,              0,      
1323 yycrank+305,    0,              0,      
1324 yycrank+397,    0,              0,      
1325 yycrank+296,    0,              0,      
1326 yycrank+306,    0,              0,      
1327 yycrank+309,    0,              0,      
1328 yycrank+314,    0,              0,      
1329 yycrank+318,    0,              0,      
1330 yycrank+305,    0,              0,      
1331 yycrank+318,    0,              0,      
1332 yycrank+318,    0,              0,      
1333 yycrank+411,    0,              yyvstop+49,
1334 yycrank+423,    0,              yyvstop+51,
1335 yycrank+385,    0,              0,      
1336 yycrank+472,    0,              yyvstop+53,
1337 yycrank+310,    0,              0,      
1338 yycrank+322,    0,              0,      
1339 yycrank+327,    0,              0,      
1340 yycrank+330,    0,              0,      
1341 yycrank+320,    0,              0,      
1342 yycrank+336,    0,              0,      
1343 yycrank+331,    0,              0,      
1344 yycrank+329,    0,              0,      
1345 yycrank+332,    0,              0,      
1346 yycrank+337,    0,              0,      
1347 yycrank+434,    0,              0,      
1348 yycrank+460,    0,              0,      
1349 yycrank+484,    0,              0,      
1350 yycrank+486,    0,              0,      
1351 yycrank+500,    0,              0,      
1352 yycrank+502,    0,              yyvstop+55,
1353 yycrank+333,    yysvec+149,     0,      
1354 yycrank+487,    0,              0,      
1355 yycrank+350,    yysvec+150,     0,      
1356 yycrank+501,    0,              0,      
1357 yycrank+504,    0,              0,      
1358 yycrank+353,    yysvec+152,     yyvstop+57,
1359 yycrank+353,    yysvec+150,     0,      
1360 yycrank+346,    yysvec+157,     0,      
1361 yycrank+505,    0,              yyvstop+59,
1362 yycrank+342,    yysvec+157,     0,      
1363 yycrank+398,    yysvec+152,     yyvstop+61,
1364 yycrank+506,    0,              yyvstop+63,
1365 yycrank+508,    0,              yyvstop+65,
1366 yycrank+522,    0,              yyvstop+67,
1367 yycrank+507,    0,              0,      
1368 yycrank+522,    0,              0,      
1369 yycrank+540,    0,              0,      
1370 yycrank+0,      0,              yyvstop+69,
1371 yycrank+0,      0,              yyvstop+71,
1372 yycrank+0,      0,              yyvstop+73,
1373 yycrank+0,      0,              yyvstop+75,
1374 yycrank+0,      0,              yyvstop+77,
1375 yycrank+0,      0,              yyvstop+79,
1376 yycrank+0,      0,              yyvstop+81,
1377 yycrank+0,      0,              yyvstop+83,
1378 yycrank+0,      0,              yyvstop+85,
1379 yycrank+0,      0,              yyvstop+87,
1380 yycrank+0,      0,              yyvstop+89,
1381 yycrank+0,      0,              yyvstop+91,
1382 yycrank+0,      0,              yyvstop+93,
1383 yycrank+0,      0,              yyvstop+95,
1384 yycrank+0,      0,              yyvstop+97,
1385 yycrank+0,      0,              yyvstop+99,
1386 yycrank+0,      0,              yyvstop+101,
1387 yycrank+0,      0,              yyvstop+103,
1388 yycrank+0,      0,              yyvstop+105,
1389 yycrank+498,    0,              0,      
1390 yycrank+400,    yysvec+189,     0,      
1391 yycrank+464,    0,              0,      
1392 yycrank+401,    yysvec+189,     0,      
1393 yycrank+501,    0,              0,      
1394 yycrank+494,    0,              0,      
1395 yycrank+500,    0,              0,      
1396 yycrank+388,    0,              0,      
1397 yycrank+440,    0,              0,      
1398 yycrank+445,    0,              0,      
1399 yycrank+447,    0,              0,      
1400 yycrank+437,    0,              0,      
1401 yycrank+443,    0,              0,      
1402 yycrank+485,    0,              0,      
1403 yycrank+430,    0,              0,      
1404 yycrank+451,    0,              0,      
1405 yycrank+456,    0,              0,      
1406 yycrank+571,    0,              yyvstop+107,
1407 yycrank+585,    0,              0,      
1408 yycrank+537,    yysvec+206,     yyvstop+109,
1409 yycrank+536,    yysvec+206,     yyvstop+111,
1410 yycrank+595,    0,              yyvstop+113,
1411 yycrank+596,    0,              yyvstop+115,
1412 yycrank+527,    yysvec+211,     yyvstop+117,
1413 yycrank+605,    0,              0,      
1414 yycrank+477,    0,              0,      
1415 yycrank+498,    0,              0,      
1416 yycrank+662,    0,              yyvstop+119,
1417 yycrank+677,    0,              yyvstop+121,
1418 yycrank+691,    0,              yyvstop+123,
1419 yycrank+726,    0,              yyvstop+125,
1420 yycrank+494,    yysvec+217,     yyvstop+127,
1421 yycrank+752,    0,              yyvstop+129,
1422 yycrank+511,    yysvec+218,     yyvstop+131,
1423 yycrank+778,    0,              yyvstop+133,
1424 yycrank+804,    0,              yyvstop+135,
1425 yycrank+512,    yysvec+218,     yyvstop+137,
1426 yycrank+505,    yysvec+224,     yyvstop+139,
1427 yycrank+501,    yysvec+224,     yyvstop+141,
1428 yycrank+655,    yysvec+210,     yyvstop+143,
1429 yycrank+815,    0,              0,      
1430 yycrank+510,    0,              0,      
1431 yycrank+504,    0,              0,      
1432 yycrank+512,    0,              0,      
1433 yycrank+507,    0,              0,      
1434 yycrank+656,    0,              yyvstop+146,
1435 yycrank+528,    0,              0,      
1436 yycrank+529,    0,              0,      
1437 yycrank+525,    0,              0,      
1438 yycrank+533,    0,              0,      
1439 yycrank+522,    0,              0,      
1440 yycrank+565,    0,              0,      
1441 yycrank+552,    0,              0,      
1442 yycrank+566,    0,              0,      
1443 yycrank+571,    0,              0,      
1444 yycrank+554,    0,              0,      
1445 yycrank+570,    0,              0,      
1446 yycrank+571,    0,              0,      
1447 yycrank+625,    0,              0,      
1448 yycrank+830,    0,              0,      
1449 yycrank+840,    0,              0,      
1450 yycrank+639,    0,              yyvstop+148,
1451 yycrank+587,    0,              0,      
1452 yycrank+588,    0,              0,      
1453 yycrank+575,    0,              0,      
1454 yycrank+593,    0,              0,      
1455 yycrank+576,    0,              0,      
1456 yycrank+592,    0,              0,      
1457 yycrank+594,    0,              0,      
1458 yycrank+688,    yysvec+216,     0,      
1459 yycrank+728,    yysvec+217,     0,      
1460 yycrank+689,    yysvec+218,     0,      
1461 yycrank+786,    yysvec+219,     0,      
1462 yycrank+757,    yysvec+217,     0,      
1463 yycrank+741,    yysvec+221,     0,      
1464 yycrank+740,    yysvec+218,     0,      
1465 yycrank+692,    yysvec+223,     0,      
1466 yycrank+753,    yysvec+224,     0,      
1467 yycrank+805,    yysvec+218,     0,      
1468 yycrank+787,    yysvec+224,     0,      
1469 yycrank+789,    yysvec+224,     0,      
1470 yycrank+859,    0,              0,      
1471 yycrank+754,    0,              yyvstop+150,
1472 yycrank+869,    0,              0,      
1473 yycrank+895,    0,              yyvstop+152,
1474 yycrank+756,    0,              yyvstop+154,
1475 yycrank+790,    0,              yyvstop+156,
1476 yycrank+599,    yysvec+224,     yyvstop+158,
1477 yycrank+921,    0,              0,      
1478 yycrank+883,    0,              0,      
1479 yycrank+591,    0,              0,      
1480 yycrank+587,    0,              0,      
1481 yycrank+594,    0,              0,      
1482 yycrank+587,    0,              0,      
1483 yycrank+608,    0,              0,      
1484 yycrank+602,    0,              0,      
1485 yycrank+629,    0,              0,      
1486 yycrank+653,    0,              0,      
1487 yycrank+651,    0,              0,      
1488 yycrank+806,    0,              yyvstop+160,
1489 yycrank+947,    0,              yyvstop+163,
1490 yycrank+637,    0,              0,      
1491 yycrank+656,    0,              0,      
1492 yycrank+658,    0,              0,      
1493 yycrank+635,    0,              0,      
1494 yycrank+643,    0,              0,      
1495 yycrank+0,      yysvec+293,     0,      
1496 yycrank+661,    0,              0,      
1497 yycrank+663,    0,              0,      
1498 yycrank+668,    0,              0,      
1499 yycrank+660,    0,              0,      
1500 yycrank+0,      yysvec+293,     0,      
1501 yycrank+670,    0,              0,      
1502 yycrank+714,    0,              0,      
1503 yycrank+697,    0,              0,      
1504 yycrank+0,      0,              yyvstop+165,
1505 yycrank+0,      0,              yyvstop+167,
1506 yycrank+0,      0,              yyvstop+169,
1507 yycrank+0,      0,              yyvstop+171,
1508 yycrank+695,    0,              0,      
1509 yycrank+0,      yysvec+308,     0,      
1510 yycrank+717,    0,              0,      
1511 yycrank+0,      yysvec+308,     0,      
1512 yycrank+720,    0,              0,      
1513 yycrank+728,    0,              0,      
1514 yycrank+724,    0,              0,      
1515 yycrank+734,    0,              0,      
1516 yycrank+728,    0,              0,      
1517 yycrank+735,    0,              0,      
1518 yycrank+729,    0,              0,      
1519 yycrank+751,    0,              0,      
1520 yycrank+746,    0,              0,      
1521 yycrank+742,    0,              0,      
1522 yycrank+777,    0,              0,      
1523 yycrank+775,    0,              0,      
1524 yycrank+932,    0,              yyvstop+173,
1525 yycrank+933,    0,              yyvstop+175,
1526 yycrank+981,    0,              yyvstop+177,
1527 yycrank+984,    0,              yyvstop+179,
1528 yycrank+790,    0,              0,      
1529 yycrank+792,    0,              0,      
1530 yycrank+786,    0,              0,      
1531 yycrank+985,    0,              yyvstop+181,
1532 yycrank+787,    0,              0,      
1533 yycrank+830,    0,              0,      
1534 yycrank+832,    0,              0,      
1535 yycrank+840,    0,              0,      
1536 yycrank+857,    0,              0,      
1537 yycrank+856,    0,              0,      
1538 yycrank+849,    0,              0,      
1539 yycrank+996,    0,              yyvstop+183,
1540 yycrank+997,    0,              0,      
1541 yycrank+915,    yysvec+339,     yyvstop+185,
1542 yycrank+859,    0,              0,      
1543 yycrank+847,    0,              0,      
1544 yycrank+918,    yysvec+234,     yyvstop+187,
1545 yycrank+842,    0,              0,      
1546 yycrank+865,    0,              0,      
1547 yycrank+853,    0,              0,      
1548 yycrank+871,    0,              0,      
1549 yycrank+910,    0,              0,      
1550 yycrank+912,    0,              0,      
1551 yycrank+0,      yysvec+293,     0,      
1552 yycrank+910,    0,              0,      
1553 yycrank+970,    0,              0,      
1554 yycrank+915,    0,              0,      
1555 yycrank+917,    0,              0,      
1556 yycrank+0,      yysvec+308,     0,      
1557 yycrank+915,    0,              0,      
1558 yycrank+902,    0,              0,      
1559 yycrank+921,    0,              0,      
1560 yycrank+923,    0,              0,      
1561 yycrank+907,    0,              0,      
1562 yycrank+924,    0,              0,      
1563 yycrank+922,    0,              0,      
1564 yycrank+915,    0,              0,      
1565 yycrank+1016,   0,              yyvstop+189,
1566 yycrank+1001,   yysvec+324,     yyvstop+191,
1567 yycrank+969,    0,              0,      
1568 yycrank+1034,   0,              yyvstop+193,
1569 yycrank+1035,   0,              yyvstop+195,
1570 yycrank+1036,   0,              yyvstop+197,
1571 yycrank+1037,   0,              yyvstop+199,
1572 yycrank+1034,   yysvec+331,     yyvstop+201,
1573 yycrank+926,    0,              0,      
1574 yycrank+917,    0,              0,      
1575 yycrank+911,    0,              0,      
1576 yycrank+946,    0,              0,      
1577 yycrank+945,    0,              0,      
1578 yycrank+962,    0,              0,      
1579 yycrank+1062,   0,              0,      
1580 yycrank+0,      yysvec+347,     0,      
1581 yycrank+0,      yysvec+345,     0,      
1582 yycrank+0,      yysvec+347,     0,      
1583 yycrank+0,      yysvec+293,     0,      
1584 yycrank+960,    0,              0,      
1585 yycrank+0,      yysvec+293,     0,      
1586 yycrank+965,    0,              0,      
1587 yycrank+0,      yysvec+308,     0,      
1588 yycrank+0,      yysvec+308,     0,      
1589 yycrank+966,    0,              0,      
1590 yycrank+963,    0,              0,      
1591 yycrank+951,    0,              0,      
1592 yycrank+949,    0,              0,      
1593 yycrank+971,    0,              0,      
1594 yycrank+959,    0,              0,      
1595 yycrank+976,    0,              0,      
1596 yycrank+1043,   0,              0,      
1597 yycrank+959,    0,              0,      
1598 yycrank+1070,   0,              yyvstop+203,
1599 yycrank+0,      yysvec+377,     0,      
1600 yycrank+0,      yysvec+375,     0,      
1601 yycrank+0,      yysvec+377,     0,      
1602 yycrank+975,    0,              0,      
1603 yycrank+1072,   0,              0,      
1604 yycrank+0,      yysvec+347,     0,      
1605 yycrank+0,      yysvec+293,     0,      
1606 yycrank+0,      yysvec+308,     0,      
1607 yycrank+0,      yysvec+394,     0,      
1608 yycrank+0,      yysvec+392,     0,      
1609 yycrank+0,      yysvec+394,     0,      
1610 yycrank+976,    0,              0,      
1611 yycrank+1087,   0,              0,      
1612 yycrank+1071,   0,              yyvstop+205,
1613 yycrank+0,      yysvec+377,     0,      
1614 yycrank+1098,   0,              yyvstop+207,
1615 yycrank+0,      yysvec+394,     0,      
1616 yycrank+0,      0,              yyvstop+209,
1617 yycrank+1099,   0,              yyvstop+211,
1618 yycrank+1108,   yysvec+414,     yyvstop+213,
1619 0,      0,      0};
1620 struct yywork *yytop = yycrank+1165;
1621 struct yysvf *yybgin = yysvec+1;
1622 char yymatch[] = {
1623   0,   1,   1,   1,   1,   1,   1,   1, 
1624   1,   9,   1,   1,   1,   1,   1,   1, 
1625   1,   1,   1,   1,   1,   1,   1,   1, 
1626   1,   1,   1,   1,   1,   1,   1,   1, 
1627   9,   1,   1,   1,   1,   1,   1,   1, 
1628   1,   1,   1,   1,   1,   1,   1,   1, 
1629  48,  48,  50,  51,  51,  51,  54,  54, 
1630  54,  54,   1,   1,   1,   1,   1,   1, 
1631   1,   1,   1,   1,   1,   1,   1,   1, 
1632   1,   1,   1,   1,   1,   1,   1,   1, 
1633   1,   1,   1,   1,   1,   1,   1,   1, 
1634   1,   1,   1,   1,   1,   1,   1,   1, 
1635   1,  97,  97,  97,  97,  97,  97,  97, 
1636  97,  97,   1, 107, 107, 107, 110, 110, 
1637 110, 110, 110, 110, 110, 110, 110, 110, 
1638 110, 110,   1,   1,   1,   1,   1,   1, 
1639   1,   1,   1,   1,   1,   1,   1,   1, 
1640   1,   1,   1,   1,   1,   1,   1,   1, 
1641   1,   1,   1,   1,   1,   1,   1,   1, 
1642   1,   1,   1,   1,   1,   1,   1,   1, 
1643   1,   1,   1,   1,   1,   1,   1,   1, 
1644   1,   1,   1,   1,   1,   1,   1,   1, 
1645   1,   1,   1,   1,   1,   1,   1,   1, 
1646   1,   1,   1,   1,   1,   1,   1,   1, 
1647   1,   1,   1,   1,   1,   1,   1,   1, 
1648   1,   1,   1,   1,   1,   1,   1,   1, 
1649   1,   1,   1,   1,   1,   1,   1,   1, 
1650   1,   1,   1,   1,   1,   1,   1,   1, 
1651   1,   1,   1,   1,   1,   1,   1,   1, 
1652   1,   1,   1,   1,   1,   1,   1,   1, 
1653   1,   1,   1,   1,   1,   1,   1,   1, 
1654   1,   1,   1,   1,   1,   1,   1,   1, 
1655 0};
1656 char yyextra[] = {
1657 0,0,0,0,0,0,0,0,
1658 0,0,0,0,0,0,0,0,
1659 0,0,0,0,0,0,0,0,
1660 0,0,0,0,0,0,0,0,
1661 0,0,0,0,0,0,0,0,
1662 0,0,0,0,0,0,0,0,
1663 0};
1664 /*      Copyright (c) 1989 AT&T */
1665 /*        All Rights Reserved   */
1666
1667 /*      THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T     */
1668 /*      The copyright notice above does not evidence any        */
1669 /*      actual or intended publication of such source code.     */
1670
1671 #pragma ident   "@(#)ncform     6.8     95/02/11 SMI"
1672