1 /*- 2 * SPDX-License-Identifier: BSD-3-Clause 3 * 4 * Copyright (c) 1980, 1993, 1994 5 * The Regents of the University of California. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. Neither the name of the University nor the names of its contributors 16 * may be used to endorse or promote products derived from this software 17 * without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 */ 31 32 #ifndef lint 33 static const char copyright[] = 34 "@(#) Copyright (c) 1980, 1993, 1994\n\ 35 The Regents of the University of California. All rights reserved.\n"; 36 #endif 37 38 #if 0 39 #ifndef lint 40 static char sccsid[] = "@(#)banner.c 8.4 (Berkeley) 4/29/95"; 41 #endif 42 #endif 43 44 #include <sys/cdefs.h> 45 __FBSDID("$FreeBSD$"); 46 47 /* 48 * banner - prints large signs 49 * banner [-w#] [-d] [-t] message ... 50 */ 51 52 #include <err.h> 53 #include <stdio.h> 54 #include <stdlib.h> 55 #include <string.h> 56 #include <unistd.h> 57 58 #define MAXMSG 1024 59 #define DWIDTH 132 60 #define NCHARS 128 61 #define NBYTES 9271 62 63 /* Pointers into data_table for each ASCII char */ 64 static const int asc_ptr[NCHARS] = { 65 /* ^@ */ 0, 0, 0, 0, 0, 0, 0, 0, 66 /* ^H */ 0, 0, 0, 0, 0, 0, 0, 0, 67 /* ^P */ 0, 0, 0, 0, 0, 0, 0, 0, 68 /* ^X */ 0, 0, 0, 0, 0, 0, 0, 0, 69 /* */ 1, 3, 50, 81, 104, 281, 483, 590, 70 /* ( */ 621, 685, 749, 851, 862, 893, 898, 921, 71 /* 0 */1019, 1150, 1200, 1419, 1599, 1744, 1934, 2111, 72 /* 8 */2235, 2445, 2622, 2659, 0, 2708, 0, 2715, 73 /* @ */2857, 3072, 3273, 3403, 3560, 3662, 3730, 3785, 74 /* H */3965, 4000, 4015, 4115, 4281, 4314, 4432, 4548, 75 /* P */4709, 4790, 4999, 5188, 5397, 5448, 5576, 5710, 76 /* X */5892, 6106, 6257, 0, 0, 0, 0, 0, 77 /* ` */ 50, 6503, 6642, 6733, 6837, 6930, 7073, 7157, 78 /* h */7380, 7452, 7499, 7584, 7689, 7702, 7797, 7869, 79 /* p */7978, 8069, 8160, 8222, 8381, 8442, 8508, 8605, 80 /* x */8732, 8888, 9016, 0, 0, 0, 0, 0 81 }; 82 83 /* 84 * Table of stuff to print. Format: 85 * 128+n -> print current line n times. 86 * 64+n -> this is last byte of char. 87 * else, put m chars at position n (where m 88 * is the next elt in array) and goto second 89 * next element in array. 90 */ 91 static const unsigned char data_table[NBYTES] = { 92 /* 0 1 2 3 4 5 6 7 8 9 */ 93 /* 0 */ 129, 227, 130, 34, 6, 90, 19, 129, 32, 10, 94 /* 10 */ 74, 40, 129, 31, 12, 64, 53, 129, 30, 14, 95 /* 20 */ 54, 65, 129, 30, 14, 53, 67, 129, 30, 14, 96 /* 30 */ 54, 65, 129, 31, 12, 64, 53, 129, 32, 10, 97 /* 40 */ 74, 40, 129, 34, 6, 90, 19, 129, 194, 130, 98 /* 50 */ 99, 9, 129, 97, 14, 129, 96, 18, 129, 95, 99 /* 60 */ 22, 129, 95, 16, 117, 2, 129, 95, 14, 129, 100 /* 70 */ 96, 11, 129, 97, 9, 129, 99, 6, 129, 194, 101 /* 80 */ 129, 87, 4, 101, 4, 131, 82, 28, 131, 87, 102 /* 90 */ 4, 101, 4, 133, 82, 28, 131, 87, 4, 101, 103 /* 100 */ 4, 131, 193, 129, 39, 1, 84, 27, 129, 38, 104 /* 110 */ 3, 81, 32, 129, 37, 5, 79, 35, 129, 36, 105 /* 120 */ 5, 77, 38, 129, 35, 5, 76, 40, 129, 34, 106 /* 130 */ 5, 75, 21, 103, 14, 129, 33, 5, 74, 19, 107 /* 140 */ 107, 11, 129, 32, 5, 73, 17, 110, 9, 129, 108 /* 150 */ 32, 4, 73, 16, 112, 7, 129, 31, 4, 72, 109 /* 160 */ 15, 114, 6, 129, 31, 4, 72, 14, 115, 5, 110 /* 170 */ 129, 30, 4, 71, 15, 116, 5, 129, 27, 97, 111 /* 180 */ 131, 30, 4, 69, 14, 117, 4, 129, 30, 4, 112 /* 190 */ 68, 15, 117, 4, 132, 30, 4, 68, 14, 117, 113 /* 200 */ 4, 129, 27, 97, 131, 30, 5, 65, 15, 116, 114 /* 210 */ 5, 129, 31, 4, 65, 14, 116, 4, 129, 31, 115 /* 220 */ 6, 64, 15, 116, 4, 129, 32, 7, 62, 16, 116 /* 230 */ 115, 4, 129, 32, 9, 61, 17, 114, 5, 129, 117 /* 240 */ 33, 11, 58, 19, 113, 5, 129, 34, 14, 55, 118 /* 250 */ 21, 112, 5, 129, 35, 40, 111, 5, 129, 36, 119 /* 260 */ 38, 110, 5, 129, 37, 35, 109, 5, 129, 38, 120 /* 270 */ 32, 110, 3, 129, 40, 27, 111, 1, 129, 193, 121 /* 280 */ 129, 30, 4, 103, 9, 129, 30, 7, 100, 15, 122 /* 290 */ 129, 30, 10, 99, 17, 129, 33, 10, 97, 6, 123 /* 300 */ 112, 6, 129, 36, 10, 96, 5, 114, 5, 129, 124 /* 310 */ 39, 10, 96, 4, 115, 4, 129, 42, 10, 95, 125 /* 320 */ 4, 116, 4, 129, 45, 10, 95, 3, 117, 3, 126 /* 330 */ 129, 48, 10, 95, 3, 117, 3, 129, 51, 10, 127 /* 340 */ 95, 4, 116, 4, 129, 54, 10, 96, 4, 115, 128 /* 350 */ 4, 129, 57, 10, 96, 5, 114, 5, 129, 60, 129 /* 360 */ 10, 97, 6, 112, 6, 129, 63, 10, 99, 17, 130 /* 370 */ 129, 66, 10, 100, 15, 129, 69, 10, 103, 9, 131 /* 380 */ 129, 39, 9, 72, 10, 129, 36, 15, 75, 10, 132 /* 390 */ 129, 35, 17, 78, 10, 129, 33, 6, 48, 6, 133 /* 400 */ 81, 10, 129, 32, 5, 50, 5, 84, 10, 129, 134 /* 410 */ 32, 4, 51, 4, 87, 10, 129, 31, 4, 52, 135 /* 420 */ 4, 90, 10, 129, 31, 3, 53, 3, 93, 10, 136 /* 430 */ 129, 31, 3, 53, 3, 96, 10, 129, 31, 4, 137 /* 440 */ 52, 4, 99, 10, 129, 32, 4, 51, 4, 102, 138 /* 450 */ 10, 129, 32, 5, 50, 5, 105, 10, 129, 33, 139 /* 460 */ 6, 48, 6, 108, 10, 129, 35, 17, 111, 10, 140 /* 470 */ 129, 36, 15, 114, 7, 129, 40, 9, 118, 4, 141 /* 480 */ 129, 193, 129, 48, 18, 129, 43, 28, 129, 41, 142 /* 490 */ 32, 129, 39, 36, 129, 37, 40, 129, 35, 44, 143 /* 500 */ 129, 34, 46, 129, 33, 13, 68, 13, 129, 32, 144 /* 510 */ 9, 73, 9, 129, 32, 7, 75, 7, 129, 31, 145 /* 520 */ 6, 77, 6, 129, 31, 5, 78, 5, 129, 30, 146 /* 530 */ 5, 79, 5, 129, 20, 74, 132, 30, 4, 80, 147 /* 540 */ 4, 129, 31, 3, 79, 4, 129, 31, 4, 79, 148 /* 550 */ 4, 129, 32, 3, 78, 4, 129, 32, 4, 76, 149 /* 560 */ 6, 129, 33, 4, 74, 7, 129, 34, 4, 72, 150 /* 570 */ 8, 129, 35, 5, 72, 7, 129, 37, 5, 73, 151 /* 580 */ 4, 129, 39, 4, 74, 1, 129, 129, 193, 130, 152 /* 590 */ 111, 6, 129, 109, 10, 129, 108, 12, 129, 107, 153 /* 600 */ 14, 129, 97, 2, 105, 16, 129, 99, 22, 129, 154 /* 610 */ 102, 18, 129, 105, 14, 129, 108, 9, 129, 194, 155 /* 620 */ 130, 63, 25, 129, 57, 37, 129, 52, 47, 129, 156 /* 630 */ 48, 55, 129, 44, 63, 129, 41, 69, 129, 38, 157 /* 640 */ 75, 129, 36, 79, 129, 34, 83, 129, 33, 28, 158 /* 650 */ 90, 28, 129, 32, 23, 96, 23, 129, 32, 17, 159 /* 660 */ 102, 17, 129, 31, 13, 107, 13, 129, 30, 9, 160 /* 670 */ 112, 9, 129, 30, 5, 116, 5, 129, 30, 1, 161 /* 680 */ 120, 1, 129, 194, 130, 30, 1, 120, 1, 129, 162 /* 690 */ 30, 5, 116, 5, 129, 30, 9, 112, 9, 129, 163 /* 700 */ 31, 13, 107, 13, 129, 32, 17, 102, 17, 129, 164 /* 710 */ 32, 23, 96, 23, 129, 33, 28, 90, 28, 129, 165 /* 720 */ 34, 83, 129, 36, 79, 129, 38, 75, 129, 41, 166 /* 730 */ 69, 129, 44, 63, 129, 48, 55, 129, 52, 47, 167 /* 740 */ 129, 57, 37, 129, 63, 25, 129, 194, 129, 80, 168 /* 750 */ 4, 130, 80, 4, 129, 68, 2, 80, 4, 94, 169 /* 760 */ 2, 129, 66, 6, 80, 4, 92, 6, 129, 67, 170 /* 770 */ 7, 80, 4, 90, 7, 129, 69, 7, 80, 4, 171 /* 780 */ 88, 7, 129, 71, 6, 80, 4, 87, 6, 129, 172 /* 790 */ 72, 20, 129, 74, 16, 129, 76, 12, 129, 62, 173 /* 800 */ 40, 131, 76, 12, 129, 74, 16, 129, 72, 20, 174 /* 810 */ 129, 71, 6, 80, 4, 87, 6, 129, 69, 7, 175 /* 820 */ 80, 4, 88, 7, 129, 67, 7, 80, 4, 90, 176 /* 830 */ 7, 129, 66, 6, 80, 4, 92, 6, 129, 68, 177 /* 840 */ 2, 80, 4, 94, 2, 129, 80, 4, 130, 193, 178 /* 850 */ 129, 60, 4, 139, 41, 42, 131, 60, 4, 139, 179 /* 860 */ 193, 130, 34, 6, 129, 32, 10, 129, 31, 12, 180 /* 870 */ 129, 30, 14, 129, 20, 2, 28, 16, 129, 22, 181 /* 880 */ 22, 129, 24, 19, 129, 27, 15, 129, 31, 9, 182 /* 890 */ 129, 194, 129, 60, 4, 152, 193, 130, 34, 6, 183 /* 900 */ 129, 32, 10, 129, 31, 12, 129, 30, 14, 131, 184 /* 910 */ 31, 12, 129, 32, 10, 129, 34, 6, 129, 194, 185 /* 920 */ 129, 30, 4, 129, 30, 7, 129, 30, 10, 129, 186 /* 930 */ 33, 10, 129, 36, 10, 129, 39, 10, 129, 42, 187 /* 940 */ 10, 129, 45, 10, 129, 48, 10, 129, 51, 10, 188 /* 950 */ 129, 54, 10, 129, 57, 10, 129, 60, 10, 129, 189 /* 960 */ 63, 10, 129, 66, 10, 129, 69, 10, 129, 72, 190 /* 970 */ 10, 129, 75, 10, 129, 78, 10, 129, 81, 10, 191 /* 980 */ 129, 84, 10, 129, 87, 10, 129, 90, 10, 129, 192 /* 990 */ 93, 10, 129, 96, 10, 129, 99, 10, 129, 102, 193 /* 1000 */ 10, 129, 105, 10, 129, 108, 10, 129, 111, 10, 194 /* 1010 */ 129, 114, 7, 129, 117, 4, 129, 193, 129, 60, 195 /* 1020 */ 31, 129, 53, 45, 129, 49, 53, 129, 46, 59, 196 /* 1030 */ 129, 43, 65, 129, 41, 69, 129, 39, 73, 129, 197 /* 1040 */ 37, 77, 129, 36, 79, 129, 35, 15, 101, 15, 198 /* 1050 */ 129, 34, 11, 106, 11, 129, 33, 9, 109, 9, 199 /* 1060 */ 129, 32, 7, 112, 7, 129, 31, 6, 114, 6, 200 /* 1070 */ 129, 31, 5, 115, 5, 129, 30, 5, 116, 5, 201 /* 1080 */ 129, 30, 4, 117, 4, 132, 30, 5, 116, 5, 202 /* 1090 */ 129, 31, 5, 115, 5, 129, 31, 6, 114, 6, 203 /* 1100 */ 129, 32, 7, 112, 7, 129, 33, 9, 109, 9, 204 /* 1110 */ 129, 34, 11, 106, 11, 129, 35, 15, 101, 15, 205 /* 1120 */ 129, 36, 79, 129, 37, 77, 129, 39, 73, 129, 206 /* 1130 */ 41, 69, 129, 43, 65, 129, 46, 59, 129, 49, 207 /* 1140 */ 53, 129, 53, 45, 129, 60, 31, 129, 193, 129, 208 /* 1150 */ 30, 4, 129, 30, 4, 100, 1, 129, 30, 4, 209 /* 1160 */ 100, 3, 129, 30, 4, 100, 5, 129, 30, 76, 210 /* 1170 */ 129, 30, 78, 129, 30, 80, 129, 30, 82, 129, 211 /* 1180 */ 30, 83, 129, 30, 85, 129, 30, 87, 129, 30, 212 /* 1190 */ 89, 129, 30, 91, 129, 30, 4, 132, 193, 129, 213 /* 1200 */ 30, 3, 129, 30, 7, 129, 30, 10, 112, 1, 214 /* 1210 */ 129, 30, 13, 112, 2, 129, 30, 16, 112, 3, 215 /* 1220 */ 129, 30, 18, 111, 5, 129, 30, 21, 111, 6, 216 /* 1230 */ 129, 30, 23, 112, 6, 129, 30, 14, 47, 8, 217 /* 1240 */ 113, 6, 129, 30, 14, 49, 8, 114, 5, 129, 218 /* 1250 */ 30, 14, 51, 8, 115, 5, 129, 30, 14, 53, 219 /* 1260 */ 8, 116, 4, 129, 30, 14, 55, 8, 116, 5, 220 /* 1270 */ 129, 30, 14, 56, 9, 117, 4, 129, 30, 14, 221 /* 1280 */ 57, 9, 117, 4, 129, 30, 14, 58, 10, 117, 222 /* 1290 */ 4, 129, 30, 14, 59, 10, 117, 4, 129, 30, 223 /* 1300 */ 14, 60, 11, 117, 4, 129, 30, 14, 61, 11, 224 /* 1310 */ 116, 5, 129, 30, 14, 62, 11, 116, 5, 129, 225 /* 1320 */ 30, 14, 63, 12, 115, 6, 129, 30, 14, 64, 226 /* 1330 */ 13, 114, 7, 129, 30, 14, 65, 13, 113, 8, 227 /* 1340 */ 129, 30, 14, 65, 15, 111, 9, 129, 30, 14, 228 /* 1350 */ 66, 16, 109, 11, 129, 30, 14, 67, 17, 107, 229 /* 1360 */ 12, 129, 30, 14, 68, 20, 103, 16, 129, 30, 230 /* 1370 */ 14, 69, 49, 129, 30, 14, 70, 47, 129, 30, 231 /* 1380 */ 14, 71, 45, 129, 30, 14, 73, 42, 129, 30, 232 /* 1390 */ 15, 75, 38, 129, 33, 12, 77, 34, 129, 36, 233 /* 1400 */ 10, 79, 30, 129, 40, 6, 82, 23, 129, 44, 234 /* 1410 */ 3, 86, 15, 129, 47, 1, 129, 193, 129, 129, 235 /* 1420 */ 38, 3, 129, 37, 5, 111, 1, 129, 36, 7, 236 /* 1430 */ 111, 2, 129, 35, 9, 110, 5, 129, 34, 8, 237 /* 1440 */ 110, 6, 129, 33, 7, 109, 8, 129, 32, 7, 238 /* 1450 */ 110, 8, 129, 32, 6, 112, 7, 129, 31, 6, 239 /* 1460 */ 113, 6, 129, 31, 5, 114, 6, 129, 30, 5, 240 /* 1470 */ 115, 5, 129, 30, 5, 116, 4, 129, 30, 4, 241 /* 1480 */ 117, 4, 131, 30, 4, 117, 4, 129, 30, 4, 242 /* 1490 */ 79, 2, 117, 4, 129, 30, 5, 78, 4, 117, 243 /* 1500 */ 4, 129, 30, 5, 77, 6, 116, 5, 129, 30, 244 /* 1510 */ 6, 76, 8, 115, 6, 129, 30, 7, 75, 11, 245 /* 1520 */ 114, 6, 129, 30, 8, 73, 15, 112, 8, 129, 246 /* 1530 */ 31, 9, 71, 19, 110, 9, 129, 31, 11, 68, 247 /* 1540 */ 26, 107, 12, 129, 32, 13, 65, 14, 82, 36, 248 /* 1550 */ 129, 32, 16, 61, 17, 83, 34, 129, 33, 44, 249 /* 1560 */ 84, 32, 129, 34, 42, 85, 30, 129, 35, 40, 250 /* 1570 */ 87, 27, 129, 36, 38, 89, 23, 129, 38, 34, 251 /* 1580 */ 92, 17, 129, 40, 30, 95, 11, 129, 42, 26, 252 /* 1590 */ 129, 45, 20, 129, 49, 11, 129, 193, 129, 49, 253 /* 1600 */ 1, 129, 49, 4, 129, 49, 6, 129, 49, 8, 254 /* 1610 */ 129, 49, 10, 129, 49, 12, 129, 49, 14, 129, 255 /* 1620 */ 49, 17, 129, 49, 19, 129, 49, 21, 129, 49, 256 /* 1630 */ 23, 129, 49, 14, 65, 9, 129, 49, 14, 67, 257 /* 1640 */ 9, 129, 49, 14, 69, 9, 129, 49, 14, 71, 258 /* 1650 */ 10, 129, 49, 14, 74, 9, 129, 49, 14, 76, 259 /* 1660 */ 9, 129, 49, 14, 78, 9, 129, 49, 14, 80, 260 /* 1670 */ 9, 129, 49, 14, 82, 9, 129, 49, 14, 84, 261 /* 1680 */ 9, 129, 30, 4, 49, 14, 86, 10, 129, 30, 262 /* 1690 */ 4, 49, 14, 89, 9, 129, 30, 4, 49, 14, 263 /* 1700 */ 91, 9, 129, 30, 4, 49, 14, 93, 9, 129, 264 /* 1710 */ 30, 74, 129, 30, 76, 129, 30, 78, 129, 30, 265 /* 1720 */ 81, 129, 30, 83, 129, 30, 85, 129, 30, 87, 266 /* 1730 */ 129, 30, 89, 129, 30, 91, 129, 30, 4, 49, 267 /* 1740 */ 14, 132, 193, 129, 37, 1, 129, 36, 3, 77, 268 /* 1750 */ 3, 129, 35, 5, 78, 11, 129, 34, 7, 78, 269 /* 1760 */ 21, 129, 33, 7, 79, 29, 129, 32, 7, 79, 270 /* 1770 */ 38, 129, 32, 6, 80, 4, 92, 29, 129, 31, 271 /* 1780 */ 6, 80, 5, 102, 19, 129, 31, 5, 80, 6, 272 /* 1790 */ 107, 14, 129, 31, 4, 81, 5, 107, 14, 129, 273 /* 1800 */ 30, 5, 81, 6, 107, 14, 129, 30, 4, 81, 274 /* 1810 */ 6, 107, 14, 130, 30, 4, 81, 7, 107, 14, 275 /* 1820 */ 129, 30, 4, 80, 8, 107, 14, 130, 30, 5, 276 /* 1830 */ 80, 8, 107, 14, 129, 30, 5, 79, 9, 107, 277 /* 1840 */ 14, 129, 31, 5, 79, 9, 107, 14, 129, 31, 278 /* 1850 */ 6, 78, 10, 107, 14, 129, 32, 6, 76, 11, 279 /* 1860 */ 107, 14, 129, 32, 8, 74, 13, 107, 14, 129, 280 /* 1870 */ 33, 10, 71, 16, 107, 14, 129, 33, 15, 67, 281 /* 1880 */ 19, 107, 14, 129, 34, 51, 107, 14, 129, 35, 282 /* 1890 */ 49, 107, 14, 129, 36, 47, 107, 14, 129, 37, 283 /* 1900 */ 45, 107, 14, 129, 39, 41, 107, 14, 129, 41, 284 /* 1910 */ 37, 107, 14, 129, 44, 32, 107, 14, 129, 47, 285 /* 1920 */ 25, 111, 10, 129, 51, 16, 115, 6, 129, 119, 286 /* 1930 */ 2, 129, 193, 129, 56, 39, 129, 51, 49, 129, 287 /* 1940 */ 47, 57, 129, 44, 63, 129, 42, 67, 129, 40, 288 /* 1950 */ 71, 129, 38, 75, 129, 37, 77, 129, 35, 81, 289 /* 1960 */ 129, 34, 16, 74, 5, 101, 16, 129, 33, 11, 290 /* 1970 */ 76, 5, 107, 11, 129, 32, 9, 77, 5, 110, 291 /* 1980 */ 9, 129, 32, 7, 79, 4, 112, 7, 129, 31, 292 /* 1990 */ 6, 80, 4, 114, 6, 129, 31, 5, 81, 4, 293 /* 2000 */ 115, 5, 129, 30, 5, 82, 4, 116, 5, 129, 294 /* 2010 */ 30, 4, 82, 4, 116, 5, 129, 30, 4, 82, 295 /* 2020 */ 5, 117, 4, 131, 30, 5, 82, 5, 117, 4, 296 /* 2030 */ 129, 31, 5, 81, 6, 117, 4, 129, 31, 6, 297 /* 2040 */ 80, 7, 117, 4, 129, 32, 7, 79, 8, 117, 298 /* 2050 */ 4, 129, 32, 9, 77, 9, 116, 5, 129, 33, 299 /* 2060 */ 11, 75, 11, 116, 4, 129, 34, 16, 69, 16, 300 /* 2070 */ 115, 5, 129, 35, 49, 114, 5, 129, 37, 46, 301 /* 2080 */ 113, 5, 129, 38, 44, 112, 6, 129, 40, 41, 302 /* 2090 */ 112, 5, 129, 42, 37, 113, 3, 129, 44, 33, 303 /* 2100 */ 114, 1, 129, 47, 27, 129, 51, 17, 129, 193, 304 /* 2110 */ 129, 103, 2, 129, 103, 6, 129, 104, 9, 129, 305 /* 2120 */ 105, 12, 129, 106, 15, 129, 107, 14, 135, 30, 306 /* 2130 */ 10, 107, 14, 129, 30, 17, 107, 14, 129, 30, 307 /* 2140 */ 25, 107, 14, 129, 30, 31, 107, 14, 129, 30, 308 /* 2150 */ 37, 107, 14, 129, 30, 42, 107, 14, 129, 30, 309 /* 2160 */ 46, 107, 14, 129, 30, 50, 107, 14, 129, 30, 310 /* 2170 */ 54, 107, 14, 129, 30, 58, 107, 14, 129, 59, 311 /* 2180 */ 32, 107, 14, 129, 64, 30, 107, 14, 129, 74, 312 /* 2190 */ 23, 107, 14, 129, 81, 18, 107, 14, 129, 86, 313 /* 2200 */ 16, 107, 14, 129, 91, 14, 107, 14, 129, 96, 314 /* 2210 */ 25, 129, 100, 21, 129, 104, 17, 129, 107, 14, 315 /* 2220 */ 129, 111, 10, 129, 114, 7, 129, 117, 4, 129, 316 /* 2230 */ 120, 1, 129, 193, 129, 48, 13, 129, 44, 21, 317 /* 2240 */ 129, 42, 26, 129, 40, 30, 92, 12, 129, 38, 318 /* 2250 */ 34, 88, 20, 129, 36, 37, 86, 25, 129, 35, 319 /* 2260 */ 39, 84, 29, 129, 34, 13, 63, 12, 82, 33, 320 /* 2270 */ 129, 33, 11, 67, 9, 80, 36, 129, 32, 9, 321 /* 2280 */ 70, 7, 79, 38, 129, 31, 8, 72, 46, 129, 322 /* 2290 */ 30, 7, 74, 22, 108, 11, 129, 30, 6, 75, 323 /* 2300 */ 19, 111, 9, 129, 30, 5, 75, 17, 113, 7, 324 /* 2310 */ 129, 30, 5, 74, 16, 114, 6, 129, 30, 4, 325 /* 2320 */ 73, 16, 115, 6, 129, 30, 4, 72, 16, 116, 326 /* 2330 */ 5, 129, 30, 4, 72, 15, 117, 4, 129, 30, 327 /* 2340 */ 4, 71, 16, 117, 4, 129, 30, 5, 70, 16, 328 /* 2350 */ 117, 4, 129, 30, 5, 70, 15, 117, 4, 129, 329 /* 2360 */ 30, 6, 69, 15, 116, 5, 129, 30, 7, 68, 330 /* 2370 */ 17, 115, 5, 129, 30, 9, 67, 19, 114, 6, 331 /* 2380 */ 129, 30, 10, 65, 22, 113, 6, 129, 31, 12, 332 /* 2390 */ 63, 27, 110, 9, 129, 32, 14, 60, 21, 84, 333 /* 2400 */ 9, 106, 12, 129, 33, 47, 85, 32, 129, 34, 334 /* 2410 */ 45, 86, 30, 129, 35, 43, 88, 26, 129, 36, 335 /* 2420 */ 40, 90, 22, 129, 38, 36, 93, 17, 129, 40, 336 /* 2430 */ 32, 96, 10, 129, 42, 28, 129, 44, 23, 129, 337 /* 2440 */ 48, 15, 129, 193, 129, 83, 17, 129, 77, 27, 338 /* 2450 */ 129, 36, 1, 74, 33, 129, 35, 3, 72, 37, 339 /* 2460 */ 129, 34, 5, 70, 41, 129, 33, 6, 69, 44, 340 /* 2470 */ 129, 33, 5, 68, 46, 129, 32, 5, 67, 49, 341 /* 2480 */ 129, 31, 5, 66, 17, 101, 16, 129, 31, 5, 342 /* 2490 */ 66, 11, 108, 10, 129, 30, 4, 65, 9, 110, 343 /* 2500 */ 9, 129, 30, 4, 64, 8, 112, 7, 129, 30, 344 /* 2510 */ 4, 64, 7, 114, 6, 129, 30, 4, 64, 6, 345 /* 2520 */ 115, 5, 129, 30, 4, 64, 5, 116, 5, 129, 346 /* 2530 */ 30, 4, 64, 5, 117, 4, 131, 30, 4, 65, 347 /* 2540 */ 4, 117, 4, 129, 30, 5, 65, 4, 116, 5, 348 /* 2550 */ 129, 31, 5, 66, 4, 115, 5, 129, 31, 6, 349 /* 2560 */ 67, 4, 114, 6, 129, 32, 7, 68, 4, 112, 350 /* 2570 */ 7, 129, 32, 9, 69, 5, 110, 9, 129, 33, 351 /* 2580 */ 11, 70, 5, 107, 11, 129, 34, 16, 72, 5, 352 /* 2590 */ 101, 16, 129, 35, 81, 129, 37, 77, 129, 38, 353 /* 2600 */ 75, 129, 40, 71, 129, 42, 67, 129, 44, 63, 354 /* 2610 */ 129, 47, 57, 129, 51, 49, 129, 56, 39, 129, 355 /* 2620 */ 193, 130, 34, 6, 74, 6, 129, 32, 10, 72, 356 /* 2630 */ 10, 129, 31, 12, 71, 12, 129, 30, 14, 70, 357 /* 2640 */ 14, 131, 31, 12, 71, 12, 129, 32, 10, 72, 358 /* 2650 */ 10, 129, 34, 6, 74, 6, 129, 194, 130, 34, 359 /* 2660 */ 6, 74, 6, 129, 32, 10, 72, 10, 129, 31, 360 /* 2670 */ 12, 71, 12, 129, 30, 14, 70, 14, 129, 20, 361 /* 2680 */ 2, 28, 16, 70, 14, 129, 22, 22, 70, 14, 362 /* 2690 */ 129, 24, 19, 71, 12, 129, 27, 15, 72, 10, 363 /* 2700 */ 129, 31, 9, 74, 6, 129, 194, 129, 53, 4, 364 /* 2710 */ 63, 4, 152, 193, 130, 99, 7, 129, 97, 13, 365 /* 2720 */ 129, 96, 16, 129, 96, 18, 129, 96, 19, 129, 366 /* 2730 */ 97, 19, 129, 99, 6, 110, 7, 129, 112, 6, 367 /* 2740 */ 129, 114, 5, 129, 34, 6, 57, 5, 115, 4, 368 /* 2750 */ 129, 32, 10, 54, 12, 116, 4, 129, 31, 12, 369 /* 2760 */ 53, 16, 117, 3, 129, 30, 14, 52, 20, 117, 370 /* 2770 */ 4, 129, 30, 14, 52, 23, 117, 4, 129, 30, 371 /* 2780 */ 14, 52, 25, 117, 4, 129, 31, 12, 52, 27, 372 /* 2790 */ 117, 4, 129, 32, 10, 53, 10, 70, 11, 116, 373 /* 2800 */ 5, 129, 34, 6, 55, 5, 73, 10, 115, 6, 374 /* 2810 */ 129, 74, 11, 114, 7, 129, 75, 12, 112, 9, 375 /* 2820 */ 129, 76, 13, 110, 10, 129, 77, 16, 106, 14, 376 /* 2830 */ 129, 78, 41, 129, 80, 38, 129, 81, 36, 129, 377 /* 2840 */ 82, 34, 129, 84, 30, 129, 86, 26, 129, 88, 378 /* 2850 */ 22, 129, 92, 14, 129, 194, 129, 55, 15, 129, 379 /* 2860 */ 50, 25, 129, 47, 32, 129, 45, 13, 70, 12, 380 /* 2870 */ 129, 43, 9, 76, 10, 129, 42, 6, 79, 8, 381 /* 2880 */ 129, 41, 5, 81, 7, 129, 40, 4, 84, 6, 382 /* 2890 */ 129, 39, 4, 59, 12, 85, 6, 129, 38, 4, 383 /* 2900 */ 55, 19, 87, 5, 129, 37, 4, 53, 23, 88, 384 /* 2910 */ 4, 129, 36, 4, 51, 8, 71, 6, 89, 4, 385 /* 2920 */ 129, 36, 4, 51, 6, 73, 4, 89, 4, 129, 386 /* 2930 */ 36, 4, 50, 6, 74, 4, 90, 3, 129, 35, 387 /* 2940 */ 4, 50, 5, 75, 3, 90, 4, 129, 35, 4, 388 /* 2950 */ 50, 4, 75, 4, 90, 4, 131, 35, 4, 50, 389 /* 2960 */ 5, 75, 4, 90, 4, 129, 36, 4, 51, 5, 390 /* 2970 */ 75, 4, 90, 4, 129, 36, 4, 51, 6, 75, 391 /* 2980 */ 4, 90, 4, 129, 36, 4, 53, 26, 90, 4, 392 /* 2990 */ 129, 37, 4, 54, 25, 90, 4, 129, 37, 4, 393 /* 3000 */ 52, 27, 90, 3, 129, 38, 4, 52, 4, 89, 394 /* 3010 */ 4, 129, 39, 4, 51, 4, 88, 4, 129, 40, 395 /* 3020 */ 4, 50, 4, 87, 5, 129, 41, 4, 50, 4, 396 /* 3030 */ 86, 5, 129, 42, 4, 50, 4, 85, 5, 129, 397 /* 3040 */ 43, 3, 50, 4, 83, 6, 129, 44, 2, 51, 398 /* 3050 */ 5, 80, 7, 129, 46, 1, 52, 6, 76, 9, 399 /* 3060 */ 129, 54, 28, 129, 56, 23, 129, 60, 16, 129, 400 /* 3070 */ 193, 129, 30, 4, 132, 30, 5, 129, 30, 8, 401 /* 3080 */ 129, 30, 12, 129, 30, 16, 129, 30, 4, 37, 402 /* 3090 */ 12, 129, 30, 4, 41, 12, 129, 30, 4, 44, 403 /* 3100 */ 13, 129, 30, 4, 48, 13, 129, 52, 13, 129, 404 /* 3110 */ 56, 12, 129, 58, 14, 129, 58, 4, 64, 12, 405 /* 3120 */ 129, 58, 4, 68, 12, 129, 58, 4, 72, 12, 406 /* 3130 */ 129, 58, 4, 75, 13, 129, 58, 4, 79, 13, 407 /* 3140 */ 129, 58, 4, 83, 13, 129, 58, 4, 87, 13, 408 /* 3150 */ 129, 58, 4, 91, 12, 129, 58, 4, 95, 12, 409 /* 3160 */ 129, 58, 4, 96, 15, 129, 58, 4, 93, 22, 410 /* 3170 */ 129, 58, 4, 89, 30, 129, 58, 4, 85, 36, 411 /* 3180 */ 129, 58, 4, 81, 38, 129, 58, 4, 77, 38, 412 /* 3190 */ 129, 58, 4, 73, 38, 129, 58, 4, 70, 37, 413 /* 3200 */ 129, 58, 4, 66, 37, 129, 58, 41, 129, 58, 414 /* 3210 */ 37, 129, 54, 38, 129, 30, 4, 50, 38, 129, 415 /* 3220 */ 30, 4, 46, 38, 129, 30, 4, 42, 38, 129, 416 /* 3230 */ 30, 4, 38, 39, 129, 30, 43, 129, 30, 39, 417 /* 3240 */ 129, 30, 35, 129, 30, 31, 129, 30, 27, 129, 418 /* 3250 */ 30, 24, 129, 30, 20, 129, 30, 16, 129, 30, 419 /* 3260 */ 12, 129, 30, 8, 129, 30, 5, 129, 30, 4, 420 /* 3270 */ 132, 193, 129, 30, 4, 117, 4, 132, 30, 91, 421 /* 3280 */ 137, 30, 4, 80, 4, 117, 4, 138, 30, 4, 422 /* 3290 */ 80, 5, 116, 5, 129, 30, 5, 79, 6, 116, 423 /* 3300 */ 5, 130, 30, 6, 78, 8, 115, 6, 129, 31, 424 /* 3310 */ 6, 77, 9, 115, 6, 129, 31, 7, 76, 11, 425 /* 3320 */ 114, 6, 129, 31, 8, 75, 14, 112, 8, 129, 426 /* 3330 */ 32, 8, 74, 16, 111, 9, 129, 32, 9, 73, 427 /* 3340 */ 19, 109, 10, 129, 33, 10, 71, 24, 106, 13, 428 /* 3350 */ 129, 33, 13, 68, 12, 83, 35, 129, 34, 16, 429 /* 3360 */ 64, 15, 84, 33, 129, 35, 43, 85, 31, 129, 430 /* 3370 */ 36, 41, 86, 29, 129, 37, 39, 88, 25, 129, 431 /* 3380 */ 38, 37, 90, 21, 129, 40, 33, 93, 15, 129, 432 /* 3390 */ 42, 29, 96, 9, 129, 45, 24, 129, 49, 16, 433 /* 3400 */ 129, 193, 129, 63, 25, 129, 57, 37, 129, 53, 434 /* 3410 */ 45, 129, 50, 51, 129, 47, 57, 129, 45, 61, 435 /* 3420 */ 129, 43, 65, 129, 41, 69, 129, 39, 73, 129, 436 /* 3430 */ 38, 25, 92, 21, 129, 36, 21, 97, 18, 129, 437 /* 3440 */ 35, 18, 102, 14, 129, 34, 16, 106, 11, 129, 438 /* 3450 */ 33, 14, 108, 10, 129, 32, 12, 111, 8, 129, 439 /* 3460 */ 32, 10, 113, 6, 129, 31, 10, 114, 6, 129, 440 /* 3470 */ 31, 8, 115, 5, 129, 30, 8, 116, 5, 129, 441 /* 3480 */ 30, 7, 116, 5, 129, 30, 6, 117, 4, 130, 442 /* 3490 */ 30, 5, 117, 4, 131, 31, 4, 116, 5, 129, 443 /* 3500 */ 32, 4, 116, 4, 129, 32, 5, 115, 5, 129, 444 /* 3510 */ 33, 4, 114, 5, 129, 34, 4, 112, 6, 129, 445 /* 3520 */ 35, 4, 110, 7, 129, 37, 4, 107, 9, 129, 446 /* 3530 */ 39, 4, 103, 12, 129, 41, 4, 103, 18, 129, 447 /* 3540 */ 43, 4, 103, 18, 129, 45, 5, 103, 18, 129, 448 /* 3550 */ 48, 5, 103, 18, 129, 51, 1, 129, 193, 129, 449 /* 3560 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, 450 /* 3570 */ 117, 4, 135, 30, 5, 116, 5, 130, 30, 6, 451 /* 3580 */ 115, 6, 130, 31, 6, 114, 6, 129, 31, 7, 452 /* 3590 */ 113, 7, 129, 32, 7, 112, 7, 129, 32, 8, 453 /* 3600 */ 111, 8, 129, 33, 9, 109, 9, 129, 33, 12, 454 /* 3610 */ 106, 12, 129, 34, 13, 104, 13, 129, 35, 15, 455 /* 3620 */ 101, 15, 129, 36, 19, 96, 19, 129, 37, 24, 456 /* 3630 */ 90, 24, 129, 39, 73, 129, 40, 71, 129, 42, 457 /* 3640 */ 67, 129, 44, 63, 129, 46, 59, 129, 49, 53, 458 /* 3650 */ 129, 52, 47, 129, 56, 39, 129, 61, 29, 129, 459 /* 3660 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 137, 460 /* 3670 */ 30, 4, 80, 4, 117, 4, 140, 30, 4, 79, 461 /* 3680 */ 6, 117, 4, 129, 30, 4, 77, 10, 117, 4, 462 /* 3690 */ 129, 30, 4, 73, 18, 117, 4, 132, 30, 4, 463 /* 3700 */ 117, 4, 130, 30, 5, 116, 5, 130, 30, 7, 464 /* 3710 */ 114, 7, 129, 30, 8, 113, 8, 129, 30, 11, 465 /* 3720 */ 110, 11, 129, 30, 18, 103, 18, 132, 193, 129, 466 /* 3730 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, 467 /* 3740 */ 80, 4, 117, 4, 132, 80, 4, 117, 4, 136, 468 /* 3750 */ 79, 6, 117, 4, 129, 77, 10, 117, 4, 129, 469 /* 3760 */ 73, 18, 117, 4, 132, 117, 4, 130, 116, 5, 470 /* 3770 */ 130, 114, 7, 129, 113, 8, 129, 110, 11, 129, 471 /* 3780 */ 103, 18, 132, 193, 129, 63, 25, 129, 57, 37, 472 /* 3790 */ 129, 53, 45, 129, 50, 51, 129, 47, 57, 129, 473 /* 3800 */ 45, 61, 129, 43, 65, 129, 41, 69, 129, 39, 474 /* 3810 */ 73, 129, 38, 25, 92, 21, 129, 36, 21, 97, 475 /* 3820 */ 18, 129, 35, 18, 102, 14, 129, 34, 16, 106, 476 /* 3830 */ 11, 129, 33, 14, 108, 10, 129, 32, 12, 111, 477 /* 3840 */ 8, 129, 32, 10, 113, 6, 129, 31, 10, 114, 478 /* 3850 */ 6, 129, 31, 8, 115, 5, 129, 30, 8, 116, 479 /* 3860 */ 5, 129, 30, 7, 116, 5, 129, 30, 6, 117, 480 /* 3870 */ 4, 130, 30, 5, 117, 4, 131, 30, 5, 75, 481 /* 3880 */ 4, 116, 5, 129, 31, 5, 75, 4, 116, 4, 482 /* 3890 */ 129, 31, 6, 75, 4, 115, 5, 129, 32, 7, 483 /* 3900 */ 75, 4, 114, 5, 129, 32, 9, 75, 4, 112, 484 /* 3910 */ 6, 129, 33, 11, 75, 4, 110, 7, 129, 34, 485 /* 3920 */ 15, 75, 4, 107, 9, 129, 35, 44, 103, 12, 486 /* 3930 */ 129, 36, 43, 103, 18, 129, 38, 41, 103, 18, 487 /* 3940 */ 129, 39, 40, 103, 18, 129, 41, 38, 103, 18, 488 /* 3950 */ 129, 44, 35, 129, 48, 31, 129, 52, 27, 129, 489 /* 3960 */ 61, 18, 129, 193, 129, 30, 4, 117, 4, 132, 490 /* 3970 */ 30, 91, 137, 30, 4, 80, 4, 117, 4, 132, 491 /* 3980 */ 80, 4, 140, 30, 4, 80, 4, 117, 4, 132, 492 /* 3990 */ 30, 91, 137, 30, 4, 117, 4, 132, 193, 129, 493 /* 4000 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, 494 /* 4010 */ 117, 4, 132, 193, 129, 44, 7, 129, 40, 13, 495 /* 4020 */ 129, 37, 17, 129, 35, 20, 129, 34, 22, 129, 496 /* 4030 */ 33, 23, 129, 32, 24, 129, 32, 23, 129, 31, 497 /* 4040 */ 6, 41, 13, 129, 31, 5, 42, 11, 129, 30, 498 /* 4050 */ 5, 44, 7, 129, 30, 4, 132, 30, 5, 130, 499 /* 4060 */ 31, 5, 129, 31, 6, 117, 4, 129, 31, 8, 500 /* 4070 */ 117, 4, 129, 32, 9, 117, 4, 129, 33, 11, 501 /* 4080 */ 117, 4, 129, 34, 87, 129, 35, 86, 129, 36, 502 /* 4090 */ 85, 129, 37, 84, 129, 38, 83, 129, 40, 81, 503 /* 4100 */ 129, 42, 79, 129, 45, 76, 129, 50, 71, 129, 504 /* 4110 */ 117, 4, 132, 193, 129, 30, 4, 117, 4, 132, 505 /* 4120 */ 30, 91, 137, 30, 4, 76, 8, 117, 4, 129, 506 /* 4130 */ 30, 4, 73, 13, 117, 4, 129, 30, 4, 70, 507 /* 4140 */ 18, 117, 4, 129, 30, 4, 67, 23, 117, 4, 508 /* 4150 */ 129, 65, 26, 129, 62, 31, 129, 59, 35, 129, 509 /* 4160 */ 56, 29, 89, 7, 129, 53, 29, 91, 7, 129, 510 /* 4170 */ 50, 29, 93, 7, 129, 47, 29, 95, 6, 129, 511 /* 4180 */ 30, 4, 45, 29, 96, 7, 129, 30, 4, 42, 512 /* 4190 */ 29, 98, 7, 129, 30, 4, 39, 30, 100, 6, 513 /* 4200 */ 129, 30, 4, 36, 30, 101, 7, 129, 30, 33, 514 /* 4210 */ 103, 7, 117, 4, 129, 30, 30, 105, 6, 117, 515 /* 4220 */ 4, 129, 30, 27, 106, 7, 117, 4, 129, 30, 516 /* 4230 */ 25, 108, 7, 117, 4, 129, 30, 22, 110, 11, 517 /* 4240 */ 129, 30, 19, 111, 10, 129, 30, 16, 113, 8, 518 /* 4250 */ 129, 30, 13, 115, 6, 129, 30, 11, 116, 5, 519 /* 4260 */ 129, 30, 8, 117, 4, 129, 30, 5, 117, 4, 520 /* 4270 */ 129, 30, 4, 117, 4, 130, 30, 4, 130, 193, 521 /* 4280 */ 129, 30, 4, 117, 4, 132, 30, 91, 137, 30, 522 /* 4290 */ 4, 117, 4, 132, 30, 4, 144, 30, 5, 130, 523 /* 4300 */ 30, 7, 129, 30, 8, 129, 30, 11, 129, 30, 524 /* 4310 */ 18, 132, 193, 129, 30, 4, 117, 4, 132, 30, 525 /* 4320 */ 91, 132, 30, 4, 103, 18, 129, 30, 4, 97, 526 /* 4330 */ 24, 129, 30, 4, 92, 29, 129, 30, 4, 87, 527 /* 4340 */ 34, 129, 81, 40, 129, 76, 45, 129, 70, 49, 528 /* 4350 */ 129, 65, 49, 129, 60, 49, 129, 55, 49, 129, 529 /* 4360 */ 50, 48, 129, 44, 49, 129, 39, 48, 129, 33, 530 /* 4370 */ 49, 129, 30, 47, 129, 34, 37, 129, 40, 26, 531 /* 4380 */ 129, 46, 19, 129, 52, 19, 129, 58, 19, 129, 532 /* 4390 */ 64, 19, 129, 70, 19, 129, 76, 19, 129, 82, 533 /* 4400 */ 19, 129, 30, 4, 88, 18, 129, 30, 4, 94, 534 /* 4410 */ 18, 129, 30, 4, 100, 18, 129, 30, 4, 106, 535 /* 4420 */ 15, 129, 30, 91, 137, 30, 4, 117, 4, 132, 536 /* 4430 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 132, 537 /* 4440 */ 30, 4, 107, 14, 129, 30, 4, 104, 17, 129, 538 /* 4450 */ 30, 4, 101, 20, 129, 30, 4, 99, 22, 129, 539 /* 4460 */ 96, 25, 129, 93, 28, 129, 91, 28, 129, 88, 540 /* 4470 */ 29, 129, 85, 29, 129, 82, 29, 129, 79, 29, 541 /* 4480 */ 129, 76, 29, 129, 74, 29, 129, 71, 29, 129, 542 /* 4490 */ 68, 29, 129, 65, 29, 129, 62, 29, 129, 60, 543 /* 4500 */ 29, 129, 57, 29, 129, 54, 29, 129, 51, 29, 544 /* 4510 */ 129, 49, 28, 129, 46, 29, 129, 43, 29, 129, 545 /* 4520 */ 40, 29, 117, 4, 129, 37, 29, 117, 4, 129, 546 /* 4530 */ 35, 29, 117, 4, 129, 32, 29, 117, 4, 129, 547 /* 4540 */ 30, 91, 132, 117, 4, 132, 193, 129, 63, 25, 548 /* 4550 */ 129, 57, 37, 129, 53, 45, 129, 50, 51, 129, 549 /* 4560 */ 47, 57, 129, 45, 61, 129, 43, 65, 129, 41, 550 /* 4570 */ 69, 129, 39, 73, 129, 38, 21, 92, 21, 129, 551 /* 4580 */ 36, 18, 97, 18, 129, 35, 14, 102, 14, 129, 552 /* 4590 */ 34, 11, 106, 11, 129, 33, 10, 108, 10, 129, 553 /* 4600 */ 32, 8, 111, 8, 129, 32, 6, 113, 6, 129, 554 /* 4610 */ 31, 6, 114, 6, 129, 31, 5, 115, 5, 129, 555 /* 4620 */ 30, 5, 116, 5, 130, 30, 4, 117, 4, 132, 556 /* 4630 */ 30, 5, 116, 5, 130, 31, 5, 115, 5, 129, 557 /* 4640 */ 31, 6, 114, 6, 129, 32, 6, 113, 6, 129, 558 /* 4650 */ 32, 8, 111, 8, 129, 33, 10, 108, 10, 129, 559 /* 4660 */ 34, 11, 106, 11, 129, 35, 14, 102, 14, 129, 560 /* 4670 */ 36, 18, 97, 18, 129, 38, 21, 92, 21, 129, 561 /* 4680 */ 39, 73, 129, 41, 69, 129, 43, 65, 129, 45, 562 /* 4690 */ 61, 129, 47, 57, 129, 50, 51, 129, 53, 45, 563 /* 4700 */ 129, 57, 37, 129, 63, 25, 129, 193, 129, 30, 564 /* 4710 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 80, 565 /* 4720 */ 4, 117, 4, 132, 80, 4, 117, 4, 134, 80, 566 /* 4730 */ 5, 116, 5, 131, 80, 6, 115, 6, 130, 81, 567 /* 4740 */ 6, 114, 6, 129, 81, 8, 112, 8, 129, 81, 568 /* 4750 */ 9, 111, 9, 129, 82, 10, 109, 10, 129, 82, 569 /* 4760 */ 13, 106, 13, 129, 83, 35, 129, 84, 33, 129, 570 /* 4770 */ 85, 31, 129, 86, 29, 129, 88, 25, 129, 90, 571 /* 4780 */ 21, 129, 93, 15, 129, 96, 9, 129, 193, 129, 572 /* 4790 */ 63, 25, 129, 57, 37, 129, 53, 45, 129, 50, 573 /* 4800 */ 51, 129, 47, 57, 129, 45, 61, 129, 43, 65, 574 /* 4810 */ 129, 41, 69, 129, 39, 73, 129, 38, 21, 92, 575 /* 4820 */ 21, 129, 36, 18, 97, 18, 129, 35, 14, 102, 576 /* 4830 */ 14, 129, 34, 11, 106, 11, 129, 33, 10, 108, 577 /* 4840 */ 10, 129, 32, 8, 111, 8, 129, 32, 6, 113, 578 /* 4850 */ 6, 129, 31, 6, 114, 6, 129, 31, 5, 115, 579 /* 4860 */ 5, 129, 30, 5, 116, 5, 130, 30, 4, 39, 580 /* 4870 */ 2, 117, 4, 129, 30, 4, 40, 4, 117, 4, 581 /* 4880 */ 129, 30, 4, 41, 5, 117, 4, 129, 30, 4, 582 /* 4890 */ 41, 6, 117, 4, 129, 30, 5, 40, 8, 116, 583 /* 4900 */ 5, 129, 30, 5, 39, 10, 116, 5, 129, 31, 584 /* 4910 */ 5, 38, 11, 115, 5, 129, 31, 18, 114, 6, 585 /* 4920 */ 129, 32, 17, 113, 6, 129, 32, 16, 111, 8, 586 /* 4930 */ 129, 33, 15, 108, 10, 129, 33, 14, 106, 11, 587 /* 4940 */ 129, 32, 17, 102, 14, 129, 31, 23, 97, 18, 588 /* 4950 */ 129, 31, 28, 92, 21, 129, 30, 82, 129, 30, 589 /* 4960 */ 80, 129, 30, 11, 43, 65, 129, 30, 10, 45, 590 /* 4970 */ 61, 129, 31, 8, 47, 57, 129, 32, 6, 50, 591 /* 4980 */ 51, 129, 33, 5, 53, 45, 129, 35, 4, 57, 592 /* 4990 */ 37, 129, 38, 2, 63, 25, 129, 193, 129, 30, 593 /* 5000 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 76, 594 /* 5010 */ 8, 117, 4, 129, 30, 4, 73, 11, 117, 4, 595 /* 5020 */ 129, 30, 4, 70, 14, 117, 4, 129, 30, 4, 596 /* 5030 */ 67, 17, 117, 4, 129, 65, 19, 117, 4, 129, 597 /* 5040 */ 62, 22, 117, 4, 129, 59, 25, 117, 4, 129, 598 /* 5050 */ 56, 28, 117, 4, 129, 53, 31, 117, 4, 129, 599 /* 5060 */ 50, 34, 117, 4, 129, 47, 29, 80, 5, 116, 600 /* 5070 */ 5, 129, 30, 4, 45, 29, 80, 5, 116, 5, 601 /* 5080 */ 129, 30, 4, 42, 29, 80, 5, 116, 5, 129, 602 /* 5090 */ 30, 4, 39, 30, 80, 6, 115, 6, 129, 30, 603 /* 5100 */ 4, 36, 30, 80, 6, 115, 6, 129, 30, 33, 604 /* 5110 */ 81, 6, 114, 6, 129, 30, 30, 81, 8, 112, 605 /* 5120 */ 8, 129, 30, 27, 81, 9, 111, 9, 129, 30, 606 /* 5130 */ 25, 82, 10, 109, 10, 129, 30, 22, 82, 13, 607 /* 5140 */ 106, 13, 129, 30, 19, 83, 35, 129, 30, 16, 608 /* 5150 */ 84, 33, 129, 30, 13, 85, 31, 129, 30, 11, 609 /* 5160 */ 86, 29, 129, 30, 8, 88, 25, 129, 30, 5, 610 /* 5170 */ 90, 21, 129, 30, 4, 93, 15, 129, 30, 4, 611 /* 5180 */ 96, 9, 129, 30, 4, 130, 193, 129, 30, 18, 612 /* 5190 */ 130, 30, 18, 89, 15, 129, 30, 18, 85, 23, 613 /* 5200 */ 129, 34, 11, 83, 27, 129, 34, 9, 81, 31, 614 /* 5210 */ 129, 33, 8, 79, 35, 129, 33, 6, 78, 16, 615 /* 5220 */ 106, 9, 129, 32, 6, 77, 15, 109, 7, 129, 616 /* 5230 */ 32, 5, 76, 14, 111, 6, 129, 31, 5, 75, 617 /* 5240 */ 14, 113, 5, 129, 31, 4, 74, 15, 114, 5, 618 /* 5250 */ 129, 31, 4, 74, 14, 115, 4, 129, 30, 4, 619 /* 5260 */ 73, 15, 116, 4, 129, 30, 4, 73, 14, 116, 620 /* 5270 */ 4, 129, 30, 4, 73, 14, 117, 4, 129, 30, 621 /* 5280 */ 4, 72, 15, 117, 4, 130, 30, 4, 71, 15, 622 /* 5290 */ 117, 4, 130, 30, 4, 70, 15, 117, 4, 129, 623 /* 5300 */ 30, 5, 70, 15, 117, 4, 129, 30, 5, 69, 624 /* 5310 */ 15, 116, 5, 129, 30, 6, 68, 16, 115, 5, 625 /* 5320 */ 129, 31, 6, 67, 16, 114, 6, 129, 31, 7, 626 /* 5330 */ 66, 17, 113, 6, 129, 32, 7, 64, 18, 111, 627 /* 5340 */ 8, 129, 32, 8, 62, 19, 109, 9, 129, 33, 628 /* 5350 */ 9, 60, 20, 107, 10, 129, 34, 11, 57, 22, 629 /* 5360 */ 103, 13, 129, 35, 43, 103, 18, 129, 36, 41, 630 /* 5370 */ 103, 18, 129, 38, 38, 103, 18, 129, 39, 35, 631 /* 5380 */ 103, 18, 129, 41, 31, 129, 43, 27, 129, 46, 632 /* 5390 */ 22, 129, 49, 14, 129, 193, 129, 103, 18, 132, 633 /* 5400 */ 110, 11, 129, 113, 8, 129, 114, 7, 129, 116, 634 /* 5410 */ 5, 130, 117, 4, 132, 30, 4, 117, 4, 132, 635 /* 5420 */ 30, 91, 137, 30, 4, 117, 4, 132, 117, 4, 636 /* 5430 */ 132, 116, 5, 130, 114, 7, 129, 113, 8, 129, 637 /* 5440 */ 110, 11, 129, 103, 18, 132, 193, 129, 117, 4, 638 /* 5450 */ 132, 56, 65, 129, 50, 71, 129, 46, 75, 129, 639 /* 5460 */ 44, 77, 129, 42, 79, 129, 40, 81, 129, 38, 640 /* 5470 */ 83, 129, 36, 85, 129, 35, 86, 129, 34, 20, 641 /* 5480 */ 117, 4, 129, 33, 17, 117, 4, 129, 32, 15, 642 /* 5490 */ 117, 4, 129, 32, 13, 117, 4, 129, 31, 12, 643 /* 5500 */ 129, 31, 10, 129, 31, 9, 129, 30, 9, 129, 644 /* 5510 */ 30, 8, 130, 30, 7, 132, 31, 6, 130, 31, 645 /* 5520 */ 7, 129, 32, 6, 129, 32, 7, 129, 33, 7, 646 /* 5530 */ 129, 34, 7, 129, 35, 8, 129, 36, 9, 117, 647 /* 5540 */ 4, 129, 38, 9, 117, 4, 129, 40, 10, 117, 648 /* 5550 */ 4, 129, 42, 12, 117, 4, 129, 44, 77, 129, 649 /* 5560 */ 46, 75, 129, 50, 71, 129, 56, 43, 100, 21, 650 /* 5570 */ 129, 117, 4, 132, 193, 129, 117, 4, 132, 115, 651 /* 5580 */ 6, 129, 110, 11, 129, 105, 16, 129, 101, 20, 652 /* 5590 */ 129, 96, 25, 129, 92, 29, 129, 87, 34, 129, 653 /* 5600 */ 83, 38, 129, 78, 43, 129, 74, 47, 129, 70, 654 /* 5610 */ 42, 117, 4, 129, 65, 42, 117, 4, 129, 60, 655 /* 5620 */ 43, 117, 4, 129, 56, 42, 129, 51, 42, 129, 656 /* 5630 */ 46, 43, 129, 42, 43, 129, 37, 44, 129, 33, 657 /* 5640 */ 43, 129, 30, 42, 129, 33, 34, 129, 38, 25, 658 /* 5650 */ 129, 42, 16, 129, 47, 15, 129, 52, 15, 129, 659 /* 5660 */ 57, 15, 129, 61, 16, 129, 66, 16, 129, 71, 660 /* 5670 */ 16, 129, 76, 16, 129, 80, 16, 129, 85, 16, 661 /* 5680 */ 117, 4, 129, 90, 16, 117, 4, 129, 95, 16, 662 /* 5690 */ 117, 4, 129, 100, 21, 129, 105, 16, 129, 110, 663 /* 5700 */ 11, 129, 114, 7, 129, 117, 4, 132, 193, 129, 664 /* 5710 */ 117, 4, 132, 115, 6, 129, 110, 11, 129, 105, 665 /* 5720 */ 16, 129, 101, 20, 129, 96, 25, 129, 92, 29, 666 /* 5730 */ 129, 87, 34, 129, 83, 38, 129, 78, 43, 129, 667 /* 5740 */ 74, 47, 129, 70, 42, 117, 4, 129, 65, 42, 668 /* 5750 */ 117, 4, 129, 60, 43, 117, 4, 129, 56, 42, 669 /* 5760 */ 129, 51, 42, 129, 46, 43, 129, 42, 43, 129, 670 /* 5770 */ 37, 44, 129, 33, 43, 129, 30, 42, 129, 33, 671 /* 5780 */ 34, 129, 38, 25, 129, 42, 16, 129, 47, 15, 672 /* 5790 */ 129, 52, 15, 129, 57, 15, 129, 61, 16, 129, 673 /* 5800 */ 65, 17, 129, 60, 27, 129, 56, 36, 129, 51, 674 /* 5810 */ 42, 129, 46, 43, 129, 42, 43, 129, 37, 44, 675 /* 5820 */ 129, 33, 43, 129, 30, 42, 129, 33, 34, 129, 676 /* 5830 */ 38, 25, 129, 42, 16, 129, 47, 15, 129, 52, 677 /* 5840 */ 15, 129, 57, 15, 129, 61, 16, 129, 66, 16, 678 /* 5850 */ 129, 71, 16, 129, 76, 16, 129, 80, 16, 129, 679 /* 5860 */ 85, 16, 117, 4, 129, 90, 16, 117, 4, 129, 680 /* 5870 */ 95, 16, 117, 4, 129, 100, 21, 129, 105, 16, 681 /* 5880 */ 129, 110, 11, 129, 114, 7, 129, 117, 4, 132, 682 /* 5890 */ 193, 129, 30, 4, 117, 4, 132, 30, 4, 115, 683 /* 5900 */ 6, 129, 30, 4, 112, 9, 129, 30, 6, 109, 684 /* 5910 */ 12, 129, 30, 9, 106, 15, 129, 30, 11, 103, 685 /* 5920 */ 18, 129, 30, 14, 100, 21, 129, 30, 4, 38, 686 /* 5930 */ 9, 98, 23, 129, 30, 4, 40, 10, 95, 26, 687 /* 5940 */ 129, 30, 4, 43, 9, 92, 29, 129, 46, 9, 688 /* 5950 */ 89, 32, 129, 49, 8, 86, 28, 117, 4, 129, 689 /* 5960 */ 51, 9, 83, 28, 117, 4, 129, 54, 9, 80, 690 /* 5970 */ 28, 117, 4, 129, 57, 8, 77, 28, 117, 4, 691 /* 5980 */ 129, 59, 9, 74, 28, 129, 62, 37, 129, 64, 692 /* 5990 */ 33, 129, 66, 28, 129, 63, 28, 129, 60, 28, 693 /* 6000 */ 129, 57, 28, 129, 54, 33, 129, 51, 39, 129, 694 /* 6010 */ 48, 29, 83, 9, 129, 30, 4, 45, 29, 86, 695 /* 6020 */ 9, 129, 30, 4, 42, 29, 89, 9, 129, 30, 696 /* 6030 */ 4, 39, 29, 92, 8, 129, 30, 4, 36, 29, 697 /* 6040 */ 94, 9, 129, 30, 32, 97, 9, 129, 30, 29, 698 /* 6050 */ 100, 8, 117, 4, 129, 30, 26, 103, 8, 117, 699 /* 6060 */ 4, 129, 30, 23, 105, 9, 117, 4, 129, 30, 700 /* 6070 */ 20, 108, 13, 129, 30, 18, 111, 10, 129, 30, 701 /* 6080 */ 15, 113, 8, 129, 30, 12, 116, 5, 129, 30, 702 /* 6090 */ 9, 117, 4, 129, 30, 6, 117, 4, 129, 30, 703 /* 6100 */ 4, 117, 4, 132, 193, 129, 117, 4, 132, 114, 704 /* 6110 */ 7, 129, 111, 10, 129, 108, 13, 129, 105, 16, 705 /* 6120 */ 129, 102, 19, 129, 100, 21, 129, 96, 25, 129, 706 /* 6130 */ 93, 28, 129, 90, 31, 129, 87, 34, 129, 84, 707 /* 6140 */ 30, 117, 4, 129, 30, 4, 81, 30, 117, 4, 708 /* 6150 */ 129, 30, 4, 78, 30, 117, 4, 129, 30, 4, 709 /* 6160 */ 75, 30, 117, 4, 129, 30, 4, 72, 30, 129, 710 /* 6170 */ 30, 69, 129, 30, 66, 129, 30, 63, 129, 30, 711 /* 6180 */ 60, 129, 30, 57, 129, 30, 54, 129, 30, 51, 712 /* 6190 */ 129, 30, 48, 129, 30, 51, 129, 30, 4, 73, 713 /* 6200 */ 12, 129, 30, 4, 76, 12, 129, 30, 4, 80, 714 /* 6210 */ 12, 129, 30, 4, 83, 12, 129, 87, 12, 129, 715 /* 6220 */ 90, 12, 117, 4, 129, 94, 11, 117, 4, 129, 716 /* 6230 */ 97, 12, 117, 4, 129, 101, 12, 117, 4, 129, 717 /* 6240 */ 104, 17, 129, 108, 13, 129, 111, 10, 129, 115, 718 /* 6250 */ 6, 129, 117, 4, 134, 193, 129, 30, 1, 103, 719 /* 6260 */ 18, 129, 30, 4, 103, 18, 129, 30, 7, 103, 720 /* 6270 */ 18, 129, 30, 9, 103, 18, 129, 30, 12, 110, 721 /* 6280 */ 11, 129, 30, 15, 113, 8, 129, 30, 18, 114, 722 /* 6290 */ 7, 129, 30, 21, 116, 5, 129, 30, 24, 116, 723 /* 6300 */ 5, 129, 30, 27, 117, 4, 129, 30, 30, 117, 724 /* 6310 */ 4, 129, 30, 33, 117, 4, 129, 30, 4, 37, 725 /* 6320 */ 28, 117, 4, 129, 30, 4, 40, 28, 117, 4, 726 /* 6330 */ 129, 30, 4, 42, 29, 117, 4, 129, 30, 4, 727 /* 6340 */ 45, 29, 117, 4, 129, 30, 4, 48, 29, 117, 728 /* 6350 */ 4, 129, 30, 4, 51, 29, 117, 4, 129, 30, 729 /* 6360 */ 4, 54, 29, 117, 4, 129, 30, 4, 57, 29, 730 /* 6370 */ 117, 4, 129, 30, 4, 59, 30, 117, 4, 129, 731 /* 6380 */ 30, 4, 62, 30, 117, 4, 129, 30, 4, 65, 732 /* 6390 */ 30, 117, 4, 129, 30, 4, 68, 30, 117, 4, 733 /* 6400 */ 129, 30, 4, 71, 30, 117, 4, 129, 30, 4, 734 /* 6410 */ 74, 30, 117, 4, 129, 30, 4, 77, 30, 117, 735 /* 6420 */ 4, 129, 30, 4, 80, 30, 117, 4, 129, 30, 736 /* 6430 */ 4, 83, 30, 117, 4, 129, 30, 4, 86, 35, 737 /* 6440 */ 129, 30, 4, 89, 32, 129, 30, 4, 91, 30, 738 /* 6450 */ 129, 30, 4, 94, 27, 129, 30, 5, 97, 24, 739 /* 6460 */ 129, 30, 5, 100, 21, 129, 30, 7, 103, 18, 740 /* 6470 */ 129, 30, 8, 106, 15, 129, 30, 11, 109, 12, 741 /* 6480 */ 129, 30, 18, 112, 9, 129, 30, 18, 115, 6, 742 /* 6490 */ 129, 30, 18, 117, 4, 129, 30, 18, 120, 1, 743 /* 6500 */ 129, 193, 129, 42, 8, 129, 38, 16, 129, 36, 744 /* 6510 */ 20, 129, 34, 24, 71, 5, 129, 33, 26, 69, 745 /* 6520 */ 10, 129, 32, 28, 68, 13, 129, 31, 30, 68, 746 /* 6530 */ 14, 129, 31, 9, 52, 9, 68, 15, 129, 30, 747 /* 6540 */ 8, 54, 8, 69, 14, 129, 30, 7, 55, 7, 748 /* 6550 */ 71, 4, 78, 6, 129, 30, 6, 56, 6, 79, 749 /* 6560 */ 5, 129, 30, 6, 56, 6, 80, 4, 130, 31, 750 /* 6570 */ 5, 56, 5, 80, 4, 129, 31, 5, 56, 5, 751 /* 6580 */ 79, 5, 129, 32, 5, 55, 5, 78, 6, 129, 752 /* 6590 */ 33, 5, 54, 5, 77, 7, 129, 34, 6, 52, 753 /* 6600 */ 6, 74, 9, 129, 35, 48, 129, 33, 49, 129, 754 /* 6610 */ 32, 49, 129, 31, 49, 129, 30, 49, 129, 30, 755 /* 6620 */ 47, 129, 30, 45, 129, 30, 41, 129, 30, 6, 756 /* 6630 */ 129, 30, 4, 129, 30, 3, 129, 30, 2, 129, 757 /* 6640 */ 193, 129, 30, 4, 117, 4, 130, 31, 90, 136, 758 /* 6650 */ 37, 5, 72, 5, 129, 35, 5, 74, 5, 129, 759 /* 6660 */ 33, 5, 76, 5, 129, 32, 5, 77, 5, 129, 760 /* 6670 */ 31, 5, 78, 5, 129, 31, 4, 79, 4, 129, 761 /* 6680 */ 30, 5, 79, 5, 131, 30, 6, 78, 6, 129, 762 /* 6690 */ 30, 7, 77, 7, 129, 31, 8, 75, 8, 129, 763 /* 6700 */ 31, 11, 72, 11, 129, 32, 15, 67, 15, 129, 764 /* 6710 */ 33, 48, 129, 34, 46, 129, 35, 44, 129, 37, 765 /* 6720 */ 40, 129, 39, 36, 129, 42, 30, 129, 46, 22, 766 /* 6730 */ 129, 193, 129, 48, 18, 129, 43, 28, 129, 41, 767 /* 6740 */ 32, 129, 39, 36, 129, 37, 40, 129, 35, 44, 768 /* 6750 */ 129, 34, 46, 129, 33, 13, 68, 13, 129, 32, 769 /* 6760 */ 9, 73, 9, 129, 32, 7, 75, 7, 129, 31, 770 /* 6770 */ 6, 77, 6, 129, 31, 5, 78, 5, 129, 30, 771 /* 6780 */ 5, 79, 5, 129, 30, 4, 80, 4, 133, 31, 772 /* 6790 */ 3, 79, 4, 129, 31, 4, 79, 4, 129, 32, 773 /* 6800 */ 3, 78, 4, 129, 32, 4, 76, 6, 129, 33, 774 /* 6810 */ 4, 74, 7, 129, 34, 4, 72, 8, 129, 35, 775 /* 6820 */ 5, 72, 7, 129, 37, 5, 73, 4, 129, 39, 776 /* 6830 */ 4, 74, 1, 129, 129, 193, 129, 46, 22, 129, 777 /* 6840 */ 42, 30, 129, 39, 36, 129, 37, 40, 129, 35, 778 /* 6850 */ 44, 129, 34, 46, 129, 33, 48, 129, 32, 15, 779 /* 6860 */ 67, 15, 129, 31, 11, 72, 11, 129, 31, 8, 780 /* 6870 */ 75, 8, 129, 30, 7, 77, 7, 129, 30, 6, 781 /* 6880 */ 78, 6, 129, 30, 5, 79, 5, 131, 31, 4, 782 /* 6890 */ 79, 4, 129, 31, 5, 78, 5, 129, 32, 5, 783 /* 6900 */ 77, 5, 129, 33, 5, 76, 5, 129, 35, 5, 784 /* 6910 */ 74, 5, 117, 4, 129, 37, 5, 72, 5, 117, 785 /* 6920 */ 4, 129, 30, 91, 136, 30, 4, 130, 193, 129, 786 /* 6930 */ 48, 18, 129, 43, 28, 129, 41, 32, 129, 39, 787 /* 6940 */ 36, 129, 37, 40, 129, 35, 44, 129, 34, 46, 788 /* 6950 */ 129, 33, 13, 55, 4, 68, 13, 129, 32, 9, 789 /* 6960 */ 55, 4, 73, 9, 129, 32, 7, 55, 4, 75, 790 /* 6970 */ 7, 129, 31, 6, 55, 4, 77, 6, 129, 31, 791 /* 6980 */ 5, 55, 4, 78, 5, 129, 30, 5, 55, 4, 792 /* 6990 */ 79, 5, 129, 30, 4, 55, 4, 80, 4, 132, 793 /* 7000 */ 30, 4, 55, 4, 79, 5, 129, 31, 3, 55, 794 /* 7010 */ 4, 78, 5, 129, 31, 4, 55, 4, 77, 6, 795 /* 7020 */ 129, 32, 3, 55, 4, 75, 7, 129, 32, 4, 796 /* 7030 */ 55, 4, 73, 9, 129, 33, 4, 55, 4, 68, 797 /* 7040 */ 13, 129, 34, 4, 55, 25, 129, 35, 5, 55, 798 /* 7050 */ 24, 129, 37, 5, 55, 22, 129, 39, 4, 55, 799 /* 7060 */ 20, 129, 55, 18, 129, 55, 16, 129, 55, 11, 800 /* 7070 */ 129, 193, 129, 80, 4, 129, 30, 4, 80, 4, 801 /* 7080 */ 130, 30, 78, 129, 30, 82, 129, 30, 85, 129, 802 /* 7090 */ 30, 87, 129, 30, 88, 129, 30, 89, 129, 30, 803 /* 7100 */ 90, 130, 30, 4, 80, 4, 115, 6, 129, 30, 804 /* 7110 */ 4, 80, 4, 117, 4, 129, 80, 4, 105, 6, 805 /* 7120 */ 117, 4, 129, 80, 4, 103, 10, 116, 5, 129, 806 /* 7130 */ 80, 4, 102, 19, 129, 80, 4, 101, 19, 129, 807 /* 7140 */ 101, 19, 129, 101, 18, 129, 102, 16, 129, 103, 808 /* 7150 */ 12, 129, 105, 6, 129, 193, 129, 12, 10, 59, 809 /* 7160 */ 11, 129, 9, 16, 55, 19, 129, 7, 20, 53, 810 /* 7170 */ 23, 129, 6, 7, 23, 5, 32, 6, 51, 27, 811 /* 7180 */ 129, 4, 7, 25, 16, 50, 29, 129, 3, 6, 812 /* 7190 */ 27, 16, 49, 31, 129, 2, 6, 28, 16, 48, 813 /* 7200 */ 33, 129, 1, 6, 27, 18, 47, 35, 129, 1, 814 /* 7210 */ 6, 27, 31, 71, 12, 129, 1, 5, 26, 15, 815 /* 7220 */ 44, 10, 75, 8, 129, 1, 5, 25, 14, 45, 816 /* 7230 */ 7, 77, 7, 129, 1, 5, 25, 13, 45, 5, 817 /* 7240 */ 79, 5, 129, 1, 5, 24, 14, 45, 4, 80, 818 /* 7250 */ 4, 129, 1, 5, 24, 13, 45, 4, 80, 4, 819 /* 7260 */ 129, 1, 5, 23, 14, 45, 4, 80, 4, 129, 820 /* 7270 */ 1, 5, 23, 13, 45, 4, 80, 4, 129, 1, 821 /* 7280 */ 6, 22, 13, 45, 5, 79, 5, 129, 1, 6, 822 /* 7290 */ 21, 14, 45, 7, 77, 7, 129, 1, 7, 21, 823 /* 7300 */ 13, 46, 8, 75, 8, 129, 1, 8, 20, 13, 824 /* 7310 */ 46, 12, 71, 12, 129, 1, 10, 18, 15, 47, 825 /* 7320 */ 35, 129, 2, 30, 48, 33, 129, 3, 29, 49, 826 /* 7330 */ 32, 129, 4, 27, 50, 31, 129, 5, 25, 51, 827 /* 7340 */ 27, 80, 2, 86, 4, 129, 7, 21, 53, 23, 828 /* 7350 */ 80, 3, 85, 6, 129, 9, 17, 55, 19, 80, 829 /* 7360 */ 12, 129, 12, 12, 59, 11, 81, 11, 129, 82, 830 /* 7370 */ 10, 129, 84, 7, 129, 86, 4, 129, 193, 129, 831 /* 7380 */ 30, 4, 117, 4, 130, 30, 91, 136, 30, 4, 832 /* 7390 */ 72, 5, 129, 30, 4, 74, 5, 129, 75, 5, 833 /* 7400 */ 129, 76, 5, 129, 76, 6, 129, 77, 6, 130, 834 /* 7410 */ 77, 7, 130, 76, 8, 129, 30, 4, 75, 9, 835 /* 7420 */ 129, 30, 4, 72, 12, 129, 30, 54, 129, 30, 836 /* 7430 */ 53, 130, 30, 52, 129, 30, 51, 129, 30, 49, 837 /* 7440 */ 129, 30, 46, 129, 30, 42, 129, 30, 4, 130, 838 /* 7450 */ 193, 129, 30, 4, 80, 4, 129, 30, 4, 80, 839 /* 7460 */ 4, 100, 6, 129, 30, 54, 98, 10, 129, 30, 840 /* 7470 */ 54, 97, 12, 129, 30, 54, 96, 14, 131, 30, 841 /* 7480 */ 54, 97, 12, 129, 30, 54, 98, 10, 129, 30, 842 /* 7490 */ 54, 100, 6, 129, 30, 4, 130, 193, 129, 7, 843 /* 7500 */ 6, 129, 4, 11, 129, 3, 13, 129, 2, 14, 844 /* 7510 */ 129, 1, 15, 130, 1, 3, 6, 9, 129, 1, 845 /* 7520 */ 3, 7, 6, 129, 1, 3, 130, 1, 4, 129, 846 /* 7530 */ 1, 5, 80, 4, 129, 1, 7, 80, 4, 100, 847 /* 7540 */ 6, 129, 2, 82, 98, 10, 129, 3, 81, 97, 848 /* 7550 */ 12, 129, 4, 80, 96, 14, 129, 5, 79, 96, 849 /* 7560 */ 14, 129, 7, 77, 96, 14, 129, 10, 74, 97, 850 /* 7570 */ 12, 129, 14, 70, 98, 10, 129, 19, 65, 100, 851 /* 7580 */ 6, 129, 193, 129, 30, 4, 117, 4, 130, 30, 852 /* 7590 */ 91, 136, 30, 4, 57, 9, 129, 30, 4, 55, 853 /* 7600 */ 12, 129, 52, 17, 129, 50, 20, 129, 48, 24, 854 /* 7610 */ 129, 46, 27, 129, 44, 21, 69, 6, 129, 41, 855 /* 7620 */ 22, 70, 6, 80, 4, 129, 30, 4, 39, 21, 856 /* 7630 */ 72, 6, 80, 4, 129, 30, 4, 36, 22, 73, 857 /* 7640 */ 11, 129, 30, 26, 75, 9, 129, 30, 23, 76, 858 /* 7650 */ 8, 129, 30, 21, 78, 6, 129, 30, 19, 79, 859 /* 7660 */ 5, 129, 30, 16, 80, 4, 129, 30, 14, 80, 860 /* 7670 */ 4, 129, 30, 12, 129, 30, 10, 129, 30, 7, 861 /* 7680 */ 129, 30, 5, 129, 30, 4, 130, 193, 129, 30, 862 /* 7690 */ 4, 117, 4, 130, 30, 91, 136, 30, 4, 130, 863 /* 7700 */ 193, 129, 30, 4, 80, 4, 130, 30, 54, 136, 864 /* 7710 */ 30, 4, 72, 5, 129, 30, 4, 74, 5, 129, 865 /* 7720 */ 75, 5, 129, 76, 5, 129, 30, 4, 75, 7, 866 /* 7730 */ 129, 30, 4, 74, 9, 129, 30, 54, 132, 30, 867 /* 7740 */ 53, 129, 30, 52, 129, 30, 51, 129, 30, 48, 868 /* 7750 */ 129, 30, 4, 72, 5, 129, 30, 4, 74, 5, 869 /* 7760 */ 129, 75, 5, 129, 76, 5, 129, 30, 4, 75, 870 /* 7770 */ 7, 129, 30, 4, 74, 9, 129, 30, 54, 132, 871 /* 7780 */ 30, 53, 129, 30, 52, 129, 30, 51, 129, 30, 872 /* 7790 */ 48, 129, 30, 4, 130, 193, 129, 30, 4, 80, 873 /* 7800 */ 4, 130, 30, 54, 136, 30, 4, 72, 5, 129, 874 /* 7810 */ 30, 4, 74, 5, 129, 75, 5, 129, 76, 5, 875 /* 7820 */ 129, 76, 6, 129, 77, 6, 130, 77, 7, 130, 876 /* 7830 */ 76, 8, 129, 30, 4, 75, 9, 129, 30, 4, 877 /* 7840 */ 72, 12, 129, 30, 54, 129, 30, 53, 130, 30, 878 /* 7850 */ 52, 129, 30, 51, 129, 30, 49, 129, 30, 46, 879 /* 7860 */ 129, 30, 42, 129, 30, 4, 130, 193, 129, 48, 880 /* 7870 */ 18, 129, 43, 28, 129, 41, 32, 129, 39, 36, 881 /* 7880 */ 129, 37, 40, 129, 35, 44, 129, 34, 46, 129, 882 /* 7890 */ 33, 13, 68, 13, 129, 32, 9, 73, 9, 129, 883 /* 7900 */ 32, 7, 75, 7, 129, 31, 6, 77, 6, 129, 884 /* 7910 */ 31, 5, 78, 5, 129, 30, 5, 79, 5, 129, 885 /* 7920 */ 30, 4, 80, 4, 132, 30, 5, 79, 5, 130, 886 /* 7930 */ 31, 5, 78, 5, 129, 31, 6, 77, 6, 129, 887 /* 7940 */ 32, 7, 75, 7, 129, 32, 9, 73, 9, 129, 888 /* 7950 */ 33, 13, 68, 13, 129, 34, 46, 129, 35, 44, 889 /* 7960 */ 129, 37, 40, 129, 39, 36, 129, 41, 32, 129, 890 /* 7970 */ 43, 28, 129, 48, 18, 129, 193, 129, 1, 3, 891 /* 7980 */ 80, 4, 130, 1, 83, 137, 37, 5, 72, 5, 892 /* 7990 */ 129, 35, 5, 74, 5, 129, 33, 5, 76, 5, 893 /* 8000 */ 129, 32, 5, 77, 5, 129, 31, 5, 78, 5, 894 /* 8010 */ 129, 31, 4, 79, 4, 129, 30, 5, 79, 5, 895 /* 8020 */ 131, 30, 6, 78, 6, 129, 30, 7, 77, 7, 896 /* 8030 */ 129, 31, 8, 75, 8, 129, 31, 11, 72, 11, 897 /* 8040 */ 129, 32, 15, 67, 15, 129, 33, 48, 129, 34, 898 /* 8050 */ 46, 129, 35, 44, 129, 37, 40, 129, 39, 36, 899 /* 8060 */ 129, 42, 30, 129, 46, 22, 129, 193, 129, 46, 900 /* 8070 */ 22, 129, 42, 30, 129, 39, 36, 129, 37, 40, 901 /* 8080 */ 129, 35, 44, 129, 34, 46, 129, 33, 48, 129, 902 /* 8090 */ 32, 15, 67, 15, 129, 31, 11, 72, 11, 129, 903 /* 8100 */ 31, 8, 75, 8, 129, 30, 7, 77, 7, 129, 904 /* 8110 */ 30, 6, 78, 6, 129, 30, 5, 79, 5, 131, 905 /* 8120 */ 31, 4, 79, 4, 129, 31, 5, 78, 5, 129, 906 /* 8130 */ 32, 5, 77, 5, 129, 33, 5, 76, 5, 129, 907 /* 8140 */ 35, 5, 74, 5, 129, 37, 5, 72, 5, 129, 908 /* 8150 */ 1, 83, 136, 1, 3, 80, 4, 130, 193, 129, 909 /* 8160 */ 30, 4, 80, 4, 130, 30, 54, 136, 30, 4, 910 /* 8170 */ 68, 6, 129, 30, 4, 70, 6, 129, 71, 7, 911 /* 8180 */ 129, 72, 7, 129, 73, 7, 129, 74, 7, 129, 912 /* 8190 */ 74, 8, 129, 75, 8, 130, 69, 15, 129, 67, 913 /* 8200 */ 17, 129, 66, 18, 129, 65, 19, 130, 65, 18, 914 /* 8210 */ 130, 66, 16, 129, 67, 13, 129, 69, 8, 129, 915 /* 8220 */ 193, 129, 30, 13, 64, 8, 129, 30, 13, 61, 916 /* 8230 */ 14, 129, 30, 13, 59, 18, 129, 30, 13, 57, 917 /* 8240 */ 22, 129, 33, 8, 56, 24, 129, 32, 7, 55, 918 /* 8250 */ 26, 129, 32, 6, 54, 28, 129, 31, 6, 53, 919 /* 8260 */ 16, 77, 6, 129, 31, 5, 53, 14, 79, 4, 920 /* 8270 */ 129, 30, 5, 52, 14, 80, 4, 129, 30, 5, 921 /* 8280 */ 52, 13, 80, 4, 129, 30, 4, 52, 13, 80, 922 /* 8290 */ 4, 129, 30, 4, 52, 12, 80, 4, 129, 30, 923 /* 8300 */ 4, 51, 13, 80, 4, 130, 30, 4, 50, 13, 924 /* 8310 */ 79, 5, 129, 30, 4, 50, 13, 78, 5, 129, 925 /* 8320 */ 30, 5, 49, 14, 77, 6, 129, 31, 4, 49, 926 /* 8330 */ 13, 76, 6, 129, 31, 5, 48, 14, 75, 7, 927 /* 8340 */ 129, 32, 5, 47, 14, 73, 8, 129, 32, 6, 928 /* 8350 */ 45, 16, 71, 13, 129, 33, 27, 71, 13, 129, 929 /* 8360 */ 34, 26, 71, 13, 129, 35, 24, 71, 13, 129, 930 /* 8370 */ 37, 20, 129, 39, 16, 129, 43, 9, 129, 193, 931 /* 8380 */ 129, 80, 4, 131, 41, 56, 129, 37, 60, 129, 932 /* 8390 */ 35, 62, 129, 33, 64, 129, 32, 65, 129, 31, 933 /* 8400 */ 66, 129, 30, 67, 130, 30, 11, 80, 4, 129, 934 /* 8410 */ 30, 9, 80, 4, 129, 30, 8, 80, 4, 129, 935 /* 8420 */ 31, 7, 80, 4, 129, 31, 6, 129, 32, 5, 936 /* 8430 */ 129, 33, 5, 129, 35, 4, 129, 38, 3, 129, 937 /* 8440 */ 193, 129, 80, 4, 130, 42, 42, 129, 38, 46, 938 /* 8450 */ 129, 35, 49, 129, 33, 51, 129, 32, 52, 129, 939 /* 8460 */ 31, 53, 130, 30, 54, 129, 30, 12, 129, 30, 940 /* 8470 */ 9, 129, 30, 8, 129, 30, 7, 130, 31, 6, 941 /* 8480 */ 130, 32, 6, 129, 33, 5, 129, 34, 5, 129, 942 /* 8490 */ 35, 5, 80, 4, 129, 37, 5, 80, 4, 129, 943 /* 8500 */ 30, 54, 136, 30, 4, 130, 193, 129, 80, 4, 944 /* 8510 */ 130, 77, 7, 129, 74, 10, 129, 70, 14, 129, 945 /* 8520 */ 66, 18, 129, 62, 22, 129, 59, 25, 129, 55, 946 /* 8530 */ 29, 129, 51, 33, 129, 47, 37, 129, 44, 32, 947 /* 8540 */ 80, 4, 129, 40, 32, 80, 4, 129, 36, 32, 948 /* 8550 */ 129, 32, 33, 129, 30, 31, 129, 33, 24, 129, 949 /* 8560 */ 36, 17, 129, 40, 12, 129, 44, 12, 129, 48, 950 /* 8570 */ 12, 129, 51, 13, 129, 55, 13, 129, 59, 13, 951 /* 8580 */ 80, 4, 129, 63, 13, 80, 4, 129, 67, 17, 952 /* 8590 */ 129, 71, 13, 129, 74, 10, 129, 78, 6, 129, 953 /* 8600 */ 80, 4, 131, 193, 129, 80, 4, 130, 77, 7, 954 /* 8610 */ 129, 74, 10, 129, 70, 14, 129, 66, 18, 129, 955 /* 8620 */ 62, 22, 129, 59, 25, 129, 55, 29, 129, 51, 956 /* 8630 */ 33, 129, 47, 37, 129, 44, 32, 80, 4, 129, 957 /* 8640 */ 40, 32, 80, 4, 129, 36, 32, 129, 32, 33, 958 /* 8650 */ 129, 30, 31, 129, 33, 24, 129, 36, 17, 129, 959 /* 8660 */ 40, 12, 129, 44, 12, 129, 47, 13, 129, 44, 960 /* 8670 */ 20, 129, 40, 28, 129, 36, 31, 129, 32, 32, 961 /* 8680 */ 129, 30, 30, 129, 33, 24, 129, 36, 17, 129, 962 /* 8690 */ 40, 12, 129, 44, 12, 129, 48, 12, 129, 51, 963 /* 8700 */ 13, 129, 55, 13, 129, 59, 13, 80, 4, 129, 964 /* 8710 */ 63, 13, 80, 4, 129, 67, 17, 129, 71, 13, 965 /* 8720 */ 129, 74, 10, 129, 78, 6, 129, 80, 4, 131, 966 /* 8730 */ 193, 129, 30, 4, 80, 4, 130, 30, 4, 79, 967 /* 8740 */ 5, 129, 30, 5, 77, 7, 129, 30, 6, 74, 968 /* 8750 */ 10, 129, 30, 8, 72, 12, 129, 30, 11, 69, 969 /* 8760 */ 15, 129, 30, 13, 67, 17, 129, 30, 4, 37, 970 /* 8770 */ 8, 64, 20, 129, 30, 4, 39, 8, 62, 22, 971 /* 8780 */ 129, 41, 8, 59, 25, 129, 43, 8, 57, 27, 972 /* 8790 */ 129, 45, 8, 55, 22, 80, 4, 129, 47, 27, 973 /* 8800 */ 80, 4, 129, 49, 23, 129, 47, 22, 129, 44, 974 /* 8810 */ 23, 129, 42, 22, 129, 30, 4, 39, 27, 129, 975 /* 8820 */ 30, 4, 37, 31, 129, 30, 27, 62, 8, 129, 976 /* 8830 */ 30, 25, 64, 8, 129, 30, 22, 66, 8, 80, 977 /* 8840 */ 4, 129, 30, 20, 68, 8, 80, 4, 129, 30, 978 /* 8850 */ 17, 70, 8, 80, 4, 129, 30, 15, 73, 11, 979 /* 8860 */ 129, 30, 12, 75, 9, 129, 30, 10, 77, 7, 980 /* 8870 */ 129, 30, 7, 79, 5, 129, 30, 5, 80, 4, 981 /* 8880 */ 129, 30, 4, 80, 4, 130, 193, 129, 4, 5, 982 /* 8890 */ 80, 4, 129, 2, 9, 80, 4, 129, 1, 11, 983 /* 8900 */ 77, 7, 129, 1, 12, 74, 10, 129, 1, 12, 984 /* 8910 */ 70, 14, 129, 1, 12, 66, 18, 129, 1, 11, 985 /* 8920 */ 62, 22, 129, 2, 9, 59, 25, 129, 4, 11, 986 /* 8930 */ 55, 29, 129, 7, 12, 51, 33, 129, 10, 12, 987 /* 8940 */ 47, 37, 129, 14, 12, 44, 32, 80, 4, 129, 988 /* 8950 */ 17, 13, 40, 32, 80, 4, 129, 21, 13, 36, 989 /* 8960 */ 32, 129, 25, 40, 129, 29, 32, 129, 33, 24, 990 /* 8970 */ 129, 36, 17, 129, 40, 12, 129, 44, 12, 129, 991 /* 8980 */ 48, 12, 129, 51, 13, 129, 55, 13, 129, 59, 992 /* 8990 */ 13, 80, 4, 129, 63, 13, 80, 4, 129, 67, 993 /* 9000 */ 17, 129, 71, 13, 129, 74, 10, 129, 78, 6, 994 /* 9010 */ 129, 80, 4, 131, 193, 129, 30, 1, 71, 13, 995 /* 9020 */ 129, 30, 3, 71, 13, 129, 30, 6, 71, 13, 996 /* 9030 */ 129, 30, 9, 75, 9, 129, 30, 11, 77, 7, 997 /* 9040 */ 129, 30, 14, 79, 5, 129, 30, 17, 79, 5, 998 /* 9050 */ 129, 30, 19, 80, 4, 129, 30, 22, 80, 4, 999 /* 9060 */ 129, 30, 25, 80, 4, 129, 30, 27, 80, 4, 1000 /* 9070 */ 129, 30, 4, 36, 24, 80, 4, 129, 30, 4, 1001 /* 9080 */ 38, 25, 80, 4, 129, 30, 4, 41, 24, 80, 1002 /* 9090 */ 4, 129, 30, 4, 44, 24, 80, 4, 129, 30, 1003 /* 9100 */ 4, 46, 25, 80, 4, 129, 30, 4, 49, 25, 1004 /* 9110 */ 80, 4, 129, 30, 4, 52, 24, 80, 4, 129, 1005 /* 9120 */ 30, 4, 54, 30, 129, 30, 4, 57, 27, 129, 1006 /* 9130 */ 30, 4, 59, 25, 129, 30, 4, 62, 22, 129, 1007 /* 9140 */ 30, 4, 65, 19, 129, 30, 5, 67, 17, 129, 1008 /* 9150 */ 30, 5, 70, 14, 129, 30, 7, 73, 11, 129, 1009 /* 9160 */ 30, 9, 76, 8, 129, 30, 13, 78, 6, 129, 1010 /* 9170 */ 30, 13, 81, 3, 129, 30, 13, 129, 193, 2, 1011 /* 9180 */ 9, 59, 25, 129, 4, 11, 55, 29, 129, 7, 1012 /* 9190 */ 12, 51, 33, 129, 10, 12, 47, 37, 129, 14, 1013 /* 9200 */ 12, 44, 32, 80, 4, 129, 17, 13, 40, 32, 1014 /* 9210 */ 80, 4, 129, 21, 13, 36, 32, 129, 25, 40, 1015 /* 9220 */ 129, 29, 32, 129, 33, 24, 129, 36, 17, 129, 1016 /* 9230 */ 40, 12, 129, 44, 12, 129, 48, 12, 129, 51, 1017 /* 9240 */ 13, 129, 55, 13, 129, 59, 13, 80, 4, 129, 1018 /* 9250 */ 63, 13, 80, 4, 129, 67, 17, 129, 71, 13, 1019 /* 9260 */ 129, 74, 10, 129, 78, 6, 129, 80, 4, 131, 1020 /* 9270 */ 193 1021 }; 1022 1023 static char line[DWIDTH]; 1024 static char *message; 1025 static char print[DWIDTH]; 1026 static int debug, i, j, linen, max, nchars, pc, term, trace, x, y; 1027 static int width = DWIDTH; /* -w option: scrunch letters to 80 columns */ 1028 1029 static void usage(void) __dead2; 1030 1031 int 1032 main(int argc, char *argv[]) 1033 { 1034 int ch; 1035 1036 while ((ch = getopt(argc, argv, "w:td")) != -1) 1037 switch (ch) { 1038 case 'd': 1039 debug = 1; 1040 break; 1041 case 't': 1042 trace = 1; 1043 break; 1044 case 'w': 1045 width = atoi(optarg); 1046 if (width <= 0 || width > DWIDTH) 1047 errx(1, "illegal argument for -w option"); 1048 break; 1049 case '?': 1050 default: 1051 usage(); 1052 } 1053 argc -= optind; 1054 argv += optind; 1055 1056 for (i = 0; i < width; i++) { 1057 j = i * DWIDTH / width; 1058 print[j] = 1; 1059 } 1060 1061 /* Have now read in the data. Next get the message to be printed. */ 1062 if (*argv) { 1063 for(i=0, j=0; i < argc; i++) 1064 j += strlen(argv[i]) + 1; 1065 if ((message = malloc((size_t)j)) == NULL) 1066 err(1, "malloc"); 1067 strlcpy(message, *argv, j); 1068 while (*++argv) { 1069 strlcat(message, " ", j); 1070 strlcat(message, *argv, j); 1071 } 1072 nchars = strlen(message); 1073 } else { 1074 if ((message = malloc((size_t)MAXMSG)) == NULL) 1075 err(1, "malloc"); 1076 fprintf(stderr,"Message: "); 1077 if (fgets(message, MAXMSG, stdin) == NULL) { 1078 nchars = 0; 1079 message[0] = '\0'; 1080 } else { 1081 nchars = strlen(message); 1082 1083 /* Get rid of newline. */ 1084 if (message[nchars - 1] == '\n') 1085 message[--nchars] = '\0'; 1086 } 1087 } 1088 1089 /* some debugging print statements */ 1090 if (debug) { 1091 printf("const int asc_ptr[NCHARS] = {\n"); 1092 for (i = 0; i < 128; i++) { 1093 printf("%4d, ",asc_ptr[i]); 1094 if ((i+1) % 8 == 0) 1095 printf("\n"); 1096 } 1097 printf("};\nconst unsigned char data_table[NBYTES] = {\n"); 1098 printf("/* "); 1099 for (i = 0; i < 10; i++) printf(" %3d ",i); 1100 printf("*/\n"); 1101 for (i = 0; i < NBYTES; i += 10) { 1102 printf("/* %4d */ ",i); 1103 for (j = i; j < i+10; j++) { 1104 x = data_table[j] & 0377; 1105 printf(" %3d, ",x); 1106 } 1107 putchar('\n'); 1108 } 1109 printf("};\n"); 1110 } 1111 1112 /* check message to make sure it's legal */ 1113 j = 0; 1114 for (i = 0; i < nchars; i++) 1115 if ((u_char) message[i] >= NCHARS || 1116 asc_ptr[(u_char) message[i]] == 0) { 1117 warnx("the character '%c' is not in my character set", 1118 message[i]); 1119 j++; 1120 } 1121 if (j) 1122 exit(1); 1123 1124 if (trace) 1125 printf("Message '%s' is OK\n",message); 1126 /* Now have message. Print it one character at a time. */ 1127 1128 for (i = 0; i < nchars; i++) { 1129 if (trace) 1130 printf("Char #%d: %c\n", i, message[i]); 1131 for (j = 0; j < DWIDTH; j++) line[j] = ' '; 1132 pc = asc_ptr[(u_char) message[i]]; 1133 term = 0; 1134 max = 0; 1135 linen = 0; 1136 while (!term) { 1137 if (pc < 0 || pc > NBYTES) { 1138 printf("bad pc: %d\n",pc); 1139 exit(1); 1140 } 1141 x = data_table[pc] & 0377; 1142 if (trace) 1143 printf("pc=%d, term=%d, max=%d, linen=%d, x=%d\n",pc,term,max,linen,x); 1144 if (x >= 128) { 1145 if (x>192) term++; 1146 x = x & 63; 1147 while (x--) { 1148 if (print[linen++]) { 1149 for (j=0; j <= max; j++) 1150 if (print[j]) 1151 putchar(line[j]); 1152 putchar('\n'); 1153 } 1154 } 1155 for (j = 0; j < DWIDTH; j++) line[j] = ' '; 1156 pc++; 1157 } 1158 else { 1159 y = data_table[pc+1]; 1160 /* compensate for narrow teminals */ 1161 #ifdef notdef 1162 x = (x*width + (DWIDTH/2)) / DWIDTH; 1163 y = (y*width + (DWIDTH/2)) / DWIDTH; 1164 #endif 1165 max = x+y; 1166 while (x < max) line[x++] = '#'; 1167 pc += 2; 1168 if (trace) 1169 printf("x=%d, y=%d, max=%d\n",x,y,max); 1170 } 1171 } 1172 } 1173 1174 free(message); 1175 exit(0); 1176 } 1177 1178 static void 1179 usage(void) 1180 { 1181 fprintf(stderr, "usage: banner [-d] [-t] [-w width] message ...\n"); 1182 exit(1); 1183 } 1184