kernel: Use NULL for pointers.
[dragonfly.git] / sys / net / i4b / driver / i4b_tel.c
1 /*
2  * Copyright (c) 1997, 2001 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  *
25  *---------------------------------------------------------------------------
26  *
27  *      i4b_tel.c - device driver for ISDN telephony
28  *      --------------------------------------------
29  *
30  * $FreeBSD: src/sys/i4b/driver/i4b_tel.c,v 1.10.2.4 2001/12/16 15:12:57 hm Exp $
31  *
32  *      last edit-date: [Sat Aug 11 18:07:05 2001]
33  *
34  *---------------------------------------------------------------------------*/
35
36 #include "use_i4btel.h"
37
38 #if NI4BTEL > 0
39
40 #undef I4BTELDEBUG
41
42 #include <sys/param.h>
43 #include <sys/systm.h>
44
45 #include <sys/event.h>
46
47 #include <sys/conf.h>
48 #include <sys/uio.h>
49 #include <sys/kernel.h>
50 #include <sys/mbuf.h>
51 #include <sys/socket.h>
52 #include <net/if.h>
53 #include <sys/thread2.h>
54 #include <sys/tty.h>
55
56 #ifdef DEVFS
57 #include <sys/devfsext.h>
58 #endif
59
60 #include <net/i4b/include/machine/i4b_ioctl.h>
61 #include <net/i4b/include/machine/i4b_tel_ioctl.h>
62 #include <net/i4b/include/machine/i4b_debug.h>
63
64 #include "../include/i4b_global.h"
65 #include "../include/i4b_mbuf.h"
66 #include "../include/i4b_l3l4.h"
67 #include "../layer4/i4b_l4.h"
68
69 /* minor number: lower 6 bits = unit number */
70
71 #define UNITBITS        6
72 #define UNITMASK        0x3f
73 #define UNIT(n)         (minor(n) & UNITMASK)
74
75 /* minor number: upper 2 bits = function number */
76
77 #define FUNCMASK        0x03
78 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
79
80 #define FUNCTEL         0       /* 0 = normal i4btel device     */
81 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
82
83 #define NOFUNCS         2       /* number of device classes     */
84
85 typedef struct {
86
87         /* used only in func = FUNCTEL */
88
89         drvr_link_t             drvr_linktab;   /* driver linktab */
90         isdn_link_t             *isdn_linktab;  /* isdn linktab */
91         int                     audiofmt;       /* audio format conversion */
92         u_char                  *rcvttab;       /* conversion table on read */
93         u_char                  *wcvttab;       /* conversion table on write */
94         call_desc_t             *cdp;           /* call descriptor pointer */
95
96         /* used only in func = FUNCDIAL */
97
98         char                    result;         /* result code for dial dev */  
99
100         /* used in func = FUNCDIAL and func = FUNCTEL*/
101         
102         int                     devstate;       /* state of this unit   */
103 #define ST_IDLE         0x00            /* idle */
104 #define ST_CONNECTED    0x01            /* isdn connected state */
105 #define ST_ISOPEN       0x02            /* userland opened */
106 #define ST_RDWAITDATA   0x04            /* userland read waiting */
107 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
108 #define ST_TONE         0x10            /* tone generator */
109
110         struct kqinfo           kqp;            /* select / poll / kevent */
111
112         struct i4b_tel_tones    tones;
113         int                     toneidx;
114         int                     toneomega;
115         int                     tonefreq;
116
117 } tel_sc_t;
118
119 static tel_sc_t tel_sc[NI4BTEL][NOFUNCS];
120         
121 /* forward decl */
122
123 static void tel_rx_data_rdy(int unit);
124 static void tel_tx_queue_empty(int unit);
125 static void tel_init_linktab(int unit);
126 static void tel_connect(int unit, void *cdp);
127 static void tel_disconnect(int unit, void *cdp);
128 static void tel_tone(tel_sc_t *sc);
129
130 /* audio format conversion tables */
131 static unsigned char a2u_tab[];
132 static unsigned char u2a_tab[];
133 static unsigned char bitreverse[];
134 static u_char sinetab[];
135
136 #define PDEVSTATIC      static
137
138 PDEVSTATIC d_open_t     i4btelopen;
139 PDEVSTATIC d_close_t    i4btelclose;
140 PDEVSTATIC d_read_t     i4btelread;
141 PDEVSTATIC d_write_t    i4btelwrite;
142 PDEVSTATIC d_ioctl_t    i4btelioctl;
143 PDEVSTATIC d_kqfilter_t i4btelkqfilter;
144
145 PDEVSTATIC void i4btelfilt_detach(struct knote *);
146 PDEVSTATIC int i4btelfilt_read(struct knote *, long);
147 PDEVSTATIC int i4btelfilt_write(struct knote *, long);
148
149 static struct dev_ops i4btel_ops = {
150         { "i4btel", 0, 0 },
151         .d_open =       i4btelopen,
152         .d_close =      i4btelclose,
153         .d_read =       i4btelread,
154         .d_write =      i4btelwrite,
155         .d_ioctl =      i4btelioctl,
156         .d_kqfilter =   i4btelkqfilter
157 };
158
159 PDEVSTATIC void i4btelattach(void *);
160
161 PSEUDO_SET(i4btelattach, i4b_tel);
162
163 /*===========================================================================*
164  *                      DEVICE DRIVER ROUTINES
165  *===========================================================================*/
166
167 /*---------------------------------------------------------------------------*
168  *      interface attach routine
169  *---------------------------------------------------------------------------*/
170 PDEVSTATIC void
171 i4btelattach(void *dummy)
172 {
173         int i, j;
174
175         kprintf("i4btel: %d ISDN telephony interface device(s) attached\n", NI4BTEL);
176         
177         for(i=0; i < NI4BTEL; i++)
178         {
179                 for(j=0; j < NOFUNCS; j++)
180                 {
181                         tel_sc[i][j].devstate = ST_IDLE;
182                         tel_sc[i][j].audiofmt = CVT_NONE;
183                         tel_sc[i][j].rcvttab = NULL;
184                         tel_sc[i][j].wcvttab = NULL;
185                         tel_sc[i][j].result = 0;
186
187                         switch(j)
188                         {
189                                 case FUNCTEL:   /* normal i4btel device */
190                                         make_dev(&i4btel_ops, i,
191                                                 UID_ROOT, GID_WHEEL,
192                                                 0600, "i4btel%d", i);
193                                         break;
194                                 
195                                 case FUNCDIAL:  /* i4bteld dialout device */
196                                         make_dev(&i4btel_ops, i+(1<<UNITBITS),
197                                                 UID_ROOT, GID_WHEEL,
198                                                 0600, "i4bteld%d", i);
199                                         break;
200                         }
201                 }
202                 tel_init_linktab(i);            
203         }
204 }
205
206 /*---------------------------------------------------------------------------*
207  *      open tel device
208  *---------------------------------------------------------------------------*/
209 PDEVSTATIC int
210 i4btelopen(struct dev_open_args *ap)
211 {
212         cdev_t dev = ap->a_head.a_dev;
213         int unit = UNIT(dev);
214         int func = FUNC(dev);
215         
216         tel_sc_t *sc;
217         
218         if(unit >= NI4BTEL)
219                 return(ENXIO);
220
221         sc = &tel_sc[unit][func];               
222
223         if(sc->devstate & ST_ISOPEN)
224                 return(EBUSY);
225
226         sc->devstate |= ST_ISOPEN;              
227
228         if(func == FUNCDIAL)
229         {
230                 sc->result = 0;
231         }
232         
233         return(0);
234 }
235
236 /*---------------------------------------------------------------------------*
237  *      close tel device
238  *---------------------------------------------------------------------------*/
239 PDEVSTATIC int
240 i4btelclose(struct dev_close_args *ap)
241 {
242         cdev_t dev = ap->a_head.a_dev;
243         int unit = UNIT(dev);
244         int func = FUNC(dev);
245         tel_sc_t *sc;
246         int error = 0;
247         
248         if(unit > NI4BTEL)
249                 return(ENXIO);
250
251         sc = &tel_sc[unit][func];               
252
253         crit_enter();
254         sc->devstate &= ~ST_TONE;               
255
256         if((func == FUNCTEL) &&
257            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
258         {
259                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
260                 {
261                         sc->devstate |= ST_WRWAITEMPTY;
262         
263                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
264                                         PCATCH, "wtcl", 0)) != 0)
265                         {
266                                 break;
267                         }
268                 }
269                 sc->devstate &= ~ST_WRWAITEMPTY;                
270         }
271
272         sc->devstate &= ~ST_ISOPEN;             
273         crit_exit();
274         wakeup((caddr_t) &sc->tones);
275
276         return(error);
277 }
278
279 /*---------------------------------------------------------------------------*
280  *      i4btelioctl - device driver ioctl routine
281  *---------------------------------------------------------------------------*/
282 PDEVSTATIC int
283 i4btelioctl(struct dev_ioctl_args *ap)
284 {
285         cdev_t dev = ap->a_head.a_dev;
286         int unit = UNIT(dev);
287         int func = FUNC(dev);
288         int error = 0;
289         struct mbuf *m;
290
291         tel_sc_t *sc = &tel_sc[unit][func];
292
293         if(func == FUNCTEL)
294         {
295                 switch(ap->a_cmd)
296                 {
297                         case I4B_TEL_GETAUDIOFMT:
298                                 *(int *)ap->a_data = sc->audiofmt;
299                                 break;
300                         
301                         case I4B_TEL_SETAUDIOFMT:
302                                 switch (*(int *)ap->a_data)
303                                 {
304                                         case CVT_NONE:
305                                                 sc->rcvttab = NULL;
306                                                 sc->wcvttab = NULL;
307                                                 break;
308                                         case CVT_ALAW2ULAW:
309                                                 /* ISDN: a-law */
310                                                 /* user: u-law */ 
311                                                 sc->rcvttab = a2u_tab;
312                                                 sc->wcvttab = u2a_tab;
313                                                 break;
314                                         case CVT_ULAW2ALAW:
315                                                 /* ISDN: u-law */
316                                                 /* user: a-law */ 
317                                                 sc->rcvttab = u2a_tab;
318                                                 sc->wcvttab = a2u_tab;
319                                                 break;
320                                         default:
321                                                 error = ENODEV;
322                                                 break;
323                                 }
324                                 if(error == 0)
325                                         sc->audiofmt = *(int *)ap->a_data;
326                                 break;
327         
328                         case I4B_TEL_EMPTYINPUTQUEUE:
329                                 crit_enter();
330                                 while((sc->devstate & ST_CONNECTED)     &&
331                                         (sc->devstate & ST_ISOPEN)      &&
332                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
333                                 {
334                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
335                                         if(m)
336                                                 i4b_Bfreembuf(m);
337                                 }
338                                 crit_exit();
339                                 break;
340
341                         case I4B_TEL_VR_REQ:
342                         {
343                                 msg_vr_req_t *mvr;
344
345                                 mvr = (msg_vr_req_t *)ap->a_data;
346
347                                 mvr->version = VERSION;
348                                 mvr->release = REL;
349                                 mvr->step = STEP;                       
350                                 break;
351                         }
352                         case I4B_TEL_TONES:
353                         {
354                                 struct i4b_tel_tones *tt;
355
356                                 tt = (struct i4b_tel_tones *)ap->a_data;
357                                 crit_enter();
358                                 while ((sc->devstate & ST_TONE) && 
359                                     sc->tones.duration[sc->toneidx] != 0) {
360                                         if((error = tsleep((caddr_t) &sc->tones,
361                                             PCATCH, "rtone", 0 )) != 0) {
362                                                 crit_exit();
363                                                 return(error);
364                                         }
365                                 } 
366                                 if(!(sc->devstate & ST_ISOPEN)) {
367                                         crit_exit();
368                                         return (EIO);
369                                 }
370                                 if(!(sc->devstate & ST_CONNECTED)) {
371                                         crit_exit();
372                                         return (EIO);
373                                 }
374
375                                 sc->tones = *tt;
376                                 sc->toneidx = 0;
377                                 sc->tonefreq = tt->frequency[0];
378                                 sc->devstate |= ST_TONE;
379                                 crit_exit();
380                                 tel_tone(sc);
381                                 break;
382                         }
383         
384                         default:
385                                 error = ENOTTY;
386                                 break;
387                 }
388         }
389         else if(func == FUNCDIAL)
390         {
391                 switch(ap->a_cmd)
392                 {
393                         default:
394                                 error = ENOTTY;
395                                 break;
396                 }
397         }               
398         return(error);
399 }
400
401 /*---------------------------------------------------------------------------*
402  *      read from tel device
403  *---------------------------------------------------------------------------*/
404 PDEVSTATIC int
405 i4btelread(struct dev_read_args *ap)
406 {
407         cdev_t dev = ap->a_head.a_dev;
408         struct uio *uio = ap->a_uio;
409         int unit = UNIT(dev);
410         int func = FUNC(dev);
411
412         struct mbuf *m;
413         int error = 0;
414
415         tel_sc_t *sc = &tel_sc[unit][func];
416         
417         if(!(sc->devstate & ST_ISOPEN))
418                 return(EIO);
419
420         if(func == FUNCTEL)
421         {
422                 crit_enter();
423
424                 while((sc->devstate & ST_ISOPEN)        &&
425                       (sc->devstate & ST_CONNECTED)     &&
426                       IF_QEMPTY(sc->isdn_linktab->rx_queue))            
427                 {
428                         sc->devstate |= ST_RDWAITDATA;
429
430                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
431
432                         if((error = tsleep((caddr_t) &sc->isdn_linktab->rx_queue,
433                                                 PCATCH, "rtel", 0 )) != 0)
434                         {
435                                 sc->devstate &= ~ST_RDWAITDATA;
436                                 crit_exit();
437                                 return(error);
438                         }
439                 }
440         
441                 if(!(sc->devstate & ST_ISOPEN))
442                 {
443                         crit_exit();
444                         return(EIO);
445                 }
446         
447                 if(!(sc->devstate & ST_CONNECTED))
448                 {
449                         crit_exit();
450                         return(EIO);
451                 }
452                 
453         
454                 IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
455                 
456                 if(m && m->m_len > 0)
457                 {
458                         int i;
459
460                         for(i = 0; i < m->m_len; i++)
461                         {
462                                 /* always reverse bit order from line */
463                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
464
465                                 /* convert if necessary */
466                                 if(sc->rcvttab)
467                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
468                         }
469                         error = uiomove(m->m_data, m->m_len, uio);
470
471                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
472                 }
473                 else
474                 {
475                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
476                         error = EIO;
477                 }
478                         
479                 if(m)
480                         i4b_Bfreembuf(m);
481         
482                 crit_exit();
483         }
484         else if(func == FUNCDIAL)
485         {
486                 crit_enter();
487                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
488                 {
489                         sc->devstate |= ST_RDWAITDATA;
490         
491                         if((error = tsleep((caddr_t) &sc->result,
492                                                 PCATCH, "rtel1", 0 )) != 0)
493                         {
494                                 sc->devstate &= ~ST_RDWAITDATA;
495                                 crit_exit();
496                                 return(error);
497                         }
498                 }
499         
500                 if(!(sc->devstate & ST_ISOPEN))
501                 {
502                         crit_exit();
503                         return(EIO);
504                 }
505         
506                 if(sc->result != 0)
507                 {
508                         error = uiomove(&sc->result, 1, uio);
509                         sc->result = 0;
510                 }
511                 else
512                 {
513                         error = EIO;
514                 }
515
516                 crit_exit();
517         }
518         return(error);
519 }
520
521 /*---------------------------------------------------------------------------*
522  *      write to tel device
523  *---------------------------------------------------------------------------*/
524 PDEVSTATIC int
525 i4btelwrite(struct dev_write_args *ap)
526 {
527         cdev_t dev = ap->a_head.a_dev;
528         struct uio *uio = ap->a_uio;
529         int unit = UNIT(dev);
530         int func = FUNC(dev);
531         struct mbuf *m;
532         int error = 0;
533         tel_sc_t *sc = &tel_sc[unit][func];
534         
535         if(!(sc->devstate & ST_ISOPEN))
536         {
537                 return(EIO);
538         }
539
540         if(func == FUNCTEL)
541         {
542                 crit_enter();
543                 
544                 if(!(sc->devstate & ST_CONNECTED)) {
545                         crit_exit();
546                         return(EIO);
547                 }
548                         
549                 sc->devstate &= ~ST_TONE;               
550                 while((IF_QFULL(sc->isdn_linktab->tx_queue)) &&
551                       (sc->devstate & ST_ISOPEN))
552                 {
553                         sc->devstate |= ST_WRWAITEMPTY;
554
555                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
556                                         PCATCH, "wtel", 0)) != 0)
557                         {
558                                 sc->devstate &= ~ST_WRWAITEMPTY;
559                                 crit_exit();
560                                 return(error);
561                         }
562                 }
563         
564                 if(!(sc->devstate & ST_ISOPEN))
565                 {
566                         crit_exit();
567                         return(EIO);
568                 }
569         
570                 if(!(sc->devstate & ST_CONNECTED))
571                 {
572                         crit_exit();
573                         return(EIO);
574                 }
575
576                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
577                 {
578                         int i;
579                         
580                         m->m_len = (int)szmin(BCH_MAX_DATALEN, uio->uio_resid);
581         
582                         error = uiomove(m->m_data, (size_t)m->m_len, uio);
583         
584                         for(i = 0; i < m->m_len; i++)
585                         {
586                                 /* convert if necessary */
587                                 if(sc->wcvttab)
588                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
589
590                                 /* always reverse bitorder to line */
591                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
592                         }
593
594                         if(IF_QFULL(sc->isdn_linktab->tx_queue))
595                                 m_freem(m);
596                         else
597                                 IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
598                         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
599                 }
600         
601                 crit_exit();
602         }
603         else if(func == FUNCDIAL)
604         {
605 #define CMDBUFSIZ 80 
606                 char cmdbuf[CMDBUFSIZ];
607                 int len = (int)szmin(CMDBUFSIZ-1, uio->uio_resid);
608         
609                 error = uiomove(cmdbuf, (size_t)len, uio);
610
611                 if(cmdbuf[0] == CMD_DIAL)
612                 {
613                         i4b_l4_dialoutnumber(BDRV_TEL, unit, len-1, &cmdbuf[1]);
614                 }
615                 else if(cmdbuf[0] == CMD_HUP)
616                 {
617                         i4b_l4_drvrdisc(BDRV_TEL, unit);
618                 }
619                 else if(cmdbuf[0] == CMD_KEYP)
620                 {
621                         i4b_l4_keypad(BDRV_TEL, unit, len-1, &cmdbuf[1]);
622                 }
623         }
624         else
625         {
626                 error = EIO;
627         }               
628         
629         return(error);
630 }
631
632 /*---------------------------------------------------------------------------*
633  *      
634  *---------------------------------------------------------------------------*/
635 #define NTONESAMP 32
636 static void
637 tel_tone(tel_sc_t *sc)
638 {
639         struct mbuf *m;
640         u_char *p;
641         int i;
642
643         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
644                 kprintf("no mbuf in tel_tone\n");
645                 return;
646         }
647         p = m->m_data;
648         m->m_len = 0;
649         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
650
651                 if (sc->tones.duration[sc->toneidx] > 0) {
652                         if (--sc->tones.duration[sc->toneidx] == 0) {
653                                 sc->toneidx++;
654                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
655                                         sc->devstate &= ~ST_TONE;
656                                         sc->toneomega = 0;
657                                         sc->tonefreq = 0;
658                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
659                                            sc->tones.duration[sc->toneidx] == 0) {
660                                         sc->devstate &= ~ST_TONE;
661                                         sc->toneomega = 0;
662                                         sc->tonefreq = 0;
663                                 } else {
664                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
665                                 }
666                                 if (sc->tones.duration[sc->toneidx] == 0) {
667                                         wakeup((caddr_t) &sc->tones);
668                                 }
669                         }
670                 }
671
672                 sc->toneomega += sc->tonefreq;
673                 if (sc->toneomega >= 8000)
674                         sc->toneomega -= 8000;
675                 *p++ = bitreverse[sinetab[sc->toneomega]];
676                 m->m_len++;
677         }
678         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
679         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
680 }
681
682 /*---------------------------------------------------------------------------*
683  *      device driver poll
684  *---------------------------------------------------------------------------*/
685 PDEVSTATIC struct filterops i4btelfiltops_read =
686         { FILTEROP_ISFD, NULL, i4btelfilt_detach, i4btelfilt_read };
687 PDEVSTATIC struct filterops i4btelfiltops_write =
688         { FILTEROP_ISFD, NULL, i4btelfilt_detach, i4btelfilt_write };
689
690 PDEVSTATIC int
691 i4btelkqfilter(struct dev_kqfilter_args *ap)
692 {
693         cdev_t dev = ap->a_head.a_dev;
694         struct knote *kn = ap->a_kn;
695         int unit = UNIT(dev);
696         int func = FUNC(dev);
697         tel_sc_t *sc = &tel_sc[unit][func];
698         struct klist *klist;
699
700         ap->a_result = 0;
701
702         switch (kn->kn_filter) {
703         case EVFILT_READ:
704                 kn->kn_fop = &i4btelfiltops_read;
705                 kn->kn_hook = (caddr_t)dev;
706                 break;
707         case EVFILT_WRITE:
708                 kn->kn_fop = &i4btelfiltops_write;
709                 kn->kn_hook = (caddr_t)dev;
710                 break;
711         default:
712                 ap->a_result = EOPNOTSUPP;
713                 return (0);
714         }
715
716         klist = &sc->kqp.ki_note;
717         knote_insert(klist, kn);
718
719         return (0);
720 }
721
722 PDEVSTATIC void
723 i4btelfilt_detach(struct knote *kn)
724 {
725         cdev_t dev = (cdev_t)kn->kn_hook;
726         int unit = UNIT(dev);
727         int func = FUNC(dev);
728         tel_sc_t *sc = &tel_sc[unit][func];
729         struct klist *klist = &sc->kqp.ki_note;
730
731         knote_remove(klist, kn);
732 }
733
734 PDEVSTATIC int
735 i4btelfilt_read(struct knote *kn, long hint)
736 {
737         cdev_t dev = (cdev_t)kn->kn_hook;
738         int unit = UNIT(dev);
739         int func = FUNC(dev);
740         tel_sc_t *sc = &tel_sc[unit][func];
741         int ready = 0;
742
743         crit_enter();
744
745         if (!(sc->devstate & ST_ISOPEN)) {
746                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
747                 crit_exit();
748                 return (0);
749         }
750
751         switch (func) {
752         case FUNCTEL:
753                 /* reads are OK if we have any data */
754                 if ((sc->devstate & ST_CONNECTED)   &&
755                    (sc->isdn_linktab != NULL)      &&
756                    (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
757                 {
758                         NDBGL4(L4_TELDBG, "i4btel%d, filt readable", unit);
759                         ready = 1;
760                 }
761
762                 break;
763         case FUNCDIAL:
764                 NDBGL4(L4_TELDBG, "i4bteld%d, filt readable, result = %d", unit, sc->result);
765                 if(sc->result != 0)
766                         ready = 1;
767                 break;
768         }
769
770         crit_exit();
771
772         return (ready);
773 }
774
775 PDEVSTATIC int
776 i4btelfilt_write(struct knote *kn, long hint)
777 {
778         cdev_t dev = (cdev_t)kn->kn_hook;
779         int unit = UNIT(dev);
780         int func = FUNC(dev);
781         tel_sc_t *sc = &tel_sc[unit][func];
782         int ready = 0;
783
784         crit_enter();
785
786         if (!(sc->devstate & ST_ISOPEN)) {
787                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
788                 crit_exit();
789                 return (0);
790         }
791
792         switch (func) {
793         case FUNCTEL:
794                 /*
795                  * Writes are OK if we are connected and the
796                  * transmit queue can take them
797                  */
798                 if ((sc->devstate & ST_CONNECTED)   &&
799                    (sc->isdn_linktab != NULL)      &&
800                    (!IF_QFULL(sc->isdn_linktab->tx_queue)))
801                 {
802                         NDBGL4(L4_TELDBG, "i4btel%d, filt writable", unit);
803                         ready = 1;
804                 }
805                 break;
806         case FUNCDIAL:
807                 NDBGL4(L4_TELDBG, "i4bteld%d, filt writable", unit);
808                 ready = 1;
809                 break;
810         }
811
812         crit_exit();
813
814         return (ready);
815 }
816
817 /*===========================================================================*
818  *                      ISDN INTERFACE ROUTINES
819  *===========================================================================*/
820
821 /*---------------------------------------------------------------------------*
822 *       this routine is called from L4 handler at connect time
823  *---------------------------------------------------------------------------*/
824 static void
825 tel_connect(int unit, void *cdp)
826 {
827         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
828
829         /* audio device */
830         
831         sc->cdp = (call_desc_t *)cdp;
832
833         sc->devstate |= ST_CONNECTED;
834
835         /* dialer device */
836         
837         sc = &tel_sc[unit][FUNCDIAL];
838
839         if(sc->devstate == ST_ISOPEN)
840         {
841                 sc->result = RSP_CONN;
842
843                 if(sc->devstate & ST_RDWAITDATA)
844                 {
845                         sc->devstate &= ~ST_RDWAITDATA;
846                         wakeup((caddr_t) &sc->result);
847                 }
848                 KNOTE(&sc->kqp.ki_note, 0);
849         }
850 }
851
852 /*---------------------------------------------------------------------------*
853  *      this routine is called from L4 handler at disconnect time
854  *---------------------------------------------------------------------------*/
855 static void
856 tel_disconnect(int unit, void *cdp)
857 {
858 /*      call_desc_t *cd = (call_desc_t *)cdp; */
859
860         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
861         
862         /* audio device */
863         
864         sc->devstate &= ~ST_CONNECTED;
865
866         if(sc->devstate & ST_RDWAITDATA)
867         {
868                 sc->devstate &= ~ST_RDWAITDATA;
869                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
870         }
871
872         if(sc->devstate & ST_WRWAITEMPTY)
873         {
874                 sc->devstate &= ~ST_WRWAITEMPTY;
875                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
876         }
877
878         /* dialer device */
879         
880         sc = &tel_sc[unit][FUNCDIAL];
881
882         if(sc->devstate & ST_ISOPEN)
883         {
884                 sc->result = RSP_HUP;
885
886                 if(sc->devstate & ST_RDWAITDATA)
887                 {
888                         sc->devstate &= ~ST_RDWAITDATA;
889                         wakeup((caddr_t) &sc->result);
890                 }
891                 KNOTE(&sc->kqp.ki_note, 0);
892
893                 if (sc->devstate & ST_TONE) {
894                         sc->devstate &= ~ST_TONE;
895                         wakeup((caddr_t) &sc->tones);
896                 }
897         }
898 }
899
900 /*---------------------------------------------------------------------------*
901  *      feedback from daemon in case of dial problems
902  *---------------------------------------------------------------------------*/
903 static void
904 tel_dialresponse(int unit, int status, cause_t cause)
905 {       
906         tel_sc_t *sc = &tel_sc[unit][FUNCDIAL];
907
908         NDBGL4(L4_TELDBG, "i4btel%d,  status=%d, cause=0x%4x", unit, status, cause);
909
910         if((sc->devstate == ST_ISOPEN) && status)
911         {       
912                 sc->result = RSP_NOA;
913
914                 if(sc->devstate & ST_RDWAITDATA)
915                 {
916                         sc->devstate &= ~ST_RDWAITDATA;
917                         wakeup((caddr_t) &sc->result);
918                 }
919                 KNOTE(&sc->kqp.ki_note, 0);
920         }
921 }
922         
923 /*---------------------------------------------------------------------------*
924  *      interface up/down
925  *---------------------------------------------------------------------------*/
926 static void
927 tel_updown(int unit, int updown)
928 {
929 }
930         
931 /*---------------------------------------------------------------------------*
932  *      this routine is called from the HSCX interrupt handler
933  *      when a new frame (mbuf) has been received and was put on
934  *      the rx queue.
935  *---------------------------------------------------------------------------*/
936 static void
937 tel_rx_data_rdy(int unit)
938 {
939         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
940         
941         if(sc->devstate & ST_RDWAITDATA)
942         {
943                 sc->devstate &= ~ST_RDWAITDATA;
944                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
945         }
946         KNOTE(&sc->kqp.ki_note, 0);
947 }
948
949 /*---------------------------------------------------------------------------*
950  *      this routine is called from the HSCX interrupt handler
951  *      when the last frame has been sent out and there is no
952  *      further frame (mbuf) in the tx queue.
953  *---------------------------------------------------------------------------*/
954 static void
955 tel_tx_queue_empty(int unit)
956 {
957         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
958
959         if(sc->devstate & ST_WRWAITEMPTY)
960         {
961                 sc->devstate &= ~ST_WRWAITEMPTY;
962                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
963         }
964         if(sc->devstate & ST_TONE) {
965                 tel_tone(sc);
966         } else {
967                 KNOTE(&sc->kqp.ki_note, 0);
968         }
969 }
970
971 /*---------------------------------------------------------------------------*
972  *      this routine is called from the HSCX interrupt handler
973  *      each time a packet is received or transmitted.
974  *---------------------------------------------------------------------------*/
975 static void
976 tel_activity(int unit, int rxtx)
977 {
978         if(tel_sc[unit][FUNCTEL].cdp)
979                 tel_sc[unit][FUNCTEL].cdp->last_active_time = SECOND;
980 }
981
982 /*---------------------------------------------------------------------------*
983  *      return this drivers linktab address
984  *---------------------------------------------------------------------------*/
985 drvr_link_t *
986 tel_ret_linktab(int unit)
987 {
988         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
989         
990         tel_init_linktab(unit);
991         return(&sc->drvr_linktab);
992 }
993
994 /*---------------------------------------------------------------------------*
995  *      setup the isdn_linktab for this driver
996  *---------------------------------------------------------------------------*/
997 void
998 tel_set_linktab(int unit, isdn_link_t *ilt)
999 {
1000         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
1001         sc->isdn_linktab = ilt;
1002 }
1003
1004 /*---------------------------------------------------------------------------*
1005  *      initialize this drivers linktab
1006  *---------------------------------------------------------------------------*/
1007 static void
1008 tel_init_linktab(int unit)
1009 {
1010         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
1011         
1012         sc->drvr_linktab.unit = unit;
1013         sc->drvr_linktab.bch_rx_data_ready = tel_rx_data_rdy;
1014         sc->drvr_linktab.bch_tx_queue_empty = tel_tx_queue_empty;
1015         sc->drvr_linktab.bch_activity = tel_activity;   
1016         sc->drvr_linktab.line_connected = tel_connect;
1017         sc->drvr_linktab.line_disconnected = tel_disconnect;
1018         sc->drvr_linktab.dial_response = tel_dialresponse;
1019         sc->drvr_linktab.updown_ind = tel_updown;       
1020 }
1021
1022 /*===========================================================================*
1023  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
1024  *===========================================================================*/
1025
1026 /*---------------------------------------------------------------------------*
1027  *      A-law to u-law conversion
1028  *---------------------------------------------------------------------------*/
1029 static unsigned char a2u_tab[256] = {
1030 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
1031 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
1032 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c, 
1033 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34, 
1034 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1035 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1036 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 
1037 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 
1038 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 
1039 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e, 
1040 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a, 
1041 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 
1042 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b, 
1043 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43, 
1044 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59, 
1045 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51, 
1046 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1047 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1048 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc, 
1049 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4, 
1050 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1051 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1052 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 
1053 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 
1054 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 
1055 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde, 
1056 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa, 
1057 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 
1058 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb, 
1059 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3, 
1060 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9, 
1061 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
1062 };
1063
1064 /*---------------------------------------------------------------------------*
1065  *      u-law to A-law conversion
1066  *---------------------------------------------------------------------------*/
1067 static unsigned char u2a_tab[256] = {
1068 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
1069 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
1070 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d, 
1071 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35, 
1072 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1073 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1074 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12, 
1075 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a, 
1076 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63, 
1077 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78, 
1078 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71, 
1079 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d, 
1080 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45, 
1081 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d, 
1082 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 
1083 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55, 
1084 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1085 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1086 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd, 
1087 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5, 
1088 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1089 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1090 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92, 
1091 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea, 
1092 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3, 
1093 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8, 
1094 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1, 
1095 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd, 
1096 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5, 
1097 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd, 
1098 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1, 
1099 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
1100 };
1101   
1102 /*---------------------------------------------------------------------------*
1103  *      reverse bits in a byte
1104  *---------------------------------------------------------------------------*/
1105 static unsigned char bitreverse[256] = {
1106 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 
1107 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 
1108 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 
1109 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 
1110 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 
1111 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 
1112 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 
1113 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 
1114 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 
1115 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 
1116 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 
1117 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 
1118 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 
1119 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 
1120 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 
1121 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 
1122 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 
1123 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 
1124 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 
1125 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 
1126 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 
1127 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 
1128 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 
1129 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 
1130 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 
1131 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 
1132 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 
1133 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 
1134 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 
1135 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 
1136 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 
1137 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
1138 };
1139
1140 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
1141 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
1142 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
1143 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
1144 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
1145 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
1146 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
1147 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
1148 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
1149 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
1150 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
1151 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
1152 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
1153 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
1154 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
1155 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
1156 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
1157 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
1158 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
1159 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
1160 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
1161 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
1162 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
1163 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
1164 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
1165 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
1166 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
1167 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
1168 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
1169 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
1170 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
1171 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
1172 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1173 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
1174 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1175 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
1176 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1177 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
1178 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1179 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
1180 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1181 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
1182 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1183 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
1184 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1185 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1186 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1187 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1188 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1189 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1190 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
1191 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1192 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
1193 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1194 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
1195 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1196 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1197 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1198 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1199 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
1200 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1201 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
1202 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1203 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1204 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1205 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1206 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
1207 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1208 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1209 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1210 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1211 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
1212 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1213 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1214 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1215 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1216 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
1217 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1218 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1219 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1220 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1221 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1222 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1223 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1224 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1225 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1226 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1227 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1228 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1229 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1230 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1231 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1232 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1233 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1234 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
1235 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1236 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1237 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1238 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1239 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1240 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1241 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
1242 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1243 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1244 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1245 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1246 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1247 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1248 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1249 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
1250 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1251 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1252 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1253 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1254 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1255 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1256 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1257 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1258 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1259 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
1260 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1261 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1262 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1263 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1264 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1265 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1266 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1267 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1268 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1269 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1270 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1271 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1272 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1273 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1274 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1275 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1276 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1277 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1278 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1279 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1280 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1281 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1282 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1283 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1284 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1285 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1286 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1287 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1288 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1289 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1290 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1291 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1292 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1293 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1294 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1295 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1296 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1297 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1298 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1299 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1300 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1301 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1302 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1303 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1304 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1305 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1306 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1307 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1308 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1309 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1310 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1311 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1312 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1313 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1314 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1315 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
1316 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1317 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1318 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1319 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1320 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1321 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1322 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1323 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1324 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1325 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1326 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1327 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1328 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1329 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1330 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1331 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1332 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1333 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1334 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1335 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1336 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1337 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1338 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
1339 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1340 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1341 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1342 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1343 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1344 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1345 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1346 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
1347 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1348 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1349 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1350 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1351 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1352 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1353 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
1354 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1355 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1356 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1357 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1358 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1359 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1360 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1361 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1362 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1363 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1364 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1365 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1366 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1367 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1368 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1369 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1370 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1371 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
1372 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1373 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1374 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1375 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1376 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1377 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1378 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1379 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1380 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1381 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1382 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1383 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1384 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
1385 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1386 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
1387 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1388 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1389 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1390 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1391 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
1392 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1393 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
1394 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1395 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
1396 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1397 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1398 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1399 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1400 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1401 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1402 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
1403 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1404 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
1405 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1406 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
1407 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1408 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
1409 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1410 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
1411 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1412 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
1413 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1414 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1415 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1416 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1417 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1418 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1419 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1420 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1421 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1422 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1423 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
1424 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
1425 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
1426 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
1427 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
1428 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
1429 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
1430 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
1431 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
1432 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
1433 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
1434 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
1435 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
1436 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
1437 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
1438 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
1439 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
1440 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
1441 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
1442 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
1443 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
1444 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
1445 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
1446 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
1447 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
1448 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
1449 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
1450 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
1451 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
1452 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
1453 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
1454 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
1455 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
1456 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
1457 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
1458 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
1459 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
1460 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
1461 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
1462 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
1463 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
1464 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
1465 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
1466 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
1467 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
1468 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
1469 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
1470 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
1471 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
1472 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
1473 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
1474 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
1475 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
1476 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
1477 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1478 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
1479 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1480 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
1481 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1482 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
1483 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1484 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
1485 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1486 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1487 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1488 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1489 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
1490 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1491 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
1492 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1493 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
1494 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1495 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
1496 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1497 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1498 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1499 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1500 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
1501 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1502 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
1503 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1504 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1505 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1506 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1507 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
1508 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1509 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
1510 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1511 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1512 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1513 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1514 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1515 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1516 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1517 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1518 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1519 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1520 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1521 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1522 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
1523 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1524 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1525 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1526 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1527 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
1528 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1529 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1530 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1531 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1532 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
1533 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1534 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1535 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1536 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1537 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1538 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
1539 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1540 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1541 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1542 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1543 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1544 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1545 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1546 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1547 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1548 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1549 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1550 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1551 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1552 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1553 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1554 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1555 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1556 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1557 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1558 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1559 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1560 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1561 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1562 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1563 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1564 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
1565 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1566 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1567 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1568 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1569 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1570 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1571 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1572 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1573 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1574 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1575 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1576 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1577 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1578 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1579 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1580 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1581 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1582 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1583 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1584 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1585 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1586 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1587 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1588 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1589 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1590 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1591 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1592 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1593 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1594 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1595 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1596 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1597 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1598 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1599 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1600 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1601 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1602 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1603 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1604 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1605 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1606 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1607 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1608 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
1609 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1610 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1611 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1612 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1613 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1614 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1615 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1616 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
1617 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1618 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1619 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1620 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1621 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1622 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1623 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1624 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1625 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1626 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1627 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1628 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1629 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1630 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1631 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1632 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1633 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1634 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1635 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1636 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1637 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1638 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1639 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1640 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1641 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1642 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1643 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
1644 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1645 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1646 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1647 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
1648 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1649 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1650 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1651 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1652 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1653 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1654 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
1655 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1656 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
1657 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1658 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1659 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1660 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1661 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
1662 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1663 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
1664 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1665 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1666 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1667 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1668 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1669 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1670 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1671 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1672 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1673 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
1674 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1675 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
1676 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1677 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1678 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1679 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1680 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1681 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
1682 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1683 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
1684 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1685 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
1686 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
1687 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
1688 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
1689 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
1690 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
1691 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
1692 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
1693 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
1694 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
1695 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
1696 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1697 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1698 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1699 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1700 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1701 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
1702 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
1703 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
1704 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
1705 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
1706 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
1707 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
1708 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
1709 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
1710 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
1711 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
1712 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
1713 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
1714
1715 /*===========================================================================*/
1716
1717 #endif /* NI4BTEL > 0 */