1 /* pwritf.f -- translated by f2c (version 19961017).
2 You must link the resulting object file with the libraries:
3 -lf2c -lm (in that order)
4 */
5
6 #include "f2c.h"
7
8 /* Common Block Declarations */
9
10 struct {
11 real xpgmin, ypgmin, xpgmax, ypgmax, xclbot, yclbot, xcltop, ycltop, xbot,
12 ybot, xtop, ytop, xmin, ymin, xmax, ymax;
13 integer ixcoor, iycoor;
14 real alphxx, betaxx, alphyy, betayy, tmajx, tminx, tmajy, tminy;
15 integer majrx, minrx, majry, minry, isizx, isizy;
16 real xphold, yphold;
17 } zzzplt_;
18
19 #define zzzplt_1 zzzplt_
20
21 struct {
22 real xphmax, yphmax;
23 integer ixpmax, iypmax;
24 real xpscal, ypscal;
25 integer iflip, nplotr;
26 char cfile[64];
27 } zzpltr_;
28
29 #define zzpltr_1 zzpltr_
30
31
32
33
pwritf_(real * x,real * y,char * ch,integer * nch,integer * isiz,integer * ior,integer * icent,ftnlen ch_len)34 /* Subroutine */ int pwritf_(real *x, real *y, char *ch, integer *nch,
35 integer *isiz, integer *ior, integer *icent, ftnlen ch_len)
36 {
37 /* System generated locals */
38 integer i__1, i__2;
39 real r__1, r__2, r__3;
40
41 /* Builtin functions */
42 double cos(doublereal), sin(doublereal);
43
44 /* Local variables */
45 static real xold, yold, size, xorg, yorg;
46 static integer lstr[69999], nstr;
47 static real xstr[69999], ystr[69999];
48 static integer i__;
49 static char chloc[6666];
50 static integer nchar;
51 extern /* Subroutine */ int color_(integer *);
52 static integer isize;
53 static real bb, gg, ct, rr;
54 static integer nchloc;
55 static real st, xr, yr, xx, yy;
56 extern integer lastnb_(char *, ftnlen);
57 extern /* Subroutine */ int fcolor_(real *, real *, real *), zzline_(real
58 *, real *, real *, real *), zzconv_(char *, integer *, char *,
59 integer *, ftnlen, ftnlen), zzphys_(real *, real *), zzstro_(char
60 *, integer *, integer *, real *, real *, integer *, ftnlen);
61 static real rgb, orr;
62
63
64
65
66 /* .......................................................................
67 */
68
69 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
70 */
71 /* Calculate character width in terms of 1/1000 of the x-width. */
72
73
74 /* Internal Data for PLOTPAK */
75
76 isize = *isiz;
77 if (isize <= 0) {
78 isize = 8;
79 } else if (isize == 1) {
80 isize = 12;
81 } else if (isize == 2) {
82 isize = 16;
83 } else if (isize == 3) {
84 isize = 24;
85 }
86
87 size = isize * .001f * (zzzplt_1.xpgmax - zzzplt_1.xpgmin);
88
89 /* Rotation/scaling factors for digitization */
90
91 orr = *ior * .017453292f;
92 ct = size * cos(orr);
93 st = size * sin(orr);
94
95 /* Base location, in internal coordinates */
96
97 xx = *x;
98 yy = *y;
99 if (*nch >= 0) {
100 zzphys_(&xx, &yy);
101 }
102
103 /* Get no. of characters in string. Special option 999 must be checked.
104 */
105
106 nchar = abs(*nch);
107 if (nchar == 999) {
108 i__1 = nchar;
109 for (i__ = 1; i__ <= i__1; ++i__) {
110 if (*(unsigned char *)&ch[i__ - 1] == '\0') {
111 goto L20;
112 }
113 /* L10: */
114 }
115 L20:
116 nchar = i__ - 1;
117 } else if (nchar == 0) {
118 nchar = lastnb_(ch, ch_len);
119 }
120
121 /* Digitize string into line segments */
122
123 zzconv_(ch, &nchar, chloc, &nchloc, ch_len, 6666L);
124 zzstro_(chloc, &nchloc, &nstr, xstr, ystr, lstr, 6666L);
125 if (nstr <= 0) {
126 return 0;
127 }
128
129 /* Find min, max of x and y [edited 11 May 2018] */
130
131 zzzplt_1.xbot = 6.66e33f;
132 zzzplt_1.ybot = zzzplt_1.xbot;
133 zzzplt_1.xtop = -zzzplt_1.xbot;
134 zzzplt_1.ytop = -zzzplt_1.ybot;
135 i__1 = nstr;
136 for (i__ = 2; i__ <= i__1; ++i__) {
137 if (lstr[i__ - 1] == 1) {
138 /* Computing MIN */
139 r__1 = zzzplt_1.xbot, r__2 = xstr[i__ - 1], r__1 = min(r__1,r__2),
140 r__2 = xstr[i__ - 2];
141 zzzplt_1.xbot = dmin(r__1,r__2);
142 /* Computing MAX */
143 r__1 = zzzplt_1.xtop, r__2 = xstr[i__ - 1], r__1 = max(r__1,r__2),
144 r__2 = xstr[i__ - 2];
145 zzzplt_1.xtop = dmax(r__1,r__2);
146 /* Computing MIN */
147 r__1 = zzzplt_1.ybot, r__2 = ystr[i__ - 1], r__1 = min(r__1,r__2),
148 r__2 = ystr[i__ - 2];
149 zzzplt_1.ybot = dmin(r__1,r__2);
150 /* Computing MAX */
151 r__1 = zzzplt_1.ytop, r__2 = ystr[i__ - 1], r__1 = max(r__1,r__2),
152 r__2 = ystr[i__ - 2];
153 zzzplt_1.ytop = dmax(r__1,r__2);
154 }
155 /* L100: */
156 }
157 if (zzzplt_1.xbot > zzzplt_1.xtop || zzzplt_1.ybot > zzzplt_1.ytop) {
158 return 0;
159 }
160
161 /* Now compute origin of string, based on centering option; */
162 /* the origin of the string goes at (XX,YY) */
163
164 if (*icent == -1) {
165 xorg = zzzplt_1.xbot;
166 yorg = (zzzplt_1.ybot + zzzplt_1.ytop) * .5f;
167 } else if (*icent == 0) {
168 xorg = (zzzplt_1.xbot + zzzplt_1.xtop) * .5f;
169 yorg = (zzzplt_1.ybot + zzzplt_1.ytop) * .5f;
170 } else if (*icent == 1) {
171 xorg = zzzplt_1.xtop;
172 yorg = (zzzplt_1.ybot + zzzplt_1.ytop) * .5f;
173 } else if (*icent == -3) {
174 xorg = dmax(zzzplt_1.xbot,0.f);
175 yorg = dmax(zzzplt_1.ybot,0.f);
176 } else {
177 xorg = zzzplt_1.xbot;
178 yorg = zzzplt_1.ybot;
179 }
180
181 /* Now draw the strokes */
182
183 i__1 = nstr;
184 for (i__ = 1; i__ <= i__1; ++i__) {
185 if (lstr[i__ - 1] <= 1) {
186 xr = xx + ct * (xstr[i__ - 1] - xorg) - st * (ystr[i__ - 1] -
187 yorg);
188 yr = yy + st * (xstr[i__ - 1] - xorg) + ct * (ystr[i__ - 1] -
189 yorg);
190 if (lstr[i__ - 1] == 1) {
191 zzline_(&xold, &yold, &xr, &yr);
192 }
193 xold = xr;
194 yold = yr;
195 } else if (lstr[i__ - 1] > 100 && lstr[i__ - 1] <= 107) {
196 i__2 = lstr[i__ - 1] - 100;
197 color_(&i__2);
198 } else if (lstr[i__ - 1] == 110) {
199 rgb = xstr[i__ - 1];
200 rr = (real) ((integer) (rgb / 256.f));
201 rgb -= rr * 256.f;
202 gg = (real) ((integer) (rgb / 16.f));
203 rgb -= gg * 16.f;
204 bb = rgb;
205 r__1 = rr * .066666f;
206 r__2 = gg * .066666f;
207 r__3 = bb * .066666f;
208 fcolor_(&r__1, &r__2, &r__3);
209 }
210 /* L200: */
211 }
212
213 zzzplt_1.xphold = xold;
214 zzzplt_1.yphold = yold;
215 return 0;
216 } /* pwritf_ */
217
218
219
220
lastnb_(char * cline,ftnlen cline_len)221 integer lastnb_(char *cline, ftnlen cline_len)
222 {
223 /* System generated locals */
224 integer ret_val;
225
226 /* Builtin functions */
227 integer i_len(char *, ftnlen);
228
229 /* Local variables */
230 static integer npos;
231
232
233 /* Return the position of the last nonblank character in the input */
234 /* character string. CLINE is CHARACTER*(*). Even if CLINE is all */
235 /* blanks, LASTNB will be returned as 1 so that operations of the */
236 /* form CLINE(1:LASTNB) won't be garbage. */
237
238
239 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
240 */
241
242 /* Start at the end and work backwards until a nonblank is found. */
243 /* Loop back to 100 to check position # NPOS each time. */
244
245 npos = i_len(cline, cline_len);
246 L100:
247 /* quit if at the beginning */
248 if (npos <= 1) {
249 goto L200;
250 }
251 /* quit if not a blank or a null */
252 if (*(unsigned char *)&cline[npos - 1] != ' ' && *(unsigned char *)&cline[
253 npos - 1] != '\0') {
254 goto L200;
255 }
256 /* move back one position and try again */
257 --npos;
258 goto L100;
259 /* .......................................................................
260 */
261 L200:
262 ret_val = npos;
263 return ret_val;
264 } /* lastnb_ */
265
266
267
268
zzstro_(char * ch,integer * nch,integer * nstr,real * xstr,real * ystr,integer * lstr,ftnlen ch_len)269 /* Subroutine */ int zzstro_(char *ch, integer *nch, integer *nstr, real *
270 xstr, real *ystr, integer *lstr, ftnlen ch_len)
271 {
272 /* Initialized data */
273
274 static integer noff[256] = { 3452,3452,3452,3452,3452,3452,3452,3452,3452,
275 3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,
276 3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3448,2598,2646,
277 3307,3268,3138,3168,2641,2672,2691,3439,2790,2566,2787,2560,2669,
278 2205,2243,2252,2294,2338,2348,2383,2429,2456,2514,2574,2585,2832,
279 2820,2836,2611,3215,1,14,54,85,112,129,144,180,199,208,226,245,
280 256,277,292,334,359,419,458,491,504,524,535,552,567,582,2710,3818,
281 2719,3564,3597,2953,595,631,660,687,718,747,766,821,843,857,879,
282 898,907,942,964,998,1029,1058,1077,1108,1122,1144,1155,1172,1187,
283 1205,2728,2784,2752,3593,3452,2856,3033,2802,2807,3600,2980,2916,
284 3615,2776,2780,3384,2795,2840,3316,3759,3783,0,0,0,0,0,0,0,0,0,0,
285 0,0,0,0,0,0,2890,2655,3022,2971,2962,2944,3651,3064,2929,3666,
286 3805,3812,3815,3430,2848,3683,3463,3468,3473,3479,3485,3498,3511,
287 3524,3537,3554,2877,3715,3737,3359,2825,2903,3689,1,14,1218,1229,
288 112,582,180,1240,199,226,1290,256,277,1301,292,1326,334,1341,491,
289 1357,1386,552,1428,1463,3702,3449,3455,3450,3454,3451,3453,3456,
290 1502,1539,1591,1616,1658,1681,1711,1740,1780,1794,1819,1839,1863,
291 1883,1924,1954,1971,2000,2032,2045,2074,2112,2133,2164,3457,3458,
292 3459,3460,3461,3462,3112 };
293 static integer numstr[256] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
294 1,1,1,1,1,1,1,1,1,1,1,1,13,9,9,39,30,47,5,19,19,9,5,8,3,6,3,38,9,
295 42,44,10,35,46,27,58,46,11,13,4,5,4,30,53,13,40,31,27,17,15,36,19,
296 9,18,19,11,21,15,42,25,60,39,33,13,20,11,17,15,15,13,9,3,9,29,3,9,
297 36,29,27,31,29,19,55,22,14,22,19,9,35,22,34,31,29,19,31,14,22,11,
298 17,15,18,13,24,3,24,4,1,21,31,5,13,15,42,13,36,4,4,46,7,8,43,24,
299 22,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,13,14,11,9,9,9,15,48,15,
300 17,7,3,3,9,8,6,5,5,6,6,13,13,13,13,17,10,13,22,22,25,7,13,13,13,
301 40,11,11,17,13,19,50,9,19,11,21,15,25,42,15,25,16,13,29,42,15,35,
302 39,13,1,1,1,1,1,1,1,37,52,25,42,23,30,29,40,14,25,20,24,20,41,30,
303 17,29,32,13,29,38,21,31,41,1,1,1,1,1,1,26 };
304 static struct {
305 integer e_1[3820];
306 } equiv_38 = { 8011, 23723, 9173, 25515, 7378, 25390, 6854, 25792,
307 6586, 25408, 9024, 25408, 6858, 7371, 24619, 8405, 24619,
308 7765, 26176, 25023, 24767, 24766, 24638, 24510, 24511, 24255,
309 8266, 24895, 24767, 24766, 24638, 24510, 24511, 24383, 7232,
310 25664, 25023, 24767, 24766, 24637, 24510, 24511, 24255, 23104,
311 9803, 24895, 24767, 24766, 24637, 24510, 24511, 24383, 7754,
312 8904, 24765, 24646, 24509, 24386, 24257, 24384, 24255, 24382,
313 24510, 24509, 24635, 24765, 24766, 24894, 25023, 24896, 25025,
314 24898, 24770, 7248, 24383, 24382, 24510, 24509, 24635, 24765,
315 24766, 24894, 24895, 8138, 7371, 24619, 8405, 24619, 7765,
316 25920, 25023, 24894, 24766, 24765, 24635, 24509, 24510, 24382,
317 24255, 23360, 9557, 24895, 24894, 24766, 24765, 24635, 24509,
318 24510, 24382, 24383, 8010, 7371, 24619, 8405, 24619, 9039,
319 24632, 6990, 26688, 24634, 24518, 6838, 25408, 6965, 26688,
320 24646, 24506, 7242, 7371, 24619, 8405, 24619, 9039, 24632,
321 6990, 26688, 24634, 24518, 6838, 25408, 6965, 25536, 8138,
322 8904, 24765, 24646, 24509, 24386, 24257, 24384, 24255, 24382,
323 24510, 24509, 24635, 24765, 24766, 24894, 25023, 24896, 25025,
324 24898, 7378, 24383, 24382, 24510, 24509, 24635, 24765, 24766,
325 24894, 24895, 9160, 24632, 8392, 24632, 7752, 25536, 6978,
326 7371, 24619, 8405, 24619, 9813, 24619, 8405, 24619, 6101,
327 25536, 9024, 25536, 6198, 26176, 6197, 25536, 9024, 25536,
328 6986, 7371, 24619, 8405, 24619, 7765, 25536, 7339, 25536,
329 6986, 8011, 24623, 24509, 24383, 24384, 24385, 24514, 24642,
330 24769, 24767, 24511, 9041, 24623, 24509, 24511, 8149, 25536,
331 6965, 7371, 24619, 8405, 24619, 9941, 22963, 8900, 25652,
332 7116, 25652, 6229, 25536, 9024, 25408, 5803, 25536, 9024,
333 25408, 6858, 7371, 24619, 8405, 24619, 7765, 25536, 7339,
334 26560, 24646, 24506, 6986, 7371, 24619, 8405, 25390, 7378,
335 25515, 9173, 23723, 9173, 24619, 8405, 24619, 5973, 25152,
336 9920, 25152, 5547, 25408, 9280, 25536, 6986, 7371, 24619,
337 8405, 26157, 6737, 26157, 8277, 24619, 6229, 25152, 9408,
338 25408, 5803, 25408, 8650, 8011, 24255, 24382, 24510, 24508,
339 24637, 24764, 24766, 24894, 25023, 24896, 25025, 24898, 24770,
340 24772, 24643, 24516, 24514, 24386, 24257, 24384, 8256, 24383,
341 24382, 24510, 24508, 24637, 24764, 24766, 24894, 24895, 8512,
342 24897, 24898, 24770, 24772, 24643, 24516, 24514, 24386,
343 24385, 7989, 7371, 24619, 8405, 24619, 7765, 26176, 25023,
344 24767, 24766, 24637, 24510, 24511, 24255, 23616, 9291, 24895,
345 24767, 24766, 24637, 24510, 24511, 24383, 6710, 25536, 8394,
346 8011, 24255, 24382, 24510, 24508, 24637, 24764, 24766, 24894,
347 25023, 24896, 25025, 24898, 24770, 24772, 24643, 24516, 24514,
348 24386, 24257, 24384, 8256, 24383, 24382, 24510, 24508, 24637,
349 24764, 24766, 24894, 24895, 8512, 24897, 24898, 24770, 24772,
350 24643, 24516, 24514, 24386, 24385, 7597, 24641, 24770, 24897,
351 24768, 24895, 24766, 24761, 24767, 24896, 24770, 24641, 7621,
352 24764, 24766, 24767, 24768, 24769, 7117, 7371, 24619, 8405,
353 24619, 7765, 26176, 25023, 24767, 24766, 24638, 24510, 24511,
354 24255, 23616, 9290, 24895, 24767, 24766, 24638, 24510, 24511,
355 24383, 6709, 25536, 8523, 24895, 24767, 25017, 24767, 24768,
356 24769, 7368, 24766, 24889, 24767, 24896, 24770, 24641, 6983,
357 8776, 24771, 24634, 24515, 24386, 24257, 24256, 24255, 24382,
358 24638, 24766, 24767, 24895, 25406, 24895, 24894, 6473, 24894,
359 24895, 25406, 24895, 24767, 24766, 24636, 24382, 24255, 24256,
360 24257, 24386, 24515, 24634, 24771, 8775, 7883, 24619, 8405,
361 24619, 7381, 24506, 24646, 26560, 24634, 24518, 6955, 25536,
362 7498, 7371, 24625, 24765, 24894, 25023, 24896, 25025, 24898,
363 24771, 24655, 6592, 24625, 24765, 24894, 24895, 7125, 25536,
364 9152, 25408, 6965, 7115, 25515, 7509, 25390, 9170, 23723,
365 7125, 25408, 9024, 25408, 6837, 7243, 25131, 7893, 25008,
366 8784, 24107, 8789, 25131, 7893, 25008, 8784, 24107, 6357,
367 25536, 9408, 25408, 6837, 7115, 26283, 6741, 26283, 8277,
368 22827, 8021, 25408, 9024, 25408, 5931, 25408, 9024, 25408,
369 6858, 7115, 25525, 24630, 7509, 25525, 24630, 9173, 23733,
370 6987, 25408, 9152, 25408, 6571, 25536, 7626, 8779, 22955,
371 10069, 22955, 8277, 24506, 24646, 26432, 6443, 26432, 24646,
372 24506, 7242, 7362, 24639, 24512, 24641, 24769, 24897, 25152,
373 24895, 24767, 24766, 24633, 24766, 24767, 7884, 24631, 24766,
374 24895, 24768, 7754, 24511, 23871, 24255, 24510, 24638, 24766,
375 25023, 25024, 24897, 24898, 7365, 24383, 24510, 24638, 24766,
376 24895, 8394, 7371, 24619, 8405, 24619, 8267, 24898, 24897,
377 24896, 25023, 24894, 24765, 24638, 24509, 24382, 24255, 24384,
378 24385, 24386, 9035, 24895, 24894, 24765, 24638, 24509, 24382,
379 24383, 6997, 25152, 8629, 8641, 24511, 24767, 24769, 24641,
380 24386, 24385, 24256, 24255, 24382, 24509, 24638, 24765, 24894,
381 25023, 24896, 25025, 24898, 7371, 24383, 24382, 24509, 24638,
382 24765, 24894, 24895, 8010, 8651, 24619, 8405, 24619, 8139,
383 24386, 24385, 24384, 24255, 24382, 24509, 24638, 24765, 24894,
384 25023, 24896, 24897, 24898, 7499, 24383, 24382, 24509, 24638,
385 24765, 24894, 24895, 8661, 25152, 8107, 25152, 6986, 7230,
386 26176, 24642, 24514, 24513, 24385, 24256, 24255, 24382, 24509,
387 24638, 24765, 24894, 25023, 24896, 25025, 24898, 8133, 24643,
388 24514, 7617, 24383, 24382, 24509, 24638, 24765, 24894, 24895,
389 8010, 8010, 24511, 24767, 24769, 24641, 24513, 24384, 24383,
390 24510, 24622, 8661, 24511, 24510, 24622, 7758, 25664, 7218,
391 25536, 7242, 7748, 24383, 24511, 24510, 24638, 24766, 24767,
392 24895, 24896, 24897, 24769, 24770, 24642, 24514, 24513, 24385,
393 24384, 7999, 24510, 24636, 24766, 9024, 24770, 24644, 24514,
394 8383, 24769, 24897, 24639, 24384, 7097, 24511, 24510, 24639,
395 24766, 25023, 25280, 25023, 24767, 6597, 24767, 25023, 25280,
396 25023, 24766, 24639, 24510, 24255, 23872, 24257, 24514, 24641,
397 24770, 25025, 8394, 7371, 24619, 8405, 24619, 8267, 24898,
398 25025, 24896, 25023, 24766, 24629, 7758, 24895, 24766, 24629,
399 6485, 25152, 7723, 25536, 8768, 25536, 6986, 7371, 24511,
400 24767, 24769, 24513, 8249, 24626, 8398, 24626, 7758, 25152,
401 7730, 25536, 6986, 7499, 24511, 24767, 24769, 24513, 8377,
402 24622, 24510, 24383, 24384, 24513, 24641, 24769, 24767, 24511,
403 8788, 24622, 24510, 24511, 8149, 25152, 7228, 7371, 24619,
404 8405, 24619, 9550, 23350, 8900, 25400, 7368, 25400, 6485,
405 25152, 9145, 25408, 6066, 25536, 8768, 25408, 6986, 7371,
406 24619, 8405, 24619, 7765, 25152, 7723, 25536, 6986, 7364,
407 24626, 8398, 24626, 8267, 24898, 25025, 24896, 25023, 24766,
408 24629, 7758, 24895, 24766, 24629, 8395, 24898, 25025, 24896,
409 25023, 24766, 24629, 7758, 24895, 24766, 24629, 5070, 25152,
410 7730, 25536, 8768, 25536, 8768, 25536, 6986, 7364, 24626,
411 8398, 24626, 8267, 24898, 25025, 24896, 25023, 24766, 24629,
412 7758, 24895, 24766, 24629, 6478, 25152, 7730, 25536, 8768,
413 25536, 6986, 7876, 24255, 24382, 24509, 24638, 24765, 24894,
414 25023, 24896, 25025, 24898, 24771, 24642, 24515, 24386, 24257,
415 24384, 8256, 24383, 24382, 24509, 24638, 24765, 24894, 24895,
416 8512, 24897, 24898, 24771, 24642, 24515, 24386, 24385, 7868,
417 7364, 24619, 8405, 24619, 8274, 24898, 24897, 24896, 25023,
418 24894, 24765, 24638, 24509, 24382, 24255, 24384, 24385, 24386,
419 9035, 24895, 24894, 24765, 24638, 24509, 24382, 24383, 6990,
420 25152, 7723, 25536, 8273, 8644, 24619, 8405, 24619, 8146,
421 24386, 24385, 24384, 24255, 24382, 24509, 24638, 24765, 24894,
422 25023, 24896, 24897, 24898, 7499, 24383, 24382, 24509, 24638,
423 24765, 24894, 24895, 8633, 25536, 6865, 7364, 24626, 8398,
424 24626, 8264, 24771, 24898, 24897, 25024, 24767, 24639, 24511,
425 24513, 24769, 6721, 25152, 7730, 25536, 7754, 8386, 24770,
426 24636, 24514, 24513, 24385, 24128, 24383, 24511, 24638, 24767,
427 24895, 25278, 24895, 24767, 6855, 24767, 24895, 25278, 24895,
428 24767, 24637, 24511, 24383, 24128, 24385, 24513, 24514,
429 24636, 24770, 8392, 7371, 24623, 24765, 24895, 24896, 24897,
430 24770, 7378, 24623, 24765, 24767, 7502, 25664, 7356, 7364,
431 24629, 24766, 25023, 24896, 25025, 24898, 6987, 24629, 24766,
432 24895, 9166, 24626, 8398, 24626, 6350, 25152, 9152, 25152,
433 8114, 25152, 6986, 7108, 25394, 7630, 25268, 9036, 23858,
434 7246, 25408, 8768, 25408, 6844, 7236, 25138, 7886, 25013,
435 8779, 24114, 8782, 25138, 7886, 25013, 8779, 24114, 6350,
436 25536, 9408, 25408, 6844, 7236, 26034, 6990, 26034, 8270,
437 23090, 8014, 25408, 8768, 25408, 6194, 25408, 8768, 25408,
438 6986, 7236, 25394, 7630, 25268, 9036, 23858, 24380, 24382,
439 24383, 24512, 24513, 24769, 24767, 8020, 25408, 8768, 25408,
440 6844, 8516, 23218, 9806, 23218, 8270, 24508, 24644, 26176,
441 6706, 26176, 24644, 24508, 7242, 7371, 24619, 8405, 24619,
442 7765, 26560, 24634, 24518, 6443, 25536, 7882, 8011, 23595,
443 9301, 25643, 7250, 25518, 6465, 26432, 6335, 26688, 6986,
444 8011, 24255, 24382, 24510, 24508, 24637, 24764, 24766, 24894,
445 25023, 24896, 25025, 24898, 24770, 24772, 24643, 24516, 24514,
446 24386, 24257, 24384, 8256, 24383, 24382, 24510, 24508, 24637,
447 24764, 24766, 24894, 24895, 8512, 24897, 24898, 24770, 24772,
448 24643, 24516, 24514, 24386, 24385, 7737, 24633, 9031, 24633,
449 7492, 25408, 7487, 25408, 7744, 8011, 23723, 9173, 25515,
450 7378, 25390, 6336, 25408, 9024, 25408, 6858, 7244, 24507,
451 10309, 24507, 6972, 24507, 9285, 24507, 6972, 24507, 10309,
452 24507, 6485, 26432, 6463, 26432, 6968, 25408, 7487, 25408,
453 6968, 26432, 6463, 26432, 7241, 7371, 24619, 8405, 24619,
454 9813, 24619, 8405, 24619, 6101, 27200, 5675, 25536, 9024,
455 25536, 6986, 7115, 25526, 23605, 8277, 25526, 7370, 26560,
456 24762, 24390, 6572, 26304, 6463, 26560, 24774, 24378, 7370,
457 6982, 24642, 24770, 24769, 24896, 24767, 24766, 24764, 24626,
458 7378, 24898, 24896, 24894, 9406, 24642, 24514, 24513, 24384,
459 24511, 24510, 24508, 24626, 9170, 24386, 24384, 24382, 7598,
460 25536, 7498, 8011, 24619, 8405, 24619, 7888, 24255, 24511,
461 24510, 24637, 24766, 24767, 25023, 25280, 25025, 24769, 24770,
462 24643, 24514, 24513, 24257, 24000, 8256, 24383, 24511, 24510,
463 24637, 24766, 24767, 24895, 8896, 24897, 24769, 24770, 24643,
464 24514, 24513, 24385, 7493, 25536, 7339, 25536, 7626, 8139,
465 24619, 8405, 24619, 6990, 24769, 24895, 24764, 24766, 24767,
466 24895, 7369, 24767, 24764, 24766, 24767, 25023, 25024, 25025,
467 24769, 24770, 24772, 24769, 7351, 24897, 24769, 24770, 24772,
468 24897, 24767, 6599, 25536, 7339, 25536, 7754, 7097, 24765,
469 25152, 24388, 24388, 24515, 24644, 24771, 24898, 25025, 25152,
470 25023, 24894, 24765, 24636, 24509, 24380, 24380, 25152,
471 24771, 6593, 24515, 24516, 24644, 24771, 24898, 24897, 8768,
472 24895, 24894, 24765, 24636, 24508, 24509, 6717, 25024, 9280,
473 25024, 7241, 8004, 24255, 24382, 24510, 24509, 24637, 24766,
474 25023, 24896, 24897, 25027, 24899, 24900, 24771, 7104, 24383,
475 24382, 24510, 24509, 24637, 24766, 24895, 8654, 24896, 24895,
476 24766, 24888, 24766, 24767, 7374, 24767, 24766, 24888, 24766,
477 24895, 24768, 7114, 8395, 24255, 24382, 24380, 24509, 24508,
478 24506, 24504, 9692, 24383, 24382, 24380, 24509, 24508, 24506,
479 24504, 9564, 24896, 24895, 24767, 24637, 24510, 24511, 24255,
480 24128, 9033, 24894, 24637, 24510, 24511, 24383, 7744, 25151,
481 24894, 24766, 24637, 24510, 24511, 24255, 24384, 24385, 24513,
482 24515, 8775, 25023, 24894, 24766, 24637, 24510, 24511, 24383,
483 8010, 6849, 24898, 24897, 24896, 24895, 24767, 24765, 24636,
484 24508, 24248, 7635, 24897, 25152, 24895, 9282, 24509, 24510,
485 23993, 24251, 24380, 9685, 24509, 24510, 24121, 7880, 8387,
486 24385, 24384, 24255, 24381, 24509, 24637, 24766, 24767, 24895,
487 24896, 25025, 24899, 24771, 24643, 24514, 24133, 24514,
488 24642, 24769, 24896, 24895, 24894, 7355, 24383, 24381, 24509,
489 24636, 24766, 8767, 24897, 24899, 24771, 24644, 24514, 24387,
490 24514, 24642, 24769, 24896, 25022, 7095, 8515, 24385, 24256,
491 24255, 24382, 24509, 24637, 24765, 24767, 25023, 25024, 24897,
492 7757, 24383, 24382, 24509, 24637, 24765, 24767, 24895, 7751,
493 25664, 7363, 8139, 24383, 24511, 24639, 24767, 25023, 25280,
494 24641, 24255, 24126, 24254, 24253, 24509, 24638, 24766, 25022,
495 25022, 24766, 24638, 24511, 24384, 24513, 8917, 24125, 24253,
496 24509, 24638, 24766, 24894, 8138, 6848, 24770, 24898, 25024,
497 24767, 24638, 24508, 24377, 8398, 24767, 24638, 24508, 24377,
498 8647, 24900, 24898, 24897, 24896, 24895, 24767, 24637, 24507,
499 24245, 8405, 24894, 24637, 24507, 24245, 7889, 8139, 24255,
500 24381, 24510, 24509, 24507, 24636, 24766, 24895, 24896, 25025,
501 24899, 24770, 24771, 24773, 24644, 24514, 24385, 24384, 8256,
502 24383, 24381, 24510, 24509, 24507, 24636, 24766, 24767, 8512,
503 24897, 24899, 24770, 24771, 24773, 24644, 24514, 24513, 7222,
504 25792, 7359, 7492, 24377, 24508, 24638, 24767, 25024, 24898,
505 24770, 7882, 24377, 24508, 24638, 24767, 7626, 7492, 24114,
506 8910, 24114, 9934, 24767, 24768, 24513, 24384, 24383, 24124,
507 24383, 24384, 8512, 24895, 24890, 24767, 7624, 24767, 24890,
508 24767, 24896, 24897, 24899, 7110, 7115, 24896, 24895, 24767,
509 24766, 25394, 24766, 24767, 6741, 24894, 24766, 25394, 24766,
510 24895, 24768, 7246, 23602, 9294, 23730, 8906, 7620, 23851,
511 9173, 23851, 8914, 24506, 24637, 24894, 24896, 24897, 24898,
512 24899, 8520, 24245, 24638, 24767, 25024, 24898, 24770, 7882,
513 24245, 24638, 24767, 7498, 7492, 24370, 8654, 24506, 24507,
514 24509, 9934, 24508, 24380, 8776, 24509, 24510, 24381, 24382,
515 24254, 24383, 24255, 8142, 25152, 8380, 8139, 24383, 24511,
516 24639, 24767, 25023, 25024, 7872, 24127, 24383, 24510, 24638,
517 24894, 25023, 25024, 8137, 24255, 24383, 24510, 24638, 24894,
518 24895, 8256, 24127, 24383, 24510, 24638, 24894, 25278, 24767,
519 24638, 24383, 24384, 8654, 24255, 24383, 24510, 24638, 24894,
520 25150, 7629, 7876, 24255, 24381, 24509, 24637, 24766, 24767,
521 24895, 24896, 25025, 24899, 24771, 24643, 24514, 24513, 24385,
522 24384, 8256, 24383, 24381, 24509, 24636, 24766, 8767, 24897,
523 24899, 24771, 24644, 24514, 7357, 7875, 24115, 8781, 24243,
524 9421, 24627, 8269, 24755, 6475, 24898, 25025, 26304, 5949,
525 24897, 25025, 26304, 6973, 7227, 24765, 24767, 24895, 24896,
526 25025, 24899, 24771, 24643, 24514, 24513, 24385, 24384, 24255,
527 24381, 24509, 24114, 9543, 24897, 24899, 24771, 24644, 24514,
528 7745, 24383, 24381, 24509, 24114, 9041, 9156, 23360, 24255,
529 24381, 24509, 24637, 24766, 24767, 24895, 24896, 25025, 24899,
530 24771, 24643, 24514, 24513, 24385, 8000, 24383, 24381, 24509,
531 24636, 24766, 8767, 24897, 24899, 24771, 24644, 24514, 8256,
532 25408, 6973, 8131, 24243, 8653, 24371, 7371, 24898, 25025,
533 26048, 6205, 24897, 25025, 26048, 6973, 6848, 24770, 24898,
534 25024, 24767, 24638, 24378, 24637, 24894, 8014, 24767, 24638,
535 24378, 24637, 24767, 24895, 24768, 25025, 24898, 24899, 24771,
536 24643, 24514, 24511, 24767, 24765, 8125, 24774, 7102, 8523,
537 23844, 9180, 23588, 8661, 24127, 24382, 24509, 24637, 24766,
538 24894, 25023, 25024, 25153, 24898, 24771, 24643, 24514, 24386,
539 24257, 24256, 8256, 24255, 24382, 24509, 24637, 24766, 24894,
540 24895, 8640, 25025, 24898, 24771, 24643, 24514, 24386, 24385,
541 7868, 6980, 24896, 24895, 24766, 25265, 24766, 24767, 6997,
542 24767, 24766, 25265, 24766, 24895, 24896, 8405, 24510, 24381,
543 23349, 24381, 24510, 8913, 8651, 23844, 9180, 23588, 7377,
544 24770, 24898, 25024, 24767, 24638, 24507, 24637, 24894, 25024,
545 24897, 25027, 24899, 6598, 24767, 24638, 24507, 24637, 24766,
546 24895, 25024, 24897, 24898, 24899, 24770, 24902, 6972, 7232,
547 24898, 25025, 24513, 24383, 24381, 24509, 24637, 24765, 24767,
548 24896, 24897, 24899, 24771, 7101, 24766, 24767, 24896, 24897,
549 24898, 8259, 24637, 24765, 24767, 24896, 24897, 24899, 24771,
550 24643, 24515, 24513, 24511, 24895, 24766, 7098, 24766, 24767,
551 24896, 24897, 24898, 7238, 7883, 24255, 24381, 24507, 24637,
552 24763, 24893, 25023, 24896, 25025, 24899, 24773, 24643, 24517,
553 24387, 24257, 24384, 8256, 24383, 24511, 24510, 24507, 24637,
554 24763, 24766, 24767, 24895, 8512, 24897, 24769, 24770, 24773,
555 24643, 24517, 24514, 24513, 24385, 7861, 7495, 24897, 25027,
556 24619, 8148, 24620, 7744, 25792, 7370, 7239, 24767, 24511,
557 24513, 24641, 24770, 24769, 25025, 25152, 25023, 24767, 24766,
558 24638, 24510, 24254, 23998, 24383, 24382, 24509, 24637, 9429,
559 24895, 24767, 24766, 24638, 24510, 24254, 24126, 7609, 24769,
560 24896, 25278, 25024, 24897, 24769, 6848, 25277, 25152, 24769,
561 24770, 24642, 7109, 7239, 24767, 24511, 24513, 24641, 24770,
562 24769, 25025, 25152, 25023, 24766, 24637, 24510, 24255, 24256,
563 8649, 24895, 24766, 24637, 24510, 24383, 8256, 24895, 24894,
564 24766, 24637, 24510, 24511, 24255, 24128, 24257, 24513, 24514,
565 24641, 24769, 24767, 24511, 9670, 24765, 24637, 24510, 24511,
566 24383, 7754, 8265, 24621, 8405, 24619, 8277, 23217, 26688,
567 7098, 25536, 7242, 7371, 24374, 8256, 24898, 25025, 25024,
568 25023, 24894, 24765, 24638, 24509, 24382, 24255, 24256, 24257,
569 24513, 24514, 24641, 24769, 24767, 24511, 9162, 24895, 24894,
570 24765, 24638, 24509, 24382, 24383, 7509, 25920, 6975, 25280,
571 25281, 7349, 8648, 24511, 24767, 24769, 24641, 24514, 24385,
572 24256, 24255, 24382, 24510, 24508, 24634, 24765, 24894, 25023,
573 24896, 25025, 24898, 24771, 24641, 24515, 24386, 24257,
574 24512, 24255, 24382, 24509, 9038, 24383, 24382, 24510, 24508,
575 24634, 24765, 24894, 24895, 8512, 24897, 24898, 24771, 24641,
576 24515, 24386, 24385, 7869, 7115, 24634, 8258, 24770, 24898,
577 24896, 25277, 24896, 24769, 24770, 6590, 24897, 24896, 25278,
578 8771, 24637, 24509, 24123, 24510, 24509, 24635, 9039, 23995,
579 24510, 24509, 24635, 8138, 7755, 24255, 24510, 24637, 24766,
580 25023, 25152, 25025, 24770, 24643, 24514, 24257, 24128, 8256,
581 24383, 24510, 24637, 24766, 24895, 8768, 24897, 24770, 24643,
582 24514, 24385, 7735, 24255, 24511, 24510, 24636, 24766, 24767,
583 25023, 25152, 25025, 24769, 24770, 24644, 24514, 24513, 24257,
584 7744, 24383, 24511, 24510, 24636, 24766, 24767, 24895, 8768,
585 24897, 24769, 24770, 24644, 24514, 24513, 24385, 7742, 8772,
586 24509, 24382, 24255, 24512, 24257, 24386, 24515, 24641, 24771,
587 24898, 25025, 24896, 25023, 24894, 24765, 24634, 24508,
588 24510, 24382, 24255, 24256, 24385, 24514, 24641, 24769, 24767,
589 24511, 8773, 24385, 24386, 24515, 24641, 24771, 24898, 24897,
590 8512, 24895, 24894, 24765, 24634, 24508, 24510, 24382, 24383,
591 8010, 7352, 24511, 24767, 24769, 24513, 7368, 7350, 24513,
592 24769, 24767, 24638, 24510, 24511, 7502, 7364, 24511, 24767,
593 24769, 24513, 8244, 24511, 24767, 24769, 24513, 7368, 7364,
594 24511, 24767, 24769, 24513, 8242, 24513, 24769, 24767, 24638,
595 24510, 24511, 7502, 7371, 24510, 24756, 24780, 24514, 8254,
596 24634, 8245, 24511, 24767, 24769, 24513, 7368, 7239, 24767,
597 24511, 24513, 24641, 24770, 24769, 24897, 25024, 25023, 24767,
598 24766, 24638, 24510, 24511, 24126, 24637, 8398, 24895, 24767,
599 24766, 24638, 24510, 24382, 7991, 24511, 24767, 24769, 24513,
600 7880, 7243, 24505, 8519, 24377, 7356, 7243, 24505, 8519,
601 24377, 9415, 24505, 8519, 24377, 7356, 7499, 24383, 24510,
602 24638, 24766, 24895, 24896, 24897, 24770, 24642, 24514, 24385,
603 24384, 7733, 9295, 22304, 9297, 8143, 24382, 24381, 24380,
604 24507, 24636, 24763, 24892, 24893, 24894, 8030, 24380, 24509,
605 24507, 24636, 24763, 24765, 24892, 7375, 7119, 24894, 24893,
606 24892, 24763, 24636, 24507, 24380, 24381, 24382, 8542, 24892,
607 24765, 24763, 24636, 24507, 24509, 24380, 7887, 7247, 24608,
608 8416, 24608, 8160, 25536, 7328, 25536, 7121, 7887, 24608,
609 8416, 24608, 7392, 25536, 7328, 25536, 7249, 7887, 24253,
610 24509, 24638, 24765, 25021, 8012, 24509, 24636, 24765, 8510,
611 24254, 25022, 8256, 24253, 24509, 24638, 24765, 25021, 8012,
612 24509, 24636, 24765, 7631, 7375, 25021, 24765, 24638, 24509,
613 24253, 8524, 24765, 24636, 24509, 7998, 25022, 24254, 8256,
614 25021, 24765, 24638, 24509, 24253, 8524, 24765, 24636, 24509,
615 7631, 8015, 23728, 25520, 7249, 7247, 25520, 23728, 8017,
616 7247, 24608, 7249, 7231, 26944, 7233, 8392, 24622, 7113,
617 26944, 7233, 8263, 24623, 7241, 26688, 6199, 26688, 7242,
618 7238, 26418, 8270, 22834, 9032, 8392, 24511, 24767, 24769,
619 24513, 7095, 26944, 7097, 24511, 24767, 24769, 24513, 8392,
620 7234, 26944, 5946, 26944, 7236, 9288, 22830, 8012, 26944,
621 5946, 26944, 7236, 9288, 22583, 26679, 7242, 7240, 26679,
622 22583, 9290, 9291, 22585, 26681, 6206, 26688, 6203, 26688,
623 7242, 7243, 26681, 22585, 8254, 26688, 6203, 26688, 7242,
624 9402, 24384, 24385, 24386, 24260, 24513, 24385, 24384, 24383,
625 24510, 24638, 24766, 24895, 24896, 24897, 24769, 25028, 24898,
626 24897, 24896, 7228, 9287, 23744, 24127, 24383, 24382, 24509,
627 24638, 24765, 24894, 24895, 25151, 25536, 7241, 7239, 24633,
628 24764, 24766, 24894, 25023, 24896, 25025, 24898, 24770, 24772,
629 24647, 7225, 7239, 25536, 25151, 24895, 24894, 24765, 24638,
630 24509, 24382, 24383, 24127, 23744, 9289, 7223, 24647, 24772,
631 24770, 24898, 25025, 24896, 25023, 24894, 24766, 24764, 24633,
632 7241, 9287, 23744, 24127, 24383, 24382, 24509, 24638, 24765,
633 24894, 24895, 25151, 25536, 6216, 26176, 7745, 9153, 25022,
634 24254, 7879, 25275, 23995, 6725, 26816, 7361, 7493, 24899,
635 24893, 7357, 25285, 25275, 7621, 24623, 7754, 7617, 24254,
636 25022, 8647, 23995, 25275, 7621, 26816, 7233, 7481, 24893,
637 24899, 7363, 25275, 25285, 7628, 24623, 7753, 8639, 24515,
638 24513, 24385, 24384, 24255, 24381, 24509, 24637, 24766, 24767,
639 24895, 24896, 25025, 24898, 24771, 24773, 24645, 24515,
640 24513, 24385, 24256, 24383, 24511, 24639, 24768, 24641, 8507,
641 24383, 24381, 24509, 24636, 24766, 8767, 24897, 24898, 24771,
642 24773, 24645, 24515, 24386, 7605, 6987, 25643, 7381, 25517,
643 9299, 23595, 7253, 26688, 6335, 26432, 7094, 9422, 24511,
644 24767, 24769, 24641, 24513, 24384, 24383, 24382, 24510, 24509,
645 24508, 24372, 24508, 24510, 9308, 24510, 24508, 24372, 24508,
646 24509, 24510, 24382, 24383, 24384, 24513, 24641, 24769,
647 24767, 24511, 9424, 9422, 24511, 24767, 24769, 24641, 24513,
648 24384, 24383, 24382, 24510, 24509, 24508, 24372, 24508, 24510,
649 9308, 24510, 24508, 24372, 24508, 24509, 24510, 24382, 24383,
650 24384, 24513, 24641, 24769, 24767, 24511, 9302, 24255, 24382,
651 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898,
652 24771, 24642, 24515, 24386, 24257, 24384, 8378, 9534, 24510,
653 24383, 24384, 24385, 24513, 24260, 24513, 24385, 24384, 24383,
654 24510, 24638, 24766, 24895, 24896, 24897, 24769, 25028,
655 24769, 24897, 24896, 24895, 24766, 24638, 7106, 9419, 22315,
656 8917, 24894, 24638, 24510, 24383, 24384, 24386, 24642, 24770,
657 24897, 24896, 24895, 25023, 25024, 25025, 24897, 7730, 24383,
658 24510, 24638, 24894, 24896, 24897, 24770, 24642, 24386, 24384,
659 7619, 9411, 24511, 24767, 24769, 24641, 24513, 24512, 24511,
660 24510, 24379, 24381, 24382, 24383, 24256, 24257, 24514, 24643,
661 24770, 25412, 24898, 24770, 24642, 24514, 24385, 24383,
662 24510, 24638, 24765, 24893, 25273, 24894, 25023, 24768, 24769,
663 24641, 6334, 24385, 24514, 24643, 24770, 24898, 8262, 24766,
664 25653, 24894, 24895, 7370, 9027, 24514, 24385, 24256, 24383,
665 24511, 24509, 24637, 24766, 24895, 25024, 24897, 24770, 7624,
666 24382, 24509, 24637, 24766, 24767, 9163, 24504, 24638, 24895,
667 24896, 24898, 24771, 24642, 24515, 24514, 24386, 24385, 24257,
668 24256, 24255, 24383, 24382, 24510, 24509, 24637, 24765,
669 24766, 24894, 24895, 25023, 25024, 25025, 24897, 24769, 8013,
670 24504, 24638, 24767, 7749, 7759, 24611, 8797, 24611, 8790,
671 24511, 24767, 24769, 24641, 24386, 24257, 24128, 24255, 24382,
672 24638, 24766, 24767, 24895, 25406, 24895, 24894, 6473, 24894,
673 24895, 25406, 24895, 24767, 24766, 24636, 24382, 24255,
674 24128, 24257, 24386, 24641, 24769, 24767, 24511, 8775, 8139,
675 23716, 9948, 23716, 7505, 26432, 6330, 26432, 7238, 8136,
676 24511, 24767, 24769, 24641, 24514, 24385, 24384, 24383, 24510,
677 24638, 24766, 24894, 25277, 7365, 25277, 24894, 24766, 24638,
678 24510, 24382, 7756, 24382, 24510, 24638, 24766, 24894, 25277,
679 7365, 25277, 24894, 24766, 24638, 24510, 24383, 24384, 24385,
680 24514, 24641, 24769, 24767, 24511, 8142, 7755, 24510, 24766,
681 24770, 24514, 8256, 24612, 8273, 24509, 24754, 24782, 24515,
682 7492, 24895, 24897, 24385, 24383, 8256, 26176, 7744, 24895,
683 24897, 24385, 24383, 7484, 7755, 24510, 24766, 24770, 24514,
684 8256, 24626, 8260, 24510, 24892, 24510, 24514, 24900, 24514,
685 8252, 24626, 8260, 24510, 24766, 24770, 24514, 7505, 24895,
686 24897, 24385, 24383, 8256, 26176, 7744, 24895, 24897, 24385,
687 24383, 7218, 24895, 24897, 24385, 24383, 8256, 26176, 7744,
688 24895, 24897, 24385, 24383, 7498, 8651, 24619, 6613, 26304,
689 7222, 25664, 6581, 26304, 7242, 7622, 25394, 8270, 23858,
690 7754, 26426, 8262, 22842, 8900, 7232, 6720, 6208, 5696, 5184,
691 4672, 4160, 3648, 3136, 5196, 5172, 5192, 5176, 5188, 5180,
692 7232, 26688, 7240, 24624, 8264, 7224, 26704, 6208, 26672,
693 7240, 8248, 25672, 23624, 23608, 25656, 8264, 7224, 26688,
694 24656, 22592, 24624, 9288, 7232, 25152, 25156, 8260, 24636,
695 25148, 8768, 24128, 24124, 8252, 24644, 24132, 8768, 7224,
696 25156, 24648, 7748, 25148, 25664, 8772, 24124, 24632, 8764,
697 24132, 23616, 8772, 7232, 26688, 7240, 24624, 8768, 23616,
698 7748, 24648, 8772, 25664, 8764, 24632, 7236, 7224, 26704,
699 6208, 26672, 8260, 24124, 7232, 24132, 8264, 25156, 9280,
700 25148, 7228, 7744, 24128, 8264, 25148, 8768, 24644, 9280,
701 24124, 8252, 25152, 8248, 24132, 7744, 24636, 7232, 25156,
702 8772, 7228, 24648, 25156, 25664, 25148, 24632, 24124, 23616,
703 24132, 9284, 8644, 24511, 24767, 24769, 24641, 24386, 24385,
704 24256, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896,
705 25025, 24898, 7371, 24383, 24382, 24509, 24638, 24765, 24894,
706 24895, 8401, 24620, 7882, 7234, 26944, 24636, 7234, 6964,
707 26944, 6988, 7235, 24770, 24897, 24896, 25023, 24895, 25023,
708 24896, 24897, 24770, 5945, 26944, 5948, 26944, 7237, 7237,
709 24767, 24511, 24513, 24641, 24770, 24769, 24897, 25024, 25023,
710 24767, 24766, 24638, 24510, 24511, 24126, 8395, 24895, 24767,
711 24766, 24638, 24510, 24382, 8013, 24510, 24753, 24783, 24514,
712 8254, 24632, 8246, 24511, 24767, 24769, 24513, 7880, 7745,
713 24254, 25022, 8647, 23995, 25275, 7621, 26944, 7621, 25275,
714 23995, 8647, 25022, 24254, 7747, 9287, 23744, 24127, 24383,
715 24382, 24509, 24638, 24765, 24894, 24895, 25151, 25536, 6216,
716 26176, 8138, 23980, 8523, 6987, 25515, 25557, 6714, 25920,
717 7227, 9287, 23232, 24383, 24382, 24510, 24638, 24766, 24894,
718 24895, 26048, 6204, 26688, 7241, 7239, 26048, 24895, 24894,
719 24766, 24638, 24510, 24382, 24383, 23232, 8252, 26688, 7241,
720 7879, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896,
721 25025, 24898, 24771, 24642, 24515, 24386, 24257, 24384, 8382,
722 24630, 7621, 25920, 7360, 7879, 24255, 24382, 24509, 24638,
723 24765, 24894, 25023, 24896, 25025, 24898, 24771, 24642, 24515,
724 24386, 24257, 24384, 8893, 23608, 8264, 25656, 7492, 7499,
725 24619, 8405, 24619, 8267, 24898, 25025, 24896, 25023, 24766,
726 24629, 7758, 24895, 24766, 24629, 6485, 25152, 7723, 25536,
727 8768, 25536, 7636, 22840, 9406, 7115, 24896, 24895, 24767,
728 24766, 25394, 24766, 24767, 6741, 24894, 24766, 25394, 24766,
729 24895, 24768, 7246, 23602, 9294, 23730, 9556, 23351, 8895,
730 7108, 25152, 25396, 7372, 25522, 25819, 6703, 6704, 27456,
731 6736, 6737, 27456, 6703, 6991, 26912, 6993 };
732
733
734 /* System generated locals */
735 integer i__1;
736
737 /* Local variables */
738 static integer ioff, istr;
739 static real xcur, ycur, scale, bb, gg;
740 static integer is;
741 static real rr;
742 #define nstrok ((integer *)&equiv_38)
743 static char ccc[1];
744 static integer ich, inc;
745 #define ns01 ((integer *)&equiv_38)
746 #define ns02 ((integer *)&equiv_38 + 100)
747 #define ns03 ((integer *)&equiv_38 + 200)
748 #define ns04 ((integer *)&equiv_38 + 300)
749 #define ns05 ((integer *)&equiv_38 + 400)
750 #define ns06 ((integer *)&equiv_38 + 500)
751 #define ns07 ((integer *)&equiv_38 + 600)
752 #define ns08 ((integer *)&equiv_38 + 700)
753 #define ns09 ((integer *)&equiv_38 + 800)
754 #define ns10 ((integer *)&equiv_38 + 900)
755 #define ns11 ((integer *)&equiv_38 + 1000)
756 #define ns12 ((integer *)&equiv_38 + 1100)
757 #define ns13 ((integer *)&equiv_38 + 1200)
758 #define ns14 ((integer *)&equiv_38 + 1300)
759 #define ns15 ((integer *)&equiv_38 + 1400)
760 #define ns16 ((integer *)&equiv_38 + 1500)
761 static integer kst;
762 #define ns17 ((integer *)&equiv_38 + 1600)
763 #define ns18 ((integer *)&equiv_38 + 1700)
764 #define ns19 ((integer *)&equiv_38 + 1800)
765 #define ns20 ((integer *)&equiv_38 + 1900)
766 #define ns21 ((integer *)&equiv_38 + 2000)
767 #define ns22 ((integer *)&equiv_38 + 2100)
768 #define ns23 ((integer *)&equiv_38 + 2200)
769 #define ns24 ((integer *)&equiv_38 + 2300)
770 #define ns25 ((integer *)&equiv_38 + 2400)
771 #define ns26 ((integer *)&equiv_38 + 2500)
772 #define ns27 ((integer *)&equiv_38 + 2600)
773 #define ns28 ((integer *)&equiv_38 + 2700)
774 #define ns29 ((integer *)&equiv_38 + 2800)
775 #define ns30 ((integer *)&equiv_38 + 2900)
776 #define ns31 ((integer *)&equiv_38 + 3000)
777 #define ns32 ((integer *)&equiv_38 + 3100)
778 #define ns33 ((integer *)&equiv_38 + 3200)
779 #define ns34 ((integer *)&equiv_38 + 3300)
780 #define ns35 ((integer *)&equiv_38 + 3400)
781 #define ns36 ((integer *)&equiv_38 + 3500)
782 #define ns37 ((integer *)&equiv_38 + 3600)
783 #define ns38 ((integer *)&equiv_38 + 3700)
784 #define ns39 ((integer *)&equiv_38 + 3800)
785
786
787 /* Convert a string of generalized characters into a set of strokes, */
788 /* normalized to character size = 1. The stroke tables are taken */
789 /* from the C source code to the program "axis". */
790
791
792 /* .....................................................................
793 */
794 /* A list of the offsets of the start of the stroke data for each */
795 /* character. 0 means a control character */
796
797
798
799 /* Parameter adjustments */
800 --lstr;
801 --ystr;
802 --xstr;
803
804 /* Function Body */
805 /* .....................................................................
806 */
807 /* List of the number of strokes in each character. */
808 /* For control characters, the entry is the switch index. */
809
810 /* .....................................................................
811 */
812 /* List of the strokes, stored in the format */
813 /* 16384*blanking + 128*(DX+64) + (DY+64) */
814
815 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
816 */
817 *nstr = 0;
818 xcur = 0.f;
819 ycur = 0.f;
820 scale = .051f;
821
822 inc = 1;
823 L100:
824
825 /* Load the offset into the stroke table and the number of strokes */
826
827 ich = *(unsigned char *)&ch[inc - 1];
828 if (ich <= 0) {
829 ich += 256;
830 }
831
832 ioff = noff[ich];
833 istr = numstr[ich];
834 /* .....................................................................
835 */
836 /* If the offset is 0, this is a control character, so treat it */
837 /* specially -- ISTR is the control code in this case: */
838 /* 1 = start superscript */
839 /* 2 = end superscript */
840 /* 3 = start subscript */
841 /* 4 = end subscript */
842 /* 5,6,7,8,9,10,11 = change color */
843 /* 12 = smaller text [28 Oct 2013] */
844 /* 13 = larger text */
845 /* 14 = color:R:G:B (consumes 3 extra bytes) */
846
847 if (ioff <= 0) {
848 if (istr == 1) {
849 xcur -= scale * 2.666667f;
850 ycur += scale * 12.f;
851 scale *= .6666667f;
852 } else if (istr == 2) {
853 scale *= 1.5f;
854 xcur += scale * 4.f;
855 ycur -= scale * 12.f;
856 } else if (istr == 3) {
857 xcur -= scale * 2.666667f;
858 ycur -= scale * 12.f;
859 scale *= .6666667f;
860 } else if (istr == 4) {
861 scale *= 1.5f;
862 xcur += scale * 4.f;
863 ycur += scale * 12.f;
864 } else if (istr >= 5 && istr <= 11) {
865 ++(*nstr);
866 lstr[*nstr] = istr + 96;
867 xstr[*nstr] = xcur;
868 ystr[*nstr] = ycur;
869 } else if (istr == 12) {
870 scale *= .8f;
871 } else if (istr == 13) {
872 scale *= 1.25f;
873 } else if (istr == 14) {
874 ++inc;
875 *(unsigned char *)ccc = *(unsigned char *)&ch[inc - 1];
876 rr = 0.f;
877 if (*(unsigned char *)ccc == '1') {
878 rr = 1.f;
879 }
880 if (*(unsigned char *)ccc == '2') {
881 rr = 2.f;
882 }
883 if (*(unsigned char *)ccc == '3') {
884 rr = 3.f;
885 }
886 if (*(unsigned char *)ccc == '4') {
887 rr = 4.f;
888 }
889 if (*(unsigned char *)ccc == '5') {
890 rr = 5.f;
891 }
892 if (*(unsigned char *)ccc == '6') {
893 rr = 6.f;
894 }
895 if (*(unsigned char *)ccc == '7') {
896 rr = 7.f;
897 }
898 if (*(unsigned char *)ccc == '8') {
899 rr = 8.f;
900 }
901 if (*(unsigned char *)ccc == '9') {
902 rr = 9.f;
903 }
904 if (*(unsigned char *)ccc == 'a' || *(unsigned char *)ccc == 'A')
905 {
906 rr = 10.f;
907 }
908 if (*(unsigned char *)ccc == 'b' || *(unsigned char *)ccc == 'B')
909 {
910 rr = 11.f;
911 }
912 if (*(unsigned char *)ccc == 'c' || *(unsigned char *)ccc == 'C')
913 {
914 rr = 12.f;
915 }
916 if (*(unsigned char *)ccc == 'd' || *(unsigned char *)ccc == 'D')
917 {
918 rr = 13.f;
919 }
920 if (*(unsigned char *)ccc == 'e' || *(unsigned char *)ccc == 'E')
921 {
922 rr = 14.f;
923 }
924 if (*(unsigned char *)ccc == 'f' || *(unsigned char *)ccc == 'F')
925 {
926 rr = 15.f;
927 }
928 ++inc;
929 *(unsigned char *)ccc = *(unsigned char *)&ch[inc - 1];
930 gg = 0.f;
931 if (*(unsigned char *)ccc == '1') {
932 gg = 1.f;
933 }
934 if (*(unsigned char *)ccc == '2') {
935 gg = 2.f;
936 }
937 if (*(unsigned char *)ccc == '3') {
938 gg = 3.f;
939 }
940 if (*(unsigned char *)ccc == '4') {
941 gg = 4.f;
942 }
943 if (*(unsigned char *)ccc == '5') {
944 gg = 5.f;
945 }
946 if (*(unsigned char *)ccc == '6') {
947 gg = 6.f;
948 }
949 if (*(unsigned char *)ccc == '7') {
950 gg = 7.f;
951 }
952 if (*(unsigned char *)ccc == '8') {
953 gg = 8.f;
954 }
955 if (*(unsigned char *)ccc == '9') {
956 gg = 9.f;
957 }
958 if (*(unsigned char *)ccc == 'a' || *(unsigned char *)ccc == 'A')
959 {
960 gg = 10.f;
961 }
962 if (*(unsigned char *)ccc == 'b' || *(unsigned char *)ccc == 'B')
963 {
964 gg = 11.f;
965 }
966 if (*(unsigned char *)ccc == 'c' || *(unsigned char *)ccc == 'C')
967 {
968 gg = 12.f;
969 }
970 if (*(unsigned char *)ccc == 'd' || *(unsigned char *)ccc == 'D')
971 {
972 gg = 13.f;
973 }
974 if (*(unsigned char *)ccc == 'e' || *(unsigned char *)ccc == 'E')
975 {
976 gg = 14.f;
977 }
978 if (*(unsigned char *)ccc == 'f' || *(unsigned char *)ccc == 'F')
979 {
980 gg = 15.f;
981 }
982 ++inc;
983 *(unsigned char *)ccc = *(unsigned char *)&ch[inc - 1];
984 bb = 0.f;
985 if (*(unsigned char *)ccc == '1') {
986 bb = 1.f;
987 }
988 if (*(unsigned char *)ccc == '2') {
989 bb = 2.f;
990 }
991 if (*(unsigned char *)ccc == '3') {
992 bb = 3.f;
993 }
994 if (*(unsigned char *)ccc == '4') {
995 bb = 4.f;
996 }
997 if (*(unsigned char *)ccc == '5') {
998 bb = 5.f;
999 }
1000 if (*(unsigned char *)ccc == '6') {
1001 bb = 6.f;
1002 }
1003 if (*(unsigned char *)ccc == '7') {
1004 bb = 7.f;
1005 }
1006 if (*(unsigned char *)ccc == '8') {
1007 bb = 8.f;
1008 }
1009 if (*(unsigned char *)ccc == '9') {
1010 bb = 9.f;
1011 }
1012 if (*(unsigned char *)ccc == 'a' || *(unsigned char *)ccc == 'A')
1013 {
1014 bb = 10.f;
1015 }
1016 if (*(unsigned char *)ccc == 'b' || *(unsigned char *)ccc == 'B')
1017 {
1018 bb = 11.f;
1019 }
1020 if (*(unsigned char *)ccc == 'c' || *(unsigned char *)ccc == 'C')
1021 {
1022 bb = 12.f;
1023 }
1024 if (*(unsigned char *)ccc == 'd' || *(unsigned char *)ccc == 'D')
1025 {
1026 bb = 13.f;
1027 }
1028 if (*(unsigned char *)ccc == 'e' || *(unsigned char *)ccc == 'E')
1029 {
1030 bb = 14.f;
1031 }
1032 if (*(unsigned char *)ccc == 'f' || *(unsigned char *)ccc == 'F')
1033 {
1034 bb = 15.f;
1035 }
1036 ++(*nstr);
1037 lstr[*nstr] = istr + 96;
1038 xstr[*nstr] = rr * 256.f + gg * 16.f + bb;
1039 ystr[*nstr] = ycur;
1040 }
1041 /* ...................................................................
1042 .. */
1043 /* Check if this is a newline character */
1044
1045 } else if (ich == 10) {
1046 xcur = 0.f;
1047 ycur += -1.36f;
1048 /* ...................................................................
1049 .. */
1050 /* Otherwise, this is a real character with real strokes */
1051
1052 } else {
1053 i__1 = istr - 1;
1054 for (is = 0; is <= i__1; ++is) {
1055 ++(*nstr);
1056 kst = nstrok[ioff + is - 1];
1057
1058 lstr[*nstr] = 0;
1059 if (kst >= 16384) {
1060 lstr[*nstr] = 1;
1061 kst += -16384;
1062 }
1063
1064 xcur += scale * (real) (kst / 128 - 64);
1065 ycur += scale * (real) (kst % 128 - 64);
1066 if (is == istr - 1) {
1067 xcur += scale * 24.f;
1068 }
1069
1070 xstr[*nstr] = xcur;
1071 ystr[*nstr] = ycur;
1072 /* L500: */
1073 }
1074 }
1075
1076 /* Loopback if not done */
1077
1078 /* L900: */
1079 ++inc;
1080 if (inc <= *nch) {
1081 goto L100;
1082 }
1083 return 0;
1084 } /* zzstro_ */
1085
1086 #undef ns39
1087 #undef ns38
1088 #undef ns37
1089 #undef ns36
1090 #undef ns35
1091 #undef ns34
1092 #undef ns33
1093 #undef ns32
1094 #undef ns31
1095 #undef ns30
1096 #undef ns29
1097 #undef ns28
1098 #undef ns27
1099 #undef ns26
1100 #undef ns25
1101 #undef ns24
1102 #undef ns23
1103 #undef ns22
1104 #undef ns21
1105 #undef ns20
1106 #undef ns19
1107 #undef ns18
1108 #undef ns17
1109 #undef ns16
1110 #undef ns15
1111 #undef ns14
1112 #undef ns13
1113 #undef ns12
1114 #undef ns11
1115 #undef ns10
1116 #undef ns09
1117 #undef ns08
1118 #undef ns07
1119 #undef ns06
1120 #undef ns05
1121 #undef ns04
1122 #undef ns03
1123 #undef ns02
1124 #undef ns01
1125 #undef nstrok
1126
1127
1128
1129
1130
zzconv_(char * chin,integer * nchin,char * chout,integer * nchout,ftnlen chin_len,ftnlen chout_len)1131 /* Subroutine */ int zzconv_(char *chin, integer *nchin, char *chout, integer
1132 *nchout, ftnlen chin_len, ftnlen chout_len)
1133 {
1134 /* Initialized data */
1135
1136 static char chesc[15] = "\\esc ";
1137 static char chnesc[15] = "\\noesc ";
1138 static char chcolr[15] = "\\color ";
1139 static char chcoln[15] = ": ";
1140 static char chtex[15*116] = "\\Plus " "\\Cross " "\\Dia"
1141 "mond " "\\Box " "\\FDiamond " "\\FBox "
1142 " " "\\FPlus " "\\FCross " "\\Burst "
1143 "\\Octagon " "\\alpha " "\\beta " "\\gamm"
1144 "a " "\\delta " "\\epsilon " "\\zeta "
1145 " " "\\eta " "\\theta " "\\iota "
1146 "\\kappa " "\\lambda " "\\mu " "\\nu "
1147 " " "\\xi " "\\omicron " "\\pi "
1148 " " "\\rho " "\\sigma " "\\tau "
1149 "\\upsilon " "\\phi " "\\chi " "\\psi "
1150 " " "\\omega " "\\Alpha " "\\Beta "
1151 " " "\\Gamma " "\\Delta " "\\Epsilon "
1152 "\\Zeta " "\\Eta " "\\Theta " "\\Iota"
1153 " " "\\Kappa " "\\Lambda " "\\Mu "
1154 " " "\\Nu " "\\Xi " "\\Omicron "
1155 "\\Pi " "\\Rho " "\\Sigma " "\\Tau "
1156 " " "\\Upsilon " "\\Phi " "\\Chi "
1157 " " "\\Psi " "\\Omega " "\\propto "
1158 "\\int " "\\times " "\\div " "\\appr"
1159 "ox " "\\partial " "\\cap " "\\? "
1160 " " "\\langle " "\\rangle " "\\ddagger "
1161 "\\pm " "\\leq " "\\S " "\\hbar"
1162 " " "\\lambar " "\\cup " "\\degree "
1163 " " "\\nabla " "\\downarrow " "\\leftarrow "
1164 "\\rightarrow " "\\leftrightarrow" "\\oint " "\\in "
1165 " " "\\notin " "\\surd " "\\_ "
1166 " " "\\bar " "\\exists " "\\geq "
1167 "\\forall " "\\subset " "\\oplus " "\\otim"
1168 "es " "\\dagger " "\\neq " "\\supset "
1169 " " "\\infty " "\\uparrow " "\\# "
1170 "\\$ " "\\% " "\\& " "\\{ "
1171 " " "\\} " "\\\\ " "\\cents "
1172 " " "\\black " "\\red " "\\blue "
1173 "\\green " "\\yellow " "\\magenta " "\\cyan"
1174 " " "\\small " "\\large " "\\newline "
1175 " ";
1176 static integer ichext[116] = { 176,177,178,179,180,181,182,183,184,185,
1177 225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,
1178 241,242,243,244,245,246,247,248,193,194,195,196,197,198,199,200,
1179 201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,
1180 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
1181 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
1182 186,187,188,189,190,191,255,96,35,36,37,38,123,125,92,94,148,149,
1183 150,151,152,153,154,155,156,10 };
1184
1185 /* System generated locals */
1186 integer i__1;
1187
1188 /* Builtin functions */
1189 integer s_cmp(char *, char *, ftnlen, ftnlen);
1190 /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen);
1191
1192 /* Local variables */
1193 static logical lesc;
1194 static integer itop;
1195 static logical lout;
1196 static integer i__, nused, nsupb;
1197 static char chcont[15], chcolx[15];
1198 static integer ntsupb[10], inc;
1199
1200
1201 /* Convert input string (using TeX-like escapes) to extended character */
1202 /* set, for plotting with ZZSTRO. */
1203
1204 /* .......................................................................
1205 */
1206
1207 /* super/subscript control characters */
1208
1209 /* .......................................................................
1210 */
1211 /* INC = input character being scanned */
1212 /* NUSED = no. of input characters consumed by this operation */
1213 /* NSUPB = super/subscript level */
1214 /* NTSUPB = super/subscript type at each level: */
1215 /* 1 = single character superscript -- like a^b */
1216 /* 2 = multi-character superscript -- like a^{b+c} */
1217 /* -1,-2 = similar for subscripts */
1218 /* LOUT = .TRUE. if we just output something to CHOUT, */
1219 /* otherwise .FALSE. */
1220
1221
1222 /* Table of Tex-like escapes */
1223
1224
1225 /* Corresponding extended character set bytes */
1226
1227 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1228 */
1229 /* Test if a character is alphabetic */
1230
1231 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1232 */
1233 *nchout = 0;
1234 nsupb = 0;
1235 inc = 1;
1236 /* -----------------------------------------------------------------------
1237 */
1238 /* Process input character no. INC */
1239
1240 lesc = TRUE_;
1241 L100:
1242
1243 /* CC WRITE(*,666) 'ZZCONV at: ' // CHIN(INC:INC) */
1244 /* CC666 FORMAT(A) */
1245
1246 lout = FALSE_;
1247
1248 /* Superscript: ^{ starts a multi-character superscript, otherwise */
1249 /* ^ starts a single-character superscript */
1250
1251 if (lesc && *(unsigned char *)&chin[inc - 1] == '^' && inc < *nchin) {
1252 ++nsupb;
1253 i__1 = inc;
1254 if (s_cmp(chin + i__1, "{", inc + 1 - i__1, 1L) == 0) {
1255 ntsupb[nsupb - 1] = 2;
1256 nused = 2;
1257 } else {
1258 ntsupb[nsupb - 1] = 1;
1259 nused = 1;
1260 }
1261 ++(*nchout);
1262 *(unsigned char *)&chout[*nchout - 1] = 144;
1263 /* CC WRITE(*,666) ' start superscript' */
1264 /* ...................................................................
1265 .... */
1266 /* Subscript: similar to above code */
1267
1268 } else if (lesc && *(unsigned char *)&chin[inc - 1] == '_' && inc < *
1269 nchin) {
1270 ++nsupb;
1271 i__1 = inc;
1272 if (s_cmp(chin + i__1, "{", inc + 1 - i__1, 1L) == 0) {
1273 ntsupb[nsupb - 1] = -2;
1274 nused = 2;
1275 } else {
1276 ntsupb[nsupb - 1] = -1;
1277 nused = 1;
1278 }
1279 ++(*nchout);
1280 *(unsigned char *)&chout[*nchout - 1] = 146;
1281 /* CC WRITE(*,666) ' start subscript' */
1282 /* ...................................................................
1283 .... */
1284 /* If in super/subscript mode and we have a '}', then this terminates
1285 */
1286 /* the current level of super/subscripts */
1287
1288 } else if (lesc && *(unsigned char *)&chin[inc - 1] == '}' && nsupb > 0) {
1289 nused = 1;
1290 ++(*nchout);
1291 if (ntsupb[nsupb - 1] > 0) {
1292 *(unsigned char *)&chout[*nchout - 1] = 145;
1293 } else {
1294 *(unsigned char *)&chout[*nchout - 1] = 147;
1295 }
1296 --nsupb;
1297 /* CC WRITE(*,666) ' end compound super/subscript' */
1298 /* ...................................................................
1299 .... */
1300 /* Special case: \esc turns LESC back on */
1301
1302 } else if (! lesc && inc + 4 <= *nchin && s_cmp(chin + (inc - 1), chesc,
1303 4L, 15L) == 0) {
1304 lesc = TRUE_;
1305 nused = 4;
1306 /* ...................................................................
1307 .... */
1308 /* Anything else that doesn't start with a \ is passed straight throu
1309 gh */
1310
1311 } else if (! lesc || *(unsigned char *)&chin[inc - 1] != '\\') {
1312 lout = TRUE_;
1313 nused = 1;
1314 ++(*nchout);
1315 *(unsigned char *)&chout[*nchout - 1] = *(unsigned char *)&chin[inc -
1316 1];
1317 /* CC WRITE(*,666) ' passthru' */
1318 /* ...................................................................
1319 .... */
1320 /* If it started with a \ but we are at the last character, quit */
1321
1322 } else if (inc == *nchin) {
1323 /* CC WRITE(*,666) ' end of input' */
1324 goto L8000;
1325 /* ...................................................................
1326 .... */
1327 /* TeX-like escapes -- there are 2 possibilities: */
1328 /* 1) \asciistring */
1329 /* 2) \specialcharacter */
1330
1331 } else {
1332 itop = inc + 1;
1333
1334 /* If the next character is alphabetic, then scan until end-of-input
1335 */
1336 /* or a non-alphabetic character is found. This will be the end */
1337 /* of the escape sequence. */
1338
1339 i__1 = *(unsigned char *)&chin[itop - 1];
1340 if (i__1 >= 'A' && i__1 <= 'Z' || i__1 >= 'a' && i__1 <= 'z') {
1341 L200:
1342 ++itop;
1343 if (itop > *nchin) {
1344 goto L300;
1345 }
1346 i__1 = *(unsigned char *)&chin[itop - 1];
1347 if (i__1 >= 'A' && i__1 <= 'Z' || i__1 >= 'a' && i__1 <= 'z') {
1348 goto L200;
1349 }
1350 L300:
1351 --itop;
1352
1353 /* If the character following the \asciistring is a blank, skip i
1354 t also */
1355
1356 if (itop < *nchin) {
1357 i__1 = itop;
1358 if (s_cmp(chin + i__1, " ", itop + 1 - i__1, 1L) == 0) {
1359 ++itop;
1360 }
1361 }
1362 }
1363
1364 /* At this point, characters INC thru ITOP are the escape sequence.
1365 */
1366 /* Check for a match with the table. */
1367
1368 nused = itop - inc + 1;
1369 s_copy(chcont, chin + (inc - 1), 15L, itop - (inc - 1));
1370
1371 for (i__ = 1; i__ <= 116; ++i__) {
1372 if (s_cmp(chcont, chtex + (i__ - 1) * 15, 15L, 15L) == 0) {
1373 goto L410;
1374 }
1375 /* L400: */
1376 }
1377 i__ = 0;
1378 L410:
1379
1380 /* If a match, enter the control character into the output; */
1381 /* if no match, just ignore it */
1382
1383 if (i__ > 0) {
1384 lout = TRUE_;
1385 ++(*nchout);
1386 *(unsigned char *)&chout[*nchout - 1] = (char) ichext[i__ - 1];
1387 /* CC WRITE(*,666) ' TeX escape: ' // CHCONT */
1388 /* CC ELSE */
1389 /* CC WRITE(*,666) ' unknown TeX escape: ' // CHCONT
1390 */
1391 } else if (s_cmp(chcont, chnesc, 15L, 15L) == 0) {
1392 lesc = FALSE_;
1393 } else if (s_cmp(chcont, chesc, 15L, 15L) == 0) {
1394 lesc = TRUE_;
1395 } else if (s_cmp(chcont, chcolr, 15L, 15L) == 0 && itop + 4 <= *nchin)
1396 {
1397 i__1 = itop;
1398 s_copy(chcolx, chin + i__1, 15L, itop + 1 - i__1);
1399 if (s_cmp(chcolx, chcoln, 15L, 15L) == 0) {
1400 ++(*nchout);
1401 *(unsigned char *)&chout[*nchout - 1] = 157;
1402 ++(*nchout);
1403 i__1 = itop + 1;
1404 s_copy(chout + (*nchout - 1), chin + i__1, 1L, itop + 2 -
1405 i__1);
1406 ++(*nchout);
1407 i__1 = itop + 2;
1408 s_copy(chout + (*nchout - 1), chin + i__1, 1L, itop + 3 -
1409 i__1);
1410 ++(*nchout);
1411 i__1 = itop + 3;
1412 s_copy(chout + (*nchout - 1), chin + i__1, 1L, itop + 4 -
1413 i__1);
1414 nused += 4;
1415 }
1416 }
1417 }
1418 /* .......................................................................
1419 */
1420 /* If we are in single-character super/subscript mode, we must drop */
1421 /* out of it after outputting something */
1422
1423 if (lout && nsupb > 0) {
1424 if (ntsupb[nsupb - 1] == 1) {
1425 --nsupb;
1426 ++(*nchout);
1427 *(unsigned char *)&chout[*nchout - 1] = 145;
1428 /* CC WRITE(*,666) ' end single-character superscript'
1429 */
1430 } else if (ntsupb[nsupb - 1] == -1) {
1431 --nsupb;
1432 ++(*nchout);
1433 *(unsigned char *)&chout[*nchout - 1] = 147;
1434 /* CC WRITE(*,666) ' end single-character subscript' */
1435 }
1436 }
1437
1438 /* "Use up" the appropriate number of characters, and go on to */
1439 /* the next bunch */
1440
1441 inc += nused;
1442 if (inc <= *nchin) {
1443 goto L100;
1444 }
1445 /* -----------------------------------------------------------------------
1446 */
1447 L8000:
1448 return 0;
1449 } /* zzconv_ */
1450
1451